Wikibooks dewikibooks https://de.wikibooks.org/wiki/Hauptseite MediaWiki 1.47.0-wmf.19 first-letter Medium Spezial Diskussion Benutzer Benutzer Diskussion Wikibooks Wikibooks Diskussion Datei Datei Diskussion MediaWiki MediaWiki Diskussion Vorlage Vorlage Diskussion Hilfe Hilfe Diskussion Kategorie Kategorie Diskussion Regal Regal Diskussion TimedText TimedText talk Modul Modul Diskussion Veranstaltung Veranstaltung Diskussion C++-Programmierung: Kompilierung 0 82 1090607 825254 2026-09-09T09:26:04Z ~2026-48831-06 116862 /* So bedienen Sie den Compiler */ 1090607 wikitext text/x-wiki Dieses Kapitel beschreibt, wie sie C++-Programme in für Computer ausführbare Programm übersetzen. == MinGW == === So laden Sie den Compiler herunter === # Besuchen Sie die Seite [http://www.mingw.org www.MinGW.org] und klicken Sie auf '''Download'''. # Gehen Sie zum Abschnitt '''current'''. Dort finden Sie '''MinGW'''. # Klicken Sie auf '''MinGW-XXX.exe''' (XXX steht für die aktuelle Versionsnummer). Dadurch wird das Installationprogramm für den Compiler heruntergeladen. === So installieren Sie MinGW === # Klicken Sie auf '''MinGW-XXX.exe'''. Der Installationsvorgang startet. Geben Sie dabei das gewünschte Zielverzeichnis an, z.B. '''c:\MinGW\''' # Öffnen Sie die ''Konsole'' (auch ''Eingabeaufforderung'' genannt). Sie finden Sie unter ''Start | Programme | Zubehör''. # Passen Sie den Suchpfad an. Wenn Sie bei der Installation als Zielverzeichnis '''c:\MinGW\''' ausgewählt haben, dann geben Sie dazu in der Konsole (Eingabeaufforderung) das Folgende ein: <br/><code style="color:#c0c0c0;background:black">&nbsp;path c:\MinGW\bin;%PATH%&nbsp;</code> (anschließend ''Enter'' eingeben) === So bedienen Sie den Compiler === # Öffnen Sie die ''Konsole'' (''Eingabeaufforderung'') mit administrativen Rechten!!!. # Erstellen Sie ein Verzeichnis für Ihre Programme, z.B. in '''c:\testprogramme'''. Dazu geben Sie nacheinander das Folgende ein:<br/><code style="color:#c0c0c0;background:black">&nbsp;cd \&nbsp;</code> (anschließend ''Enter'')<br/><code style="color:#c0c0c0;background:black">&nbsp;md testprogramme&nbsp;</code> (anschließend ''Enter'')<br/><code style="color:#c0c0c0;background:black">&nbsp;cd testprogramme&nbsp;</code> (anschließend ''Enter'')<br/> # Erstellen Sie eine Datei für den Quelltext, indem Sie <br/><code style="color:#c0c0c0;background:black">&nbsp;notepad daserste.cpp&nbsp;</code> eingeben. Bei der Frage "Möchten Sie eine neue Datei erstellen?" klicken Sie auf "Ja". # Geben Sie den Quelltext aus der Lektion [[C++-Programmierung: Das erste Programm|"Das erste Programm"]] ein. Sie können den Quelltext einfach mit Hilfe der ''Zwischenablage'' aus der Lektion in den Editor kopieren. # Speichern Sie den Quelltext ab. # Geben Sie jetzt das Folgende in der Konsole ein: <br/><code style="color:#c0c0c0;background:black">&nbsp;g++ -o daserste daserste.cpp&nbsp;</code> (anschließend ''Enter'')<br/>Dadurch wird das ausführbare Programmmodul erzeugt. # Rufen Sie das Programm auf, indem Sie in der Konsole <br/><code style="color:#c0c0c0;background:black">&nbsp;daserste&nbsp;</code> eingeben (anschließend ''Enter''). Es sollte daraufhin der Text <br/><code style="color:#c0c0c0;background:black">&nbsp;Hallo!&nbsp;</code> in der Konsole erscheinen. == Borland C++ Builder == === So erstellen Sie eine Konsolen-Anwendung mit Borland C++ Builder === # Öffnen Sie ''Datei | Neu | Weitere...'' # Klicken Sie auf '''Konsolen-Experte'''. # Wählen Sie aus: ## Quelltyp: C++ ## Haken ''VCL verwenden'' '''nicht''' setzen! ## Haken ''CLX verwenden'' '''nicht''' setzen! ## Haken ''Konsolen-Anwendung'' setzen Es wird eine Datei namens "Unit1.cpp" mit einem vordefinierten Text erzeugt. Der Text kann komplett entfernt und durch den in der Lektion [[C++-Programmierung: Das erste Programm|"Das erste Programm"]] ersetzt werden. === So erstellen Sie das Programm und starten es === # Mit der Tastenkombination ''Strg-F9'' kompilieren Sie das Programm. # Setzen Sie den Cursor auf die letzte Zeile des Programms (die Zeile mit der schließenden geschweiften Klammer) und betätigen Sie Taste ''F5''. Dadurch wird einen Haltepunkt in der letzten Zeile gesetzt. # Starten Sie das Programm mit ''F9''. Daraufhin öffnet sich das Konsolenfenster. Es hält am Haltepunkt. # Nochmaliges Betätigen von ''F9'' lässt das Programm weiterlaufen, in diesem Fall beendet es sich. == Microsoft Visual C++ 7.1 == === So erstellen Sie eine Konsolen-Anwendung mit Visual C++ 7.1 === # Öffnen Sie ''Datei | Neu | Projekt...'' # Wählen Sie "Visual C++ Projekte" und "Win32", "Win32 Konsolenprojekt" aus. # Öffnen Sie ''Projekt | Eigenschaften | Konfigurationseigenschaften | C++'' und deaktivieren Sie ''vorkompilierte Header'' (''precompiled headers''). # Der vorhandene, automatisch erzeugte Quelltext kann komplett entfernt und durch den in der Lektion [[C++-Programmierung: Das erste Programm|"Das erste Programm"]] ersetzt werden. === So erstellen Sie das Programm und starten es === # Wählen Sie im Hauptmenü: Build, dann den Eintrag Build ''(Name des Programms)''. Daraufhin wird das Programm kompiliert. # Setzen Sie den Cursor auf die letzte Zeile des Programms (die Zeile mit der schließenden geschweiften Klammer) und betätigen Sie Taste ''F9''. Dadurch wird einen Haltepunkt in der letzten Zeile gesetzt. # Starten Sie das Programm mit ''F5''. Daraufhin öffnet sich das Konsolenfenster (Es kann von anderen Fenstern verdeckt sein, dann müssen Sie es mit Hilfe der ''Taskleiste'' in den Vordergrund holen). Das Programm hält am Haltepunkt. # Nochmaliges Betätigen von ''F5'' lässt das Programm weiterlaufen, in diesem Fall beendet es sich. == GNU C Compiler (gcc)== gcc ist unter Linux und *BSD der Standardcompiler, aber es gibt ihn auch auf nahezu allen anderen Plattformen wie Microsoft Windows, MacOS und alpha. Für die meisten Programmiersprachen gibt es so genannte ''Frontends'', d.h. Befehle, die einem die Einstellung der benötigten Kommandozeilenparameter abnehmen. Das Frontend für C++ heißt <code>g++</code>. [[Bild:G++ 4.1.3 ubuntu7.10 de.png|thumb|"Hallo Welt" Programm unter Ubuntu Linux 7.10]] Dieses Programm wird auf der Kommandozeile, z.B. in einem Terminalfenster ausgeführt. Der einfachste Aufruf ist: <code style="color:#c0c0c0;background:black">&nbsp;g++ hallowelt.cc&nbsp;</code>. Das Programm <code>hallowelt.cc</code> wird kompiliert und die ausführbare Datei, d.h. das fertige Programm mit dem Namen a.out gespeichert. Um dem Programm einen sinnvolleren Namen zu geben, benutzt man die Option <code>-o</code>: <code style="color:#c0c0c0;background:black">g++ -o hallowelt hallowelt.cc</code>. {{Navigation_zurückhochvor_buch| zurücktext=Dateizugriff| zurücklink=C++-Programmierung:_Dateizugriff| hochtext=Inhaltsverzeichnis| hochlink=C++-Programmierung| vortext=Schlüsselwörter| vorlink=C++-Programmierung:_Schlüsselwörter}} 962ntzm2xguzt1ps2rueheiv8m0263h Traktorenlexikon: Deutz-Fahr 0 7379 1090557 1089913 2026-09-08T13:22:56Z JaWa1998 115962 /* DX */ 1090557 wikitext text/x-wiki {{:Traktorenlexikon: Navigation}} [[File:DF Logo Neu.jpg|thumb|Logo Deutz-Fahr]] [[File:Logo SDF.jpg|thumb|Logo SDF]] '''Deutz-Fahr''' ist eine seit 1981 bestehende deutsche Landmaschinen- und Traktorenmarke, die aus dem Agrartechnikbereich der Klöckner-Humboldt-Deutz AG (KHD) mit den Marken [[Traktorenlexikon: Deutz|Deutz]] und [[Traktorenlexikon: Fahr|Fahr]] hervorging. Seit 1995 gehört Deutz-Fahr zur [[Traktorenlexikon: SAME Deutz-Fahr|SAME-Deutz-Fahr]]-Gruppe (seit Dezember 2015 SDF-Group). ==Geschichte== Historischer Ursprung von KHD bzw. Deutz ist die 1864 gegründete ''Motorenfabrik N.A. Otto & Cie.'', die acht Jahre später in ''Gasmotoren-Fabrik Deutz AG'' umbenannt wurde. Firmensitz war die damalige Stadt Deutz, heute [[w:Deutz (Köln)|Köln-Deutz]]. 1927 wurde in Köln die Serienfertigung dieselbetriebener Traktoren aufgenommen. Aus der Gasmotoren-Fabrik Deutz war 1938 nach mehreren Übernahmen und Zusammenschlüssen die ''Klöckner-Humboldt-Deutz AG'' geworden, die in den 1960er Jahren auch Aktien des deutschen Landmaschinen- und Traktorenherstellers Fahr erwarb und diesen erst mehrheitlich, dann 1975 komplett übernahm. In den Folgejahren vermarktete KHD verschiedene Maschinen noch getrennt unter den beiden Markennamen [[Traktorenlexikon: Deutz|Deutz]] und [[Traktorenlexikon: Fahr|Fahr]]. 1981 begann die Produktion unter der neugebildeten Marke Deutz-Fahr. 1995 veräußerte KHD die Landtechniksparte an die italienische SLH-Gruppe (SAME-Lamborghini-Hürlimann) und konzentrierte sich wieder stärker auf die Motorenproduktion. Seitdem gehört Deutz-Fahr zur neugebildeten [[Traktorenlexikon: SAME Deutz-Fahr|SAME-Deutz-Fahr]]-Gruppe (SDF). Die Deutz-Fahr-Traktorenwerke wurden anschließend 1996 von Köln nach [[w:Lauingen (Donau)|Lauingen]] im schwäbischen Landkreis Dillingen an der Donau verlegt, wo bis heute produziert wird. 1997 wurde der Name von KHD in ''Deutz AG'' geändert. Ab 2003 erwarb SDF wiederum Aktienpakete der Deutz AG und war zwischenzeitlich mit 45 Prozent größter Einzelaktionär. Inzwischen ist Volvo der größte Einzelaktionär. Die meisten Deutz-Fahr-Traktoren sind mit Deutz-Motoren ausgestattet. Davon abweichend sind die Serien 5, 6C und 6.4, die mit den SDF-eigenen FARMOTION 4-Zylinder-Motoren angetrieben werden. Die auf der Agritechnica 2025 vorgestellte neue Serie 8 nutzt erstmals Motoren des Herstellers FPT (N67) mit bis zu 340PS Nennleistung. Neben Traktoren wurden und werden unter dem Namen Deutz-Fahr weitere Landmaschinen vermarktet, zum Beispiel Mähdrescher (Produktion 2025 eingestellt), Mähwerke, Heuwender, Schwader, Ladewagen, Ballenpressen und Teleskoplader. Seit 2017 wird am früheren Fahr-Standort in Lauingen an der Donau das aktuell modernste Traktorenwerk Europas von SDF betrieben. Dort werden Traktoren der SDF-Gruppe mit mehr als 100 kW gefertigt. Das bedeutet z.Z. kommen die Deutz-Fahr Serien 6, 7, 8 und 9 für die SDF-Gruppe aus Lauingen. == Typen == Unter dem Markennamen Deutz-Fahr wurden und werden Traktoren mit folgenden Typenbezeichnungen vertrieben: === INTRAC / IN-trac === {{Wikipedia|Deutz INTRAC}} [[File:Intrac 2003 A.jpg|thumb|INTRAC 2003 A (1. Generation)]] [[Datei:DeutzFahr Intrac 6.60.JPG|thumb|IN-trac 6.60 (2. Generation)]] Die [[Traktorenlexikon: Deutz#INTRAC-Reihe|INTRAC]]-Baureihe von [[Traktorenlexikon: Deutz|Deutz]] (später IN-trac bei Deutz-Fahr) stellt ein wegweisendes Systemschlepper-Konzept dar, das ab 1972 als Antwort auf den MB-trac entwickelt wurde. Das markanteste Merkmal ist die weit nach vorne gerückte Kabine über dem Motor, wodurch eine große Aufbauplattform im Heck und ein vollwertiger Frontanbauraum entstanden. Man unterscheidet im Wesentlichen zwischen der ersten Generation (Intrac 2000er-Serie) und der zweiten, leistungsstärkeren Generation (Intrac 6.00er-Serie). Die frühen Modelle wie der Intrac 2002, 2003 und 2005 basierten technisch auf der bewährten 06er-Serie und nutzten luftgekühlte Drei-, Vier- und Fünfzylindermotoren. Sie waren als echte Geräteträger konzipiert, die durch drei Anbauräume (Front, Aufbau, Heck) eine enorme Schlagkraft bei kombinierten Arbeitsgängen boten. Mit der Einführung der großen Baureihe Ende der 1980er-Jahre, insbesondere dem IN-trac 6.30 und 6.60, erreichte das Konzept seinen technologischen Höhepunkt. Diese Maschinen leisteten bis zu 150 PS, verfügten über die moderne Hochraum-Komfortkabine und waren für schwerste Systemarbeiten ausgelegt. Trotz der überlegenen Übersicht und der vielseitigen Einsatzmöglichkeiten blieb der Intrac aufgrund der höheren Anschaffungskosten und der komplexeren Wartung durch die verbaute Kabine ein Nischenprodukt. Historisch gesehen ist der Intrac jedoch von großer Bedeutung, da er die Vision eines universellen Systemfahrzeugs verkörperte und als letzter großer Systemschlepper aus Köln gilt, bevor das Konzept zugunsten der Standardtraktoren aufgegeben wurde. Heute haben gut erhaltene Intrac-Modelle absoluten Sammlerstatus und gelten als Ikonen der deutschen Landtechnik-Geschichte. {| class="wikitable" | '''1. Generation''' (1981–1989) || '''2. Generation''' (1987–1990) |- | valign="top" | * [[Traktorenlexikon: Deutz INTRAC 2002|INTRAC 2002]] 37kW (51PS) * [[Traktorenlexikon: Deutz INTRAC 2003|INTRAC 2003]] 44kW (60PS) * [[Traktorenlexikon: Deutz INTRAC 2004|INTRAC 2004]] 51kW (70PS) * {{:Traktorenlexikon: Create|INTRAC 2005}} 59kW (80PS) * {{:Traktorenlexikon: Create|INTRAC 2006}} 81kW (110PS) * {{:Traktorenlexikon: Create|INTRAC 2007}} 103kW (140PS) * ''siehe auch [[Traktorenlexikon: Deutz#INTRAC-Reihe|Deutz INTRAC]]'' | valign="top" | * {{:Traktorenlexikon: Create|IN-trac 6.05}} 72kW (98PS) * {{:Traktorenlexikon: Create|IN-trac 6.30}} 85kW (115PS) * {{:Traktorenlexikon: Create|IN-trac 6.30 turbo}} 93kW (126PS) * {{:Traktorenlexikon: Create|IN-trac 6.60 turbo}} 110kW (150PS) |} === D-07 === [[File:Deutz D7807 HH-Volksdorf (2023).jpg|thumb|Deutz-Fahr D7807]] 1980 kam die letzte Entwicklungsstufe der Deutz-Baureihe [[Traktorenlexikon: Deutz#D-06|D-06]] unter der Bezeichnung D-07 auf den Markt. Die wesentlichen Veränderungen betrafen die verstärkten Dreipunktgestänge, die geänderte Motorhaube mit abnehmbarem Grill nach Art der DX-Traktoren sowie die für DX-Gewichte geeigneten Frontballastträger. Dazu kam wahlweise eine Halbkabine mit hinten angeschlagenden Türen. Das D-07-Program bestand zunächst aus folgenden Familien:<br /> 1. Kleine Baureihe D 4007 bis D 6207 (entsprechend D 4006 bis D 6206), ab D 4507 auch mit Allradantrieb.<br /> 2. Mittlere Baureihe D 6807, D 7207 und D 7807, natürlich auch mit Allrad. Die beiden ersteren entsprachen den Vorgängern D 6806 und D 7206.<br /> 3. Neu war der D 7807 mit F4L913-Motor und 75 PS. Die D-07er Modelle sind durch vierstellige Nummern gekennzeichnet, die jeweils auf „07“ enden. Traktoren dieser Serie wurden bis 1990 von Deutz-Fahr – bis 1981 noch unter dem Markennamen [[Traktorenlexikon: Deutz|Deutz]] – gefertigt. Modelle mit dem Zusatz „C“ sind Ausführungen mit Kabine, Modelle mit dem Zusatz „A“ sind Allradausführungen. Der Zusatz „P“ kennzeichnet Schmalspurversionen (hier noch nicht aufgeführt). ''Der Einfachheit halber werden im Traktorenlexikon alle D-07-Modelle unter „Deutz-Fahr“ geführt.'' {| class="wikitable" | '''D-07''' (1980–1990) |- | valign="top" | * {{:Traktorenlexikon: Create|D 2807}} 21kW (29 PS) * {{:Traktorenlexikon: Create|D 3607}} 25kW (34 PS) * {{:Traktorenlexikon: Create|D 4007}} 26kW (35 PS) * {{:Traktorenlexikon: Create|D 4507}} 30kW (40 PS) <!-- 4507–7807 alle als C mit Spezialkabine; + P-Schmalspurausführungen, aber welche? --> * {{:Traktorenlexikon: Create|D 4807}} 33kW (45 PS) <!-- mind bis 1982 --> * {{:Traktorenlexikon: Create|D 5207}} 38kW (51 PS) <!-- H mind bis 1983 --> * {{:Traktorenlexikon: Create|D 6007}} 42kW (57 PS) <!-- mind bis 1983 --> * {{:Traktorenlexikon: Create|D 6207}} 44kW (60 PS) <!-- A mind bis 1984 --> * {{:Traktorenlexikon: Create|D 6507}} 46kW (62 PS) <!-- mind bis 1984 --> * {{:Traktorenlexikon: Create|D 6807}} 49kW (67 PS) * {{:Traktorenlexikon: Create|D 6907}} 51kW (70 PS) <!-- CA mind bis 1985 --> * {{:Traktorenlexikon: Create|D 7007}} 51kW (70 PS) * {{:Traktorenlexikon: Create|D 7207}} 51kW (70 PS) <!-- mind bis 1982 --> * {{:Traktorenlexikon: Create|D 7807}} 55kW (75 PS) <!-- C mind bis 1985 --> |} === DX === {{Wikipedia|Deutz-Fahr DX}} [[File:Deutz DX 90 JM 2023 08 12 5D410157.jpg|thumb|Deutz DX 90 (1. Generation)]] [[File:Deutz-Fahr Traktor 137 PS.jpg|thumb|Deutz-Fahr DX 6.50 (2. Generation)]] Die DX-Serie von Deutz-Fahr, eingeführt im Jahr 1978 (noch unter dem Namen Deutz), markierte den entscheidenden technologischen Sprung in die Ära der modernen Komfortschlepper und löste die 6-Zylinder-Traktoren der erfolgreichen Serie 06 ab. Man unterscheidet dabei zwischen der ersten Generation (1978–1983) und der darauffolgenden, strukturell neu geordneten DX-Generation ab 1984. Die frühen DX-Modelle, wie der DX 85 bis DX 160, zeichneten sich durch ihre kantige Bauweise und die Einführung großräumiger Kabinen (MasterCab) aus. Die Modellbezeichnung entsprach dabei grob der maximalen Leistung. Technisch setzten sie konsequent auf die bewährten luftgekühlten Motoren der Baureihe 912/913. Eine Besonderheit stellten die Modelle DX85 und DX90 dar, da sie mit einem luftgekühlten 5-Zylinder-Motor (F5L912) ausgestattet waren. Diese beiden Modelle wurden während der 1. Serie noch ersetzt bzw. ergänzt, da sich der 5-Zylinder-Motor in der Praxis bei den Kunden als unbliebt zeigte, vor allem wegen dem größeren Wenderadius und der fehlenden Spritzigkeit gegenüber in der Leistungsklasse mittlerweile etablierten Traktoren mit 4-Zylinder-Turbomotoren. Daher wich der F5L912 dem BF4L913. Aus den Modellen DX 85 wurde DX 86, aus DX 90 wurde DX92. der DX 80 wurde als Leistungserweiterung nach unten ergänzt. Während die erste Generation teilweise noch mit seitlichen Kardanwellen für den Allradantrieb ausgestattet war (ausser DX 145), brachte die überarbeitete Serie ab 1983 – unterteilt in die Klassen DX 3, 4, 6, 7 und 8 – den zentralen Allradantrieb und damit eine deutlich verbesserte Wendigkeit. Die neue Serie wurde mit einer vorangestellten Zahl, die die Leistungsklasse angab und meist der Zylinderzahl entsprach, bezeichnet. Nach der ersten Ziffer folgte nach einem Punkt eine zweistellige Ziffer, die die Position innerhalb der Leistungsklasse angab. An ihr konnte die Motorleistung nicht direkt abgelesen werden. In dieser zweiten Phase hielt zudem die Elektronik in Form der Agrotronic Einzug, was die Präzision der Hubwerksregelung und die Überwachung der Maschinenfunktionen revolutionierte. Vom kompakten DX 3 als wendigem Hofschlepper bis zum DX 8.30 für schwerste Ackerarbeiten deckte die Serie das gesamte landwirtschaftliche Spektrum ab. Aufgrund ihrer mechanischen Robustheit und der wartungsfreundlichen Kühltechnik gilt die DX-Reihe heute als das Fundament für den Erfolg von Deutz-Fahr in den 80er-Jahren und ist auf dem Gebrauchtmarkt für ihre außergewöhnliche Langlebigkeit bekannt. Daneben gab es auch noch den Deutz-Fahr DX3.500, der von [[Traktorenlexikon: Agritalia|Agritalia]] gefertigt wurde und baugleich als Renault gebaut wurde. ''Der Einfachheit halber werden im Traktorenlexikon alle DX-Modelle unter „Deutz-Fahr“ geführt.'' {| class="wikitable" | colspan="3" | <center>'''Erste DX-Serie''' ab 1978 (Deutz) bzw. 1981 (Deutz-Fahr)</center> |- | '''1. Generation ab 1978 ''' || '''Überarbeitung/Ergänzung ab 1980/1982''' || '''Schmalspurtraktoren''' |- | valign="top" | * {{:Traktorenlexikon: Create|DX 85}} 59kW (80PS) * {{:Traktorenlexikon: Create|DX 90}} 65kW (88PS) * {{:Traktorenlexikon: Create|DX 110}} 75kW (102PS) * {{:Traktorenlexikon: Create|DX 140}} 92kW (125PS) * {{:Traktorenlexikon: Create|DX 160}} 110kW (150PS) * {{:Traktorenlexikon: Create|DX 230}} 147kW (200PS) * {{:Traktorenlexikon: Create|DX 430}} (Prototyp) | valign="top" | * {{:Traktorenlexikon: Create|DX 80}} 55kW (75PS) * {{:Traktorenlexikon: Create|DX 86}} 60kW (82PS) * {{:Traktorenlexikon: Create|DX 92}} 66kW (90PS) * {{:Traktorenlexikon: Create|DX 120}} 81kW (110PS) * {{:Traktorenlexikon: Create|DX 145}} 97kW (132PS) * {{:Traktorenlexikon: Create|DX 230}} 147kW (200PS) * {{:Traktorenlexikon: Create|DX 250}} 162kW (220PS) * {{:Traktorenlexikon: Create|DX 430}} (Prototyp) | valign="top" | * {{:Traktorenlexikon: Create|DX 36 V}} 21kW (29PS) * {{:Traktorenlexikon: Create|DX 50 V}} 34kW (46PS) * {{:Traktorenlexikon: Create|DX 55 V}} 40kW (54PS) |} [[File:DX 8.30.jpg|thumb|DX 8.30]] {| class="wikitable" | colspan="4" | <center>'''Zweite DX-Reihe''' (1983–1995)</center> |- | '''DX 3''' || '''DX 4''' || '''DX 6''' || '''DX 7/8''' |- | valign="top" | * {{:Traktorenlexikon: Create|DX 3.10}} 34kW (46 PS) * {{:Traktorenlexikon: Create|DX 3.30}} 40kW (54 PS) * {{:Traktorenlexikon: Create|DX 3.50}} 44kW (60 PS) * {{:Traktorenlexikon: Create|DX 3.60}} 48kW (65 PS) * {{:Traktorenlexikon: Create|DX 3.65}} 51kW (70 PS) * {{:Traktorenlexikon: Create|DX 3.70}} 51kW (70 PS) * {{:Traktorenlexikon: Create|DX 3.75 A}} 57kW (78 PS) * {{:Traktorenlexikon: Create|DX 3.80 AS}} 55kW (75 PS) * {{:Traktorenlexikon: Create|DX 3.90}} 55KW(75 PS) | valign="top" | * {{:Traktorenlexikon: Create|DX 4.10}} 51kW (70 PS) * {{:Traktorenlexikon: Create|DX 4.30}} 55kW (75 PS) * {{:Traktorenlexikon: Create|DX 4.50}} 60kW (82 PS) * {{:Traktorenlexikon: Create|DX 4.70}} 66kW (90 PS) | valign="top" | * {{:Traktorenlexikon: Create|DX 6.05}} 72kW (98 PS) * {{:Traktorenlexikon: Create|DX 6.10}} 74kW (100 PS) * {{:Traktorenlexikon: Create|DX 6.30}} 85kW (115 PS) * {{:Traktorenlexikon: Create|DX 6.50}} 101kW (137 PS) | valign="top" | * {{:Traktorenlexikon: Create|DX 7.10}} 118kW (160 PS) ---- * {{:Traktorenlexikon: Create|DX 8.30}} 162kW (220 PS) |} === AgroPrima === [[File:2024-01-31 15-58-15 manif-Belfort.jpg|thumb|AgroPrima 4.51]] Die AgroPrima-Reihe von Deutz-Fahr besetzte als wirtschaftliche Mittelklasse das strategische Kernsegment für Familienbetriebe und Gemischtbetriebe. Mit einem Leistungsspektrum von 70 bis 115 PS fungierte sie als robustes Bindeglied zwischen der einfacheren AgroXtra-Serie und den technologisch gehobenen AgroStar-Modellen. Das Image der Serie ist bis heute durch ihre außergewöhnliche Zuverlässigkeit geprägt, was sie zu einem gefragten Allrounder auf dem Gebrauchtmarkt macht. Diese Marktposition verdankt sie der Kombination aus bewährter, mechanischer Technik – insbesondere den langlebigen luftgekühlten Motoren – und einem für damalige Verhältnisse hohen Komfort durch die StarCab-Kabine. Damit gilt die AgroPrima als das letzte klassische „Arbeitstier“ von Deutz-Fahr vor dem Einzug umfassender Elektronikkomponenten in die Landtechnik. {| class="wikitable" | 1989-1995 |- | valign="top" | * {{:Traktorenlexikon: Create|AgroPrima 4.31}} 55kW (75PS) * {{:Traktorenlexikon: Create|AgroPrima 4.51}} 60kW (82PS) * {{:Traktorenlexikon: Create|AgroPrima 4.56}} 66kW (90PS) * {{:Traktorenlexikon: Create|AgroPrima 6.06}} 74kW (100PS) * {{:Traktorenlexikon: Create|AgroPrima 6.16}} 81kW (110PS) |} === AgroXtra === {{Wikipedia|Deutz-Fahr AgroXtra}} [[File:Deutz-Fahr AgroXtra 4.17 in Mauren TG.jpg|thumb|AgroXtra 4.17]] Die AgroXtra-Reihe von Deutz-Fahr war als spezialisierter Allrounder im Leistungsbereich von 60 bis 100 PS positioniert und ergänzte die klassische AgroPrima-Serie. Ihr zentrales Alleinstellungsmerkmal war das innovative Freisicht-Konzept mit einer stark abgeschrägten Motorhaube, das in Verbindung mit der StarCab-Kabine eine für die damalige Zeit überragende Übersicht auf Frontanbaugeräte ermöglichte. Technisch setzte die Baureihe auf die bewährte Kombination aus robusten, luftgekühlten Motoren (Reihe 912 und 913) und unkomplizierter Mechanik, was ihr bis heute ein Image höchster Zuverlässigkeit und Wartungsfreundlichkeit verleiht. In der Marktpositionierung richtete sie sich vor allem an Betriebe mit intensivem Frontlader- und Pflegeeinsatz. Aufgrund dieser funktionalen Spezialisierung bei gleichzeitig hoher Wertstabilität gilt die AgroXtra-Serie heute als gesuchter Klassiker des modernen, mechanischen Schlepperbaus. Die Bezeichnung der Traktoren der AgroXtra-Serie setzen sich aus einer Zahl vor dem Punkt zusammen, die die Zylinderzhal des Motors angibt. Die erste Ziffer nach dem Punkt beschreibt grob die Leistungsstufe innerhalb der Serie, die zweite Ziffer ist immer eine 7. {| class="wikitable" | 1990-1995 |- | valign="top" | * {{:Traktorenlexikon: Create|AgroXtra 3.57}} 44kW (60PS) * {{:Traktorenlexikon: Create|AgroXtra 4.07}} 50kW (68PS) * {{:Traktorenlexikon: Create|AgroXtra 4.17}} 55kw (75PS) * {{:Traktorenlexikon: Create|AgroXtra 4.47}} 63kW (85PS) * {{:Traktorenlexikon: Create|AgroXtra 4.57}} 70kW (95PS) * {{:Traktorenlexikon: Create|AgroXtra 6.07}} 74kW (100PS) * {{:Traktorenlexikon: Create|AgroXtra 6.17}} 83kW (113PS) |} === AgroStar === [[File:Deutz-fahr agrostar 6.61.jpg|thumb|AgroStar 6.61 (Normalhaube)]] [[File:Deutz-Fahr AgroStar 6.38.jpg|thumb|AgroStar 6.38 (Freisichthaube)]] Die AgroStar-Baureihe markierte in den 1990er Jahren als technologisches Flaggschiff das obere Leistungssegment von 80 bis 190 PS und definierte den Standard für Großbetriebe und Lohnunternehmen. Ein zentrales Merkmal war die EuroCab, die mit einem Lärmpegel von nur 72 dB(A) zu den leisesten Kabinen ihrer Zeit gehörte und durch das Agrotronic-System eine präzise elektronische Überwachung sowie Hubwerksregelung ermöglichte. Während der Großteil der Serie auf die bewährte luftgekühlte Motorentechnik der Serie 913 von DEUTZ vertraute, bildeten die Spitzenmodelle 6.71 und 6.81 eine Zäsur, da sie mit wassergekühlten MWM-Motoren und einem Full-Powershift-Getriebe von Same ausgestattet waren. Diese beiden Topmodelle waren das Ergebnis der Zusammenarbeit innerhalb der neuen Konzerngruppe, kämpften jedoch mit technischen Herausforderungen, insbesondere einer für die hohe Motorleistung teilweise unterdimensionierten Vorderachse und Abstimmungsschwierigkeiten im Triebwerk, die bei einer Überarbeitung behoben wurde (Vorderachse ersetzt druch SIGE-Achse). Historisch ist die Serie zudem von besonderer Bedeutung, da sie die letzte große Traktoren-Baureihe darstellt, die im Stammwerk in Köln vom Band lief, bevor die Produktion im Zuge der Einführung der Agrotron-Serie und struktureller Veränderungen nach Lauingen verlagert wurde. Durch diese Kombination aus maximalem Komfort der leisen Kabine und der Rolle als letzter „echter Kölner“ nimmt der AgroStar heute eine Sonderstellung in der Markenhistorie ein. {| class="wikitable" | 1990-1997 |- | '''Normalhaube''' (ab 1990) || '''Freisichthaube''' (ab 1993) |- | valign="top" | Vierzylinder: * {{:Traktorenlexikon: Create|AgroStar 4.61}} 60kW (82PS) * {{:Traktorenlexikon: Create|AgroStar 4.71}} 70kW (95PS) ---- Sechszylinder: * {{:Traktorenlexikon: Create|AgroStar 6.11}} 74kW (100PS) * {{:Traktorenlexikon: Create|AgroStar 6.21}} 83kW (113PS) * {{:Traktorenlexikon: Create|AgroStar 6.31}} 88kW (120PS) * {{:Traktorenlexikon: Create|AgroStar 6.61}} 105kW (143PS) * {{:Traktorenlexikon: Create|AgroStar 6.71}} 121kW (165PS) * {{:Traktorenlexikon: Create|AgroStar 6.81}} 136kW (185PS) | valign="top" | Vierzylinder: * {{:Traktorenlexikon: Create|AgroStar 4.68}} 67kW (91PS) * {{:Traktorenlexikon: Create|AgroStar 4.78}} 74kW (100PS) ---- Sechszylinder: * {{:Traktorenlexikon: Create|AgroStar 6.08}} 79kW (107PS) * {{:Traktorenlexikon: Create|AgroStar 6.28}} 85kW (115PS) * {{:Traktorenlexikon: Create|AgroStar 6.38}} 92kW (125PS) |- | valign="top" colspan="2" | '''Sonderform'''<!--„leicht schräge Haube“--> (1993–1995) * {{:Traktorenlexikon: Create|AgroStar 8.31}} 169kW (230PS) |} [[File:Agrostar 8.31.jpg|thumb|AgroStar 8.31]] Eine Ausnahme im AgroStar-Programm bildete der AgroStar 8.31 mit 230 PS als absolute Leistungsspitze des Deutz-Fahr-Programms und war als schwerer Ackerschlepper für den Weltmarkt konzipiert. Er basierte auf einer Kooperation mit dem US-Hersteller Allis-Gleaner Corporation (AGCO) und entsprach baugleich dem White 6215. Technisch unterschied er sich radikal von den kleineren Modellen: Er verfügte über einen luftgekühlten Deutz BF6L 513 FR Motor und ein Full-Powershift-Getriebe von Funk. Trotz seiner enormen Zugkraft blieb er mit nur geringen Stückzahlen ein Exot im Portfolio, der den Versuch markierte, im Segment der Knicklenker und Großtraktoren gegen US-Konkurrenz zu bestehen. === Agrosun === [[File:Agrosun 140 (6055469803).jpg|thumb|Agrosun 140]] Die Agrosun-Serie von Deutz-Fahr ist eine eher seltene Baureihe, die ab Ende der 1990er Jahre primär für Exportmärkte (unter anderem Osteuropa und Südamerika) produziert wurde. Sie kombinieren die robuste [[Traktorenlexikon: SAME|SAME]]-''Laser''-Reihe (aus dem Konzernverbund) mit den bewährten, luftgekühlten Deutz-Motoren der Baureihe 913 (BF6L). {| class="wikitable" | 1995-2004 |- | valign="top" | * {{:Traktorenlexikon: Create|Agrosun 100}} 74kW (100 PS) * {{:Traktorenlexikon: Create|Agrosun 120}} 88kW (120 PS) * {{:Traktorenlexikon: Create|Agrosun 140}} 103kW (140 PS) |} ---- <!-- Beginn Agrotron-Abschnitt --> === Agrotron === {{Wikipedia|Deutz-Fahr Agrotron}} Die Agrotron-Baureihe markiert im Jahr 1995 die radikalste technische und optische Zäsur in der Geschichte von Deutz-Fahr. Mit dem Ende der klassischen DX-Abstammung führte diese Serie die flächendeckende Wasserkühlung sowie das markante Design mit einer extrem flach abfallenden Motorhaube und einer rundum verglasten Panorama-Kabine ein, was eine bis dahin unerreichte Rundumsicht ermöglichte. Wurde die Reihe noch in Köln entwickelt, wanderte die Fertigung 1996 mit der Übernahme von Deutz-Fahr durch die SLH- bzw. SDF-Gruppe nach Lauingen, wo bis dato nur Mähdrescher und die größten Traktorenmodelle von KHD gefertigt wurden. Modelle unter dem Namen Agrotron werden bis heute (2026) produziert. Aus diesem Anlass bot Deutz-Fahr 2025 eine spezielle "30 Jahre Agrotron" -Edition an. ==== Agrotron (MK1–MK3) ==== [[File:DEUTZ-FAHR Agrotron 6.15 MK1.jpg|thumb|Agrotron 6.15 MK1]] Die erste Generation, der Agrotron MK1 (1995–1997), setzte konsequent auf moderne wassergekühlte Motoren und elektronisch gesteuerte Lastschaltgetriebe (ZF). Trotz des revolutionären Konzepts litt diese frühe Phase unter erheblichen Qualitätsproblemen, insbesondere in der Elektronik und der Verarbeitung, was den Ruf der Marke zeitweise belastete. Mit der Überarbeitung zum Agrotron MK2 (1997–2000) wurden viele dieser Kinderkrankheiten durch verbesserte Komponenten und eine stabilere Software behoben, was die Zuverlässigkeit deutlich steigerte. Die finale Stufe dieser Ära bildete der Agrotron MK3 (2000–2003), der durch die Einführung der B-Serie der wassergekühlten Motoren und eine weiter optimierte Kabinenausstattung als technisch ausgereift galt. In dieser Phase wurde auch die Bedienung durch das neue PowerCom-S-Bedienkonzept ergonomisch verfeinert. Die Agrotron-Modelle MK1 bis MK3 legten damit den Grundstein für die heutige Traktorengeneration von Deutz-Fahr, indem sie den Fokus endgültig von rein mechanischer Robustheit hin zu einer Kombination aus High-Tech-Elektronik, hoher Hydraulikleistung und maximalem Fahrkomfort verschoben. Die Typenbezeichnungen der Agrotrons aus den Jahren 1995 bis etwa 2008 sind dank diverser Varianten und mehrfacher Modellüberholungen vielfältig. * Modelle der ersten Baureihe (MK1) tragen einen Punkt in der Modellbezeichnung; die Nummer davor entspricht der Zylinderzahl. * Modelle der zweiten Baureihe (MK2) tragen einfache zwei- oder dreistellige Nummern, die sich an der Motorleistung in PS orientieren. * Modelle der dritten Baureihe (MK3) setzen das Nummerierungsschema der zweiten Reihe fort, tragen jedoch den Zusatz „MK3“ im Namen. Das steht für engl. mark 3 (sinngemäß „3. erreichte Qualitätsstufe“). {| class="wikitable" | '''Agrotron MK1-Reihe'''<br />(1995–1997) || '''Agrotron MK2-Reihe'''<br />(1997–2000) || '''Agrotron MK3-Reihe'''<br />(2000–2003) |- | valign="top" | <!-- MK1-Reihe, 1995–1997 --> * {{:Traktorenlexikon: Create|Agrotron 4.70}} 51kW (70PS) * {{:Traktorenlexikon: Create|Agrotron 4.80}} 55kW (75PS) * {{:Traktorenlexikon: Create|Agrotron 4.85}} 60kW (82PS) * {{:Traktorenlexikon: Create|Agrotron 4.90}} 65kW (88PS) * {{:Traktorenlexikon: Create|Agrotron 4.95}} 69kW (94PS) <!-- tt? http://www.dlg-test.de/pbdocs/traktoren/deutzfahr-agrotron495tt.pdf --> ---- * {{:Traktorenlexikon: Create|Agrotron 6.00}} 69kW (94PS) <!-- TT3 (1995) --> * {{:Traktorenlexikon: Create|Agrotron 6.01}} 73kW (100PS) * {{:Traktorenlexikon: Create|Agrotron 6.05}} 77kW (105PS) * {{:Traktorenlexikon: Create|Agrotron 6.15}} 85kW (115PS) <!--1996: http://www.dlg-test.de/pbdocs/traktoren/deutzfahr-agrotron615.pdf --> * {{:Traktorenlexikon: Create|Agrotron 6.20}} 88kW (120PS) * {{:Traktorenlexikon: Create|Agrotron 6.30}} 99kW (135PS) * {{:Traktorenlexikon: Create|Agrotron 6.45}} 107kW (145PS) | valign="top" | <!-- MK2-Reihe, 1997–2000 --> * {{:Traktorenlexikon: Create|Agrotron 80}} 59KW (80PS) * {{:Traktorenlexikon: Create|Agrotron 85}} 63kW (85PS) * {{:Traktorenlexikon: Create|Agrotron 90}} 66kW (90PS) * {{:Traktorenlexikon: Create|Agrotron 100}} 70kW (95PS) <!-- 1996: http://www.dlg-test.de/pbdocs/traktoren/deutzfahr-agrotron100.pdf --> * {{:Traktorenlexikon: Create|Agrotron 105}} 74kW (100PS) * {{:Traktorenlexikon: Create|Agrotron 106}} 74kW (100PS) * {{:Traktorenlexikon: Create|Agrotron 110}} 77kW (105PS) * {{:Traktorenlexikon: Create|Agrotron 115}} 85kW (115PS) * {{:Traktorenlexikon: Create|Agrotron 120}} 88kW (120PS) <!-- 2000: http://www.dlg-test.de/pbdocs/traktoren/deutzfahr-agrotron120.pdf --> * {{:Traktorenlexikon: Create|Agrotron 135}} 99kW (135PS) * {{:Traktorenlexikon: Create|Agrotron 150}} 110kW (150PS) * {{:Traktorenlexikon: Create|Agrotron 156}} 114kW (155PS) * {{:Traktorenlexikon: Create|Agrotron 160}} 118kW (160PS) * {{:Traktorenlexikon: Create|Agrotron 175}} 129kW (175PS) * {{:Traktorenlexikon: Create|Agrotron 200}} 147kW (200PS) * {{:Traktorenlexikon: Create|Agrotron 230}} 162kW (220PS) <!--1999: http://www.dlg-test.de/pbdocs/traktoren/deutzfahr-agrotron230.pdf --> * {{:Traktorenlexikon: Create|Agrotron 260}} 191kW (260PS) | valign="top" | <!-- MK3-Reihe, 2000–2003 --> * {{:Traktorenlexikon: Create|Agrotron 80 MK3}} 60kW (82PS) * {{:Traktorenlexikon: Create|Agrotron 85 MK3}} 66kW (90PS) * {{:Traktorenlexikon: Create|Agrotron 90 MK3}} 69kW (94PS) <!-- bis 2005 gebaut? http://www.dlg-test.de/pbdocs/traktoren/Deutz-Fahr_Agrotron_90_MK3.pdf --> * {{:Traktorenlexikon: Create|Agrotron 100 MK3}} 74kW (101PS) * {{:Traktorenlexikon: Create|Agrotron 105 MK3}} 77kW (105PS) * {{:Traktorenlexikon: Create|Agrotron 106 MK3}} 74kW (100PS) * {{:Traktorenlexikon: Create|Agrotron 110 MK3}} 80kW (109PS) <!-- bis 2005 gebaut? http://www.dlg-test.de/pbdocs/traktoren/deutz-fahr_agrotron110_mk3.pdf --> * {{:Traktorenlexikon: Create|Agrotron 115 MK3}} 87kW (118PS) * {{:Traktorenlexikon: Create|Agrotron 120 MK3}} 88kW (120PS) <!-- http://www.dlg-test.de/pbdocs/traktoren/deutzfahr-agrotron120mk3.pdf --> * {{:Traktorenlexikon: Create|Agrotron 135 MK3}} 100kw (136PS) <!-- http://www.dlg-test.de/pbdocs/traktoren/Deutz-Fahr_Agrotron_135_MK3.pdf --> * {{:Traktorenlexikon: Create|Agrotron 150 MK3}} 110kW (150PS) * {{:Traktorenlexikon: Create|Agrotron 165 MK3}} 121kW (165PS) * {{:Traktorenlexikon: Create|Agrotron 175 MK3}} 129kW (175PS) <!-- bis 2004? --> * {{:Traktorenlexikon: Create|Agrotron 200 MK3}} 147kW (200PS) <!-- bis 2004? --> * {{:Traktorenlexikon: Create|Agrotron 205 MK3}} 144kw (196PS) <!-- 2003/04 --> * {{:Traktorenlexikon: Create|Agrotron 230 MK3}} 171kW (233PS) * {{:Traktorenlexikon: Create|Agrotron 260 MK3}} 191kW (260PS) |} ==== Agrotron (Serie 4 / New Generation) ==== [[File:Deutz-Fahr Agrotron 130.jpg|thumb|Agrotron 130]] Die Agrotron-Serie 4 (oft als New Generation oder MK4 bezeichnet), produziert zwischen 2003 und 2007, stellte die finale Reifestufe des ursprünglichen Agrotron-Konzepts dar. Sie löste die MK3-Reihe ab und gilt unter Praktikern heute als eine der stabilsten und ausgereiftesten Baureihen, da sie die moderne Technik der Vorgänger mit einer deutlich höheren Fertigungsqualität und Standfestigkeit kombinierte. Technisch basierte die „New Generation“ auf den wassergekühlten Deutz-Motoren der Baureihe 2012, die nun flächendeckend die Euro-II-Abgasnorm erfüllten und für ihre Spritzigkeit sowie ihre effiziente Kraftentfaltung bekannt waren. Ein wesentliches Merkmal war die Einführung des vierstufigen Lastschaltgetriebes von ZF (7200er Serie), das in Verbindung mit der bewährten elektronischen Hubwerksregelung und einer leistungsstarken Axialkolbenpumpe für die Hydraulik eine hohe Arbeitsleistung garantierte. Optisch blieb das markante Freisicht-Design erhalten, wurde jedoch im Detail verfeinert. Die Kabine profitierte von einer nochmals verbesserten Schalldämmung und einer intuitiveren Anordnung der Bedienelemente, wie dem ergonomischen Multifunktionsgriff PowerCom-S. Mit dem MK4 schaffte Deutz-Fahr endgültig den Turnaround nach den schwierigen MK1-Jahren: Die Maschinen dieser Ära gelten als äußerst wertstabil und markieren den Übergang zu den späteren Baureihen (wie dem Agrotron K, M und TTV), indem sie bewiesen, dass das Agrotron-Konzept im harten Alltagseinsatz vollends zuverlässig sein kann. Die Typenbezeichnungen der Agrotrons aus den Jahren 1995 bis etwa 2008 sind dank diverser Varianten und mehrfacher Modellüberholungen vielfältig. * Bei der MK4-serie wurden überholte/weiterentwickelte „Nachfolgemodelle“ auf den Markt gebracht, die entweder vorher noch nicht benutzte Nummern tragen (teilweise mit Zusatz) oder aber Nummern der MK2- oder MK3-Reihe weiterverwenden (ohne Zusatz). ''Wir versuchen, hier etwas Ordnung ins Modell-Wirrwar zu bringen. Korrekturhinweise bitte auf der [[Diskussion:Traktorenlexikon: Deutz-Fahr|Diskussionsseite]] anbringen. Danke!'' {| class="wikitable" | '''Agrotron''' (MK4, „New“)<br />(2003–2008, z.T. bis 2010) |- | valign="top" | <!-- Nachfolge-Reihen "New" (2003–2005–2008) --> <!-- Liste "Agrotron New": 130, 140, 155, 165, 210, 235, 265 ODER 80, 90, 100, 105, 110, 130, 140, 150.7, 155, 165, 165.7 --> * {{:Traktorenlexikon: Create|Agrotron 80 (New)}} 60kW (82PS) <!-- 2003-2005 --> * {{:Traktorenlexikon: Create|Agrotron 90 (New)}} 65kW (88PS) <!-- 2003-2005, noch als MK3 bezeichnet? --> * {{:Traktorenlexikon: Create|Agrotron 100 (New)}} 73kW (99PS) <!-- 2004-2005, noch als MK3 bezeichnet? --> * {{:Traktorenlexikon: Create|Agrotron 105 (New)}} 74kW (100PS) <!-- 2003-2005, noch als MK3 bezeichnet? --> * {{:Traktorenlexikon: Create|Agrotron 108}} 80kW (109PS) <!-- 2003-2005, 106MK3-Nachfolger [http://www.dlv.de/grafiken/traktorenDB/pdf/2003/LZ311028.pdf] (2003) --> * {{:Traktorenlexikon: Create|Agrotron 110 (New)}} 74kW (100PS) <!-- 2003-2005, noch als MK3 bezeichnet? --> * {{:Traktorenlexikon: Create|Agrotron 118}} 90kW (122PS) <!-- 2003-2005, TT3-1 (2004), 110MK3-Nachfolger [http://www.fat.admin.ch/traktor/trak1867d.pdf] --> * {{:Traktorenlexikon: Create|Agrotron 120 (New)}} 80kW (109PS) <!--TT 2005-2008 --> * {{:Traktorenlexikon: Create|Agrotron 128}} 93kW (126PS) <!-- 2003-2005, 115MK3-Nachfolger --> * {{:Traktorenlexikon: Create|Agrotron 130}} 94kW (128PS) <!-- zwei unterschiedlich starke Modelle 2003-2005-2008 --> * {{:Traktorenlexikon: Create|Agrotron 130 (NEW)}} 90kW (122PS) * {{:Traktorenlexikon: Create|Agrotron 140}} 105kW (143PS) <!-- 2003-2005 --> * {{:Traktorenlexikon: Create|Agrotron 150 (New)}} 107kW (145PS) <!-- 2005-2008, TT3 (2007); 2006: http://www.dlg-test.de/pbdocs/traktoren/Deutz-Fahr_Agrotron_150.pdf --> * {{:Traktorenlexikon: Create|Agrotron 150.7}} 107kW (145PS) <!-- 2005-2007/08 http://www.dlg-test.de/pbdocs/traktoren/Deutz-Fahr_Agrotron_150_7.pdf --> * {{:Traktorenlexikon: Create|Agrotron 155}} 113kW (153PS) <!-- 2003-2005 --> * {{:Traktorenlexikon: Create|Agrotron 165 (New)}} 120kW (163PS) <!-- 2003-2004/05 --> * {{:Traktorenlexikon: Create|Agrotron 165.7}} 121kW (165PS) <!-- 2005-2007/08, nur Profiline? --> * {{:Traktorenlexikon: Create|Agrotron 180.7}} 125kW (170PS) <!-- 2005-2007/08, nur Profiline? --> * {{:Traktorenlexikon: Create|Agrotron 200 (New)}} 151kW (205PS) <!-- 2003-2005-2008, zwei Modelle? Übergang zum L 720? --> * {{:Traktorenlexikon: Create|Agrotron 210}} 146kW (198PS) <!--2003-2005 http://www.dlg-test.de/pbdocs/traktoren/Deutz-FahrAgrotron210_2004.pdf --> * {{:Traktorenlexikon: Create|Agrotron 215}} 147kW (200PS) <!-- 2004–2005-2007-2010US --> * {{:Traktorenlexikon: Create|Agrotron 235}} 170kW (231PS) <!-- 2003-2005 --> * {{:Traktorenlexikon: Create|Agrotron 265}} 184kW (250PS) <!-- 2003-2005-2008-2010US: zwei leicht unterschiedliche Modelle --> |} ==== Agrotron TTV ==== [[File:TTV 630.JPG|thumb|Agrotron TTV 630]] Die Agrotron TTV-Baureihe, eingeführt ab dem Jahr 2001 (mit dem TTV 1160), markierte den Einstieg von Deutz-Fahr in die Ära der stufenlosen Antriebstechnik. Während die Standard-Agrotrons auf Lastschaltgetriebe setzten, verfügten die TTV-Modelle über das leistungsverzweigte S-Matic-Getriebe von ZF, das eine stufenlose Beschleunigung von 0 bis 50 km/h ohne Zugkraftunterbrechung ermöglichte. Technisch kombinierten diese Schlepper die bewährte Freisicht-Philosophie und die wassergekühlten Deutz-Motoren mit einem völlig neuen Bedienkonzept. Ein zentrales Element war der PowerCom-S-Multifunktionsgriff, über den der Fahrer die gesamte Geschwindigkeit, Fahrtrichtung und die Hydraulikfunktionen mit einer Hand steuern konnte. In den Folgejahren wurde die Serie stetig erweitert, wobei die Generationen analog zur Entwicklung der M- und L-Serie (ca. 2007 bis 2013) durch modernere Deutz-Common-Rail-Motoren (DCR) und eine leistungsfähigere Elektronik mit iMonitor-Schnittstelle ergänzt wurden. Der Agrotron TTV positionierte sich als technologisches Aushängeschild der Marke für anspruchsvolle Ackerbau- und Transportbetriebe, die maximale Effizienz bei reduziertem Kraftstoffverbrauch suchten. Er bewies, dass das ursprüngliche Agrotron-Konzept auch in der Oberklasse der stufenlosen Getriebetechnik voll konkurrenzfähig war und legte den Grundstein für die heutige 6er, 7er und 8er TTV-Großtraktorenfamilie. {| class="wikitable" | '''erste TTV-Reihe''' (2001-2007) || '''zweite TTV-Reihe''' (2008-2012) || '''TTV 400''' (2011-2013) |- | valign="top" | <!-- erste Reihe ab 2001 --> * {{:Traktorenlexikon: Create|Agrotron TTV 1130}} 92kW (125PS) * {{:Traktorenlexikon: Create|Agrotron TTV 1145}} 103kW (140PS) * {{:Traktorenlexikon: Create|Agrotron TTV 1160}} 110kW (150PS) | valign="top" | <!-- zweite Reihe ab 2008 --> * {{:Traktorenlexikon: Create|Agrotron TTV 610}} 115kW (157PS) * {{:Traktorenlexikon: Create|Agrotron TTV 620}} 120kW (163PS) * {{:Traktorenlexikon: Create|Agrotron TTV 630}} 149kW (203PS) | valign="top" | <!-- TTV 400 --> * {{:Traktorenlexikon: Create|Agrotron TTV 410}} 73kW (99PS) * {{:Traktorenlexikon: Create|Agrotron TTV 420}} 81kW (110PS) * {{:Traktorenlexikon: Create|Agrotron TTV 430}} 91kW (124PS) |} ==== Agrotron K ==== [[File:Deutz-Fahr Agrotron K100.jpg|thumb|Agrotron K100]] Die Agrotron K-Baureihe, produziert zwischen 2005 und 2013, wurde als kompakter und wendiger Allrounder unterhalb der größeren M-Serie positioniert. Sie löste die kleineren Agrotron-Modelle (wie den 80 bis 105) ab und war speziell für gemischte Betriebe, Grünlandwirtschaft und den Frontladereinsatz konzipiert. Die Serie umfasste Modelle wie den K 90, 100, 110 und später die stärkeren K 410, 420 und 430. Technisch setzten die K-Modelle auf die wassergekühlten Deutz-Vierzylindermotoren der Baureihe 2012 (später 2013), die sich durch ein kompaktes Maß und eine hohe Drehmomentreserve auszeichneten. Ein wesentliches Merkmal war das bewährte ZF-Getriebe mit dreifacher Lastschaltung, das eine feine Abstufung für die tägliche Arbeit bot. Trotz ihrer kompakteren Abmessungen verfügten die Schlepper über die vollwertige Agrotron-Kabine, die eine exzellente Rundumsicht bot und in der „Profiline“-Ausstattung sogar über eine elektronische Steuergerätebedienung am Multifunktionsgriff verfügte. {| class="wikitable" | '''1. K-Reihe''' (2005–2009) || '''2. K-Reihe''' (2008–2013) |- | valign="top" | * {{:Traktorenlexikon: Create|Agrotron K 90}} 62kW (84 PS) * {{:Traktorenlexikon: Create|Agrotron K 100}} 70kW (95 PS) * {{:Traktorenlexikon: Create|Agrotron K 110}} 76kW (104 PS) * {{:Traktorenlexikon: Create|Agrotron K 120}} 85kW (115 PS) | valign="top" | * {{:Traktorenlexikon: Create|Agrotron K 410}} 65kW (89 PS) * {{:Traktorenlexikon: Create|Agrotron K 420}} 74kW (100 PS) * {{:Traktorenlexikon: Create|Agrotron K 430}} 82kW (112 PS) * {{:Traktorenlexikon: Create|Agrotron K 610}} 82kW (112 PS) |} ==== Agrotron M ==== [[File:Deutz-Fahr Agrotron M620 mit Anhänger.jpg|thumb|Agrotron M620]] Die Agrotron M-Baureihe, produziert zwischen 2007 und 2013, war das Herzstück des Deutz-Fahr-Programms im mittleren und gehobenen Leistungssegment von ca. 110 bis 190 PS. Sie löste die erfolgreichen Modelle der Agrotron 100er-Serie sowie die „New Generation“ (MK4) ab und basierte auf einem technisch ausgereiften Konzept, das Zuverlässigkeit mit moderner Common-Rail-Technologie verband. Technisch setzten die M-Modelle (wie der M 600, 620 oder 650) flächendeckend auf die Deutz-Sechszylindermotoren (TCD 2012 L06) mit dem DCR-System (Deutz Common Rail). Diese Motoren zeichneten sich durch eine effiziente Verbrennung und eine hohe Drehmomentreserve aus. Kraftübertragungstechnisch kam das bewährte ZF-Triebwerk (7200er Serie) mit vierfacher Lastschaltung zum Einsatz, das für seine Langlebigkeit und den hohen Wirkungsgrad bekannt war. Ein besonderes Merkmal war die Wahlmöglichkeit bei der Ausstattung: Während die Basismodelle mechanische Steuergeräte besaßen, bot die Profiline-Ausstattung eine voll-elektronische Bedienung über den PowerCom-S-Multifunktionsgriff. Die Agrotron M haben Schwestermodelle im [[Traktorenlexikon: SAME Deutz-Fahr|SDF-Konzern]] mit der Motorhaube in silber die [[Traktorenlexikon: Lamborghini#R6|Lamborghini R6]], mit orange-roten Motorhauben die [[Traktorenlexikon: SAME#Iron|SAME Iron]] und die [[Traktorenlexikon: Hürlimann#XL|Hürlimann XL]]. {| class="wikitable" | colspan="2" | '''2008-2013''' |- | || NaturalPower (Rapsölbetrieb) |- | valign="top" | * {{:Traktorenlexikon: Create|Agrotron M 600}} 89kW (121 PS) * {{:Traktorenlexikon: Create|Agrotron M 610}} 97kW (132 PS) * {{:Traktorenlexikon: Create|Agrotron M 620}} 114kW (155 PS) * {{:Traktorenlexikon: Create|Agrotron M 640}} 126kW (171 PS) * {{:Traktorenlexikon: Create|Agrotron M 650}} 133kW (181 PS) | valign="top" | * {{:Traktorenlexikon: Create|Agrotron M 600 NaturalPower}} * {{:Traktorenlexikon: Create|Agrotron M 610 NaturalPower}} * {{:Traktorenlexikon: Create|Agrotron M 620 NaturalPower}} * {{:Traktorenlexikon: Create|Agrotron M 640 NaturalPower}} * {{:Traktorenlexikon: Create|Agrotron M 650 NaturalPower}} |- | colspan="2" | '''2010-2013''' |- | 4 Zylinder || 6 Zylinder |- | valign="top" | * {{:Traktorenlexikon: Create|Agrotron M 410}} 99kW (134 PS) * {{:Traktorenlexikon: Create|Agrotron M 420}} 113kW (154 PS) | valign="top" | * {{:Traktorenlexikon: Create|Agrotron M 615}} 107kW (146 PS) * {{:Traktorenlexikon: Create|Agrotron M 625}} 120kW (163 PS) |} ==== Agrotron L ==== [[File:Deutz-Fahr Agrotron L 720 Tractor at IndAgra Farm Romexpo 2010 (front view).JPG|thumb|Agrotron L 720]] Die Agrotron L-Baureihe, produziert zwischen 2007 und 2013, war als großvolumige Ergänzung zur M-Serie konzipiert und deckte das obere Segment der Sechszylinder-Traktoren bis etwa 210 PS ab. Im Gegensatz zu den kleineren Modellen, die primär auf ZF-Komponenten setzten, markierte die L-Serie eine engere technische Verflechtung innerhalb des SDF-Konzerns (Same Deutz-Fahr). Technisch basierte die Baureihe zwar auf den bewährten Deutz-Motoren (TCD 2012 L06) mit Common-Rail-Einspritzung, griff jedoch bei der Kraftübertragung auf eine Same-Basis zurück. Das verbaute Triebwerk stammte aus der Entwicklung von Same und kam baugleich auch in Modellen wie dem Same Iron Continuity oder dem Lamborghini R7 zum Einsatz. Dieses Getriebe verfügte über eine 9-stufige Lastschaltung (insgesamt 27 Vorwärts- und 27 Rückwärtsgänge), was dem Fahrer eine extrem feine Abstufung im Hauptarbeitsbereich ermöglichte, jedoch in der Bedienung eine Umstellung zu den ZF-basierten Modellen darstellte. Die Agrotron L-Modelle, wie der L 710, 720 und 730, waren für schwere Zugarbeiten optimiert und verfügten über eine massivere Hinterachse sowie eine enorme Hubkraft. Trotz der hohen Leistungsfähigkeit blieb die Serie ein Nischenmodell, da die Kooperation mit der Same-Getriebetechnik in der 200-PS-Klasse bei klassischen Deutz-Kunden auf ein geteiltes Echo stieß. Dennoch gilt die L-Serie heute als robuste Maschine für Betriebe, die eine schwere Lastschaltmaschine mit dem Komfort der Panorama-Kabine suchten, bevor sie durch die Serie 7 abgelöst wurde. {| class="wikitable" | 2008-2013 |- | valign="top" | * {{:Traktorenlexikon: Create|Agrotron L 710}} 138kW (187 PS) * {{:Traktorenlexikon: Create|Agrotron L 720}} 145kW (197 PS) * {{:Traktorenlexikon: Create|Agrotron L 730}} 162kW (220 PS) |} ==== Agrotron X ==== [[File:Belagro-2019 (foreign manufacturers) 016.jpg|thumb|Agrotron X720]] Die Agrotron X-Baureihe, produziert zwischen 2007 und 2013, bildete die absolute Leistungsspitze von Deutz-Fahr im Bereich der schweren Ackerschlepper. Im Gegensatz zur L-Serie, die auf SDF-Komponenten basierte, griff man bei den Flaggschiffen wieder auf eine bewährte Kombination aus deutschen Kernkomponenten zurück, um maximale Zuverlässigkeit bei Leistungen bis zu 275 PS zu garantieren. Das Herzstück der Kraftübertragung bildete das ZF-Powershift-Getriebe (Typ T 7300) mit 40 Vorwärts- und 40 Rückwärtsgängen. Die technische Besonderheit, die den Agrotron X von vielen Wettbewerbern abhob, war der Einsatz einer Voith-Strömungskupplung (Turbokupplung). Diese ermöglichte ein extrem verschleißfreies und sanftes Anfahren selbst unter schwerster Last und schützte den Motor sowie das Getriebe vor Drehmomentspitzen – ein Merkmal, das besonders bei schweren Zugarbeiten und Transporten mit hohen Lasten geschätzt wurde. Unter der Haube arbeiteten die großvolumigen 7,1-Liter-Deutz-Motoren (TCD 2013 L06 4V), die dank Common-Rail-Technik und elektronischer Motorregelung (DPC) enorme Kraftreserven mobilisierten. Die Kombination aus dem ZF-Triebwerk, der Voith-Kupplung und der bewährten Panorama-Kabine machte den Agrotron X zu einem hocheffizienten Traktor. Er war die letzte große Lastschalt-Bastion der Marke in dieser Leistungsklasse, bevor die Entwicklung mit der Serie 9 vollständig auf stufenlose Antriebe umgestellt wurde. {| class="wikitable" | 2007-2013 |- | valign="top" | * {{:Traktorenlexikon: Create|Agrotron X 710}} 161kW (219 PS) * {{:Traktorenlexikon: Create|Agrotron X 720}} 193kW (262 PS) * {{:Traktorenlexikon: Create|Agrotron X 730}} 224kW (305 PS) |} ==== Agrotron Serie 5 ==== [[File:Deutz-Fahr Agrotron 5120C.jpg|thumb|Deutz-Fahr Agrotron 5120C]] Die Serie 5, eingeführt im Jahr 2013, gliederte das Segment zwischen 70 und 130 PS in vier spezialisierte Unterbaureihen, um unterschiedliche Anforderungsprofile abzudecken. Während die Standard-Serie 5 als High-Tech-Flaggschiff mit Deutz-Motoren (TCD 3.6) und optionalem stufenlosem TTV-Getriebe den oberen Bereich markierte, bot die Serie 5C einen kompakten, gehobenen Allrounder mit Fokus auf Frontladerarbeiten. Im preisbewussten Mittelfeld positionierte sich die Serie 5G, die modular aufgebaut war und verstärkt auf die konzerneigenen SDF-FARMotion-Motoren setzte, gefolgt von der Serie 5D als schmalerem Nachfolger des Agroplus für Hof- und Kommunaleinsätze. Allen Modellen gemeinsam war das moderne Design sowie technische Features wie das SenseClutch-System, womit Deutz-Fahr die Flexibilität in der Kompaktklasse massiv steigerte. Ab 2013. {| class="wikitable" | '''Serie 5''' || '''Serie 5C''' || '''Serie 5D''' || '''Serie 5G''' |- | valign="top" | * {{:Traktorenlexikon: Create|Agrotron 5100}} * {{:Traktorenlexikon: Create|Agrotron 5110}} * {{:Traktorenlexikon: Create|Agrotron 5120}} * {{:Traktorenlexikon: Create|Agrotron 5130}} | valign="top" | * {{:Traktorenlexikon: Create|5090 C}} * {{:Traktorenlexikon: Create|5100 C}} * {{:Traktorenlexikon: Create|5110 C}} * {{:Traktorenlexikon: Create|5120 C}} | valign="top" | * {{:Traktorenlexikon: Create|5080 D}} * {{:Traktorenlexikon: Create|5090 D}} * {{:Traktorenlexikon: Create|5090.4 D}} * {{:Traktorenlexikon: Create|5100.4 D}} | valign="top" | * {{:Traktorenlexikon: Create|5090 G}} * {{:Traktorenlexikon: Create|5090.4 G}} * {{:Traktorenlexikon: Create|5100 G}} * {{:Traktorenlexikon: Create|5105.4 G}} * {{:Traktorenlexikon: Create|5115.4 G}} |} Ab 2014. {| class="wikitable" | '''Serie 5D''' || '''Serie 5G''' |- | valign="top" | * {{:Traktorenlexikon: Create|Agrotron 5080 D}} * {{:Traktorenlexikon: Create|Agrotron 5090 D}} * {{:Traktorenlexikon: Create|Agrotron 5090.4 D}} * {{:Traktorenlexikon: Create|Agrotron 5100.4 D}} | valign="top" | * {{:Traktorenlexikon: Create|Agrotron 5080 G}} * {{:Traktorenlexikon: Create|Agrotron 5090 G}} * {{:Traktorenlexikon: Create|Agrotron 5100 G}} * {{:Traktorenlexikon: Create|Agrotron 5090.4 G}} * {{:Traktorenlexikon: Create|Agrotron 5105.4 G}} * {{:Traktorenlexikon: Create|Agrotron 5115.4 G}} |} Stand 2017: Der Name Agrotron ist bei der '''Serie 5''' im Netz nicht mehr zu finden, deshalb siehe [[Traktorenlexikon: Deutz-Fahr#Serie 5|Serie 5]] als Nachfolger oder Fortführung der hier beschriebenen Modelle. ==== Agrotron Serie 6 ==== [[File:Serie 6 TTV.jpg|thumb|Agrotron 6180 TTV]] Die Serie 6, eingeführt im Jahr 2013, löste die Agrotron M-Baureihe ab und bildete das technologische Rückgrat von Deutz-Fahr im Leistungsbereich von ca. 120 bis 210 PS. Diese Generation markierte den Übergang zur Abgasstufe 3b (Tier 4i), was den Einsatz von SCR-Technologie (AdBlue) bei den bewährten Deutz-TCD-Motoren (4,1 und 6,1 Liter) erforderlich machte. Ein zentrales Merkmal dieser Serie war die konsequente Trennung der Getriebekonzepte bei weitgehend identischer Optik: Die Powershift-Modelle setzten weiterhin auf die robusten ZF-Lastschaltgetriebe (7200er-Serie), während die TTV-Modelle mit dem stufenlosen S-Matic-Getriebe ausgestattet waren. Neu eingeführt wurde zudem die CShift-Variante, die ein elektrohydraulisches Schalten der sechs Gänge per Joystick ermöglichte, ohne die Kupplung oder den Schalthebel zu betätigen. Optisch wurde das Design durch die Zusammenarbeit mit Giugiaro Design modernisiert, wobei die markante Panorama-Kabine in der MaxiVision-Ausführung ihren Standard definierte – inklusive einer verbesserten Geräuschdämmung und des iMonitor 2.0. Durch die enorme Modellvielfalt, die vom kompakten Vierzylinder bis zum schweren Sechszylinder reichte, festigte die Serie 6 die Marktposition von Deutz-Fahr als Anbieter hochmoderner, effizienter Allround- und Ackerschlepper. {| class="wikitable" | 2013-2016/2017 |- | 4 Zylinder || 6 Zylinder |- | valign="top" | * {{:Traktorenlexikon: Create|Agrotron 6120.4}} (114 PS) * {{:Traktorenlexikon: Create|Agrotron 6130.4}} (124 PS) * {{:Traktorenlexikon: Create|Agrotron 6140.4}} (130 PS) * {{:Traktorenlexikon: Create|Agrotron 6150.4}} (137 PS) * {{:Traktorenlexikon: Create|Agrotron 6160.4}} (156 PS) | valign="top" | * {{:Traktorenlexikon: Create|Agrotron 6140}} (144 PS) * {{:Traktorenlexikon: Create|Agrotron 6150}} (150 PS) * {{:Traktorenlexikon: Create|Agrotron 6160}} (158 PS) * {{:Traktorenlexikon: Create|Agrotron 6180}} (167 PS) * {{:Traktorenlexikon: Create|Agrotron 6190}} (184 PS) * {{:Traktorenlexikon: Create|Agrotron 6210}} (210 PS) |} Die Serie 6 wurde 2016/2017 überarbeitet und bekam neue Typennummern, siehe auch die Schwestermodelle von [[Traktorenlexikon: Lamborghini#Spark|Lamborghini]].Die Lamborghini-Modelle haben einen 3,8 l FARMotion-Motor und die Deutz-Fahr-Modelle den Deutz 3,6 l Motor! Die '''"kleine" Serie 6''' der 2. Generation: {| class="wikitable" | valign="top" | {{:Traktorenlexikon: Create|Agrotron 6120}} (120 PS) {{:Traktorenlexikon: Create|Agrotron 6130}} (125 PS) Boost: (135 PS) {{:Traktorenlexikon: Create|Agrotron 6140}} (130 PS) Boost: (143 PS) |} Die '''"große" Serie 6''' der 2. Generation: {| class="wikitable" | 4 Zylinder || 6 Zylinder |- | valign="top" | * {{:Traktorenlexikon: Create|Agrotron 6145.4}} (137 PS) * {{:Traktorenlexikon: Create|Agrotron 6155.4}} (149 PS) * {{:Traktorenlexikon: Create|Agrotron 6165.4}} (157 PS) EU 2015/96: 163 PS * {{:Traktorenlexikon: Create|Agrotron 6175.4}} (163 PS) | valign="top" | * {{:Traktorenlexikon: Create|Agrotron 6155}} (149 PS) * {{:Traktorenlexikon: Create|Agrotron 6165}} (157 PS) * {{:Traktorenlexikon: Create|Agrotron 6175}} (169 PS) * {{:Traktorenlexikon: Create|Agrotron 6185}} (181 PS) * {{:Traktorenlexikon: Create|Agrotron 6205}} (196 PS) * {{:Traktorenlexikon: Create|Agrotron 6215}} (201 PS) EU 2015/96: 214 PS |} ==== Agrotron Serie 7 ==== [[File:Deutz-Fahr Agrotron 7250 TTV.jpg|thumb|Agrotron 7250 TTV]] Die Serie 7, eingeführt im Jahr 2013, positionierte sich als leistungsstarke, ausschließlich stufenlose Baureihe zwischen der Serie 6 und den Großtraktoren. Die Premierengeneration (7210 bis 7250 TTV) nutzte 6,1-Liter-Deutz-Motoren und das bewährte ZF-S-Matic-Getriebe, ergänzt durch technische Besonderheiten wie externe Scheibenbremsen an der Vorderachse. Mit den Überarbeitungen ab 2016 (Stage IV) und 2021 (Stage V) hielten die MaxiVision-II-Kabine, eine leistungsstärkere Hydraulik sowie das neue SDF-Hinterwagenkonzept Einzug. Dank des markanten Giugiaro-Designs und der konsequenten Ausrichtung auf Effizienz etablierte sich die Serie als Standardmaschine für Lohnunternehmer und anspruchsvolle Ackerbaubetriebe im Bereich bis 250 PS. '''Leistungsangaben''' sind hier wahrscheinlich die max. mit Boost oder ähnlichem! {| class="wikitable" ! '''Serie 7''' |- | 2013-2016 |- | valign="top" | * {{:Traktorenlexikon: Create|Agrotron 7210}} (224 PS) * {{:Traktorenlexikon: Create|Agrotron 7230}} (245 PS) * {{:Traktorenlexikon: Create|Agrotron 7250}} (263 PS) |- | 2016-2021 |- | valign="top" | * {{:Traktorenlexikon: Create|Agrotron 7230}} (226 PS) * {{:Traktorenlexikon: Create|Agrotron 7250}} (246 PS) |} ---- <!-- Ende Agrotron-Abschnitt --> === Agrokid === [[File:Deutz-Fahr AgroKid.jpg|thumb|Deutz-Fahr AgroKid]] Der Agrokid, produziert von 1996 bis 2020, war der kompakteste Schlepper im Portfolio von Deutz-Fahr und als wendiger Kleintraktor für den Garten- und Landschaftsbau, Kommunaleinsätze sowie als Hofschlepper konzipiert. Er deckte einen Leistungsbereich von etwa 30 bis 50 PS ab. Technisch basierte der Agrokid auf einer engen Zusammenarbeit innerhalb des SDF-Konzerns und nutzte japanische Mitsubishi-Vierzylindermotoren. Diese galten als extrem zuverlässig, laufruhig und sparsam. Das Getriebe verfügte in der Regel über 12 Vorwärts- und 12 Rückwärtsgänge mit synchronisierter Wendeschaltung, was zusammen mit dem hohen Lenkeinschlag für eine überragende Manövrierfähigkeit auf engstem Raum sorgte. Ein wesentliches Merkmal war die für diese Größenklasse sehr geräumige und komfortable Kabine (oder optional eine offene Plattform), die eine gute Rundumsicht bot. Trotz seiner geringen Abmessungen verfügte der Agrokid über eine vollwertige Heckhydraulik und Zapfwellenausstattung, ergänzt durch optionale Frontkraftheber und Zwischenachszapfwellen für Mäharbeiten. Nach über zwei Jahrzehnten am Markt wurde der Agrokid schließlich durch die neue Serie 3 abgelöst, bleibt aber aufgr {| class="wikitable" | colspan="2" | ab 1996 bis 2020 |- | valign="top" | * {{:Traktorenlexikon: Create|Agrokid 25}} 20kW (27PS) * {{:Traktorenlexikon: Create|Agrokid 30}} 24kW (33PS) * {{:Traktorenlexikon: Create|Agrokid 35}} 26kW (35PS) * {{:Traktorenlexikon: Create|Agrokid 40}} 29kW (40PS) * {{:Traktorenlexikon: Create|Agrokid 45}} 31kW (42PS) * {{:Traktorenlexikon: Create|Agrokid 50}} 35kW (47PS) | valign="top" | * {{:Traktorenlexikon: Create|Agrokid 210}} 26kW (35PS) * {{:Traktorenlexikon: Create|Agrokid 220}} 30kW (41PS) * {{:Traktorenlexikon: Create|Agrokid 230}} 35kw (47PS) |} === Agroplus === [[Datei:Deutz-Fahr Agroplus 67.JPG|thumb|[[Traktorenlexikon: Deutz-Fahr Agroplus 67|Agroplus 67]]]] [[Datei:Deutz-Fahr Agroplus 70.jpg|thumb|[[Traktorenlexikon: Deutz-Fahr Agroplus 70|Agroplus 70]]]] [[File:Deutz-Fahr Agroplus 410.JPG|thumb|Deutz-Fahr Agroplus 410]] Der Agroplus, eingeführt im Jahr 1996, wurde als kompakte und vielseitige Ergänzung zum Agrotron konzipiert, um das Segment der Standard-Kompaktschlepper zwischen 60 und 95 PS abzudecken. Er war die Antwort auf die Nachfrage nach einer wendigen Maschine für Grünlandbetriebe, Sonderkulturen und den Frontladereinsatz. Technisch markierte der Agroplus eine Besonderheit im Deutz-Fahr-Programm: Da er eine Gemeinschaftsentwicklung innerhalb des SDF-Konzerns war, kam hier eine Mischung aus deutscher und italienischer Technik zum Einsatz. Während die ersten Modelle (wie der Agroplus 70, 80 und 100) noch mit wassergekühlten Deutz-Motoren der Serie 1012 ausgestattet waren, verfügte das Getriebe über eine Same-Basis. Dieses bot meist 15 Vorwärts- und 15 Rückwärtsgänge sowie eine dreistufige Lastschaltung (Powershift), was für diese Klasse damals ein hohes Maß an Komfort darstellte. Charakteristisch für den Agroplus war die flache Bauweise und die gute Übersichtlichkeit, kombiniert mit einer für damalige Verhältnisse modernen Kabine, die jedoch kompakter ausfiel als die des Agrotrons. Über die Jahre wurde die Serie mehrfach überarbeitet, wobei später auch die luftgekühlten Motoren der Serie 913 (in den Modellen 60 bis 80) oder die SDF-1000er-Motoren Einzug hielten. Der Agroplus etablierte sich als robuster Allrounder und bildete die Grundlage für die spätere Serie 5D, indem er die Brücke zwischen dem kleinen Agrokid und den großen Agrotrons schlug. {| class="wikitable" | '''Standardtraktoren''' (ab 1996) || '''Schmalspurtraktoren''' |- | valign="top" | * {{:Traktorenlexikon: Create|Agroplus 60}} * {{:Traktorenlexikon: Create|Agroplus 67}} * {{:Traktorenlexikon: Create|Agroplus 70}} * {{:Traktorenlexikon: Create|Agroplus 75}} * {{:Traktorenlexikon: Create|Agroplus 77}} * {{:Traktorenlexikon: Create|Agroplus 80}} * {{:Traktorenlexikon: Create|Agroplus 85}} * {{:Traktorenlexikon: Create|Agroplus 87}} * {{:Traktorenlexikon: Create|Agroplus 95 new}} * {{:Traktorenlexikon: Create|Agroplus 95}} * {{:Traktorenlexikon: Create|Agroplus 100}} ---- * {{:Traktorenlexikon: Create|Agroplus 310}} * {{:Traktorenlexikon: Create|Agroplus 320}} * {{:Traktorenlexikon: Create|Agroplus 410}} * {{:Traktorenlexikon: Create|Agroplus 420}} | valign="top" | * {{:Traktorenlexikon: Create|Agroplus S 70}} * {{:Traktorenlexikon: Create|Agroplus S 75}} * {{:Traktorenlexikon: Create|Agroplus S 90}} * {{:Traktorenlexikon: Create|Agroplus S 100}} ---- * {{:Traktorenlexikon: Create|Agroplus S 320}} * {{:Traktorenlexikon: Create|Agroplus S 410}} * {{:Traktorenlexikon: Create|Agroplus S 420}} ---- * {{:Traktorenlexikon: Create|Agroplus F 320}} * {{:Traktorenlexikon: Create|Agroplus F 410}} * {{:Traktorenlexikon: Create|Agroplus F 420}} ---- * {{:Traktorenlexikon: Create|Agroplus V 320}} * {{:Traktorenlexikon: Create|Agroplus V 410}} * {{:Traktorenlexikon: Create|Agroplus V 420}} |} Die Agroplusreihen weisen wahrscheinlich noch Lücken auf. ==== Agroplus F Keyline ==== [[File:Deutz-Fahr Agroplus 15 F tractor at IndAgra Farm Romexpo 2010.JPG|thumb|Deutz-Fahr Agroplus 15 F tractor at IndAgra Farm Romexpo 2010]] Die Agroplus F Keyline-Serie ist als kosteneffiziente, mechanische Lösung für den Obst- und Weinbau sowie kommunale Einsätze konzipiert. Angetrieben von kompakten SDF FARMotion-Dreizylindermotoren, setzt die Baureihe auf einfache Robustheit ohne komplexe Elektronik. Das voll synchronisierte Wendegetriebe und das serienmäßige Vierrad-Bremssystem gewährleisten sicheres Arbeiten in Hanglagen, während die schmale Bauweise und der hohe Lenkeinschlag maximale Wendigkeit in engen Kulturen ermöglichen. Als primär offener Plattformschlepper bietet er eine niedrige Bauhöhe und reduziert die Technik auf das wesentliche Fundament für Wartungsfreundlichkeit und Wirtschaftlichkeit. Modelle: Die Schwestermodelle von [[Traktorenlexikon: Lamborghini#Spire|Lamborghini]] sind die RF Trend-Serie und bei [[Traktorenlexikon: SAME#Frutteto|SAME]] die Frutteto-Serie. {| class="wikitable" ! bis ~ 2018 || ab ~ 2018 |- ! SDF-Motor || FARMotion Motor |- | valign="top" | * {{:Traktorenlexikon: Create|Agroplus 55F Keyline}} 41 kW (55 PS) * {{:Traktorenlexikon: Create|Agroplus 65F Keyline}} 46 kW (62 PS) * {{:Traktorenlexikon: Create|Agroplus 75F Keyline}} 53 kW (72 PS) * {{:Traktorenlexikon: Create|Agroplus 80.4F Keyline}} 55 kW (75 PS) | valign="top" | * {{:Traktorenlexikon: Create|Agroplus 70F Keyline}} 48 kW (65 PS) * {{:Traktorenlexikon: Create|Agroplus 80F Keyline}} 55 kW (75 PS) * {{:Traktorenlexikon: Create|Agroplus 80.4F Keyline}} 55 kW (75 PS) |} === Agrocompact === [[File:Deutz-Fahr Agrocompact 70F3 Traktor.jpg|thumb|Agrocompact 70F]] Die Agrocompact-Baureihe, produziert zwischen 1996 und ca. 2004, war die spezialisierte Antwort von Deutz-Fahr auf die Anforderungen im Wein- und Obstbau. Sie basierte technisch weitgehend auf der Agroplus-Plattform, wurde jedoch durch extrem schmale Spurweiten und kompakte Abmessungen für den Einsatz in engen Plantagen optimiert. Als Antrieb dienten die luftgekühlten Deutz-Motoren der Serie 913 (3- und 4-Zylinder), die für ihre Robustheit und einfache Wartung bekannt waren, sowie teils wassergekühlte Motoren in den stärkeren Modellen (z. B. Agrocompact 90). Die Kraftübertragung erfolgte über ein Same-basiertes Getriebe, das mit einer dreistufigen Lastschaltung ausgestattet werden konnte und dem Fahrer hohe Flexibilität bei wechselnden Bodenverhältnissen bot. Besonderes Merkmal war die Wahlmöglichkeit zwischen verschiedenen Breiten (F für Obstbau und V für den schmalen Weinbau) sowie die Integration eines leistungsstarken Hydrauliksystems für Spezialgeräte. Mit seiner Kombination aus bewährter Motorentechnik und kompaktester Bauweise setzte der Agrocompact den Standard für Spezialschlepper der Marke, bevor er durch die spezialisierten Agroplus-Varianten und die spätere Serie 5 DF/DS/DV abgelöst wurde. {| class="wikitable" | colspan="2" | ab 1992 |- | valign="top" | * {{:Traktorenlexikon: Create|AgroCompact 3.30}} * {{:Traktorenlexikon: Create|AgroCompact 3.50}} * {{:Traktorenlexikon: Create|AgroCompact 3.70}} * {{:Traktorenlexikon: Create|AgroCompact 3.90}} |} {| class="wikitable" | colspan="2" | ab 1998/99 bis 2007 |- | valign="top" | * {{:Traktorenlexikon: Create|Agrocompact 60}} <!-- F 2003 --> * {{:Traktorenlexikon: Create|Agrocompact 70}} * {{:Traktorenlexikon: Create|Agrocompact 80}} * {{:Traktorenlexikon: Create|Agrocompact 90}} | valign="top" | * {{:Traktorenlexikon: Create|Agrocompact 70 F}}<!-- 1999 --> * {{:Traktorenlexikon: Create|Agrocompact 75 F}} * {{:Traktorenlexikon: Create|Agrocompact 90 F}} * {{:Traktorenlexikon: Create|Agrocompact 100 F}}<!-- 2007 --> |} === Agrolux === [[File:Deutz fhar agrolux.jpg|thumb|Agrolux Export-Modell]] Die Agrolux-Baureihe wurde als unkomplizierte, robuste Einstiegsserie für kleinere Betriebe, Nebenerwerbslandwirte und den Einsatz als Zweitschlepper konzipiert. Sie deckte primär den Leistungsbereich von 55 bis ca. 100 PS ab und legte den Fokus auf maximale Wirtschaftlichkeit und rein mechanische Bedienung. Technisch basiert der Agrolux auf einer bewährten Same-Basis innerhalb des SDF-Konzerns. Als Antrieb dienten überwiegend die konzerneigenen SDF-1000er-Motoren (3- oder 4-Zylinder), die entweder luft- oder wassergekühlt ausgeführt waren und für ihre Wartungsfreundlichkeit bekannt sind. Das Getriebe ist einfach aufgebaut: Ein voll synchronisiertes Wendegetriebe mit meist 12 Vorwärts- und 12 Rückwärtsgängen verzichtet auf Lastschaltstufen und Elektronik, was die Störanfälligkeit minimiert. Der Agrolux wurde häufig als Plattformschlepper mit Überrollbügel (ROPS) oder mit einer einfachen Kabine ausgeliefert, um die Bauhöhe für niedrige Stalleinfahrten gering zu halten. Trotz der nüchternen Ausstattung bietet er mit einer soliden Hubkraft und einer unabhängigen Zapfwelle alle nötigen Funktionen für klassische Hof- und Feldarbeiten. Inzwischen wurde die Serie weitgehend durch die Keyline-Modelle der Serie 5D und 5G abgelöst, gilt aber weiterhin als Inbegriff des funktionalen, rein mechanischen Nutztraktors. Die Same-Reihe [[Traktorenlexikon: SAME#Argon|Argon]] war technisch bei mehreren Modellen baugleich. Die Agrolux aus Indien waren mit dem Same-Reihe [[Traktorenlexikon: SAME#Tiger|Tiger ab 2009]] baugleich. {| class="wikitable" | ab 1999/2000? |- | valign="top" | * {{:Traktorenlexikon: Create|Agrolux 60}} * {{:Traktorenlexikon: Create|Agrolux 70}} |- | 2000-2005 |- | Auf Exportmärkten war Deutz-Fahr mit diesen Modellen auf dem Markt |- | valign="top" | * {{:Traktorenlexikon: Create|Agrolux 80}} * {{:Traktorenlexikon: Create|Agrolux 90}} |- | 2006-2008 |- | der Agrolux bekamen statt der luftgekühlten Deutz-Motoren nun wassergekühlte Same-Antriebe |- | valign="top" | * {{:Traktorenlexikon: Create|Agrolux 57}} * {{:Traktorenlexikon: Create|Agrolux 67}} |- | 2008-20?? |- | diese Agrolux wurden mit wassergekühlten Same-Motoren und einfachen 8v + 2r Getrieben in Indien gefertigt |- | valign="top" | * {{:Traktorenlexikon: Create|Agrolux 65}} * {{:Traktorenlexikon: Create|Agrolux 75}} |- | Auf Exportmärkten war Deutz-Fahr mit diesen Modellen auf dem Markt |- | valign="top" | * {{:Traktorenlexikon: Create|Agrolux 85}} * {{:Traktorenlexikon: Create|Agrolux 95}} |- | 2009-201? |- | vorerst letzte Generation der Agrolux ? |- | valign="top" | * {{:Traktorenlexikon: Create|Agrolux 100}} * {{:Traktorenlexikon: Create|Agrolux 310}} * {{:Traktorenlexikon: Create|Agrolux 320}} |- | 2018 neue Modelle für den indischen Markt |- | diese Agrolux wurden mit wassergekühlten Motoren und einfachen 8v + 2r oder 12v + 3r Getrieben in Indien gefertigt |- | valign="top" | * {{:Traktorenlexikon: Create|Agrolux 45}} * {{:Traktorenlexikon: Create|Agrolux 50}} * {{:Traktorenlexikon: Create|Agrolux 55}} * {{:Traktorenlexikon: Create|Agrolux 60}} * {{:Traktorenlexikon: Create|Agrolux 70}} * ----- * {{:Traktorenlexikon: Create|Agrolux Profiline 75}} * {{:Traktorenlexikon: Create|Agrolux Profiline 80}} |} Zur Agritechnica 2017 wurden als Nachfolgemodelle für den europäische Markt die [[Traktorenlexikon: Deutz-Fahr#Serie 4E|Serie 4E]] vorgestellt. === Agromax === Die Agromax-Baureihe ist eine spezialisierte Traktorenserie von Deutz-Fahr, die primär für globale Märkte mit Fokus auf mechanische Einfachheit und extreme Robustheit entwickelt wurde. Sie ist eng mit der technologischen Plattform der SDF-Konzernmutter verwandt und deckt den mittleren Leistungsbereich von etwa 45 bis 100 PS ab. Angetrieben werden die Maschinen von den bewährten SDF-1000er-Motoren (wahlweise als 3- oder 4-Zylinder), die für ihre Langlebigkeit und hohe Drehmomentreserve bei geringem Kraftstoffverbrauch bekannt sind. Die Kraftübertragung erfolgt über ein rein mechanisches Synchrongetriebe, das meist mit 8x8 oder 12x12 Gängen ausgestattet ist. Durch den bewussten Verzicht auf komplexe Elektronik und Lastschaltstufen ist der Agromax besonders wartungsfreundlich und für Regionen mit einfacher Infrastruktur optimiert. Das Design ist funktional und auf maximale Übersichtlichkeit ausgelegt, wobei die Serie häufig als Plattformschlepper mit Überrollbügel (ROPS) zum Einsatz kommt. Mit einer soliden Hydraulikleistung und einer robusten Hinterachskonstruktion ist der Agromax als klassischer Arbeitsschlepper für die Bodenbearbeitung und Transportaufgaben in der Landwirtschaft positioniert, wo Zuverlässigkeit unter harten Bedingungen oberste Priorität hat. {| class="wikitable" | ab 2018 |- | valign="top" | * {{:Traktorenlexikon: Create|Agromax 40}} * {{:Traktorenlexikon: Create|Agromax 45}} * {{:Traktorenlexikon: Create|Agromax 50}} * {{:Traktorenlexikon: Create|Agromax 55}} * {{:Traktorenlexikon: Create|Agromax 60}} |} === Agrofarm === [[Datei:Deutz-Fahr Agrofarm 420 Tractor at IndAgra Farm Romexpo 2010.JPG|thumb|[[Traktorenlexikon: Deutz-Fahr Agrofarm 420|Agrofarm 420]]]] Die Agrofarm-Baureihe, produziert zwischen 2007 und 2014, wurde als kompakter Allrounder im Leistungsbereich von ca. 85 bis 115 PS eingeführt. Sie füllte die Lücke zwischen den kleinen Agroplus-Modellen und der größeren Agrotron-Serie und war besonders als Frontlader- und Grünlandschlepper erfolgreich. Technisch basierte die Serie auf einer starken Synergie innerhalb des SDF-Konzerns: Während als Antrieb die bewährten 4-Liter-Deutz-Motoren (TCD 2012 L04) zum Einsatz kamen, stammte das Getriebe und die Hinterachskonstruktion von Same. Die Getriebevarianten reichten von einer einfachen mechanischen Synchronisierung bis hin zur Profiline-Ausstattung mit zweistufiger Lastschaltung und elektrohydraulischem PowerShuttle (SenseClutch). Ein besonderes Merkmal war die kompakte Bauweise kombiniert mit einer geräumigen Freisichtkabine, die speziell für Frontladerarbeiten optimiert war. Neben der Standardversion bot Deutz-Fahr mit dem Agrofarm TTV zudem einen der ersten Traktoren dieser Leistungsklasse mit einem stufenlosen Getriebe an. Die Serie wurde später durch die Serie 5 abgelöst, gilt aber aufgrund der Kombination aus spritzigem Deutz-Motor und robuster Same-Mechanik bis heute als sehr wertstabiler und beliebter Universalschlepper. Die einfachen Agrofarm sind baugleich mit Hürlimann XB MAX, Lamborghini R3.evo und Same Explorer3. Wird in Italien produziert. Die Profiline und TTV-Modelle entsprechen dem Same Silver³. {| class="wikitable" | colspan="2" | ab 2006? |- | valign="top" | * {{:Traktorenlexikon: Create|Agrofarm 85}} * {{:Traktorenlexikon: Create|Agrofarm 100}} * {{:Traktorenlexikon: Create|Agrofarm 410}} * {{:Traktorenlexikon: Create|Agrofarm 420}} * {{:Traktorenlexikon: Create|Agrofarm 430}} | valign="top" | * {{:Traktorenlexikon: Create|Agrofarm TB 410}} * {{:Traktorenlexikon: Create|Agrofarm TB 420}} ---- * {{:Traktorenlexikon: Create|Agrofarm Profiline 420}} * {{:Traktorenlexikon: Create|Agrofarm Profiline 430}} * {{:Traktorenlexikon: Create|Agrofarm TTV 420}} * {{:Traktorenlexikon: Create|Agrofarm TTV 430}} |} Nach einer Info <ref>https://issuu.com/deutz-fahr/docs/308.8174.2.4-1_fr</ref> von SDF waren folgende Modelle 2015 im Angebot: {| class="wikitable" | ab 2015? |- | valign="top" | * {{:Traktorenlexikon: Create|Agrofarm C 75}} * {{:Traktorenlexikon: Create|Agrofarm C 85}} * {{:Traktorenlexikon: Create|Agrofarm C 95}} |} === Agroclimber === Die Agroclimber-Baureihe stellt die spezialisierte Raupenschlepper-Linie von Deutz-Fahr dar, die für extreme Hanglagen, weiche Böden und den Einsatz in Sonderkulturen (Obst- und Weinbau) konzipiert wurde. Da Raupenfahrwerke eine deutlich größere Aufstandsfläche als Räder bieten, zeichnet sich diese Serie durch maximale Traktion bei gleichzeitig geringem Bodendruck aus. Technisch basiert der Agroclimber auf der bewährten Same-Raupentechnik innerhalb des Konzerns. Als Antrieb dienen die robusten SDF-1000er-Motoren (3- oder 4-Zylinder), die für ihre Zuverlässigkeit unter Dauerlast bekannt sind. Das Getriebe ist als rein mechanisches, voll synchronisiertes Schaltgetriebe ausgelegt, um die enormen Zugkräfte verlustarm auf die Kettenlaufwerke zu übertragen. Die Steuerung erfolgt klassisch über Lenkhebel und eine Bandbremseinrichtung, was ein Wenden auf der Stelle ermöglicht. Die Serie umfasst verschiedene Varianten, wie den schmalen Agroclimber V für den Weinbau oder den breiteren Agroclimber F für den Obstbau. Mit ihrer niedrigen Bauweise, dem tiefen Schwerpunkt und der enormen Steigfähigkeit ist sie die spezialisierte Lösung für Geländeformen, an denen Standard-Radtraktoren an ihre physikalischen Grenzen stoßen. {| class="wikitable" | '''Raupenschlepper''' (ab 2007/08) <!--zur SIMA 2007 http://www.landtechnikmagazin.de/Traktoren-Artikel-DEUTZ-FAHR-stellt-Agroclimber-Raupentraktor-vor-367.php --> |- | valign="top" | * {{:Traktorenlexikon: Create|Agroclimber V 70}} * {{:Traktorenlexikon: Create|Agroclimber V 80}} * {{:Traktorenlexikon: Create|Agroclimber F 90}} * {{:Traktorenlexikon: Create|Agroclimber F 100}} * {{:Traktorenlexikon: Create|Agroclimber 105}} * {{:Traktorenlexikon: Create|Agroclimber V 310}} * {{:Traktorenlexikon: Create|Agroclimber 410}} * {{:Traktorenlexikon: Create|Agroclimber F 410}} |} === Agrotrac === [[Datei:Deutz-Fahr Agrotrac 110 Tractor at IndAgra Farm Romexpo 2010.JPG|thumb|[[Traktorenlexikon: Deutz-Fahr Agrotrac 110|Agrotrac 110]]]] Die Agrotrac-Baureihe ist eine auf maximale Robustheit und mechanische Einfachheit ausgelegte Serie, die von Deutz-Fahr primär für Exportmärkte außerhalb Europas (z. B. Afrika, Türkei oder Südostasien) entwickelt wurde. Sie deckt einen Leistungsbereich von etwa 100 bis 170 PS ab. Technisch basieren die Schlepper auf bewährten SDF-Komponenten und nutzen überwiegend flüssigkeitsgekühlte 6-Zylinder-Motoren (Typ Lamborghini/SDF 1000.6), die für ihre hohe Zugkraft und Langlebigkeit unter harten Bedingungen bekannt sind. Das Getriebe ist konsequent rein mechanisch aufgebaut (meist 15/15 oder 24/12 Gänge mit Kriechgruppe), was den Agrotrac besonders wartungsfreundlich macht, da er weitgehend ohne komplexe Elektronik auskommt. Er wird sowohl als offener Plattformschlepper als auch mit einer funktionalen Kabine angeboten. Damit ist er die ideale Maschine für Regionen, in denen einfache Instandsetzung und Zuverlässigkeit wichtiger sind als modernste High-Tech-Assistenzsysteme. {| class="wikitable" | 2004-2010 || 2010-2017 || 2014-2017 |- | valign="top" | * {{:Traktorenlexikon: Create|Agrotrac 100}} * {{:Traktorenlexikon: Create|Agrotrac 110}} * {{:Traktorenlexikon: Create|Agrotrac 115}} * {{:Traktorenlexikon: Create|Agrotrac 125}} * {{:Traktorenlexikon: Create|Agrotrac 130}} * {{:Traktorenlexikon: Create|Agrotrac 150}} * {{:Traktorenlexikon: Create|Agrotrac 170}} | valign="top" | * {{:Traktorenlexikon: Create|Agrotrac 610}}<!--Frankreich 2010--> * {{:Traktorenlexikon: Create|Agrotrac 620}}<!--Frankreich 2010--> <!-- Agrotrac 265, Südafrika 2010, 184 kW – unklar http://www.agfacts.co.za/traprdtz.htm --> | valign="top" | * {{:Traktorenlexikon: Create|Agrotrac 115.6 Turbo}}<!--Frankreich 2014--> |} === Serie 2E === Die Serie 2E wurde ab ca. 2017/2018 als preiswertes Einstiegsmodell im Kompaktsegment (ca. 25 bis 40 PS) eingeführt und ab 2021/2022 auf die Abgasstufe Stage V aktualisiert. Basierend auf einer Kooperation mit Sonalika, verzichtet der Schlepper auf komplexe Elektronik und setzt stattdessen auf einfache Dreizylindermotoren sowie rein mechanische Getriebe. Primär als offener Plattformschlepper konzipiert, bietet die Serie 2E maximale Wartungsfreundlichkeit und ist für einfache Hofarbeiten, den privaten Gartenbau oder Einsätze in Gewächshäusern optimiert, bei denen ein funktionales Fundament ohne technisches Zusatzgewicht im Vordergrund steht. Sie ist in Deutschland nicht verfügbar. {| class="wikitable" |- | ab 2017 |- | Serie 2E |- | valign="top" | * {{:Traktorenlexikon: Create|2025E}} * {{:Traktorenlexikon: Create|2030E}} * {{:Traktorenlexikon: Create|2035E}} * {{:Traktorenlexikon: Create|2040E}} |} === Serie 3E === Die Serie 3E wurde ab ca. 2017/2018 als leistungsstärkere Ergänzung zur Serie 2E eingeführt und ab 2021 durch die Serie 3 abgelöst. Sie deckt den Bereich von ca. 30 bis 40 PS ab und basiert ebenfalls auf der bewährten, rein mechanischen Kooperation mit Sonalika. Ausgestattet mit einem Dreizylinder-Saugmotor und einem synchronisierten 8x2- oder 12x12-Wendegetriebe, bietet sie mehr Hubkraft und Einsatzflexibilität als das kleinere Schwestermodell. Als robuster Plattformschlepper ist die Serie 3E gezielt für Hobby-Landwirte und Gartenbaubetriebe konzipiert, die eine unkomplizierte, wartungsarme Maschine für schwerere Anbaugeräte suchen. {| class="wikitable" |- | 2017-2021 |- | Serie 3E |- | valign="top" | * {{:Traktorenlexikon: Create|3035E}} * {{:Traktorenlexikon: Create|3040E}} * {{:Traktorenlexikon: Create|3042E}} |} === Serie 3 === Die Deutz-Fahr Serie 3 umfasst kompakte Universaltraktoren, die speziell für den Einsatz im Garten- und Landschaftsbau, in Baumschulen sowie für kommunale Dienstleistungen konzipiert sind und in ihrer aktuellen Generation mit Stage-V-konformen Motoren seit dem Jahr 2021 am Markt bestehen. Die Baureihe zeichnet sich durch ein geringes Eigengewicht und eine hohe Wendigkeit aus, wobei sie sich primär in die Standardmodelle 3050 und 3060 sowie die besonders schmale Variante 3050 Basso gliedert. Während die Standardmodelle wahlweise mit einer verglasten Komfortkabine oder als offene Plattformversion mit klappbarem Überrollbügel erhältlich sind, ist die Basso-Ausführung konsequent auf extrem beengte Platzverhältnisse optimiert. Technisch setzen die Traktoren auf 4-Zylinder-Motoren in einem Leistungsspektrum von etwa 51 bis 60 PS und verfügen über ein synchronisiertes Wendeschaltgetriebe mit 12 Vorwärts- und 12 Rückwärtsgängen. Trotz der kompakten Abmessungen bietet die Serie vollwertige Merkmale wie einen zuschaltbaren Allradantrieb, eine Heckhydraulik mit bis zu 1.200 kg Hubkraft sowie optionale Frontkraftheber und Frontzapfwellen, wodurch die Maschinen für den ganzjährigen Einsatz vom Mähbetrieb bis zum Winterdienst flexibel einsetzbar sind. {| class="wikitable" |- | ab 2021 |- | Serie 3 |- | valign="top" | * {{:Traktorenlexikon: Create|3050 Basso}} 38kW (51PS) * {{:Traktorenlexikon: Create|3050}} 38kW (51PS) * {{:Traktorenlexikon: Create|3060}} 44kW (59PS) |} === Serie 4E === [[File:Deutz Fahr 4090e.jpg|thumb|Deutz-Fahr 4090E]] Die Serie 4E, eingeführt im Jahr 2014 als Nachfolger der Agrolux-Reihe und ab 2021 in der Stage V-Version verfügbar, bildet die robuste Mittelklasse der Kompaktschlepper im Bereich von 65 bis 100 PS. Technisch setzt die Serie auf die konzerneigenen SDF FARMotion-Motoren (3- oder 4-Zylinder), die speziell für hohe Drehmomentreserven bei kompakter Bauweise entwickelt wurden. Das Getriebe ist konsequent mechanisch ausgelegt, wobei Käufer zwischen verschiedenen Konfigurationen von 12x12 bis zu 30x15 Gängen mit Kriechganggruppe wählen können. Ein zentrales Merkmal ist die Vielseitigkeit: Die Serie 4E ist sowohl als Plattformschlepper als auch mit einer modernen Kabine erhältlich und verfügt über ein echtes Vierrad-Bremssystem im Ölbad. Damit ist sie die ideale Lösung für Gemischtbetriebe und Kommunen, die einen wendigen Allrounder für Frontladerarbeiten, Grünlandpflege und leichte Ackerarbeiten suchen, ohne auf computergesteuerte Komplexität angewiesen zu sein. {| class="wikitable" |- | ab 2014 |- | Serie 4E |- | valign="top" | * {{:Traktorenlexikon: Create|4050E}} * {{:Traktorenlexikon: Create|4065E}} * {{:Traktorenlexikon: Create|4075E}} * {{:Traktorenlexikon: Create|4085E}} * {{:Traktorenlexikon: Create|4080.4E}} |} Für D sind andere Daten <ref> http://www.deutz-fahr.com/de-de/produkte/traktoren/6236-serie-4e </ref> angekündigt: Motorleistungen<ref> https://www.landtechnikmagazin.de/Traktoren-Bild-Die-neue-Deutz-Fahr-Serie-4E-mit-den-vier-Modellen-4070E-4080E-4090E-4100E-loest-Baureihe-Agrolux-ab-34884-7559.php </ref> des 3 Zylinder-FARMotion Motors mit 2,9 l: {| class="wikitable" |- | ab 2018 |- | Serie 4E in Deutschland |- | valign="top" | * {{:Traktorenlexikon: Create|4070E}} 48 kW / 65 PS * {{:Traktorenlexikon: Create|4080E}} 55 kW / 75 PS * {{:Traktorenlexikon: Create|4090E}} 62 kW / 84 PS * {{:Traktorenlexikon: Create|4100E}} 67 kW / 92 PS |} === Raupentraktoren === Die aktuellen Raupentraktoren von Deutz-Fahr, primär unter der Bezeichnung Serie 5K zusammengefasst, bilden eine hochspezialisierte Baureihe für extreme Hanglagen und schwierige Bodenverhältnisse, die in ihrer aktuellen Generation mit Stage-V-Motoren seit dem Jahr 2021 stetig erweitert wurde. Das Programm unterteilt sich funktional in die drei Varianten 5KF für schmale Obstbauanlagen, 5KM für den gemischten Einsatz in weiten Reihen sowie die breite Serie 5K für den schweren Ackerbau auf offenem Feld. Während die KF-Modelle durch eine niedrige Bauweise für das Unterfahren von Kulturen optimiert sind, bietet die Standard-Serie 5K durch einen ebenen Plattformboden und eine größere Spurbreite maximale Standfestigkeit bei Zugarbeiten an Steilhängen. Technisch kommen moderne 4-Zylinder-FARMotion-Motoren zum Einsatz, die ihre Kraft über mechanische Getriebe mit bis zu 16 Vorwärts- und Rückwärtsgängen auf die Laufwerke übertragen. Die Maschinen sind wahlweise mit klassischen Stahlketten für höchste Traktion oder mit bodenschonenden ComfortTrack-Gummiketten ausgestattet, wobei die Steuerung über servogesteuerte Hebel eine präzise Manövrierbarkeit sicherstellt. Mit einer Hubkraft von bis zu 3.170 kg im Heck und einer leistungsstarken Hydraulikanlage erfüllen diese Raupenschlepper die Anforderungen professioneller Betriebe, die in Gebieten arbeiten, in denen herkömmliche Radtraktoren an ihre Grenzen stoßen. Die Bezeichnungen bei den Raupentraktoren von Deutz-Fahr dienen der Kennzeichnung des jeweiligen Einsatzgebiets und der damit verbundenen Fahrzeugbreite. Das K steht hierbei grundsätzlich für das italienische Wort „Cingolato“ (Raupe), während die Zusatzbuchstaben die spezifische Konfiguration definieren. * '''KF (Frutteto)''': Das „F“ steht für Frutteto (Obstgarten). Diese Modelle sind schmal gebaut und speziell für den Einsatz in schmalen Reihenkulturen und Obstplantagen konzipiert. Sie besitzen oft eine kompakte Bauweise, um das Unterfahren von Baumkronen zu erleichtern. * '''KM (Montagna)''': Das „M“ steht für Montagna (Berg). Diese Variante ist als mittelschwere und mittelbreite Raupe für den gemischten Einsatz ausgelegt. Sie bietet eine höhere Standfestigkeit als die F-Variante und ist für die Arbeit in hügeligem Gelände oder in weiten Reihenkulturen (z. B. Weinbau am Steilhang) optimiert. * '''K (Standard/Campo Aperto)''': Das reine „K“ ohne Zusatzbuchstaben bezeichnet die breiteste Ausführung für das offene Feld (Campo Aperto). Diese Maschinen sind für den schweren Ackerbau und großflächige Zugarbeiten in extremen Steillagen konzipiert, bei denen maximale Spurbreite für die Kippsicherheit und eine breite Aufstandsfläche für höchste Traktion erforderlich sind. {| class="wikitable" | '''Serie 5 K''' || '''Serie 5 KM''' || '''Serie 5 KF''' |- | valign="top" | * {{:Traktorenlexikon: Create|5115 K}} 85kW (116PS) | valign="top" | * {{:Traktorenlexikon: Create|5105 KM}} 78kW (106PS) * {{:Traktorenlexikon: Create|5115 KM}} 85kW (116PS) | valign="top" | * {{:Traktorenlexikon: Create|5 KF}} 56kW (76PS) * {{:Traktorenlexikon: Create|5090 KF}} 67kW (91PS) * {{:Traktorenlexikon: Create|5100 KF}} 75kW (102PS) |} === Serie 5 (Spezialtraktoren) === [[File:Deutz-Fahr 5105 DF TTV Agritechnica 2025 (DSC08573).jpg|thumb|Deutz-Fahr 5105 DF TTV]] Die Deutz-Fahr Serie 5 Spezialtraktoren bilden seit ihrer Einführung im Jahr 2017 ein modulares Programm von Schmalspur- und Kompaktschleppern, die primär für den Einsatz im Weinbau (V = Vino), Obstbau (F = Fruit/Frutetto) sowie in der Kommunalpflege entwickelt wurden. Die Baureihe nutzt effiziente FARMotion-Motoren und bietet durch verschiedene Fahrzeugbreiten – von extrem schmalen Modellen (S/V) für den Weinbau bis hin zu breiteren Varianten für den Obstbau (F) – Lösungen für räumlich begrenzte Arbeitsumgebungen. Die Serie differenziert sich in mehrere spezialisierte Untergruppen: * '''Serie 5DF Keyline & Ecoline''': Diese Baureihen stellen die Einstiegssegmente dar und konzentrieren sich auf mechanische Robustheit sowie einfache Bedienung bei hoher Wirtschaftlichkeit. * '''Serie 5DF (Platform)''': Diese Variante verzichtet auf eine geschlossene Kabine zugunsten eines klappbaren Überrollbügels, um maximale Durchfahrtshöhen in niedrigen Kulturen oder Gewächshäusern zu erreichen. * '''Serie 5 DF/DS/DV & PRO''': Die Standardserie bietet eine breite Auswahl an Getrieben und Hydraulikleistungen, wobei die PRO-Modelle durch gesteigerte Hydraulikkapazitäten und höheren Bedienkomfort für den professionellen Dauereinsatz optimiert sind. * '''Serie 5DF/DS/DV TTV''': Als technologische Oberklasse verfügt diese Serie über ein stufenloses Getriebe (TTV), das eine präzise Geschwindigkeitsanpassung ermöglicht und die Effizienz bei spezialisierten Arbeitsprozessen maximiert. * Serie 5TB: Sie zeichnen sich durch einen besonders niedrigen Schwerpunkt und eine geringe Bauhöhe aus, was sie ideal für die Arbeit in Hanglagen sowie in Oliven- oder Nussplantagen macht. Die gesamte Serie nutzt moderne FARMotion-Motoren (3- oder 4-Zylinder), die speziell für die Landwirtschaft entwickelt wurden und die geltenden Abgasnormen erfüllen. Ein zentrales Merkmal der Baureihe ist die Vielseitigkeit der Getriebeoptionen, die von vollsynchronisierten mechanischen Getrieben über Lastschaltstufen (Powershift) bis hin zur stufenlosen Technologie reichen. Je nach Modell kommen unterschiedliche Vorderachskonzepte zum Einsatz. Die TTV-Modelle verfügen häufig über eine Einzelradaufhängung mit aktiver Federung, um Fahrstabilität und Komfort bei Straßenfahrten und Feldarbeit zu erhöhen. Die Hydraulikanlagen sind modular aufgebaut und bieten je nach Konfiguration bis zu fünf doppeltwirkende Steuergeräte im Heck sowie zusätzliche Anschlüsse im Zwischenachsbereich. {| class="wikitable" | '''Serie 5DF/DS/DV Ecoline (ab 2017)''' || '''Serie 5DF Keyline (ab 2021)''' || '''Serie 5DF (Platform) (ab 2021)''' || '''Serie 5 DF/DS/DV / PRO (ab 2025)''' || '''Serie 5DF/DS/DV TTV / DF TTV 4 WHEEL STEERING (ab 2018)''' || '''Serie 5TB (ab 2023)''' |- | valign="top" | * {{:Traktorenlexikon: Create|5080 DF/DS/DV Ecoline}} 56kW (76PS) | valign="top" | * {{:Traktorenlexikon: Create|5070 DF Keyline}} 49kW (66PS) * {{:Traktorenlexikon: Create|5080 DF Keyline}} 59kW (76PS) | valign="top" | * {{:Traktorenlexikon: Create|5090 DF Plattform}} 67kW (91PS) * {{:Traktorenlexikon: Create|5095 DF Plattform}} 70kW (95PS) * {{:Traktorenlexikon: Create|5100 DF Plattform}} 75kW (102PS) * {{:Traktorenlexikon: Create|5105 DF Plattform}} 78kW (106PS) * {{:Traktorenlexikon: Create|5115 DF Plattform}} 85kW (116PS) | valign="top" | * {{:Traktorenlexikon: Create|5090 DF/DS/DV Kabine / PRO}} 67kW (91PS) * {{:Traktorenlexikon: Create|5095 DF/DS/DV Kabine / PRO}} 70kW (95PS) * {{:Traktorenlexikon: Create|5100 DF/DS/DV Kabine / PRO}} 75kW (102PS) * {{:Traktorenlexikon: Create|5105 DF/DS/DV Kabine / PRO}} 78kW (106PS) * {{:Traktorenlexikon: Create|5115 DF/DS/DV Kabine / PRO}} 85kW (116PS) | valign="top" | * {{:Traktorenlexikon: Create|5090 DF/DS/DV TTV}} 67kW (91PS) * {{:Traktorenlexikon: Create|5095 DF/DS/DV TTV}} 70kW (95PS) * {{:Traktorenlexikon: Create|5100 DF/DS/DV TTV}} 75kW (102PS) * {{:Traktorenlexikon: Create|5105 DF/DS/DV TTV}} 78kW (106PS) * {{:Traktorenlexikon: Create|5115 DF/DS/DV TTV}} 85kW (116PS) | valign="top" | * {{:Traktorenlexikon: Create|5105 TB}} 78kW (106PS) * {{:Traktorenlexikon: Create|5115 TB}} 85kW (116PS) |} === Serie 5 (Standardtraktoren) === Die Serie 5 für Standardtraktoren umfasst aktuell (2026) 5 Ausbaustufen: 5D Keyline, 5D, 5D TTV, 5 Keyline, 5. ==== Serie 5D Keyline ==== [[File:Deutz-Fahr 5080 D Keyline Traktor.jpg|thumb|Deutz-Fahr 5080 D Keyline]] Die Serie 5D Keyline, eingeführt um 2019 und seit 2021 als Stage V-Version verfügbar, ist die konsequente Weiterentwicklung des Agrolux-Konzepts für das moderne Segment der 65 bis 100 PS. Ausgestattet mit effizienten SDF FARMotion-Dreizylindermotoren, konzentriert sich diese Baureihe auf das Wesentliche: mechanische Zuverlässigkeit ohne elektronischen Ballast. Mit einem synchronisierten Wendegetriebe (wahlweise 15+15 oder 30+15 Gänge), einer mechanischen Hubwerksregelung und dem serienmäßigen Vierrad-Bremssystem bietet sie solide Technik für Nebenerwerbslandwirte und kleine Hofstellen. Sie fungiert als wirtschaftlicher Allrounder, der die Brücke zwischen der einfachen Serie 4E und der technologisch gehobenen Serie 5D schlägt, wobei der Fokus klar auf geringen Betriebskosten und intuitiver Bedienung liegt. Die Schwestermodelle aus dem SDF-Konzern sind der [[Traktorenlexikon: Lamborghini#Spire Trend|Lamborghini Spire Trend]] und der [[Traktorenlexikon: SAME#Dorado Natural|SAME Dorado Natural]]. {| class="wikitable" |- | valign="top" | * {{:Traktorenlexikon: Create|5070 D Keyline}} 48 kW / 65 PS * {{:Traktorenlexikon: Create|5080 D Keyline}} 55 kW / 75 PS * {{:Traktorenlexikon: Create|5090 D Keyline}} 62 kW / 84 PS * {{:Traktorenlexikon: Create|5100 D Keyline}} 67 kW / 92 PS |} ==== Serie 5D ==== [[File:Deutz-Fahr 5105 D Agritechnica 2025 (DSC08595).jpg|thumb|Deutz-Fahr 5105 D]] Die Serie 5D von Deutz-Fahr stellt die aktuelle Baureihe im Segment der Kompakt- und Allroundtraktoren dar, die speziell für Viehhaltungsbetriebe, Hofarbeiten und die Bewirtschaftung von Sonderkulturen konzipiert wurde. Technisch zeichnet sich die Serie durch eine hohe Wendigkeit und eine kompakte Bauweise aus, wobei moderne FARMotion-Motoren (3- oder 4-Zylinder) zum Einsatz kommen, die aktuelle Abgasnormen erfüllen. Das Leistungsspektrum der Serie 5D deckt den Bereich von 65 PS bis 106 PS ab, was in etwa 48 kW bis 78 kW entspricht. Ein zentrales technisches Merkmal ist die Wahlmöglichkeit zwischen verschiedenen Getriebevarianten, die vom einfachen mechanischen Wendegetriebe bis hin zum PowerShuttle mit Lastschaltung und der „Stop&Go“-Funktion reichen, welche das Anhalten und Anfahren allein über das Bremspedal ermöglicht. Ergänzt wird die technische Ausstattung durch eine leistungsstarke Hydraulikanlage mit bis zu 54 Litern Förderleistung pro Minute und eine komfortable Vier-Pfosten-Kabine, die eine optimierte Rundumsicht für Frontladerarbeiten bietet. {| class="wikitable" | ab 2014 |- | valign="top" | * {{:Traktorenlexikon: Create|5075 D}} 55kW (75PS) * {{:Traktorenlexikon: Create|5095 D}} 70kW (95PS) * {{:Traktorenlexikon: Create|5105 D}} 78kW (106PS) |} ==== Serie 5D TTV ==== Mit der Einführung der Serie 5D TTV im Jahr 2021 übertrug Deutz-Fahr die Technologie stufenloser Antriebe erstmals in das Segment der kompakten Allround-Traktoren. Diese Baureihe kombiniert die Abmessungen eines Kompakt-Schleppers mit der High-End-Technik der größeren Serien, wobei das Herzstück das eigenentwickelte TTV-Getriebe ist, das ein stufenloses Beschleunigen von 0 bis 40 km/h bei reduzierter Motordrehzahl ermöglicht. Angetrieben werden die Maschinen von FARMotion-Motoren mit drei oder vier Zylindern, die ein Leistungsspektrum von 88 PS (65 kW) im Modell 5090 D TTV bis zu 126 PS (92,6 kW) im Topmodell 5115 D TTV abdecken. Besonderes Augenmerk liegt auf der Hydraulikleistung und der Bedienung: Die Serie verfügt serienmäßig über eine Load-Sensing-Pumpe mit bis zu 100 l/min Förderleistung und die ergonomische MaxCom-Armlehne, über die sämtliche Funktionen per Joystick gesteuert werden. Dank der gefederten Vorderachse, einer modernen Vier-Pfosten-Kabine mit flachem Boden und der Integration von Precision-Farming-Systemen (wie iMonitor und GPS) ist der 5D TTV als professionelle Arbeitsmaschine für Kommunalbetriebe, Hofwirtschaften und den Einsatz in Sonderkulturen positioniert. Die Produktion erfolgt im Werk in Triviglio, Italien, wobei die Modelle seit ihrem Erscheinen kontinuierlich an die aktuellsten Abgasnormen der Stufe V angepasst wurden. {| class="wikitable" | ab 2021 |- | valign="top" | * {{:Traktorenlexikon: Create|5095 D TTV}} 70kW (95PS) * {{:Traktorenlexikon: Create|5105 D TTV}} 78kW (106PS) * {{:Traktorenlexikon: Create|5115 D TTV}} 85kW (116PS) |} ==== Serie 5 Keyline ==== [[File:Deutz-Fahr 5125 Keyline Agritechnica 2025 (DSC08559).jpg|thumb|Deutz-Fahr 5125 Keyline]] Die Serie 5 Keyline wurde als robuster und wirtschaftlicher Allrounder konzipiert, der die Lücke zwischen den kompakten Hofschleppern und der gehobenen Mittelklasse schließt. Im Gegensatz zur kleineren D-Variante basiert sie auf einem größeren Chassis und nutzt den hubraumstarken FARMotion 45 Vierzylinder-Motor mit 3,8 Litern Hubraum, der ein Leistungsspektrum von 75 PS (55,2 kW) bis 106 PS (78 kW) abdeckt. Die Serie setzt auf ein rein mechanisches Bedienkonzept mit 5-Gang-Getrieben, bietet jedoch mit einer Heckhubkraft von bis zu 4.525 kg und einem zulässigen Gesamtgewicht von 6,5 Tonnen deutlich mehr Reserven für die Feldarbeit. Damit ist die Serie 5 Keyline eine zweckmäßige Lösung für Betriebe, die hohe Stabilität und Zugkraft bei gleichzeitig einfacher, wartungsfreundlicher Technik suchen. {| class="wikitable" | ab 2024 |- | valign="top" | * {{:Traktorenlexikon: Create|5075}} 55kW (75PS) * {{:Traktorenlexikon: Create|5095}} 70kW (95PS) * {{:Traktorenlexikon: Create|5105 / PLUS}} 78kW (106PS) * {{:Traktorenlexikon: Create|5115}} 85kW (116PS) * {{:Traktorenlexikon: Create|5125}} 93kW (126PS) |} ==== Serie 5 ==== [[File:Deutz-Fahr 5125 Agritechnica 2025 (DSC08580).jpg|thumb|Deutz-Fahr 5125]] Die Serie 5 von Deutz-Fahr bildet das technologische Herzstück der Mittelklasse und ist als vielseitiger Premium-Allrounder für Ackerbau, Grünland und Transport konzipiert. Im Gegensatz zu den einfacheren Keyline-Modellen zeichnet sich diese Baureihe durch ein hohes Maß an Komfort und technischer Ausstattung aus, wie etwa das PowerShuttle-Wendegetriebe mit einstellbarem Ansprechverhalten (SenseClutch) und die optionale Zweistufen-Lastschaltung (Hi-Lo) oder Dreistufen-Lastschaltung (HML). Die leistungsstarken FARMotion-Motoren decken dabei einen Bereich von 95 PS bis 126 PS ab und erfüllen dank modernster Abgasreinigung die Stufe V. Besonderes Merkmal der Serie 5 ist die hochwertige TopVision-Kabine, die durch das innovative „Hydro Silent-Block“-Lagersystem Schwingungen um bis zu 40 % reduziert und eine erstklassige Rundumsicht bietet. Die hydraulische Ausstattung ist mit einer Förderleistung von bis zu 90 l/min (im „On-Demand“-System) und einer Heckhubkraft von bis zu 5.410 kg deutlich leistungsstärker ausgelegt als bei den Einstiegsmodellen. Mit Features wie der „Stop&Go“-Funktion für kupplungsfreies Anhalten und modernen Precision-Farming-Optionen ist die Serie 5 darauf ausgelegt, maximale Produktivität bei gleichzeitig hohem Bedienkomfort für professionelle landwirtschaftliche Betriebe zu liefern. {| class="wikitable" | ab 2021 |- | valign="top" | * {{:Traktorenlexikon: Create|5095}} 70kW (95PS) * {{:Traktorenlexikon: Create|5100}} 75kW (102PS) * {{:Traktorenlexikon: Create|5105}} 78kW (106PS) * {{:Traktorenlexikon: Create|5115}} 85kW (116PS) * {{:Traktorenlexikon: Create|5125}} 93kW (126PS) |} === Serie 6 === ==== Serie 6C ==== [[File:Deutz-Fahr 6115 C Agritechnica 2025 (DSC03580).jpg|thumb|Deutz-Fahr 6115 C]] Die im Februar 2022 vorgestellte und im italienischen Werk Treviglio produzierte Serie 6C bildet das fundamentale Bindeglied zwischen kompakten Hofschleppern und leistungsstarken Ackerschleppern. Als Antrieb fungiert der flüssigkeitsgekühlte Deutz TCD 3.6 Vierzylindermotor, der ein breites Leistungsspektrum von 114 bis 143 PS (inklusive Boost) abdeckt. Die Serie zeichnet sich durch eine am Markt einzigartige Getriebevielfalt auf einer Plattform aus: Kunden können zwischen dem klassischen PowerShift-Getriebe (3 Lastschaltstufen), dem automatisierten RVShift-Getriebe und dem stufenlosen TTV-Antrieb wählen. Technische Besonderheiten sind die TopVision-Kabine mit optionalem Freisichtdach für optimierte Frontladerarbeiten sowie das „SDF Smart Farming Solutions“-Paket für den Einstieg in die präzise Landwirtschaft. Mit einem Radstand von 2.480 mm und einer hohen Wendigkeit ist die Serie 6C primär für Gemischt- und Grünlandbetriebe sowie als wendiger Pflegeschlepper in Ackerbaubetrieben optimiert. {| class="wikitable" | ab 2022 |- | valign="top" | * {{:Traktorenlexikon: Create|6115C}} 89 kW (121 PS) * {{:Traktorenlexikon: Create|6125C}} 95 kW (129 PS) * {{:Traktorenlexikon: Create|6135C}} 101 kW (137 PS) |} ==== Serie 6.4 ==== [[File:Deutz-Fahr 6140.4 RVshift Agritechnica 2025 (DSC08632).jpg|thumb|Deutz-Fahr 6140.4 RVshift]] Die seit 2023 im bayerischen „Deutz-Fahr Land“ in Lauingen gefertigte Serie 6.4 erweitert das Portfolio um einen leistungsstarken Vierzyinder-Schlepper im Premiumsegment. Technisches Herzstück ist der FARMotion 45 Motor mit 4,5 Litern Hubraum, elektronisch gesteuerter Common-Rail-Einspritzung und VTG-Turbolader, der auf ein hohes Drehmoment bei niedrigen Betriebsdrehzahlen optimiert ist. Die Baureihe verzichtet auf ein klassisches Lastschaltgetriebe und wird ausschließlich mit dem voll-lastschaltbaren RVShift-Getriebe oder dem stufenlosen TTV-Getriebe angeboten. Zu den technischen Besonderheiten gehört die Verwendung der MaxiVision-Kabine, die eine physische Entkopplung vom Motorraum aufweist und somit den Komfortstandard der größeren Sechszylindermodelle in die 130- bis 150-PS-Klasse überträgt. Mit einer Hydraulikleistung von bis zu 120 l/min (Load-Sensing) und einer zulässigen Gesamtmasse von 10,5 Tonnen ist die Serie 6.4 für den kombinierten Einsatz in Ackerbau und Transport sowie für anspruchsvolle Frontladerarbeiten konzipiert. {| class="wikitable" | ab 2023 |- | valign="top" | * {{:Traktorenlexikon: Create|6130}} 100 kW (136 PS) * {{:Traktorenlexikon: Create|6140}} 108 kW (147 PS) * {{:Traktorenlexikon: Create|6150}} 115 kW (156 PS) * {{:Traktorenlexikon: Create|6160}} 118 kW (161 PS) * {{:Traktorenlexikon: Create|6170}} 126 kW (171 PS) |} ==== Serie 6 ==== [[File:Deutz-Fahr 6180 TTV 30 Jahre Agrotron Agritechnica 2025 (DSC08553).jpg|thumb|Deutz-Fahr 6180 TTV "30 Jahre Agrotron"]] Die seit 2021 im bayerischen Lauingen gefertigte Deutz-Fahr Serie 6 bildet als „Made in Germany“-Plattform das technologische Rückgrat für den professionellen Ackerbau und schwere Transportlogistik. Angetrieben von flüssigkeitsgekühlten Deutz TCD 6.1 L6 Sechszylindermotoren mit Turbo-Intercooler und Common-Rail-Technologie, bietet die Baureihe eine hohe Leistungsdichte bei optimierter Kraftstoffeffizienz gemäß Abgasstufe V. Die technische Flexibilität wird durch drei Getriebekonzepte sichergestellt: das mechanisch-hydraulische Powershift-Getriebe mit sechs Lastschaltstufen, das vollautomatisierte RCshift-Getriebe sowie das stufenlose TTV-Getriebe für einen unterbrechungsfreien Kraftfluss. Zu den technischen Besonderheiten zählen die MaxiVision-Kabine in verschiedenen Ausbaustufen, eine leistungsstarke Load-Sensing-Hydraulik mit bis zu 160 l/min Förderleistung sowie die vollständige Integration von SDF Smart Farming Solutions zur präzisen Steuerung von ISOBUS-Komponenten und satellitengestützter Spurführung. {| class="wikitable" | ab 2021 |- | valign="top" | * {{:Traktorenlexikon: Create|6160}} 119 kW (161 PS) * {{:Traktorenlexikon: Create|6170}} 126 kW (171 PS) * {{:Traktorenlexikon: Create|6180}} 133 kW (181 PS) * {{:Traktorenlexikon: Create|6190}} 141 kW (192 PS) * {{:Traktorenlexikon: Create|6210}} 159 kW (216 PS) * {{:Traktorenlexikon: Create|6230}} 169 kW (230 PS) |} === Serie 7 === [[File:Deutz-Fahr 7250 TTV Warrior Agritechnica 2023 (DSC04914).jpg|thumb|Deutz-Fahr 7250 TTV Warrior]] Die seit 2021 im bayerischen „Deutz-Fahr Land“ in Lauingen produzierte Serie 7 repräsentiert die Hochleistungs-Klasse für großflächige Ackerbaubetriebe und Lohnunternehmen. Herzstück dieser Baureihe ist der Deutz TCD 6.1 L6 Sechszylindermotor, der durch ein elektronisch gesteuertes Twin-Turbo-System und Common-Rail-Einspritzung eine Maximalleistung von bis zu 247 PS (Modell 7250 TTV) bei optimierten Wartungsintervallen von 1.000 Stunden bereitstellt. Im Gegensatz zu den kleineren Serien wird die Serie 7 ausschließlich mit dem stufenlosen TTV-Getriebe ausgestattet, das eine präzise Geschwindigkeitssteuerung von 0 bis 60 km/h (bei reduzierter Motordrehzahl) ohne Zugkraftunterbrechung ermöglicht. Zu den technischen Besonderheiten gehören die MaxiVisionPro-Kabine mit der ergonomischen MaxCom-Armlehne, eine verstärkte Hinterachse mit integrierten Scheibenbremsen im Ölbad sowie eine High-End-Hydraulikanlage mit einer Load-Sensing-Pumpe von bis zu 210 l/min. Dank der serienmäßigen Integration des iMonitor3 und umfangreicher SDF Smart Farming Solutions ist das Fahrzeug für hochpräzise Anwendungen wie Section Control und Variable Rate Control im Precision Farming optimiert. {| class="wikitable" | ab 2021 |- | valign="top" | * {{:Traktorenlexikon: Create|7250 TTV}} 182 kW (247 PS) |} === Serie 8 === [[Datei:Deutz-Fahr 8280 TTV Warrior agra 2024 (DSC02756).jpg|thumb|Deutz-Fahr 8280 TTV]] Die im Jahr 2020 eingeführte und im bayerischen Lauingen gefertigte Serie 8 TTV (primär repräsentiert durch das Modell 8280 TTV) bildet die technologische Brücke zwischen den Baureihen 7 und 9. Technisches Kernstück ist der flüssigkeitsgekühlte Deutz TTCD 6.1 L6 Sechszylindermotor mit zweistufiger Turboaufladung und Common-Rail-Einspritzung (2.000 bar), der eine Maximalleistung von 287 PS generiert. Die Kraftübertragung erfolgt über das stufenlose TTV-Getriebe (SDF T7780), welches die Motorleistung über vier mechanische Fahrbereiche verzweigt und eine Endgeschwindigkeit von bis zu 60 km/h bei reduzierter Drehzahl ermöglicht. Zu den spezifischen Merkmalen zählen die MaxiVisionPro-Kabine, eine Load-Sensing-Hydraulik mit bis zu 210 l/min sowie ein zulässiges Gesamtgewicht von 16 Tonnen. Die Baureihe ist vollständig für SDF Smart Farming Solutions (iMonitor3, ISOBUS) integriert. {| class="wikitable" | ab 2020 |- | valign="top" | * {{:Traktorenlexikon: Create|8280 TTV}} 197 kW (268 PS) |} ==== Serie 8 (2025) ==== [[File:Deutz-Fahr 8310 TTV Agritechnica 2025 (DSC00446).jpg|thumb|Deutz-Fahr 8310 TTV]] Die im November 2025 auf der Agritechnica präsentierte neue Generation der Serie 8 umfasst die Modelle 8310 TTV und 8340 TTV mit einer Maximalleistung von bis zu 340 PS. Wesentliche technische Neuerung ist der Wechsel auf den FPT N67 Sechszylindermotor mit 6,7 Litern Hubraum, der vollständig HVO-kompatibel ist. Die Kraftübertragung erfolgt über ein verstärktes stufenloses TTV-Getriebe, das speziell für die erhöhten Drehmomentanforderungen der 340-PS-Klasse ausgelegt wurde. Ein zentrales Merkmal ist die neu entwickelte SigmaVision-Kabine im 4-Säulen-Design, die über die innovative iControl-Armlehne bedient wird. Zu den technischen Highlights gehören eine Hydraulikförderleistung von 220 l/min, ein Heckhubwerk mit 12.000 kg Hubkraft sowie das TAGS-System (Tractor Assisted Guidance System), welches mittels 3D-Hinderniserkennung und KI-basierter Sensorik teilautonome Fahrfunktionen ermöglicht. Die Markteinführung und Auslieferung der in Lauingen produzierten Maschinen ist für Mai 2026 vorgesehen. {| class="wikitable" | ab 2026 |- | valign="top" | * {{:Traktorenlexikon: Create|8310 TTV}} 228 kW (310 PS) * {{:Traktorenlexikon: Create|8340 TTV}} 250 kW (340 PS) |} === Serie 9 === [[File:Deutz-Fahr 9340 TTV Warrior Agritechnica 2023 (DSC04972).jpg|thumb|Deutz-Fahr 9340 TTV Warrior]] Die seit 2015 im bayerischen Lauingen gefertigte und zuletzt 2021 technisch aktualisierte Serie 9 TTV stellt das Flaggschiff der Standardtraktoren von Deutz-Fahr dar. Technisches Kernstück dieser Baureihe ist der flüssigkeitsgekühlte Deutz TTCD 7.8 L6 Sechszylindermotor mit 7,8 Litern Hubraum, zweistufiger Turboaufladung und Ladeluftkühlung, der eine Maximalleistung von bis zu 336 PS (Modell 9340 TTV) generiert. Die Kraftübertragung wird exklusiv über das stufenlose TTV-Getriebe der Baureihe ZF TMT 32 realisiert, welches durch vier mechanische Fahrbereiche einen hohen Wirkungsgrad über das gesamte Geschwindigkeitsspektrum von 0,2 bis 60 km/h sicherstellt. Zu den markanten Merkmalen gehören die von der Motorhaube entkoppelte MaxiVisionPro-Kabine für minimale Vibrationswerte und einen Geräuschpegel von nur 69 dB(A), eine gefederte Vorderachse mit trockenen Scheibenbremsen sowie eine Load-Sensing-Hydraulikanlage mit einer Förderleistung von bis zu 210 l/min. Mit einem zulässigen Gesamtgewicht von 18 Tonnen und einer Heckhubkraft von 12.000 kg ist die Serie 9 für schwerste Bodenbearbeitung und anspruchsvolle Systemtechnik im Rahmen der SDF Smart Farming Solutions optimiert. Angekündigt wurde zudem als viertes (und kleinstes) Modell der '''9270 TTV'''. Die Serienproduktion wurde allerdings nicht aufgenommen.<ref>http://zugtier.info/deutz-fahr-serie-9/</ref> {| class="wikitable" | ab 2015 |- | valign="top" | * {{:Traktorenlexikon: Create|9290 TTV}} 217 kW (295 PS) * {{:Traktorenlexikon: Create|9310 TTV}} 229 kW (312 PS) * {{:Traktorenlexikon: Create|9340 TTV}} 247 kW (336 PS) |} === Serie 11 === [[File:Agritechnica 2013 by-RaBoe 09.jpg|thumb|Deutz Fahr 11440 TTV]] Die Serie 11 war als Vorstoß von Deutz-Fahr in das Segment der Großtraktoren über 400 PS geplant, wurde jedoch nie in Serie produziert. Trotz der offiziellen Vorstellung von Prototypen (insbesondere des Modells 11440 TTV) wurde das Projekt vor dem geplanten Verkaufsstart aus strategischen Gründen innerhalb der SDF-Gruppe eingestellt. {| class="wikitable" | 2013 vorgestellt |- | valign="top" | * {{:Traktorenlexikon: Create|11350 TTV}} * {{:Traktorenlexikon: Create|11400 TTV}} * {{:Traktorenlexikon: Create|11440 TTV}} |} == Prototypen/Kleinserien == {| class="wikitable" | valign="top" | * D5505 Tandemschlepper<ref>http://www.oldtimerplus.de/blog/deutz-d5505-tandem-schlepper/</ref> * {{:Traktorenlexikon: Create|Agro XXL}} 440kW (600 PS) - 2009 |} === Deutz D5505 Tandem === [[File:Deutz D 5505 Tandem Nachbau 2017 by RaBoe.jpg|thumb|Deutz D 5505 Tandem Nachbau]] Der Deutz D 5505 Tandemschlepper (oft auch als „Deutz-Gigant“ bezeichnet) war ein spektakulärer Prototyp bzw. Eigenbau aus dem Jahr 1965, der die Antwort auf den steigenden Leistungsbedarf in der Landwirtschaft vor der Ära der echten Großschlepper darstellte. Technisch bestand das Gespann aus zwei gekoppelten D 5505, bei denen der vordere Schlepper seiner Hinterachse beraubt und fest mit der Vorderachse des hinteren Schleppers verbunden wurde. Angetrieben wurde die Einheit von zwei luftgekühlten Vierzylinder-Motoren (Typ F4L 812), was eine Gesamtleistung von 104 PS ergab. Da es noch keine ausgereiften Knicklenker-Systeme von der Stange gab, wurden die beiden Motoren und Getriebe über ein komplexes Gestänge synchronisiert und vom hinteren Fahrersitz aus gesteuert. Trotz der enormen Zugkraft und der beeindruckenden Optik blieb der Tandemschlepper ein Einzelstück, da die Konstruktion für die Serienreife zu aufwendig war und Deutz kurz darauf mit der Entwicklung leistungsstarker Einzelschlepper wie dem D 9005 begann. === Deutz-Fahr Agro XXL === [[Datei:Deutz Agro XXL.JPG|thumb|Deutz-Fahr Agro XXL]] Der Deutz-Fahr AgroXXL 1630 wurde auf der Agritechnica 2009 als Prototyp eines 600 PS starken Großschleppers vorgestellt, der in Kooperation mit der DTU (Deutsche Traktoren Union) entstand. Das Herzstück des Giganten war ein 16-Liter-V8-Motor von Deutz, dessen Kraft über acht Räder auf zwei Tandemachsen auf den Boden übertragen wurde. Technisch war das Fahrzeug als Knicklenker mit einem hydraulischen Knickwinkel von ca. 40° konstruiert, was trotz der enormen Abmessungen einen inneren Wenderadius von nur 5,50 Metern ermöglichte. Ziel war es, die Zugkraft eines schweren Knicklenkers mit der Bodenschonung und Straßentauglichkeit eines Acht-Rad-Konzepts zu vereinen; das Projekt ging jedoch aufgrund hoher Komplexität nie in Serienfertigung. == Literatur & Weblinks == {{Commons|Category:Deutz-Fahr tractors|Deutz-Fahr-Traktoren}} {{Wikipedia1|Deutz-Fahr}} * Karel Vermoesen, Michael Bruse: ''Alle Traktoren von Deutz und Deutz-Fahr.'' 2 Bd. Verlag Klaus Rabe, 2009. ISBN 9783926071385 * [http://www.samedeutz-fahr.com www.samedeutz-fahr.com] * [http://www.deutz-fahr.com www.deutz-fahr.com] * [http://www.deutzforum.de/ www.deutzforum.de] Die Listen folgender Websites sind in Teilen unstimmig, zur groben Orientierung jedoch brauchbar: * [http://www.deutz-traktoren.de/ www.deutz-traktoren.de] * [http://www.konedata.net/Traktorit/deutz.htm www.konedata.net] (Modelldaten Finnisch/Englisch) * [http://home.arcor.de/gbotzet/Schlepperlisten%20Deutz.htm Private Datensammlung zu Deutz- und Deutz-Fahr-Traktoren von J. Botzet] Die folgende Seite wird wahrscheinlich weiter bearbeitet und ist deshalb nur zeitlich begrenzt in dieser Variante verfügbar? * https://issuu.com/deutz-fahr === Quellen === <references /> {{:Traktorenlexikon: Navigation}} bby0i0zf7kqixxe60q8m8bxaixto26e 1090559 1090557 2026-09-08T14:12:21Z JaWa1998 115962 /* DX */ 1090559 wikitext text/x-wiki {{:Traktorenlexikon: Navigation}} [[File:DF Logo Neu.jpg|thumb|Logo Deutz-Fahr]] [[File:Logo SDF.jpg|thumb|Logo SDF]] '''Deutz-Fahr''' ist eine seit 1981 bestehende deutsche Landmaschinen- und Traktorenmarke, die aus dem Agrartechnikbereich der Klöckner-Humboldt-Deutz AG (KHD) mit den Marken [[Traktorenlexikon: Deutz|Deutz]] und [[Traktorenlexikon: Fahr|Fahr]] hervorging. Seit 1995 gehört Deutz-Fahr zur [[Traktorenlexikon: SAME Deutz-Fahr|SAME-Deutz-Fahr]]-Gruppe (seit Dezember 2015 SDF-Group). ==Geschichte== Historischer Ursprung von KHD bzw. Deutz ist die 1864 gegründete ''Motorenfabrik N.A. Otto & Cie.'', die acht Jahre später in ''Gasmotoren-Fabrik Deutz AG'' umbenannt wurde. Firmensitz war die damalige Stadt Deutz, heute [[w:Deutz (Köln)|Köln-Deutz]]. 1927 wurde in Köln die Serienfertigung dieselbetriebener Traktoren aufgenommen. Aus der Gasmotoren-Fabrik Deutz war 1938 nach mehreren Übernahmen und Zusammenschlüssen die ''Klöckner-Humboldt-Deutz AG'' geworden, die in den 1960er Jahren auch Aktien des deutschen Landmaschinen- und Traktorenherstellers Fahr erwarb und diesen erst mehrheitlich, dann 1975 komplett übernahm. In den Folgejahren vermarktete KHD verschiedene Maschinen noch getrennt unter den beiden Markennamen [[Traktorenlexikon: Deutz|Deutz]] und [[Traktorenlexikon: Fahr|Fahr]]. 1981 begann die Produktion unter der neugebildeten Marke Deutz-Fahr. 1995 veräußerte KHD die Landtechniksparte an die italienische SLH-Gruppe (SAME-Lamborghini-Hürlimann) und konzentrierte sich wieder stärker auf die Motorenproduktion. Seitdem gehört Deutz-Fahr zur neugebildeten [[Traktorenlexikon: SAME Deutz-Fahr|SAME-Deutz-Fahr]]-Gruppe (SDF). Die Deutz-Fahr-Traktorenwerke wurden anschließend 1996 von Köln nach [[w:Lauingen (Donau)|Lauingen]] im schwäbischen Landkreis Dillingen an der Donau verlegt, wo bis heute produziert wird. 1997 wurde der Name von KHD in ''Deutz AG'' geändert. Ab 2003 erwarb SDF wiederum Aktienpakete der Deutz AG und war zwischenzeitlich mit 45 Prozent größter Einzelaktionär. Inzwischen ist Volvo der größte Einzelaktionär. Die meisten Deutz-Fahr-Traktoren sind mit Deutz-Motoren ausgestattet. Davon abweichend sind die Serien 5, 6C und 6.4, die mit den SDF-eigenen FARMOTION 4-Zylinder-Motoren angetrieben werden. Die auf der Agritechnica 2025 vorgestellte neue Serie 8 nutzt erstmals Motoren des Herstellers FPT (N67) mit bis zu 340PS Nennleistung. Neben Traktoren wurden und werden unter dem Namen Deutz-Fahr weitere Landmaschinen vermarktet, zum Beispiel Mähdrescher (Produktion 2025 eingestellt), Mähwerke, Heuwender, Schwader, Ladewagen, Ballenpressen und Teleskoplader. Seit 2017 wird am früheren Fahr-Standort in Lauingen an der Donau das aktuell modernste Traktorenwerk Europas von SDF betrieben. Dort werden Traktoren der SDF-Gruppe mit mehr als 100 kW gefertigt. Das bedeutet z.Z. kommen die Deutz-Fahr Serien 6, 7, 8 und 9 für die SDF-Gruppe aus Lauingen. == Typen == Unter dem Markennamen Deutz-Fahr wurden und werden Traktoren mit folgenden Typenbezeichnungen vertrieben: === INTRAC / IN-trac === {{Wikipedia|Deutz INTRAC}} [[File:Intrac 2003 A.jpg|thumb|INTRAC 2003 A (1. Generation)]] [[Datei:DeutzFahr Intrac 6.60.JPG|thumb|IN-trac 6.60 (2. Generation)]] Die [[Traktorenlexikon: Deutz#INTRAC-Reihe|INTRAC]]-Baureihe von [[Traktorenlexikon: Deutz|Deutz]] (später IN-trac bei Deutz-Fahr) stellt ein wegweisendes Systemschlepper-Konzept dar, das ab 1972 als Antwort auf den MB-trac entwickelt wurde. Das markanteste Merkmal ist die weit nach vorne gerückte Kabine über dem Motor, wodurch eine große Aufbauplattform im Heck und ein vollwertiger Frontanbauraum entstanden. Man unterscheidet im Wesentlichen zwischen der ersten Generation (Intrac 2000er-Serie) und der zweiten, leistungsstärkeren Generation (Intrac 6.00er-Serie). Die frühen Modelle wie der Intrac 2002, 2003 und 2005 basierten technisch auf der bewährten 06er-Serie und nutzten luftgekühlte Drei-, Vier- und Fünfzylindermotoren. Sie waren als echte Geräteträger konzipiert, die durch drei Anbauräume (Front, Aufbau, Heck) eine enorme Schlagkraft bei kombinierten Arbeitsgängen boten. Mit der Einführung der großen Baureihe Ende der 1980er-Jahre, insbesondere dem IN-trac 6.30 und 6.60, erreichte das Konzept seinen technologischen Höhepunkt. Diese Maschinen leisteten bis zu 150 PS, verfügten über die moderne Hochraum-Komfortkabine und waren für schwerste Systemarbeiten ausgelegt. Trotz der überlegenen Übersicht und der vielseitigen Einsatzmöglichkeiten blieb der Intrac aufgrund der höheren Anschaffungskosten und der komplexeren Wartung durch die verbaute Kabine ein Nischenprodukt. Historisch gesehen ist der Intrac jedoch von großer Bedeutung, da er die Vision eines universellen Systemfahrzeugs verkörperte und als letzter großer Systemschlepper aus Köln gilt, bevor das Konzept zugunsten der Standardtraktoren aufgegeben wurde. Heute haben gut erhaltene Intrac-Modelle absoluten Sammlerstatus und gelten als Ikonen der deutschen Landtechnik-Geschichte. {| class="wikitable" | '''1. Generation''' (1981–1989) || '''2. Generation''' (1987–1990) |- | valign="top" | * [[Traktorenlexikon: Deutz INTRAC 2002|INTRAC 2002]] 37kW (51PS) * [[Traktorenlexikon: Deutz INTRAC 2003|INTRAC 2003]] 44kW (60PS) * [[Traktorenlexikon: Deutz INTRAC 2004|INTRAC 2004]] 51kW (70PS) * {{:Traktorenlexikon: Create|INTRAC 2005}} 59kW (80PS) * {{:Traktorenlexikon: Create|INTRAC 2006}} 81kW (110PS) * {{:Traktorenlexikon: Create|INTRAC 2007}} 103kW (140PS) * ''siehe auch [[Traktorenlexikon: Deutz#INTRAC-Reihe|Deutz INTRAC]]'' | valign="top" | * {{:Traktorenlexikon: Create|IN-trac 6.05}} 72kW (98PS) * {{:Traktorenlexikon: Create|IN-trac 6.30}} 85kW (115PS) * {{:Traktorenlexikon: Create|IN-trac 6.30 turbo}} 93kW (126PS) * {{:Traktorenlexikon: Create|IN-trac 6.60 turbo}} 110kW (150PS) |} === D-07 === [[File:Deutz D7807 HH-Volksdorf (2023).jpg|thumb|Deutz-Fahr D7807]] 1980 kam die letzte Entwicklungsstufe der Deutz-Baureihe [[Traktorenlexikon: Deutz#D-06|D-06]] unter der Bezeichnung D-07 auf den Markt. Die wesentlichen Veränderungen betrafen die verstärkten Dreipunktgestänge, die geänderte Motorhaube mit abnehmbarem Grill nach Art der DX-Traktoren sowie die für DX-Gewichte geeigneten Frontballastträger. Dazu kam wahlweise eine Halbkabine mit hinten angeschlagenden Türen. Das D-07-Program bestand zunächst aus folgenden Familien:<br /> 1. Kleine Baureihe D 4007 bis D 6207 (entsprechend D 4006 bis D 6206), ab D 4507 auch mit Allradantrieb.<br /> 2. Mittlere Baureihe D 6807, D 7207 und D 7807, natürlich auch mit Allrad. Die beiden ersteren entsprachen den Vorgängern D 6806 und D 7206.<br /> 3. Neu war der D 7807 mit F4L913-Motor und 75 PS. Die D-07er Modelle sind durch vierstellige Nummern gekennzeichnet, die jeweils auf „07“ enden. Traktoren dieser Serie wurden bis 1990 von Deutz-Fahr – bis 1981 noch unter dem Markennamen [[Traktorenlexikon: Deutz|Deutz]] – gefertigt. Modelle mit dem Zusatz „C“ sind Ausführungen mit Kabine, Modelle mit dem Zusatz „A“ sind Allradausführungen. Der Zusatz „P“ kennzeichnet Schmalspurversionen (hier noch nicht aufgeführt). ''Der Einfachheit halber werden im Traktorenlexikon alle D-07-Modelle unter „Deutz-Fahr“ geführt.'' {| class="wikitable" | '''D-07''' (1980–1990) |- | valign="top" | * {{:Traktorenlexikon: Create|D 2807}} 21kW (29 PS) * {{:Traktorenlexikon: Create|D 3607}} 25kW (34 PS) * {{:Traktorenlexikon: Create|D 4007}} 26kW (35 PS) * {{:Traktorenlexikon: Create|D 4507}} 30kW (40 PS) <!-- 4507–7807 alle als C mit Spezialkabine; + P-Schmalspurausführungen, aber welche? --> * {{:Traktorenlexikon: Create|D 4807}} 33kW (45 PS) <!-- mind bis 1982 --> * {{:Traktorenlexikon: Create|D 5207}} 38kW (51 PS) <!-- H mind bis 1983 --> * {{:Traktorenlexikon: Create|D 6007}} 42kW (57 PS) <!-- mind bis 1983 --> * {{:Traktorenlexikon: Create|D 6207}} 44kW (60 PS) <!-- A mind bis 1984 --> * {{:Traktorenlexikon: Create|D 6507}} 46kW (62 PS) <!-- mind bis 1984 --> * {{:Traktorenlexikon: Create|D 6807}} 49kW (67 PS) * {{:Traktorenlexikon: Create|D 6907}} 51kW (70 PS) <!-- CA mind bis 1985 --> * {{:Traktorenlexikon: Create|D 7007}} 51kW (70 PS) * {{:Traktorenlexikon: Create|D 7207}} 51kW (70 PS) <!-- mind bis 1982 --> * {{:Traktorenlexikon: Create|D 7807}} 55kW (75 PS) <!-- C mind bis 1985 --> |} === DX === {{Wikipedia|Deutz-Fahr DX}} [[File:DEUTZ DX140.jpg|thumb|DEUTZ DX 140 (1. Generation)]] [[File:Deutz-Fahr Traktor 137 PS.jpg|thumb|DEUTZ-FAHR DX 6.50 (2. Generation)]] Die DX-Serie von Deutz-Fahr, eingeführt im Jahr 1978 (noch unter dem Namen Deutz), markierte einen entscheidenden technologischen Sprung in die Ära der modernen Komfort- und Großschlepper und löste die 6-Zylinder-Traktoren der erfolgreichen Serie 06 ab. Die Traktoren waren von Grund auf neu kosntruiert worden, um ertsmals eine voll integrierte Kabine anbieten zu können. Die DX-Traktoren hoben sich vom Markt durch ihre doppelt Rhombus-förmige Haube und Kabine ab, welche durch den Intrac inspiriert wurde. Die Getriebe stammten nun nicht mehr von ZF, da man sich in Köln unabhängiger aufstellen wollte. Daher erhielten die Modelle DX85, DX90 und DX110 direkt selbst entwicklete KHD-TW90-Triebwerke. Da man aber noch keine eigenen Getreibe für Leistungen oberhalb von 120PS entwicklet hatte, griff man bei den beiden Top-Modellen DX140 und DX160 auf Treibwerke der Firm Steyr aus Österreich zurück. Mit diesen war man eine Getriebe-Kooperation eingeganen, die Steyrer erhielten im gegenzug TW90 Getriebe von KHD für ihre mittlere Leistungsklasse (Serie 80). Man unterscheidet bei der Serie DX grundlegend dabei zwischen der ersten Generation (1978–1983) und der darauffolgenden, strukturell neu geordneten DX-Generation ab 1984. '''Die Merkmale der 1. Generation (1978-1983) waren:''' * Schriftzug DEUTZ auf dem gesamten Schlepper * Eine Tür links aus GFK, nach vorne öffnend * Kabine in Deutz-Grün ´74, Kotflügel in schwarzblau * max. 30km/h * seitliche Kardanwelle für den Vorderradantrieb '''Die Merkmale der 2. Generation (1983-1996) waren:''' * Schriftzug DEUTZ-FAHR auf dem gesamten Schlepper * Vollglastüren rechts und links, nach hinten öffnend * Kabine in schwarzblau, Kotflügel in Deutz-Grün ´74 * max. 40km/h * mittige Kardanwelle für den Vorderradantrieb ''Die Grenze kann nicht ganz strikt im Jahr 1983 gezogen werden, manche Modelle wurden schon 1980 oder 1982 überarbeitet. Spätestens aber 1983 waren alle Modelle auf dem neuen Stand.'' Die Modellbezeichnung der ersten Generation entsprach dabei grob der maximalen Leistung, wich aber mit steigender Zahl immer weiter ab (DX90 = 88 PS, DX140 = 125 PS). Technisch setzten sie konsequent auf die bewährten luftgekühlten Motoren der Baureihe 912/913. Eine Besonderheit stellten die Modelle DX85 und DX90 dar, da sie mit einem luftgekühlten 5-Zylinder-Motor (F5L912) ausgestattet waren. Diese beiden Modelle wurden während der 1. Serie noch ersetzt bzw. ergänzt, da sich der 5-Zylinder-Motor in der Praxis bei den Kunden als unbliebt zeigte, vor allem wegen dem größeren Wenderadius und der fehlenden Spritzigkeit gegenüber in der Leistungsklasse mittlerweile etablierten Traktoren mit 4-Zylinder-Turbomotoren. Daher wich der F5L912 dem BF4L913. Die überarbeitete Serie ab 1983 – unterteilt in die Klassen DX 3, 4, 6, 7 und 8 - erhielt eine neue Nomenklatur und wurde mit einer vorangestellten Zahl, die die Leistungsklasse angab und meist der Zylinderzahl entsprach, bezeichnet. Nach der ersten Ziffer folgte nach einem Punkt eine zweistellige Ziffer, die die Position innerhalb der Leistungsklasse angab. An ihr konnte die Motorleistung nicht direkt abgelesen werden. Die DX-Klassen können folgendermaßen eingeordnet werden: '''DX 3''' * 46 - 75 PS * Standard StarCab * Teilw. mit hinten offener VarioCab lieferbar * 3- oder 4-Zylinder-Saugmotoren * Kompaktmodelle * 2./3.-Traktor, Grünlandbetriebe, Pflege- und Frontladerarbeiten, Nebenerwerb '''DX 4''' * 70 - 90 PS * Standard MasterCab * Spritzige 4-Zylinder-Turbomotoren * Wendige Traktoren für den Neben- oder Vollerwerb * Haupt- oder 2.-Traktor, Grünland- und Ackerbetriebe, Pflege- und Frontladerarbeiten '''DX 6''' * 98 - 137 PS * Standard MasterCab * Durchzugsstarke und kräftige 6-Zylinder Saug- oder Turbomotoren * Teilweise mit Lastschaltung POWERMATIC * Für den Vollerwerb oder Lohnunternehmer * Haupttraktor, Acker- und Transportarbeiten '''DX 7''' * 160 PS * Standard MasterCab * Durchzugsstarker und kräftiger 6-Zylinder Turbomotor * Mit Lastschaltung POWERMATIC * Für den Großbetrieb, ehem. LPG oder Lohnunternehmer * Haupttraktor, Acker- und Transportarbeiten auf absoluten Großbetrieben '''DX 8''' * 220 PS * Standard MasterCab * Durchzugsstarker und kräftiger 6-Zylinder Turbomotor der NFZ-Serie 513 mit 9,5 l Hubraum * Mit Lastschaltung POWERMATIC * Für Gutshöfe und Großbetriebe ausserhalb Europas, ehem. UDSSR, Australien, USA etc. * Absoluter Ackergigant: Pflügen, Grubbern, Tiefenlockern etc. In dieser zweiten Phase hielt zudem die Elektronik in Form der Agrotronic Einzug, was die Präzision der Hubwerksregelung und die Überwachung der Maschinenfunktionen revolutionierte. Vom kompakten DX 3 als wendigem Hofschlepper bis zum DX 8.30 für schwerste Ackerarbeiten deckte die Serie das gesamte landwirtschaftliche Spektrum ab. Aufgrund ihrer mechanischen Robustheit und der wartungsfreundlichen Kühltechnik gilt die DX-Reihe heute als das Fundament für den Erfolg von Deutz-Fahr in den 80er-Jahren und ist auf dem Gebrauchtmarkt für ihre außergewöhnliche Langlebigkeit bekannt. Daneben gab es auch noch den Deutz-Fahr DX3.500, der von [[Traktorenlexikon: Agritalia|Agritalia]] gefertigt wurde und baugleich als Renault gebaut wurde. ''Der Einfachheit halber werden im Traktorenlexikon alle DX-Modelle unter „Deutz-Fahr“ geführt.'' {| class="wikitable" | colspan="3" | <center>'''1. Generation Serie DX''' ab 1978 </center> |- | '''Modelle bei Einführung ''' || '''Überarbeitung/Ergänzung ab 1980/1982''' || '''Schmalspurtraktoren''' |- | valign="top" | * {{:Traktorenlexikon: Create|DX 85}} 59kW (80PS) * {{:Traktorenlexikon: Create|DX 90}} 65kW (88PS) * {{:Traktorenlexikon: Create|DX 110}} 75kW (102PS) * {{:Traktorenlexikon: Create|DX 140}} 92kW (125PS) * {{:Traktorenlexikon: Create|DX 160}} 110kW (150PS) * {{:Traktorenlexikon: Create|DX 230}} 147kW (200PS) * {{:Traktorenlexikon: Create|DX 430}} (Prototyp) | valign="top" | * {{:Traktorenlexikon: Create|DX 80}} 55kW (75PS) * {{:Traktorenlexikon: Create|DX 86}} 60kW (82PS) * {{:Traktorenlexikon: Create|DX 92}} 66kW (90PS) * {{:Traktorenlexikon: Create|DX 120}} 81kW (110PS) * {{:Traktorenlexikon: Create|DX 145}} 97kW (132PS) * {{:Traktorenlexikon: Create|DX 230}} 147kW (200PS) * {{:Traktorenlexikon: Create|DX 250}} 162kW (220PS) * {{:Traktorenlexikon: Create|DX 430}} (Prototyp) | valign="top" | * {{:Traktorenlexikon: Create|DX 36 V}} 21kW (29PS) * {{:Traktorenlexikon: Create|DX 50 V}} 34kW (46PS) * {{:Traktorenlexikon: Create|DX 55 V}} 40kW (54PS) |} [[File:DX 8.30.jpg|thumb|DX 8.30]] {| class="wikitable" | colspan="4" | <center>'''2. Generation Serie DX''' (1983–1995)</center> |- | '''DX 3''' || '''DX 4''' || '''DX 6''' || '''DX 7/8''' |- | valign="top" | * {{:Traktorenlexikon: Create|DX 3.10}} 34kW (46 PS) * {{:Traktorenlexikon: Create|DX 3.30}} 40kW (54 PS) * {{:Traktorenlexikon: Create|DX 3.50}} 44kW (60 PS) * {{:Traktorenlexikon: Create|DX 3.60}} 48kW (65 PS) * {{:Traktorenlexikon: Create|DX 3.65}} 51kW (70 PS) * {{:Traktorenlexikon: Create|DX 3.70}} 51kW (70 PS) * {{:Traktorenlexikon: Create|DX 3.75 A}} 57kW (78 PS) * {{:Traktorenlexikon: Create|DX 3.80 AS}} 55kW (75 PS) * {{:Traktorenlexikon: Create|DX 3.90}} 55KW(75 PS) | valign="top" | * {{:Traktorenlexikon: Create|DX 4.10}} 51kW (70 PS) * {{:Traktorenlexikon: Create|DX 4.30}} 55kW (75 PS) * {{:Traktorenlexikon: Create|DX 4.50}} 60kW (82 PS) * {{:Traktorenlexikon: Create|DX 4.70}} 66kW (90 PS) | valign="top" | * {{:Traktorenlexikon: Create|DX 6.05}} 72kW (98 PS) * {{:Traktorenlexikon: Create|DX 6.10}} 74kW (100 PS) * {{:Traktorenlexikon: Create|DX 6.30}} 85kW (115 PS) * {{:Traktorenlexikon: Create|DX 6.50}} 101kW (137 PS) | valign="top" | * {{:Traktorenlexikon: Create|DX 7.10}} 118kW (160 PS) ---- * {{:Traktorenlexikon: Create|DX 8.30}} 162kW (220 PS) |} === AgroPrima === [[File:2024-01-31 15-58-15 manif-Belfort.jpg|thumb|AgroPrima 4.51]] Die AgroPrima-Reihe von Deutz-Fahr besetzte als wirtschaftliche Mittelklasse das strategische Kernsegment für Familienbetriebe und Gemischtbetriebe. Mit einem Leistungsspektrum von 70 bis 115 PS fungierte sie als robustes Bindeglied zwischen der einfacheren AgroXtra-Serie und den technologisch gehobenen AgroStar-Modellen. Das Image der Serie ist bis heute durch ihre außergewöhnliche Zuverlässigkeit geprägt, was sie zu einem gefragten Allrounder auf dem Gebrauchtmarkt macht. Diese Marktposition verdankt sie der Kombination aus bewährter, mechanischer Technik – insbesondere den langlebigen luftgekühlten Motoren – und einem für damalige Verhältnisse hohen Komfort durch die StarCab-Kabine. Damit gilt die AgroPrima als das letzte klassische „Arbeitstier“ von Deutz-Fahr vor dem Einzug umfassender Elektronikkomponenten in die Landtechnik. {| class="wikitable" | 1989-1995 |- | valign="top" | * {{:Traktorenlexikon: Create|AgroPrima 4.31}} 55kW (75PS) * {{:Traktorenlexikon: Create|AgroPrima 4.51}} 60kW (82PS) * {{:Traktorenlexikon: Create|AgroPrima 4.56}} 66kW (90PS) * {{:Traktorenlexikon: Create|AgroPrima 6.06}} 74kW (100PS) * {{:Traktorenlexikon: Create|AgroPrima 6.16}} 81kW (110PS) |} === AgroXtra === {{Wikipedia|Deutz-Fahr AgroXtra}} [[File:Deutz-Fahr AgroXtra 4.17 in Mauren TG.jpg|thumb|AgroXtra 4.17]] Die AgroXtra-Reihe von Deutz-Fahr war als spezialisierter Allrounder im Leistungsbereich von 60 bis 100 PS positioniert und ergänzte die klassische AgroPrima-Serie. Ihr zentrales Alleinstellungsmerkmal war das innovative Freisicht-Konzept mit einer stark abgeschrägten Motorhaube, das in Verbindung mit der StarCab-Kabine eine für die damalige Zeit überragende Übersicht auf Frontanbaugeräte ermöglichte. Technisch setzte die Baureihe auf die bewährte Kombination aus robusten, luftgekühlten Motoren (Reihe 912 und 913) und unkomplizierter Mechanik, was ihr bis heute ein Image höchster Zuverlässigkeit und Wartungsfreundlichkeit verleiht. In der Marktpositionierung richtete sie sich vor allem an Betriebe mit intensivem Frontlader- und Pflegeeinsatz. Aufgrund dieser funktionalen Spezialisierung bei gleichzeitig hoher Wertstabilität gilt die AgroXtra-Serie heute als gesuchter Klassiker des modernen, mechanischen Schlepperbaus. Die Bezeichnung der Traktoren der AgroXtra-Serie setzen sich aus einer Zahl vor dem Punkt zusammen, die die Zylinderzhal des Motors angibt. Die erste Ziffer nach dem Punkt beschreibt grob die Leistungsstufe innerhalb der Serie, die zweite Ziffer ist immer eine 7. {| class="wikitable" | 1990-1995 |- | valign="top" | * {{:Traktorenlexikon: Create|AgroXtra 3.57}} 44kW (60PS) * {{:Traktorenlexikon: Create|AgroXtra 4.07}} 50kW (68PS) * {{:Traktorenlexikon: Create|AgroXtra 4.17}} 55kw (75PS) * {{:Traktorenlexikon: Create|AgroXtra 4.47}} 63kW (85PS) * {{:Traktorenlexikon: Create|AgroXtra 4.57}} 70kW (95PS) * {{:Traktorenlexikon: Create|AgroXtra 6.07}} 74kW (100PS) * {{:Traktorenlexikon: Create|AgroXtra 6.17}} 83kW (113PS) |} === AgroStar === [[File:Deutz-fahr agrostar 6.61.jpg|thumb|AgroStar 6.61 (Normalhaube)]] [[File:Deutz-Fahr AgroStar 6.38.jpg|thumb|AgroStar 6.38 (Freisichthaube)]] Die AgroStar-Baureihe markierte in den 1990er Jahren als technologisches Flaggschiff das obere Leistungssegment von 80 bis 190 PS und definierte den Standard für Großbetriebe und Lohnunternehmen. Ein zentrales Merkmal war die EuroCab, die mit einem Lärmpegel von nur 72 dB(A) zu den leisesten Kabinen ihrer Zeit gehörte und durch das Agrotronic-System eine präzise elektronische Überwachung sowie Hubwerksregelung ermöglichte. Während der Großteil der Serie auf die bewährte luftgekühlte Motorentechnik der Serie 913 von DEUTZ vertraute, bildeten die Spitzenmodelle 6.71 und 6.81 eine Zäsur, da sie mit wassergekühlten MWM-Motoren und einem Full-Powershift-Getriebe von Same ausgestattet waren. Diese beiden Topmodelle waren das Ergebnis der Zusammenarbeit innerhalb der neuen Konzerngruppe, kämpften jedoch mit technischen Herausforderungen, insbesondere einer für die hohe Motorleistung teilweise unterdimensionierten Vorderachse und Abstimmungsschwierigkeiten im Triebwerk, die bei einer Überarbeitung behoben wurde (Vorderachse ersetzt druch SIGE-Achse). Historisch ist die Serie zudem von besonderer Bedeutung, da sie die letzte große Traktoren-Baureihe darstellt, die im Stammwerk in Köln vom Band lief, bevor die Produktion im Zuge der Einführung der Agrotron-Serie und struktureller Veränderungen nach Lauingen verlagert wurde. Durch diese Kombination aus maximalem Komfort der leisen Kabine und der Rolle als letzter „echter Kölner“ nimmt der AgroStar heute eine Sonderstellung in der Markenhistorie ein. {| class="wikitable" | 1990-1997 |- | '''Normalhaube''' (ab 1990) || '''Freisichthaube''' (ab 1993) |- | valign="top" | Vierzylinder: * {{:Traktorenlexikon: Create|AgroStar 4.61}} 60kW (82PS) * {{:Traktorenlexikon: Create|AgroStar 4.71}} 70kW (95PS) ---- Sechszylinder: * {{:Traktorenlexikon: Create|AgroStar 6.11}} 74kW (100PS) * {{:Traktorenlexikon: Create|AgroStar 6.21}} 83kW (113PS) * {{:Traktorenlexikon: Create|AgroStar 6.31}} 88kW (120PS) * {{:Traktorenlexikon: Create|AgroStar 6.61}} 105kW (143PS) * {{:Traktorenlexikon: Create|AgroStar 6.71}} 121kW (165PS) * {{:Traktorenlexikon: Create|AgroStar 6.81}} 136kW (185PS) | valign="top" | Vierzylinder: * {{:Traktorenlexikon: Create|AgroStar 4.68}} 67kW (91PS) * {{:Traktorenlexikon: Create|AgroStar 4.78}} 74kW (100PS) ---- Sechszylinder: * {{:Traktorenlexikon: Create|AgroStar 6.08}} 79kW (107PS) * {{:Traktorenlexikon: Create|AgroStar 6.28}} 85kW (115PS) * {{:Traktorenlexikon: Create|AgroStar 6.38}} 92kW (125PS) |- | valign="top" colspan="2" | '''Sonderform'''<!--„leicht schräge Haube“--> (1993–1995) * {{:Traktorenlexikon: Create|AgroStar 8.31}} 169kW (230PS) |} [[File:Agrostar 8.31.jpg|thumb|AgroStar 8.31]] Eine Ausnahme im AgroStar-Programm bildete der AgroStar 8.31 mit 230 PS als absolute Leistungsspitze des Deutz-Fahr-Programms und war als schwerer Ackerschlepper für den Weltmarkt konzipiert. Er basierte auf einer Kooperation mit dem US-Hersteller Allis-Gleaner Corporation (AGCO) und entsprach baugleich dem White 6215. Technisch unterschied er sich radikal von den kleineren Modellen: Er verfügte über einen luftgekühlten Deutz BF6L 513 FR Motor und ein Full-Powershift-Getriebe von Funk. Trotz seiner enormen Zugkraft blieb er mit nur geringen Stückzahlen ein Exot im Portfolio, der den Versuch markierte, im Segment der Knicklenker und Großtraktoren gegen US-Konkurrenz zu bestehen. === Agrosun === [[File:Agrosun 140 (6055469803).jpg|thumb|Agrosun 140]] Die Agrosun-Serie von Deutz-Fahr ist eine eher seltene Baureihe, die ab Ende der 1990er Jahre primär für Exportmärkte (unter anderem Osteuropa und Südamerika) produziert wurde. Sie kombinieren die robuste [[Traktorenlexikon: SAME|SAME]]-''Laser''-Reihe (aus dem Konzernverbund) mit den bewährten, luftgekühlten Deutz-Motoren der Baureihe 913 (BF6L). {| class="wikitable" | 1995-2004 |- | valign="top" | * {{:Traktorenlexikon: Create|Agrosun 100}} 74kW (100 PS) * {{:Traktorenlexikon: Create|Agrosun 120}} 88kW (120 PS) * {{:Traktorenlexikon: Create|Agrosun 140}} 103kW (140 PS) |} ---- <!-- Beginn Agrotron-Abschnitt --> === Agrotron === {{Wikipedia|Deutz-Fahr Agrotron}} Die Agrotron-Baureihe markiert im Jahr 1995 die radikalste technische und optische Zäsur in der Geschichte von Deutz-Fahr. Mit dem Ende der klassischen DX-Abstammung führte diese Serie die flächendeckende Wasserkühlung sowie das markante Design mit einer extrem flach abfallenden Motorhaube und einer rundum verglasten Panorama-Kabine ein, was eine bis dahin unerreichte Rundumsicht ermöglichte. Wurde die Reihe noch in Köln entwickelt, wanderte die Fertigung 1996 mit der Übernahme von Deutz-Fahr durch die SLH- bzw. SDF-Gruppe nach Lauingen, wo bis dato nur Mähdrescher und die größten Traktorenmodelle von KHD gefertigt wurden. Modelle unter dem Namen Agrotron werden bis heute (2026) produziert. Aus diesem Anlass bot Deutz-Fahr 2025 eine spezielle "30 Jahre Agrotron" -Edition an. ==== Agrotron (MK1–MK3) ==== [[File:DEUTZ-FAHR Agrotron 6.15 MK1.jpg|thumb|Agrotron 6.15 MK1]] Die erste Generation, der Agrotron MK1 (1995–1997), setzte konsequent auf moderne wassergekühlte Motoren und elektronisch gesteuerte Lastschaltgetriebe (ZF). Trotz des revolutionären Konzepts litt diese frühe Phase unter erheblichen Qualitätsproblemen, insbesondere in der Elektronik und der Verarbeitung, was den Ruf der Marke zeitweise belastete. Mit der Überarbeitung zum Agrotron MK2 (1997–2000) wurden viele dieser Kinderkrankheiten durch verbesserte Komponenten und eine stabilere Software behoben, was die Zuverlässigkeit deutlich steigerte. Die finale Stufe dieser Ära bildete der Agrotron MK3 (2000–2003), der durch die Einführung der B-Serie der wassergekühlten Motoren und eine weiter optimierte Kabinenausstattung als technisch ausgereift galt. In dieser Phase wurde auch die Bedienung durch das neue PowerCom-S-Bedienkonzept ergonomisch verfeinert. Die Agrotron-Modelle MK1 bis MK3 legten damit den Grundstein für die heutige Traktorengeneration von Deutz-Fahr, indem sie den Fokus endgültig von rein mechanischer Robustheit hin zu einer Kombination aus High-Tech-Elektronik, hoher Hydraulikleistung und maximalem Fahrkomfort verschoben. Die Typenbezeichnungen der Agrotrons aus den Jahren 1995 bis etwa 2008 sind dank diverser Varianten und mehrfacher Modellüberholungen vielfältig. * Modelle der ersten Baureihe (MK1) tragen einen Punkt in der Modellbezeichnung; die Nummer davor entspricht der Zylinderzahl. * Modelle der zweiten Baureihe (MK2) tragen einfache zwei- oder dreistellige Nummern, die sich an der Motorleistung in PS orientieren. * Modelle der dritten Baureihe (MK3) setzen das Nummerierungsschema der zweiten Reihe fort, tragen jedoch den Zusatz „MK3“ im Namen. Das steht für engl. mark 3 (sinngemäß „3. erreichte Qualitätsstufe“). {| class="wikitable" | '''Agrotron MK1-Reihe'''<br />(1995–1997) || '''Agrotron MK2-Reihe'''<br />(1997–2000) || '''Agrotron MK3-Reihe'''<br />(2000–2003) |- | valign="top" | <!-- MK1-Reihe, 1995–1997 --> * {{:Traktorenlexikon: Create|Agrotron 4.70}} 51kW (70PS) * {{:Traktorenlexikon: Create|Agrotron 4.80}} 55kW (75PS) * {{:Traktorenlexikon: Create|Agrotron 4.85}} 60kW (82PS) * {{:Traktorenlexikon: Create|Agrotron 4.90}} 65kW (88PS) * {{:Traktorenlexikon: Create|Agrotron 4.95}} 69kW (94PS) <!-- tt? http://www.dlg-test.de/pbdocs/traktoren/deutzfahr-agrotron495tt.pdf --> ---- * {{:Traktorenlexikon: Create|Agrotron 6.00}} 69kW (94PS) <!-- TT3 (1995) --> * {{:Traktorenlexikon: Create|Agrotron 6.01}} 73kW (100PS) * {{:Traktorenlexikon: Create|Agrotron 6.05}} 77kW (105PS) * {{:Traktorenlexikon: Create|Agrotron 6.15}} 85kW (115PS) <!--1996: http://www.dlg-test.de/pbdocs/traktoren/deutzfahr-agrotron615.pdf --> * {{:Traktorenlexikon: Create|Agrotron 6.20}} 88kW (120PS) * {{:Traktorenlexikon: Create|Agrotron 6.30}} 99kW (135PS) * {{:Traktorenlexikon: Create|Agrotron 6.45}} 107kW (145PS) | valign="top" | <!-- MK2-Reihe, 1997–2000 --> * {{:Traktorenlexikon: Create|Agrotron 80}} 59KW (80PS) * {{:Traktorenlexikon: Create|Agrotron 85}} 63kW (85PS) * {{:Traktorenlexikon: Create|Agrotron 90}} 66kW (90PS) * {{:Traktorenlexikon: Create|Agrotron 100}} 70kW (95PS) <!-- 1996: http://www.dlg-test.de/pbdocs/traktoren/deutzfahr-agrotron100.pdf --> * {{:Traktorenlexikon: Create|Agrotron 105}} 74kW (100PS) * {{:Traktorenlexikon: Create|Agrotron 106}} 74kW (100PS) * {{:Traktorenlexikon: Create|Agrotron 110}} 77kW (105PS) * {{:Traktorenlexikon: Create|Agrotron 115}} 85kW (115PS) * {{:Traktorenlexikon: Create|Agrotron 120}} 88kW (120PS) <!-- 2000: http://www.dlg-test.de/pbdocs/traktoren/deutzfahr-agrotron120.pdf --> * {{:Traktorenlexikon: Create|Agrotron 135}} 99kW (135PS) * {{:Traktorenlexikon: Create|Agrotron 150}} 110kW (150PS) * {{:Traktorenlexikon: Create|Agrotron 156}} 114kW (155PS) * {{:Traktorenlexikon: Create|Agrotron 160}} 118kW (160PS) * {{:Traktorenlexikon: Create|Agrotron 175}} 129kW (175PS) * {{:Traktorenlexikon: Create|Agrotron 200}} 147kW (200PS) * {{:Traktorenlexikon: Create|Agrotron 230}} 162kW (220PS) <!--1999: http://www.dlg-test.de/pbdocs/traktoren/deutzfahr-agrotron230.pdf --> * {{:Traktorenlexikon: Create|Agrotron 260}} 191kW (260PS) | valign="top" | <!-- MK3-Reihe, 2000–2003 --> * {{:Traktorenlexikon: Create|Agrotron 80 MK3}} 60kW (82PS) * {{:Traktorenlexikon: Create|Agrotron 85 MK3}} 66kW (90PS) * {{:Traktorenlexikon: Create|Agrotron 90 MK3}} 69kW (94PS) <!-- bis 2005 gebaut? http://www.dlg-test.de/pbdocs/traktoren/Deutz-Fahr_Agrotron_90_MK3.pdf --> * {{:Traktorenlexikon: Create|Agrotron 100 MK3}} 74kW (101PS) * {{:Traktorenlexikon: Create|Agrotron 105 MK3}} 77kW (105PS) * {{:Traktorenlexikon: Create|Agrotron 106 MK3}} 74kW (100PS) * {{:Traktorenlexikon: Create|Agrotron 110 MK3}} 80kW (109PS) <!-- bis 2005 gebaut? http://www.dlg-test.de/pbdocs/traktoren/deutz-fahr_agrotron110_mk3.pdf --> * {{:Traktorenlexikon: Create|Agrotron 115 MK3}} 87kW (118PS) * {{:Traktorenlexikon: Create|Agrotron 120 MK3}} 88kW (120PS) <!-- http://www.dlg-test.de/pbdocs/traktoren/deutzfahr-agrotron120mk3.pdf --> * {{:Traktorenlexikon: Create|Agrotron 135 MK3}} 100kw (136PS) <!-- http://www.dlg-test.de/pbdocs/traktoren/Deutz-Fahr_Agrotron_135_MK3.pdf --> * {{:Traktorenlexikon: Create|Agrotron 150 MK3}} 110kW (150PS) * {{:Traktorenlexikon: Create|Agrotron 165 MK3}} 121kW (165PS) * {{:Traktorenlexikon: Create|Agrotron 175 MK3}} 129kW (175PS) <!-- bis 2004? --> * {{:Traktorenlexikon: Create|Agrotron 200 MK3}} 147kW (200PS) <!-- bis 2004? --> * {{:Traktorenlexikon: Create|Agrotron 205 MK3}} 144kw (196PS) <!-- 2003/04 --> * {{:Traktorenlexikon: Create|Agrotron 230 MK3}} 171kW (233PS) * {{:Traktorenlexikon: Create|Agrotron 260 MK3}} 191kW (260PS) |} ==== Agrotron (Serie 4 / New Generation) ==== [[File:Deutz-Fahr Agrotron 130.jpg|thumb|Agrotron 130]] Die Agrotron-Serie 4 (oft als New Generation oder MK4 bezeichnet), produziert zwischen 2003 und 2007, stellte die finale Reifestufe des ursprünglichen Agrotron-Konzepts dar. Sie löste die MK3-Reihe ab und gilt unter Praktikern heute als eine der stabilsten und ausgereiftesten Baureihen, da sie die moderne Technik der Vorgänger mit einer deutlich höheren Fertigungsqualität und Standfestigkeit kombinierte. Technisch basierte die „New Generation“ auf den wassergekühlten Deutz-Motoren der Baureihe 2012, die nun flächendeckend die Euro-II-Abgasnorm erfüllten und für ihre Spritzigkeit sowie ihre effiziente Kraftentfaltung bekannt waren. Ein wesentliches Merkmal war die Einführung des vierstufigen Lastschaltgetriebes von ZF (7200er Serie), das in Verbindung mit der bewährten elektronischen Hubwerksregelung und einer leistungsstarken Axialkolbenpumpe für die Hydraulik eine hohe Arbeitsleistung garantierte. Optisch blieb das markante Freisicht-Design erhalten, wurde jedoch im Detail verfeinert. Die Kabine profitierte von einer nochmals verbesserten Schalldämmung und einer intuitiveren Anordnung der Bedienelemente, wie dem ergonomischen Multifunktionsgriff PowerCom-S. Mit dem MK4 schaffte Deutz-Fahr endgültig den Turnaround nach den schwierigen MK1-Jahren: Die Maschinen dieser Ära gelten als äußerst wertstabil und markieren den Übergang zu den späteren Baureihen (wie dem Agrotron K, M und TTV), indem sie bewiesen, dass das Agrotron-Konzept im harten Alltagseinsatz vollends zuverlässig sein kann. Die Typenbezeichnungen der Agrotrons aus den Jahren 1995 bis etwa 2008 sind dank diverser Varianten und mehrfacher Modellüberholungen vielfältig. * Bei der MK4-serie wurden überholte/weiterentwickelte „Nachfolgemodelle“ auf den Markt gebracht, die entweder vorher noch nicht benutzte Nummern tragen (teilweise mit Zusatz) oder aber Nummern der MK2- oder MK3-Reihe weiterverwenden (ohne Zusatz). ''Wir versuchen, hier etwas Ordnung ins Modell-Wirrwar zu bringen. Korrekturhinweise bitte auf der [[Diskussion:Traktorenlexikon: Deutz-Fahr|Diskussionsseite]] anbringen. Danke!'' {| class="wikitable" | '''Agrotron''' (MK4, „New“)<br />(2003–2008, z.T. bis 2010) |- | valign="top" | <!-- Nachfolge-Reihen "New" (2003–2005–2008) --> <!-- Liste "Agrotron New": 130, 140, 155, 165, 210, 235, 265 ODER 80, 90, 100, 105, 110, 130, 140, 150.7, 155, 165, 165.7 --> * {{:Traktorenlexikon: Create|Agrotron 80 (New)}} 60kW (82PS) <!-- 2003-2005 --> * {{:Traktorenlexikon: Create|Agrotron 90 (New)}} 65kW (88PS) <!-- 2003-2005, noch als MK3 bezeichnet? --> * {{:Traktorenlexikon: Create|Agrotron 100 (New)}} 73kW (99PS) <!-- 2004-2005, noch als MK3 bezeichnet? --> * {{:Traktorenlexikon: Create|Agrotron 105 (New)}} 74kW (100PS) <!-- 2003-2005, noch als MK3 bezeichnet? --> * {{:Traktorenlexikon: Create|Agrotron 108}} 80kW (109PS) <!-- 2003-2005, 106MK3-Nachfolger [http://www.dlv.de/grafiken/traktorenDB/pdf/2003/LZ311028.pdf] (2003) --> * {{:Traktorenlexikon: Create|Agrotron 110 (New)}} 74kW (100PS) <!-- 2003-2005, noch als MK3 bezeichnet? --> * {{:Traktorenlexikon: Create|Agrotron 118}} 90kW (122PS) <!-- 2003-2005, TT3-1 (2004), 110MK3-Nachfolger [http://www.fat.admin.ch/traktor/trak1867d.pdf] --> * {{:Traktorenlexikon: Create|Agrotron 120 (New)}} 80kW (109PS) <!--TT 2005-2008 --> * {{:Traktorenlexikon: Create|Agrotron 128}} 93kW (126PS) <!-- 2003-2005, 115MK3-Nachfolger --> * {{:Traktorenlexikon: Create|Agrotron 130}} 94kW (128PS) <!-- zwei unterschiedlich starke Modelle 2003-2005-2008 --> * {{:Traktorenlexikon: Create|Agrotron 130 (NEW)}} 90kW (122PS) * {{:Traktorenlexikon: Create|Agrotron 140}} 105kW (143PS) <!-- 2003-2005 --> * {{:Traktorenlexikon: Create|Agrotron 150 (New)}} 107kW (145PS) <!-- 2005-2008, TT3 (2007); 2006: http://www.dlg-test.de/pbdocs/traktoren/Deutz-Fahr_Agrotron_150.pdf --> * {{:Traktorenlexikon: Create|Agrotron 150.7}} 107kW (145PS) <!-- 2005-2007/08 http://www.dlg-test.de/pbdocs/traktoren/Deutz-Fahr_Agrotron_150_7.pdf --> * {{:Traktorenlexikon: Create|Agrotron 155}} 113kW (153PS) <!-- 2003-2005 --> * {{:Traktorenlexikon: Create|Agrotron 165 (New)}} 120kW (163PS) <!-- 2003-2004/05 --> * {{:Traktorenlexikon: Create|Agrotron 165.7}} 121kW (165PS) <!-- 2005-2007/08, nur Profiline? --> * {{:Traktorenlexikon: Create|Agrotron 180.7}} 125kW (170PS) <!-- 2005-2007/08, nur Profiline? --> * {{:Traktorenlexikon: Create|Agrotron 200 (New)}} 151kW (205PS) <!-- 2003-2005-2008, zwei Modelle? Übergang zum L 720? --> * {{:Traktorenlexikon: Create|Agrotron 210}} 146kW (198PS) <!--2003-2005 http://www.dlg-test.de/pbdocs/traktoren/Deutz-FahrAgrotron210_2004.pdf --> * {{:Traktorenlexikon: Create|Agrotron 215}} 147kW (200PS) <!-- 2004–2005-2007-2010US --> * {{:Traktorenlexikon: Create|Agrotron 235}} 170kW (231PS) <!-- 2003-2005 --> * {{:Traktorenlexikon: Create|Agrotron 265}} 184kW (250PS) <!-- 2003-2005-2008-2010US: zwei leicht unterschiedliche Modelle --> |} ==== Agrotron TTV ==== [[File:TTV 630.JPG|thumb|Agrotron TTV 630]] Die Agrotron TTV-Baureihe, eingeführt ab dem Jahr 2001 (mit dem TTV 1160), markierte den Einstieg von Deutz-Fahr in die Ära der stufenlosen Antriebstechnik. Während die Standard-Agrotrons auf Lastschaltgetriebe setzten, verfügten die TTV-Modelle über das leistungsverzweigte S-Matic-Getriebe von ZF, das eine stufenlose Beschleunigung von 0 bis 50 km/h ohne Zugkraftunterbrechung ermöglichte. Technisch kombinierten diese Schlepper die bewährte Freisicht-Philosophie und die wassergekühlten Deutz-Motoren mit einem völlig neuen Bedienkonzept. Ein zentrales Element war der PowerCom-S-Multifunktionsgriff, über den der Fahrer die gesamte Geschwindigkeit, Fahrtrichtung und die Hydraulikfunktionen mit einer Hand steuern konnte. In den Folgejahren wurde die Serie stetig erweitert, wobei die Generationen analog zur Entwicklung der M- und L-Serie (ca. 2007 bis 2013) durch modernere Deutz-Common-Rail-Motoren (DCR) und eine leistungsfähigere Elektronik mit iMonitor-Schnittstelle ergänzt wurden. Der Agrotron TTV positionierte sich als technologisches Aushängeschild der Marke für anspruchsvolle Ackerbau- und Transportbetriebe, die maximale Effizienz bei reduziertem Kraftstoffverbrauch suchten. Er bewies, dass das ursprüngliche Agrotron-Konzept auch in der Oberklasse der stufenlosen Getriebetechnik voll konkurrenzfähig war und legte den Grundstein für die heutige 6er, 7er und 8er TTV-Großtraktorenfamilie. {| class="wikitable" | '''erste TTV-Reihe''' (2001-2007) || '''zweite TTV-Reihe''' (2008-2012) || '''TTV 400''' (2011-2013) |- | valign="top" | <!-- erste Reihe ab 2001 --> * {{:Traktorenlexikon: Create|Agrotron TTV 1130}} 92kW (125PS) * {{:Traktorenlexikon: Create|Agrotron TTV 1145}} 103kW (140PS) * {{:Traktorenlexikon: Create|Agrotron TTV 1160}} 110kW (150PS) | valign="top" | <!-- zweite Reihe ab 2008 --> * {{:Traktorenlexikon: Create|Agrotron TTV 610}} 115kW (157PS) * {{:Traktorenlexikon: Create|Agrotron TTV 620}} 120kW (163PS) * {{:Traktorenlexikon: Create|Agrotron TTV 630}} 149kW (203PS) | valign="top" | <!-- TTV 400 --> * {{:Traktorenlexikon: Create|Agrotron TTV 410}} 73kW (99PS) * {{:Traktorenlexikon: Create|Agrotron TTV 420}} 81kW (110PS) * {{:Traktorenlexikon: Create|Agrotron TTV 430}} 91kW (124PS) |} ==== Agrotron K ==== [[File:Deutz-Fahr Agrotron K100.jpg|thumb|Agrotron K100]] Die Agrotron K-Baureihe, produziert zwischen 2005 und 2013, wurde als kompakter und wendiger Allrounder unterhalb der größeren M-Serie positioniert. Sie löste die kleineren Agrotron-Modelle (wie den 80 bis 105) ab und war speziell für gemischte Betriebe, Grünlandwirtschaft und den Frontladereinsatz konzipiert. Die Serie umfasste Modelle wie den K 90, 100, 110 und später die stärkeren K 410, 420 und 430. Technisch setzten die K-Modelle auf die wassergekühlten Deutz-Vierzylindermotoren der Baureihe 2012 (später 2013), die sich durch ein kompaktes Maß und eine hohe Drehmomentreserve auszeichneten. Ein wesentliches Merkmal war das bewährte ZF-Getriebe mit dreifacher Lastschaltung, das eine feine Abstufung für die tägliche Arbeit bot. Trotz ihrer kompakteren Abmessungen verfügten die Schlepper über die vollwertige Agrotron-Kabine, die eine exzellente Rundumsicht bot und in der „Profiline“-Ausstattung sogar über eine elektronische Steuergerätebedienung am Multifunktionsgriff verfügte. {| class="wikitable" | '''1. K-Reihe''' (2005–2009) || '''2. K-Reihe''' (2008–2013) |- | valign="top" | * {{:Traktorenlexikon: Create|Agrotron K 90}} 62kW (84 PS) * {{:Traktorenlexikon: Create|Agrotron K 100}} 70kW (95 PS) * {{:Traktorenlexikon: Create|Agrotron K 110}} 76kW (104 PS) * {{:Traktorenlexikon: Create|Agrotron K 120}} 85kW (115 PS) | valign="top" | * {{:Traktorenlexikon: Create|Agrotron K 410}} 65kW (89 PS) * {{:Traktorenlexikon: Create|Agrotron K 420}} 74kW (100 PS) * {{:Traktorenlexikon: Create|Agrotron K 430}} 82kW (112 PS) * {{:Traktorenlexikon: Create|Agrotron K 610}} 82kW (112 PS) |} ==== Agrotron M ==== [[File:Deutz-Fahr Agrotron M620 mit Anhänger.jpg|thumb|Agrotron M620]] Die Agrotron M-Baureihe, produziert zwischen 2007 und 2013, war das Herzstück des Deutz-Fahr-Programms im mittleren und gehobenen Leistungssegment von ca. 110 bis 190 PS. Sie löste die erfolgreichen Modelle der Agrotron 100er-Serie sowie die „New Generation“ (MK4) ab und basierte auf einem technisch ausgereiften Konzept, das Zuverlässigkeit mit moderner Common-Rail-Technologie verband. Technisch setzten die M-Modelle (wie der M 600, 620 oder 650) flächendeckend auf die Deutz-Sechszylindermotoren (TCD 2012 L06) mit dem DCR-System (Deutz Common Rail). Diese Motoren zeichneten sich durch eine effiziente Verbrennung und eine hohe Drehmomentreserve aus. Kraftübertragungstechnisch kam das bewährte ZF-Triebwerk (7200er Serie) mit vierfacher Lastschaltung zum Einsatz, das für seine Langlebigkeit und den hohen Wirkungsgrad bekannt war. Ein besonderes Merkmal war die Wahlmöglichkeit bei der Ausstattung: Während die Basismodelle mechanische Steuergeräte besaßen, bot die Profiline-Ausstattung eine voll-elektronische Bedienung über den PowerCom-S-Multifunktionsgriff. Die Agrotron M haben Schwestermodelle im [[Traktorenlexikon: SAME Deutz-Fahr|SDF-Konzern]] mit der Motorhaube in silber die [[Traktorenlexikon: Lamborghini#R6|Lamborghini R6]], mit orange-roten Motorhauben die [[Traktorenlexikon: SAME#Iron|SAME Iron]] und die [[Traktorenlexikon: Hürlimann#XL|Hürlimann XL]]. {| class="wikitable" | colspan="2" | '''2008-2013''' |- | || NaturalPower (Rapsölbetrieb) |- | valign="top" | * {{:Traktorenlexikon: Create|Agrotron M 600}} 89kW (121 PS) * {{:Traktorenlexikon: Create|Agrotron M 610}} 97kW (132 PS) * {{:Traktorenlexikon: Create|Agrotron M 620}} 114kW (155 PS) * {{:Traktorenlexikon: Create|Agrotron M 640}} 126kW (171 PS) * {{:Traktorenlexikon: Create|Agrotron M 650}} 133kW (181 PS) | valign="top" | * {{:Traktorenlexikon: Create|Agrotron M 600 NaturalPower}} * {{:Traktorenlexikon: Create|Agrotron M 610 NaturalPower}} * {{:Traktorenlexikon: Create|Agrotron M 620 NaturalPower}} * {{:Traktorenlexikon: Create|Agrotron M 640 NaturalPower}} * {{:Traktorenlexikon: Create|Agrotron M 650 NaturalPower}} |- | colspan="2" | '''2010-2013''' |- | 4 Zylinder || 6 Zylinder |- | valign="top" | * {{:Traktorenlexikon: Create|Agrotron M 410}} 99kW (134 PS) * {{:Traktorenlexikon: Create|Agrotron M 420}} 113kW (154 PS) | valign="top" | * {{:Traktorenlexikon: Create|Agrotron M 615}} 107kW (146 PS) * {{:Traktorenlexikon: Create|Agrotron M 625}} 120kW (163 PS) |} ==== Agrotron L ==== [[File:Deutz-Fahr Agrotron L 720 Tractor at IndAgra Farm Romexpo 2010 (front view).JPG|thumb|Agrotron L 720]] Die Agrotron L-Baureihe, produziert zwischen 2007 und 2013, war als großvolumige Ergänzung zur M-Serie konzipiert und deckte das obere Segment der Sechszylinder-Traktoren bis etwa 210 PS ab. Im Gegensatz zu den kleineren Modellen, die primär auf ZF-Komponenten setzten, markierte die L-Serie eine engere technische Verflechtung innerhalb des SDF-Konzerns (Same Deutz-Fahr). Technisch basierte die Baureihe zwar auf den bewährten Deutz-Motoren (TCD 2012 L06) mit Common-Rail-Einspritzung, griff jedoch bei der Kraftübertragung auf eine Same-Basis zurück. Das verbaute Triebwerk stammte aus der Entwicklung von Same und kam baugleich auch in Modellen wie dem Same Iron Continuity oder dem Lamborghini R7 zum Einsatz. Dieses Getriebe verfügte über eine 9-stufige Lastschaltung (insgesamt 27 Vorwärts- und 27 Rückwärtsgänge), was dem Fahrer eine extrem feine Abstufung im Hauptarbeitsbereich ermöglichte, jedoch in der Bedienung eine Umstellung zu den ZF-basierten Modellen darstellte. Die Agrotron L-Modelle, wie der L 710, 720 und 730, waren für schwere Zugarbeiten optimiert und verfügten über eine massivere Hinterachse sowie eine enorme Hubkraft. Trotz der hohen Leistungsfähigkeit blieb die Serie ein Nischenmodell, da die Kooperation mit der Same-Getriebetechnik in der 200-PS-Klasse bei klassischen Deutz-Kunden auf ein geteiltes Echo stieß. Dennoch gilt die L-Serie heute als robuste Maschine für Betriebe, die eine schwere Lastschaltmaschine mit dem Komfort der Panorama-Kabine suchten, bevor sie durch die Serie 7 abgelöst wurde. {| class="wikitable" | 2008-2013 |- | valign="top" | * {{:Traktorenlexikon: Create|Agrotron L 710}} 138kW (187 PS) * {{:Traktorenlexikon: Create|Agrotron L 720}} 145kW (197 PS) * {{:Traktorenlexikon: Create|Agrotron L 730}} 162kW (220 PS) |} ==== Agrotron X ==== [[File:Belagro-2019 (foreign manufacturers) 016.jpg|thumb|Agrotron X720]] Die Agrotron X-Baureihe, produziert zwischen 2007 und 2013, bildete die absolute Leistungsspitze von Deutz-Fahr im Bereich der schweren Ackerschlepper. Im Gegensatz zur L-Serie, die auf SDF-Komponenten basierte, griff man bei den Flaggschiffen wieder auf eine bewährte Kombination aus deutschen Kernkomponenten zurück, um maximale Zuverlässigkeit bei Leistungen bis zu 275 PS zu garantieren. Das Herzstück der Kraftübertragung bildete das ZF-Powershift-Getriebe (Typ T 7300) mit 40 Vorwärts- und 40 Rückwärtsgängen. Die technische Besonderheit, die den Agrotron X von vielen Wettbewerbern abhob, war der Einsatz einer Voith-Strömungskupplung (Turbokupplung). Diese ermöglichte ein extrem verschleißfreies und sanftes Anfahren selbst unter schwerster Last und schützte den Motor sowie das Getriebe vor Drehmomentspitzen – ein Merkmal, das besonders bei schweren Zugarbeiten und Transporten mit hohen Lasten geschätzt wurde. Unter der Haube arbeiteten die großvolumigen 7,1-Liter-Deutz-Motoren (TCD 2013 L06 4V), die dank Common-Rail-Technik und elektronischer Motorregelung (DPC) enorme Kraftreserven mobilisierten. Die Kombination aus dem ZF-Triebwerk, der Voith-Kupplung und der bewährten Panorama-Kabine machte den Agrotron X zu einem hocheffizienten Traktor. Er war die letzte große Lastschalt-Bastion der Marke in dieser Leistungsklasse, bevor die Entwicklung mit der Serie 9 vollständig auf stufenlose Antriebe umgestellt wurde. {| class="wikitable" | 2007-2013 |- | valign="top" | * {{:Traktorenlexikon: Create|Agrotron X 710}} 161kW (219 PS) * {{:Traktorenlexikon: Create|Agrotron X 720}} 193kW (262 PS) * {{:Traktorenlexikon: Create|Agrotron X 730}} 224kW (305 PS) |} ==== Agrotron Serie 5 ==== [[File:Deutz-Fahr Agrotron 5120C.jpg|thumb|Deutz-Fahr Agrotron 5120C]] Die Serie 5, eingeführt im Jahr 2013, gliederte das Segment zwischen 70 und 130 PS in vier spezialisierte Unterbaureihen, um unterschiedliche Anforderungsprofile abzudecken. Während die Standard-Serie 5 als High-Tech-Flaggschiff mit Deutz-Motoren (TCD 3.6) und optionalem stufenlosem TTV-Getriebe den oberen Bereich markierte, bot die Serie 5C einen kompakten, gehobenen Allrounder mit Fokus auf Frontladerarbeiten. Im preisbewussten Mittelfeld positionierte sich die Serie 5G, die modular aufgebaut war und verstärkt auf die konzerneigenen SDF-FARMotion-Motoren setzte, gefolgt von der Serie 5D als schmalerem Nachfolger des Agroplus für Hof- und Kommunaleinsätze. Allen Modellen gemeinsam war das moderne Design sowie technische Features wie das SenseClutch-System, womit Deutz-Fahr die Flexibilität in der Kompaktklasse massiv steigerte. Ab 2013. {| class="wikitable" | '''Serie 5''' || '''Serie 5C''' || '''Serie 5D''' || '''Serie 5G''' |- | valign="top" | * {{:Traktorenlexikon: Create|Agrotron 5100}} * {{:Traktorenlexikon: Create|Agrotron 5110}} * {{:Traktorenlexikon: Create|Agrotron 5120}} * {{:Traktorenlexikon: Create|Agrotron 5130}} | valign="top" | * {{:Traktorenlexikon: Create|5090 C}} * {{:Traktorenlexikon: Create|5100 C}} * {{:Traktorenlexikon: Create|5110 C}} * {{:Traktorenlexikon: Create|5120 C}} | valign="top" | * {{:Traktorenlexikon: Create|5080 D}} * {{:Traktorenlexikon: Create|5090 D}} * {{:Traktorenlexikon: Create|5090.4 D}} * {{:Traktorenlexikon: Create|5100.4 D}} | valign="top" | * {{:Traktorenlexikon: Create|5090 G}} * {{:Traktorenlexikon: Create|5090.4 G}} * {{:Traktorenlexikon: Create|5100 G}} * {{:Traktorenlexikon: Create|5105.4 G}} * {{:Traktorenlexikon: Create|5115.4 G}} |} Ab 2014. {| class="wikitable" | '''Serie 5D''' || '''Serie 5G''' |- | valign="top" | * {{:Traktorenlexikon: Create|Agrotron 5080 D}} * {{:Traktorenlexikon: Create|Agrotron 5090 D}} * {{:Traktorenlexikon: Create|Agrotron 5090.4 D}} * {{:Traktorenlexikon: Create|Agrotron 5100.4 D}} | valign="top" | * {{:Traktorenlexikon: Create|Agrotron 5080 G}} * {{:Traktorenlexikon: Create|Agrotron 5090 G}} * {{:Traktorenlexikon: Create|Agrotron 5100 G}} * {{:Traktorenlexikon: Create|Agrotron 5090.4 G}} * {{:Traktorenlexikon: Create|Agrotron 5105.4 G}} * {{:Traktorenlexikon: Create|Agrotron 5115.4 G}} |} Stand 2017: Der Name Agrotron ist bei der '''Serie 5''' im Netz nicht mehr zu finden, deshalb siehe [[Traktorenlexikon: Deutz-Fahr#Serie 5|Serie 5]] als Nachfolger oder Fortführung der hier beschriebenen Modelle. ==== Agrotron Serie 6 ==== [[File:Serie 6 TTV.jpg|thumb|Agrotron 6180 TTV]] Die Serie 6, eingeführt im Jahr 2013, löste die Agrotron M-Baureihe ab und bildete das technologische Rückgrat von Deutz-Fahr im Leistungsbereich von ca. 120 bis 210 PS. Diese Generation markierte den Übergang zur Abgasstufe 3b (Tier 4i), was den Einsatz von SCR-Technologie (AdBlue) bei den bewährten Deutz-TCD-Motoren (4,1 und 6,1 Liter) erforderlich machte. Ein zentrales Merkmal dieser Serie war die konsequente Trennung der Getriebekonzepte bei weitgehend identischer Optik: Die Powershift-Modelle setzten weiterhin auf die robusten ZF-Lastschaltgetriebe (7200er-Serie), während die TTV-Modelle mit dem stufenlosen S-Matic-Getriebe ausgestattet waren. Neu eingeführt wurde zudem die CShift-Variante, die ein elektrohydraulisches Schalten der sechs Gänge per Joystick ermöglichte, ohne die Kupplung oder den Schalthebel zu betätigen. Optisch wurde das Design durch die Zusammenarbeit mit Giugiaro Design modernisiert, wobei die markante Panorama-Kabine in der MaxiVision-Ausführung ihren Standard definierte – inklusive einer verbesserten Geräuschdämmung und des iMonitor 2.0. Durch die enorme Modellvielfalt, die vom kompakten Vierzylinder bis zum schweren Sechszylinder reichte, festigte die Serie 6 die Marktposition von Deutz-Fahr als Anbieter hochmoderner, effizienter Allround- und Ackerschlepper. {| class="wikitable" | 2013-2016/2017 |- | 4 Zylinder || 6 Zylinder |- | valign="top" | * {{:Traktorenlexikon: Create|Agrotron 6120.4}} (114 PS) * {{:Traktorenlexikon: Create|Agrotron 6130.4}} (124 PS) * {{:Traktorenlexikon: Create|Agrotron 6140.4}} (130 PS) * {{:Traktorenlexikon: Create|Agrotron 6150.4}} (137 PS) * {{:Traktorenlexikon: Create|Agrotron 6160.4}} (156 PS) | valign="top" | * {{:Traktorenlexikon: Create|Agrotron 6140}} (144 PS) * {{:Traktorenlexikon: Create|Agrotron 6150}} (150 PS) * {{:Traktorenlexikon: Create|Agrotron 6160}} (158 PS) * {{:Traktorenlexikon: Create|Agrotron 6180}} (167 PS) * {{:Traktorenlexikon: Create|Agrotron 6190}} (184 PS) * {{:Traktorenlexikon: Create|Agrotron 6210}} (210 PS) |} Die Serie 6 wurde 2016/2017 überarbeitet und bekam neue Typennummern, siehe auch die Schwestermodelle von [[Traktorenlexikon: Lamborghini#Spark|Lamborghini]].Die Lamborghini-Modelle haben einen 3,8 l FARMotion-Motor und die Deutz-Fahr-Modelle den Deutz 3,6 l Motor! Die '''"kleine" Serie 6''' der 2. Generation: {| class="wikitable" | valign="top" | {{:Traktorenlexikon: Create|Agrotron 6120}} (120 PS) {{:Traktorenlexikon: Create|Agrotron 6130}} (125 PS) Boost: (135 PS) {{:Traktorenlexikon: Create|Agrotron 6140}} (130 PS) Boost: (143 PS) |} Die '''"große" Serie 6''' der 2. Generation: {| class="wikitable" | 4 Zylinder || 6 Zylinder |- | valign="top" | * {{:Traktorenlexikon: Create|Agrotron 6145.4}} (137 PS) * {{:Traktorenlexikon: Create|Agrotron 6155.4}} (149 PS) * {{:Traktorenlexikon: Create|Agrotron 6165.4}} (157 PS) EU 2015/96: 163 PS * {{:Traktorenlexikon: Create|Agrotron 6175.4}} (163 PS) | valign="top" | * {{:Traktorenlexikon: Create|Agrotron 6155}} (149 PS) * {{:Traktorenlexikon: Create|Agrotron 6165}} (157 PS) * {{:Traktorenlexikon: Create|Agrotron 6175}} (169 PS) * {{:Traktorenlexikon: Create|Agrotron 6185}} (181 PS) * {{:Traktorenlexikon: Create|Agrotron 6205}} (196 PS) * {{:Traktorenlexikon: Create|Agrotron 6215}} (201 PS) EU 2015/96: 214 PS |} ==== Agrotron Serie 7 ==== [[File:Deutz-Fahr Agrotron 7250 TTV.jpg|thumb|Agrotron 7250 TTV]] Die Serie 7, eingeführt im Jahr 2013, positionierte sich als leistungsstarke, ausschließlich stufenlose Baureihe zwischen der Serie 6 und den Großtraktoren. Die Premierengeneration (7210 bis 7250 TTV) nutzte 6,1-Liter-Deutz-Motoren und das bewährte ZF-S-Matic-Getriebe, ergänzt durch technische Besonderheiten wie externe Scheibenbremsen an der Vorderachse. Mit den Überarbeitungen ab 2016 (Stage IV) und 2021 (Stage V) hielten die MaxiVision-II-Kabine, eine leistungsstärkere Hydraulik sowie das neue SDF-Hinterwagenkonzept Einzug. Dank des markanten Giugiaro-Designs und der konsequenten Ausrichtung auf Effizienz etablierte sich die Serie als Standardmaschine für Lohnunternehmer und anspruchsvolle Ackerbaubetriebe im Bereich bis 250 PS. '''Leistungsangaben''' sind hier wahrscheinlich die max. mit Boost oder ähnlichem! {| class="wikitable" ! '''Serie 7''' |- | 2013-2016 |- | valign="top" | * {{:Traktorenlexikon: Create|Agrotron 7210}} (224 PS) * {{:Traktorenlexikon: Create|Agrotron 7230}} (245 PS) * {{:Traktorenlexikon: Create|Agrotron 7250}} (263 PS) |- | 2016-2021 |- | valign="top" | * {{:Traktorenlexikon: Create|Agrotron 7230}} (226 PS) * {{:Traktorenlexikon: Create|Agrotron 7250}} (246 PS) |} ---- <!-- Ende Agrotron-Abschnitt --> === Agrokid === [[File:Deutz-Fahr AgroKid.jpg|thumb|Deutz-Fahr AgroKid]] Der Agrokid, produziert von 1996 bis 2020, war der kompakteste Schlepper im Portfolio von Deutz-Fahr und als wendiger Kleintraktor für den Garten- und Landschaftsbau, Kommunaleinsätze sowie als Hofschlepper konzipiert. Er deckte einen Leistungsbereich von etwa 30 bis 50 PS ab. Technisch basierte der Agrokid auf einer engen Zusammenarbeit innerhalb des SDF-Konzerns und nutzte japanische Mitsubishi-Vierzylindermotoren. Diese galten als extrem zuverlässig, laufruhig und sparsam. Das Getriebe verfügte in der Regel über 12 Vorwärts- und 12 Rückwärtsgänge mit synchronisierter Wendeschaltung, was zusammen mit dem hohen Lenkeinschlag für eine überragende Manövrierfähigkeit auf engstem Raum sorgte. Ein wesentliches Merkmal war die für diese Größenklasse sehr geräumige und komfortable Kabine (oder optional eine offene Plattform), die eine gute Rundumsicht bot. Trotz seiner geringen Abmessungen verfügte der Agrokid über eine vollwertige Heckhydraulik und Zapfwellenausstattung, ergänzt durch optionale Frontkraftheber und Zwischenachszapfwellen für Mäharbeiten. Nach über zwei Jahrzehnten am Markt wurde der Agrokid schließlich durch die neue Serie 3 abgelöst, bleibt aber aufgr {| class="wikitable" | colspan="2" | ab 1996 bis 2020 |- | valign="top" | * {{:Traktorenlexikon: Create|Agrokid 25}} 20kW (27PS) * {{:Traktorenlexikon: Create|Agrokid 30}} 24kW (33PS) * {{:Traktorenlexikon: Create|Agrokid 35}} 26kW (35PS) * {{:Traktorenlexikon: Create|Agrokid 40}} 29kW (40PS) * {{:Traktorenlexikon: Create|Agrokid 45}} 31kW (42PS) * {{:Traktorenlexikon: Create|Agrokid 50}} 35kW (47PS) | valign="top" | * {{:Traktorenlexikon: Create|Agrokid 210}} 26kW (35PS) * {{:Traktorenlexikon: Create|Agrokid 220}} 30kW (41PS) * {{:Traktorenlexikon: Create|Agrokid 230}} 35kw (47PS) |} === Agroplus === [[Datei:Deutz-Fahr Agroplus 67.JPG|thumb|[[Traktorenlexikon: Deutz-Fahr Agroplus 67|Agroplus 67]]]] [[Datei:Deutz-Fahr Agroplus 70.jpg|thumb|[[Traktorenlexikon: Deutz-Fahr Agroplus 70|Agroplus 70]]]] [[File:Deutz-Fahr Agroplus 410.JPG|thumb|Deutz-Fahr Agroplus 410]] Der Agroplus, eingeführt im Jahr 1996, wurde als kompakte und vielseitige Ergänzung zum Agrotron konzipiert, um das Segment der Standard-Kompaktschlepper zwischen 60 und 95 PS abzudecken. Er war die Antwort auf die Nachfrage nach einer wendigen Maschine für Grünlandbetriebe, Sonderkulturen und den Frontladereinsatz. Technisch markierte der Agroplus eine Besonderheit im Deutz-Fahr-Programm: Da er eine Gemeinschaftsentwicklung innerhalb des SDF-Konzerns war, kam hier eine Mischung aus deutscher und italienischer Technik zum Einsatz. Während die ersten Modelle (wie der Agroplus 70, 80 und 100) noch mit wassergekühlten Deutz-Motoren der Serie 1012 ausgestattet waren, verfügte das Getriebe über eine Same-Basis. Dieses bot meist 15 Vorwärts- und 15 Rückwärtsgänge sowie eine dreistufige Lastschaltung (Powershift), was für diese Klasse damals ein hohes Maß an Komfort darstellte. Charakteristisch für den Agroplus war die flache Bauweise und die gute Übersichtlichkeit, kombiniert mit einer für damalige Verhältnisse modernen Kabine, die jedoch kompakter ausfiel als die des Agrotrons. Über die Jahre wurde die Serie mehrfach überarbeitet, wobei später auch die luftgekühlten Motoren der Serie 913 (in den Modellen 60 bis 80) oder die SDF-1000er-Motoren Einzug hielten. Der Agroplus etablierte sich als robuster Allrounder und bildete die Grundlage für die spätere Serie 5D, indem er die Brücke zwischen dem kleinen Agrokid und den großen Agrotrons schlug. {| class="wikitable" | '''Standardtraktoren''' (ab 1996) || '''Schmalspurtraktoren''' |- | valign="top" | * {{:Traktorenlexikon: Create|Agroplus 60}} * {{:Traktorenlexikon: Create|Agroplus 67}} * {{:Traktorenlexikon: Create|Agroplus 70}} * {{:Traktorenlexikon: Create|Agroplus 75}} * {{:Traktorenlexikon: Create|Agroplus 77}} * {{:Traktorenlexikon: Create|Agroplus 80}} * {{:Traktorenlexikon: Create|Agroplus 85}} * {{:Traktorenlexikon: Create|Agroplus 87}} * {{:Traktorenlexikon: Create|Agroplus 95 new}} * {{:Traktorenlexikon: Create|Agroplus 95}} * {{:Traktorenlexikon: Create|Agroplus 100}} ---- * {{:Traktorenlexikon: Create|Agroplus 310}} * {{:Traktorenlexikon: Create|Agroplus 320}} * {{:Traktorenlexikon: Create|Agroplus 410}} * {{:Traktorenlexikon: Create|Agroplus 420}} | valign="top" | * {{:Traktorenlexikon: Create|Agroplus S 70}} * {{:Traktorenlexikon: Create|Agroplus S 75}} * {{:Traktorenlexikon: Create|Agroplus S 90}} * {{:Traktorenlexikon: Create|Agroplus S 100}} ---- * {{:Traktorenlexikon: Create|Agroplus S 320}} * {{:Traktorenlexikon: Create|Agroplus S 410}} * {{:Traktorenlexikon: Create|Agroplus S 420}} ---- * {{:Traktorenlexikon: Create|Agroplus F 320}} * {{:Traktorenlexikon: Create|Agroplus F 410}} * {{:Traktorenlexikon: Create|Agroplus F 420}} ---- * {{:Traktorenlexikon: Create|Agroplus V 320}} * {{:Traktorenlexikon: Create|Agroplus V 410}} * {{:Traktorenlexikon: Create|Agroplus V 420}} |} Die Agroplusreihen weisen wahrscheinlich noch Lücken auf. ==== Agroplus F Keyline ==== [[File:Deutz-Fahr Agroplus 15 F tractor at IndAgra Farm Romexpo 2010.JPG|thumb|Deutz-Fahr Agroplus 15 F tractor at IndAgra Farm Romexpo 2010]] Die Agroplus F Keyline-Serie ist als kosteneffiziente, mechanische Lösung für den Obst- und Weinbau sowie kommunale Einsätze konzipiert. Angetrieben von kompakten SDF FARMotion-Dreizylindermotoren, setzt die Baureihe auf einfache Robustheit ohne komplexe Elektronik. Das voll synchronisierte Wendegetriebe und das serienmäßige Vierrad-Bremssystem gewährleisten sicheres Arbeiten in Hanglagen, während die schmale Bauweise und der hohe Lenkeinschlag maximale Wendigkeit in engen Kulturen ermöglichen. Als primär offener Plattformschlepper bietet er eine niedrige Bauhöhe und reduziert die Technik auf das wesentliche Fundament für Wartungsfreundlichkeit und Wirtschaftlichkeit. Modelle: Die Schwestermodelle von [[Traktorenlexikon: Lamborghini#Spire|Lamborghini]] sind die RF Trend-Serie und bei [[Traktorenlexikon: SAME#Frutteto|SAME]] die Frutteto-Serie. {| class="wikitable" ! bis ~ 2018 || ab ~ 2018 |- ! SDF-Motor || FARMotion Motor |- | valign="top" | * {{:Traktorenlexikon: Create|Agroplus 55F Keyline}} 41 kW (55 PS) * {{:Traktorenlexikon: Create|Agroplus 65F Keyline}} 46 kW (62 PS) * {{:Traktorenlexikon: Create|Agroplus 75F Keyline}} 53 kW (72 PS) * {{:Traktorenlexikon: Create|Agroplus 80.4F Keyline}} 55 kW (75 PS) | valign="top" | * {{:Traktorenlexikon: Create|Agroplus 70F Keyline}} 48 kW (65 PS) * {{:Traktorenlexikon: Create|Agroplus 80F Keyline}} 55 kW (75 PS) * {{:Traktorenlexikon: Create|Agroplus 80.4F Keyline}} 55 kW (75 PS) |} === Agrocompact === [[File:Deutz-Fahr Agrocompact 70F3 Traktor.jpg|thumb|Agrocompact 70F]] Die Agrocompact-Baureihe, produziert zwischen 1996 und ca. 2004, war die spezialisierte Antwort von Deutz-Fahr auf die Anforderungen im Wein- und Obstbau. Sie basierte technisch weitgehend auf der Agroplus-Plattform, wurde jedoch durch extrem schmale Spurweiten und kompakte Abmessungen für den Einsatz in engen Plantagen optimiert. Als Antrieb dienten die luftgekühlten Deutz-Motoren der Serie 913 (3- und 4-Zylinder), die für ihre Robustheit und einfache Wartung bekannt waren, sowie teils wassergekühlte Motoren in den stärkeren Modellen (z. B. Agrocompact 90). Die Kraftübertragung erfolgte über ein Same-basiertes Getriebe, das mit einer dreistufigen Lastschaltung ausgestattet werden konnte und dem Fahrer hohe Flexibilität bei wechselnden Bodenverhältnissen bot. Besonderes Merkmal war die Wahlmöglichkeit zwischen verschiedenen Breiten (F für Obstbau und V für den schmalen Weinbau) sowie die Integration eines leistungsstarken Hydrauliksystems für Spezialgeräte. Mit seiner Kombination aus bewährter Motorentechnik und kompaktester Bauweise setzte der Agrocompact den Standard für Spezialschlepper der Marke, bevor er durch die spezialisierten Agroplus-Varianten und die spätere Serie 5 DF/DS/DV abgelöst wurde. {| class="wikitable" | colspan="2" | ab 1992 |- | valign="top" | * {{:Traktorenlexikon: Create|AgroCompact 3.30}} * {{:Traktorenlexikon: Create|AgroCompact 3.50}} * {{:Traktorenlexikon: Create|AgroCompact 3.70}} * {{:Traktorenlexikon: Create|AgroCompact 3.90}} |} {| class="wikitable" | colspan="2" | ab 1998/99 bis 2007 |- | valign="top" | * {{:Traktorenlexikon: Create|Agrocompact 60}} <!-- F 2003 --> * {{:Traktorenlexikon: Create|Agrocompact 70}} * {{:Traktorenlexikon: Create|Agrocompact 80}} * {{:Traktorenlexikon: Create|Agrocompact 90}} | valign="top" | * {{:Traktorenlexikon: Create|Agrocompact 70 F}}<!-- 1999 --> * {{:Traktorenlexikon: Create|Agrocompact 75 F}} * {{:Traktorenlexikon: Create|Agrocompact 90 F}} * {{:Traktorenlexikon: Create|Agrocompact 100 F}}<!-- 2007 --> |} === Agrolux === [[File:Deutz fhar agrolux.jpg|thumb|Agrolux Export-Modell]] Die Agrolux-Baureihe wurde als unkomplizierte, robuste Einstiegsserie für kleinere Betriebe, Nebenerwerbslandwirte und den Einsatz als Zweitschlepper konzipiert. Sie deckte primär den Leistungsbereich von 55 bis ca. 100 PS ab und legte den Fokus auf maximale Wirtschaftlichkeit und rein mechanische Bedienung. Technisch basiert der Agrolux auf einer bewährten Same-Basis innerhalb des SDF-Konzerns. Als Antrieb dienten überwiegend die konzerneigenen SDF-1000er-Motoren (3- oder 4-Zylinder), die entweder luft- oder wassergekühlt ausgeführt waren und für ihre Wartungsfreundlichkeit bekannt sind. Das Getriebe ist einfach aufgebaut: Ein voll synchronisiertes Wendegetriebe mit meist 12 Vorwärts- und 12 Rückwärtsgängen verzichtet auf Lastschaltstufen und Elektronik, was die Störanfälligkeit minimiert. Der Agrolux wurde häufig als Plattformschlepper mit Überrollbügel (ROPS) oder mit einer einfachen Kabine ausgeliefert, um die Bauhöhe für niedrige Stalleinfahrten gering zu halten. Trotz der nüchternen Ausstattung bietet er mit einer soliden Hubkraft und einer unabhängigen Zapfwelle alle nötigen Funktionen für klassische Hof- und Feldarbeiten. Inzwischen wurde die Serie weitgehend durch die Keyline-Modelle der Serie 5D und 5G abgelöst, gilt aber weiterhin als Inbegriff des funktionalen, rein mechanischen Nutztraktors. Die Same-Reihe [[Traktorenlexikon: SAME#Argon|Argon]] war technisch bei mehreren Modellen baugleich. Die Agrolux aus Indien waren mit dem Same-Reihe [[Traktorenlexikon: SAME#Tiger|Tiger ab 2009]] baugleich. {| class="wikitable" | ab 1999/2000? |- | valign="top" | * {{:Traktorenlexikon: Create|Agrolux 60}} * {{:Traktorenlexikon: Create|Agrolux 70}} |- | 2000-2005 |- | Auf Exportmärkten war Deutz-Fahr mit diesen Modellen auf dem Markt |- | valign="top" | * {{:Traktorenlexikon: Create|Agrolux 80}} * {{:Traktorenlexikon: Create|Agrolux 90}} |- | 2006-2008 |- | der Agrolux bekamen statt der luftgekühlten Deutz-Motoren nun wassergekühlte Same-Antriebe |- | valign="top" | * {{:Traktorenlexikon: Create|Agrolux 57}} * {{:Traktorenlexikon: Create|Agrolux 67}} |- | 2008-20?? |- | diese Agrolux wurden mit wassergekühlten Same-Motoren und einfachen 8v + 2r Getrieben in Indien gefertigt |- | valign="top" | * {{:Traktorenlexikon: Create|Agrolux 65}} * {{:Traktorenlexikon: Create|Agrolux 75}} |- | Auf Exportmärkten war Deutz-Fahr mit diesen Modellen auf dem Markt |- | valign="top" | * {{:Traktorenlexikon: Create|Agrolux 85}} * {{:Traktorenlexikon: Create|Agrolux 95}} |- | 2009-201? |- | vorerst letzte Generation der Agrolux ? |- | valign="top" | * {{:Traktorenlexikon: Create|Agrolux 100}} * {{:Traktorenlexikon: Create|Agrolux 310}} * {{:Traktorenlexikon: Create|Agrolux 320}} |- | 2018 neue Modelle für den indischen Markt |- | diese Agrolux wurden mit wassergekühlten Motoren und einfachen 8v + 2r oder 12v + 3r Getrieben in Indien gefertigt |- | valign="top" | * {{:Traktorenlexikon: Create|Agrolux 45}} * {{:Traktorenlexikon: Create|Agrolux 50}} * {{:Traktorenlexikon: Create|Agrolux 55}} * {{:Traktorenlexikon: Create|Agrolux 60}} * {{:Traktorenlexikon: Create|Agrolux 70}} * ----- * {{:Traktorenlexikon: Create|Agrolux Profiline 75}} * {{:Traktorenlexikon: Create|Agrolux Profiline 80}} |} Zur Agritechnica 2017 wurden als Nachfolgemodelle für den europäische Markt die [[Traktorenlexikon: Deutz-Fahr#Serie 4E|Serie 4E]] vorgestellt. === Agromax === Die Agromax-Baureihe ist eine spezialisierte Traktorenserie von Deutz-Fahr, die primär für globale Märkte mit Fokus auf mechanische Einfachheit und extreme Robustheit entwickelt wurde. Sie ist eng mit der technologischen Plattform der SDF-Konzernmutter verwandt und deckt den mittleren Leistungsbereich von etwa 45 bis 100 PS ab. Angetrieben werden die Maschinen von den bewährten SDF-1000er-Motoren (wahlweise als 3- oder 4-Zylinder), die für ihre Langlebigkeit und hohe Drehmomentreserve bei geringem Kraftstoffverbrauch bekannt sind. Die Kraftübertragung erfolgt über ein rein mechanisches Synchrongetriebe, das meist mit 8x8 oder 12x12 Gängen ausgestattet ist. Durch den bewussten Verzicht auf komplexe Elektronik und Lastschaltstufen ist der Agromax besonders wartungsfreundlich und für Regionen mit einfacher Infrastruktur optimiert. Das Design ist funktional und auf maximale Übersichtlichkeit ausgelegt, wobei die Serie häufig als Plattformschlepper mit Überrollbügel (ROPS) zum Einsatz kommt. Mit einer soliden Hydraulikleistung und einer robusten Hinterachskonstruktion ist der Agromax als klassischer Arbeitsschlepper für die Bodenbearbeitung und Transportaufgaben in der Landwirtschaft positioniert, wo Zuverlässigkeit unter harten Bedingungen oberste Priorität hat. {| class="wikitable" | ab 2018 |- | valign="top" | * {{:Traktorenlexikon: Create|Agromax 40}} * {{:Traktorenlexikon: Create|Agromax 45}} * {{:Traktorenlexikon: Create|Agromax 50}} * {{:Traktorenlexikon: Create|Agromax 55}} * {{:Traktorenlexikon: Create|Agromax 60}} |} === Agrofarm === [[Datei:Deutz-Fahr Agrofarm 420 Tractor at IndAgra Farm Romexpo 2010.JPG|thumb|[[Traktorenlexikon: Deutz-Fahr Agrofarm 420|Agrofarm 420]]]] Die Agrofarm-Baureihe, produziert zwischen 2007 und 2014, wurde als kompakter Allrounder im Leistungsbereich von ca. 85 bis 115 PS eingeführt. Sie füllte die Lücke zwischen den kleinen Agroplus-Modellen und der größeren Agrotron-Serie und war besonders als Frontlader- und Grünlandschlepper erfolgreich. Technisch basierte die Serie auf einer starken Synergie innerhalb des SDF-Konzerns: Während als Antrieb die bewährten 4-Liter-Deutz-Motoren (TCD 2012 L04) zum Einsatz kamen, stammte das Getriebe und die Hinterachskonstruktion von Same. Die Getriebevarianten reichten von einer einfachen mechanischen Synchronisierung bis hin zur Profiline-Ausstattung mit zweistufiger Lastschaltung und elektrohydraulischem PowerShuttle (SenseClutch). Ein besonderes Merkmal war die kompakte Bauweise kombiniert mit einer geräumigen Freisichtkabine, die speziell für Frontladerarbeiten optimiert war. Neben der Standardversion bot Deutz-Fahr mit dem Agrofarm TTV zudem einen der ersten Traktoren dieser Leistungsklasse mit einem stufenlosen Getriebe an. Die Serie wurde später durch die Serie 5 abgelöst, gilt aber aufgrund der Kombination aus spritzigem Deutz-Motor und robuster Same-Mechanik bis heute als sehr wertstabiler und beliebter Universalschlepper. Die einfachen Agrofarm sind baugleich mit Hürlimann XB MAX, Lamborghini R3.evo und Same Explorer3. Wird in Italien produziert. Die Profiline und TTV-Modelle entsprechen dem Same Silver³. {| class="wikitable" | colspan="2" | ab 2006? |- | valign="top" | * {{:Traktorenlexikon: Create|Agrofarm 85}} * {{:Traktorenlexikon: Create|Agrofarm 100}} * {{:Traktorenlexikon: Create|Agrofarm 410}} * {{:Traktorenlexikon: Create|Agrofarm 420}} * {{:Traktorenlexikon: Create|Agrofarm 430}} | valign="top" | * {{:Traktorenlexikon: Create|Agrofarm TB 410}} * {{:Traktorenlexikon: Create|Agrofarm TB 420}} ---- * {{:Traktorenlexikon: Create|Agrofarm Profiline 420}} * {{:Traktorenlexikon: Create|Agrofarm Profiline 430}} * {{:Traktorenlexikon: Create|Agrofarm TTV 420}} * {{:Traktorenlexikon: Create|Agrofarm TTV 430}} |} Nach einer Info <ref>https://issuu.com/deutz-fahr/docs/308.8174.2.4-1_fr</ref> von SDF waren folgende Modelle 2015 im Angebot: {| class="wikitable" | ab 2015? |- | valign="top" | * {{:Traktorenlexikon: Create|Agrofarm C 75}} * {{:Traktorenlexikon: Create|Agrofarm C 85}} * {{:Traktorenlexikon: Create|Agrofarm C 95}} |} === Agroclimber === Die Agroclimber-Baureihe stellt die spezialisierte Raupenschlepper-Linie von Deutz-Fahr dar, die für extreme Hanglagen, weiche Böden und den Einsatz in Sonderkulturen (Obst- und Weinbau) konzipiert wurde. Da Raupenfahrwerke eine deutlich größere Aufstandsfläche als Räder bieten, zeichnet sich diese Serie durch maximale Traktion bei gleichzeitig geringem Bodendruck aus. Technisch basiert der Agroclimber auf der bewährten Same-Raupentechnik innerhalb des Konzerns. Als Antrieb dienen die robusten SDF-1000er-Motoren (3- oder 4-Zylinder), die für ihre Zuverlässigkeit unter Dauerlast bekannt sind. Das Getriebe ist als rein mechanisches, voll synchronisiertes Schaltgetriebe ausgelegt, um die enormen Zugkräfte verlustarm auf die Kettenlaufwerke zu übertragen. Die Steuerung erfolgt klassisch über Lenkhebel und eine Bandbremseinrichtung, was ein Wenden auf der Stelle ermöglicht. Die Serie umfasst verschiedene Varianten, wie den schmalen Agroclimber V für den Weinbau oder den breiteren Agroclimber F für den Obstbau. Mit ihrer niedrigen Bauweise, dem tiefen Schwerpunkt und der enormen Steigfähigkeit ist sie die spezialisierte Lösung für Geländeformen, an denen Standard-Radtraktoren an ihre physikalischen Grenzen stoßen. {| class="wikitable" | '''Raupenschlepper''' (ab 2007/08) <!--zur SIMA 2007 http://www.landtechnikmagazin.de/Traktoren-Artikel-DEUTZ-FAHR-stellt-Agroclimber-Raupentraktor-vor-367.php --> |- | valign="top" | * {{:Traktorenlexikon: Create|Agroclimber V 70}} * {{:Traktorenlexikon: Create|Agroclimber V 80}} * {{:Traktorenlexikon: Create|Agroclimber F 90}} * {{:Traktorenlexikon: Create|Agroclimber F 100}} * {{:Traktorenlexikon: Create|Agroclimber 105}} * {{:Traktorenlexikon: Create|Agroclimber V 310}} * {{:Traktorenlexikon: Create|Agroclimber 410}} * {{:Traktorenlexikon: Create|Agroclimber F 410}} |} === Agrotrac === [[Datei:Deutz-Fahr Agrotrac 110 Tractor at IndAgra Farm Romexpo 2010.JPG|thumb|[[Traktorenlexikon: Deutz-Fahr Agrotrac 110|Agrotrac 110]]]] Die Agrotrac-Baureihe ist eine auf maximale Robustheit und mechanische Einfachheit ausgelegte Serie, die von Deutz-Fahr primär für Exportmärkte außerhalb Europas (z. B. Afrika, Türkei oder Südostasien) entwickelt wurde. Sie deckt einen Leistungsbereich von etwa 100 bis 170 PS ab. Technisch basieren die Schlepper auf bewährten SDF-Komponenten und nutzen überwiegend flüssigkeitsgekühlte 6-Zylinder-Motoren (Typ Lamborghini/SDF 1000.6), die für ihre hohe Zugkraft und Langlebigkeit unter harten Bedingungen bekannt sind. Das Getriebe ist konsequent rein mechanisch aufgebaut (meist 15/15 oder 24/12 Gänge mit Kriechgruppe), was den Agrotrac besonders wartungsfreundlich macht, da er weitgehend ohne komplexe Elektronik auskommt. Er wird sowohl als offener Plattformschlepper als auch mit einer funktionalen Kabine angeboten. Damit ist er die ideale Maschine für Regionen, in denen einfache Instandsetzung und Zuverlässigkeit wichtiger sind als modernste High-Tech-Assistenzsysteme. {| class="wikitable" | 2004-2010 || 2010-2017 || 2014-2017 |- | valign="top" | * {{:Traktorenlexikon: Create|Agrotrac 100}} * {{:Traktorenlexikon: Create|Agrotrac 110}} * {{:Traktorenlexikon: Create|Agrotrac 115}} * {{:Traktorenlexikon: Create|Agrotrac 125}} * {{:Traktorenlexikon: Create|Agrotrac 130}} * {{:Traktorenlexikon: Create|Agrotrac 150}} * {{:Traktorenlexikon: Create|Agrotrac 170}} | valign="top" | * {{:Traktorenlexikon: Create|Agrotrac 610}}<!--Frankreich 2010--> * {{:Traktorenlexikon: Create|Agrotrac 620}}<!--Frankreich 2010--> <!-- Agrotrac 265, Südafrika 2010, 184 kW – unklar http://www.agfacts.co.za/traprdtz.htm --> | valign="top" | * {{:Traktorenlexikon: Create|Agrotrac 115.6 Turbo}}<!--Frankreich 2014--> |} === Serie 2E === Die Serie 2E wurde ab ca. 2017/2018 als preiswertes Einstiegsmodell im Kompaktsegment (ca. 25 bis 40 PS) eingeführt und ab 2021/2022 auf die Abgasstufe Stage V aktualisiert. Basierend auf einer Kooperation mit Sonalika, verzichtet der Schlepper auf komplexe Elektronik und setzt stattdessen auf einfache Dreizylindermotoren sowie rein mechanische Getriebe. Primär als offener Plattformschlepper konzipiert, bietet die Serie 2E maximale Wartungsfreundlichkeit und ist für einfache Hofarbeiten, den privaten Gartenbau oder Einsätze in Gewächshäusern optimiert, bei denen ein funktionales Fundament ohne technisches Zusatzgewicht im Vordergrund steht. Sie ist in Deutschland nicht verfügbar. {| class="wikitable" |- | ab 2017 |- | Serie 2E |- | valign="top" | * {{:Traktorenlexikon: Create|2025E}} * {{:Traktorenlexikon: Create|2030E}} * {{:Traktorenlexikon: Create|2035E}} * {{:Traktorenlexikon: Create|2040E}} |} === Serie 3E === Die Serie 3E wurde ab ca. 2017/2018 als leistungsstärkere Ergänzung zur Serie 2E eingeführt und ab 2021 durch die Serie 3 abgelöst. Sie deckt den Bereich von ca. 30 bis 40 PS ab und basiert ebenfalls auf der bewährten, rein mechanischen Kooperation mit Sonalika. Ausgestattet mit einem Dreizylinder-Saugmotor und einem synchronisierten 8x2- oder 12x12-Wendegetriebe, bietet sie mehr Hubkraft und Einsatzflexibilität als das kleinere Schwestermodell. Als robuster Plattformschlepper ist die Serie 3E gezielt für Hobby-Landwirte und Gartenbaubetriebe konzipiert, die eine unkomplizierte, wartungsarme Maschine für schwerere Anbaugeräte suchen. {| class="wikitable" |- | 2017-2021 |- | Serie 3E |- | valign="top" | * {{:Traktorenlexikon: Create|3035E}} * {{:Traktorenlexikon: Create|3040E}} * {{:Traktorenlexikon: Create|3042E}} |} === Serie 3 === Die Deutz-Fahr Serie 3 umfasst kompakte Universaltraktoren, die speziell für den Einsatz im Garten- und Landschaftsbau, in Baumschulen sowie für kommunale Dienstleistungen konzipiert sind und in ihrer aktuellen Generation mit Stage-V-konformen Motoren seit dem Jahr 2021 am Markt bestehen. Die Baureihe zeichnet sich durch ein geringes Eigengewicht und eine hohe Wendigkeit aus, wobei sie sich primär in die Standardmodelle 3050 und 3060 sowie die besonders schmale Variante 3050 Basso gliedert. Während die Standardmodelle wahlweise mit einer verglasten Komfortkabine oder als offene Plattformversion mit klappbarem Überrollbügel erhältlich sind, ist die Basso-Ausführung konsequent auf extrem beengte Platzverhältnisse optimiert. Technisch setzen die Traktoren auf 4-Zylinder-Motoren in einem Leistungsspektrum von etwa 51 bis 60 PS und verfügen über ein synchronisiertes Wendeschaltgetriebe mit 12 Vorwärts- und 12 Rückwärtsgängen. Trotz der kompakten Abmessungen bietet die Serie vollwertige Merkmale wie einen zuschaltbaren Allradantrieb, eine Heckhydraulik mit bis zu 1.200 kg Hubkraft sowie optionale Frontkraftheber und Frontzapfwellen, wodurch die Maschinen für den ganzjährigen Einsatz vom Mähbetrieb bis zum Winterdienst flexibel einsetzbar sind. {| class="wikitable" |- | ab 2021 |- | Serie 3 |- | valign="top" | * {{:Traktorenlexikon: Create|3050 Basso}} 38kW (51PS) * {{:Traktorenlexikon: Create|3050}} 38kW (51PS) * {{:Traktorenlexikon: Create|3060}} 44kW (59PS) |} === Serie 4E === [[File:Deutz Fahr 4090e.jpg|thumb|Deutz-Fahr 4090E]] Die Serie 4E, eingeführt im Jahr 2014 als Nachfolger der Agrolux-Reihe und ab 2021 in der Stage V-Version verfügbar, bildet die robuste Mittelklasse der Kompaktschlepper im Bereich von 65 bis 100 PS. Technisch setzt die Serie auf die konzerneigenen SDF FARMotion-Motoren (3- oder 4-Zylinder), die speziell für hohe Drehmomentreserven bei kompakter Bauweise entwickelt wurden. Das Getriebe ist konsequent mechanisch ausgelegt, wobei Käufer zwischen verschiedenen Konfigurationen von 12x12 bis zu 30x15 Gängen mit Kriechganggruppe wählen können. Ein zentrales Merkmal ist die Vielseitigkeit: Die Serie 4E ist sowohl als Plattformschlepper als auch mit einer modernen Kabine erhältlich und verfügt über ein echtes Vierrad-Bremssystem im Ölbad. Damit ist sie die ideale Lösung für Gemischtbetriebe und Kommunen, die einen wendigen Allrounder für Frontladerarbeiten, Grünlandpflege und leichte Ackerarbeiten suchen, ohne auf computergesteuerte Komplexität angewiesen zu sein. {| class="wikitable" |- | ab 2014 |- | Serie 4E |- | valign="top" | * {{:Traktorenlexikon: Create|4050E}} * {{:Traktorenlexikon: Create|4065E}} * {{:Traktorenlexikon: Create|4075E}} * {{:Traktorenlexikon: Create|4085E}} * {{:Traktorenlexikon: Create|4080.4E}} |} Für D sind andere Daten <ref> http://www.deutz-fahr.com/de-de/produkte/traktoren/6236-serie-4e </ref> angekündigt: Motorleistungen<ref> https://www.landtechnikmagazin.de/Traktoren-Bild-Die-neue-Deutz-Fahr-Serie-4E-mit-den-vier-Modellen-4070E-4080E-4090E-4100E-loest-Baureihe-Agrolux-ab-34884-7559.php </ref> des 3 Zylinder-FARMotion Motors mit 2,9 l: {| class="wikitable" |- | ab 2018 |- | Serie 4E in Deutschland |- | valign="top" | * {{:Traktorenlexikon: Create|4070E}} 48 kW / 65 PS * {{:Traktorenlexikon: Create|4080E}} 55 kW / 75 PS * {{:Traktorenlexikon: Create|4090E}} 62 kW / 84 PS * {{:Traktorenlexikon: Create|4100E}} 67 kW / 92 PS |} === Raupentraktoren === Die aktuellen Raupentraktoren von Deutz-Fahr, primär unter der Bezeichnung Serie 5K zusammengefasst, bilden eine hochspezialisierte Baureihe für extreme Hanglagen und schwierige Bodenverhältnisse, die in ihrer aktuellen Generation mit Stage-V-Motoren seit dem Jahr 2021 stetig erweitert wurde. Das Programm unterteilt sich funktional in die drei Varianten 5KF für schmale Obstbauanlagen, 5KM für den gemischten Einsatz in weiten Reihen sowie die breite Serie 5K für den schweren Ackerbau auf offenem Feld. Während die KF-Modelle durch eine niedrige Bauweise für das Unterfahren von Kulturen optimiert sind, bietet die Standard-Serie 5K durch einen ebenen Plattformboden und eine größere Spurbreite maximale Standfestigkeit bei Zugarbeiten an Steilhängen. Technisch kommen moderne 4-Zylinder-FARMotion-Motoren zum Einsatz, die ihre Kraft über mechanische Getriebe mit bis zu 16 Vorwärts- und Rückwärtsgängen auf die Laufwerke übertragen. Die Maschinen sind wahlweise mit klassischen Stahlketten für höchste Traktion oder mit bodenschonenden ComfortTrack-Gummiketten ausgestattet, wobei die Steuerung über servogesteuerte Hebel eine präzise Manövrierbarkeit sicherstellt. Mit einer Hubkraft von bis zu 3.170 kg im Heck und einer leistungsstarken Hydraulikanlage erfüllen diese Raupenschlepper die Anforderungen professioneller Betriebe, die in Gebieten arbeiten, in denen herkömmliche Radtraktoren an ihre Grenzen stoßen. Die Bezeichnungen bei den Raupentraktoren von Deutz-Fahr dienen der Kennzeichnung des jeweiligen Einsatzgebiets und der damit verbundenen Fahrzeugbreite. Das K steht hierbei grundsätzlich für das italienische Wort „Cingolato“ (Raupe), während die Zusatzbuchstaben die spezifische Konfiguration definieren. * '''KF (Frutteto)''': Das „F“ steht für Frutteto (Obstgarten). Diese Modelle sind schmal gebaut und speziell für den Einsatz in schmalen Reihenkulturen und Obstplantagen konzipiert. Sie besitzen oft eine kompakte Bauweise, um das Unterfahren von Baumkronen zu erleichtern. * '''KM (Montagna)''': Das „M“ steht für Montagna (Berg). Diese Variante ist als mittelschwere und mittelbreite Raupe für den gemischten Einsatz ausgelegt. Sie bietet eine höhere Standfestigkeit als die F-Variante und ist für die Arbeit in hügeligem Gelände oder in weiten Reihenkulturen (z. B. Weinbau am Steilhang) optimiert. * '''K (Standard/Campo Aperto)''': Das reine „K“ ohne Zusatzbuchstaben bezeichnet die breiteste Ausführung für das offene Feld (Campo Aperto). Diese Maschinen sind für den schweren Ackerbau und großflächige Zugarbeiten in extremen Steillagen konzipiert, bei denen maximale Spurbreite für die Kippsicherheit und eine breite Aufstandsfläche für höchste Traktion erforderlich sind. {| class="wikitable" | '''Serie 5 K''' || '''Serie 5 KM''' || '''Serie 5 KF''' |- | valign="top" | * {{:Traktorenlexikon: Create|5115 K}} 85kW (116PS) | valign="top" | * {{:Traktorenlexikon: Create|5105 KM}} 78kW (106PS) * {{:Traktorenlexikon: Create|5115 KM}} 85kW (116PS) | valign="top" | * {{:Traktorenlexikon: Create|5 KF}} 56kW (76PS) * {{:Traktorenlexikon: Create|5090 KF}} 67kW (91PS) * {{:Traktorenlexikon: Create|5100 KF}} 75kW (102PS) |} === Serie 5 (Spezialtraktoren) === [[File:Deutz-Fahr 5105 DF TTV Agritechnica 2025 (DSC08573).jpg|thumb|Deutz-Fahr 5105 DF TTV]] Die Deutz-Fahr Serie 5 Spezialtraktoren bilden seit ihrer Einführung im Jahr 2017 ein modulares Programm von Schmalspur- und Kompaktschleppern, die primär für den Einsatz im Weinbau (V = Vino), Obstbau (F = Fruit/Frutetto) sowie in der Kommunalpflege entwickelt wurden. Die Baureihe nutzt effiziente FARMotion-Motoren und bietet durch verschiedene Fahrzeugbreiten – von extrem schmalen Modellen (S/V) für den Weinbau bis hin zu breiteren Varianten für den Obstbau (F) – Lösungen für räumlich begrenzte Arbeitsumgebungen. Die Serie differenziert sich in mehrere spezialisierte Untergruppen: * '''Serie 5DF Keyline & Ecoline''': Diese Baureihen stellen die Einstiegssegmente dar und konzentrieren sich auf mechanische Robustheit sowie einfache Bedienung bei hoher Wirtschaftlichkeit. * '''Serie 5DF (Platform)''': Diese Variante verzichtet auf eine geschlossene Kabine zugunsten eines klappbaren Überrollbügels, um maximale Durchfahrtshöhen in niedrigen Kulturen oder Gewächshäusern zu erreichen. * '''Serie 5 DF/DS/DV & PRO''': Die Standardserie bietet eine breite Auswahl an Getrieben und Hydraulikleistungen, wobei die PRO-Modelle durch gesteigerte Hydraulikkapazitäten und höheren Bedienkomfort für den professionellen Dauereinsatz optimiert sind. * '''Serie 5DF/DS/DV TTV''': Als technologische Oberklasse verfügt diese Serie über ein stufenloses Getriebe (TTV), das eine präzise Geschwindigkeitsanpassung ermöglicht und die Effizienz bei spezialisierten Arbeitsprozessen maximiert. * Serie 5TB: Sie zeichnen sich durch einen besonders niedrigen Schwerpunkt und eine geringe Bauhöhe aus, was sie ideal für die Arbeit in Hanglagen sowie in Oliven- oder Nussplantagen macht. Die gesamte Serie nutzt moderne FARMotion-Motoren (3- oder 4-Zylinder), die speziell für die Landwirtschaft entwickelt wurden und die geltenden Abgasnormen erfüllen. Ein zentrales Merkmal der Baureihe ist die Vielseitigkeit der Getriebeoptionen, die von vollsynchronisierten mechanischen Getrieben über Lastschaltstufen (Powershift) bis hin zur stufenlosen Technologie reichen. Je nach Modell kommen unterschiedliche Vorderachskonzepte zum Einsatz. Die TTV-Modelle verfügen häufig über eine Einzelradaufhängung mit aktiver Federung, um Fahrstabilität und Komfort bei Straßenfahrten und Feldarbeit zu erhöhen. Die Hydraulikanlagen sind modular aufgebaut und bieten je nach Konfiguration bis zu fünf doppeltwirkende Steuergeräte im Heck sowie zusätzliche Anschlüsse im Zwischenachsbereich. {| class="wikitable" | '''Serie 5DF/DS/DV Ecoline (ab 2017)''' || '''Serie 5DF Keyline (ab 2021)''' || '''Serie 5DF (Platform) (ab 2021)''' || '''Serie 5 DF/DS/DV / PRO (ab 2025)''' || '''Serie 5DF/DS/DV TTV / DF TTV 4 WHEEL STEERING (ab 2018)''' || '''Serie 5TB (ab 2023)''' |- | valign="top" | * {{:Traktorenlexikon: Create|5080 DF/DS/DV Ecoline}} 56kW (76PS) | valign="top" | * {{:Traktorenlexikon: Create|5070 DF Keyline}} 49kW (66PS) * {{:Traktorenlexikon: Create|5080 DF Keyline}} 59kW (76PS) | valign="top" | * {{:Traktorenlexikon: Create|5090 DF Plattform}} 67kW (91PS) * {{:Traktorenlexikon: Create|5095 DF Plattform}} 70kW (95PS) * {{:Traktorenlexikon: Create|5100 DF Plattform}} 75kW (102PS) * {{:Traktorenlexikon: Create|5105 DF Plattform}} 78kW (106PS) * {{:Traktorenlexikon: Create|5115 DF Plattform}} 85kW (116PS) | valign="top" | * {{:Traktorenlexikon: Create|5090 DF/DS/DV Kabine / PRO}} 67kW (91PS) * {{:Traktorenlexikon: Create|5095 DF/DS/DV Kabine / PRO}} 70kW (95PS) * {{:Traktorenlexikon: Create|5100 DF/DS/DV Kabine / PRO}} 75kW (102PS) * {{:Traktorenlexikon: Create|5105 DF/DS/DV Kabine / PRO}} 78kW (106PS) * {{:Traktorenlexikon: Create|5115 DF/DS/DV Kabine / PRO}} 85kW (116PS) | valign="top" | * {{:Traktorenlexikon: Create|5090 DF/DS/DV TTV}} 67kW (91PS) * {{:Traktorenlexikon: Create|5095 DF/DS/DV TTV}} 70kW (95PS) * {{:Traktorenlexikon: Create|5100 DF/DS/DV TTV}} 75kW (102PS) * {{:Traktorenlexikon: Create|5105 DF/DS/DV TTV}} 78kW (106PS) * {{:Traktorenlexikon: Create|5115 DF/DS/DV TTV}} 85kW (116PS) | valign="top" | * {{:Traktorenlexikon: Create|5105 TB}} 78kW (106PS) * {{:Traktorenlexikon: Create|5115 TB}} 85kW (116PS) |} === Serie 5 (Standardtraktoren) === Die Serie 5 für Standardtraktoren umfasst aktuell (2026) 5 Ausbaustufen: 5D Keyline, 5D, 5D TTV, 5 Keyline, 5. ==== Serie 5D Keyline ==== [[File:Deutz-Fahr 5080 D Keyline Traktor.jpg|thumb|Deutz-Fahr 5080 D Keyline]] Die Serie 5D Keyline, eingeführt um 2019 und seit 2021 als Stage V-Version verfügbar, ist die konsequente Weiterentwicklung des Agrolux-Konzepts für das moderne Segment der 65 bis 100 PS. Ausgestattet mit effizienten SDF FARMotion-Dreizylindermotoren, konzentriert sich diese Baureihe auf das Wesentliche: mechanische Zuverlässigkeit ohne elektronischen Ballast. Mit einem synchronisierten Wendegetriebe (wahlweise 15+15 oder 30+15 Gänge), einer mechanischen Hubwerksregelung und dem serienmäßigen Vierrad-Bremssystem bietet sie solide Technik für Nebenerwerbslandwirte und kleine Hofstellen. Sie fungiert als wirtschaftlicher Allrounder, der die Brücke zwischen der einfachen Serie 4E und der technologisch gehobenen Serie 5D schlägt, wobei der Fokus klar auf geringen Betriebskosten und intuitiver Bedienung liegt. Die Schwestermodelle aus dem SDF-Konzern sind der [[Traktorenlexikon: Lamborghini#Spire Trend|Lamborghini Spire Trend]] und der [[Traktorenlexikon: SAME#Dorado Natural|SAME Dorado Natural]]. {| class="wikitable" |- | valign="top" | * {{:Traktorenlexikon: Create|5070 D Keyline}} 48 kW / 65 PS * {{:Traktorenlexikon: Create|5080 D Keyline}} 55 kW / 75 PS * {{:Traktorenlexikon: Create|5090 D Keyline}} 62 kW / 84 PS * {{:Traktorenlexikon: Create|5100 D Keyline}} 67 kW / 92 PS |} ==== Serie 5D ==== [[File:Deutz-Fahr 5105 D Agritechnica 2025 (DSC08595).jpg|thumb|Deutz-Fahr 5105 D]] Die Serie 5D von Deutz-Fahr stellt die aktuelle Baureihe im Segment der Kompakt- und Allroundtraktoren dar, die speziell für Viehhaltungsbetriebe, Hofarbeiten und die Bewirtschaftung von Sonderkulturen konzipiert wurde. Technisch zeichnet sich die Serie durch eine hohe Wendigkeit und eine kompakte Bauweise aus, wobei moderne FARMotion-Motoren (3- oder 4-Zylinder) zum Einsatz kommen, die aktuelle Abgasnormen erfüllen. Das Leistungsspektrum der Serie 5D deckt den Bereich von 65 PS bis 106 PS ab, was in etwa 48 kW bis 78 kW entspricht. Ein zentrales technisches Merkmal ist die Wahlmöglichkeit zwischen verschiedenen Getriebevarianten, die vom einfachen mechanischen Wendegetriebe bis hin zum PowerShuttle mit Lastschaltung und der „Stop&Go“-Funktion reichen, welche das Anhalten und Anfahren allein über das Bremspedal ermöglicht. Ergänzt wird die technische Ausstattung durch eine leistungsstarke Hydraulikanlage mit bis zu 54 Litern Förderleistung pro Minute und eine komfortable Vier-Pfosten-Kabine, die eine optimierte Rundumsicht für Frontladerarbeiten bietet. {| class="wikitable" | ab 2014 |- | valign="top" | * {{:Traktorenlexikon: Create|5075 D}} 55kW (75PS) * {{:Traktorenlexikon: Create|5095 D}} 70kW (95PS) * {{:Traktorenlexikon: Create|5105 D}} 78kW (106PS) |} ==== Serie 5D TTV ==== Mit der Einführung der Serie 5D TTV im Jahr 2021 übertrug Deutz-Fahr die Technologie stufenloser Antriebe erstmals in das Segment der kompakten Allround-Traktoren. Diese Baureihe kombiniert die Abmessungen eines Kompakt-Schleppers mit der High-End-Technik der größeren Serien, wobei das Herzstück das eigenentwickelte TTV-Getriebe ist, das ein stufenloses Beschleunigen von 0 bis 40 km/h bei reduzierter Motordrehzahl ermöglicht. Angetrieben werden die Maschinen von FARMotion-Motoren mit drei oder vier Zylindern, die ein Leistungsspektrum von 88 PS (65 kW) im Modell 5090 D TTV bis zu 126 PS (92,6 kW) im Topmodell 5115 D TTV abdecken. Besonderes Augenmerk liegt auf der Hydraulikleistung und der Bedienung: Die Serie verfügt serienmäßig über eine Load-Sensing-Pumpe mit bis zu 100 l/min Förderleistung und die ergonomische MaxCom-Armlehne, über die sämtliche Funktionen per Joystick gesteuert werden. Dank der gefederten Vorderachse, einer modernen Vier-Pfosten-Kabine mit flachem Boden und der Integration von Precision-Farming-Systemen (wie iMonitor und GPS) ist der 5D TTV als professionelle Arbeitsmaschine für Kommunalbetriebe, Hofwirtschaften und den Einsatz in Sonderkulturen positioniert. Die Produktion erfolgt im Werk in Triviglio, Italien, wobei die Modelle seit ihrem Erscheinen kontinuierlich an die aktuellsten Abgasnormen der Stufe V angepasst wurden. {| class="wikitable" | ab 2021 |- | valign="top" | * {{:Traktorenlexikon: Create|5095 D TTV}} 70kW (95PS) * {{:Traktorenlexikon: Create|5105 D TTV}} 78kW (106PS) * {{:Traktorenlexikon: Create|5115 D TTV}} 85kW (116PS) |} ==== Serie 5 Keyline ==== [[File:Deutz-Fahr 5125 Keyline Agritechnica 2025 (DSC08559).jpg|thumb|Deutz-Fahr 5125 Keyline]] Die Serie 5 Keyline wurde als robuster und wirtschaftlicher Allrounder konzipiert, der die Lücke zwischen den kompakten Hofschleppern und der gehobenen Mittelklasse schließt. Im Gegensatz zur kleineren D-Variante basiert sie auf einem größeren Chassis und nutzt den hubraumstarken FARMotion 45 Vierzylinder-Motor mit 3,8 Litern Hubraum, der ein Leistungsspektrum von 75 PS (55,2 kW) bis 106 PS (78 kW) abdeckt. Die Serie setzt auf ein rein mechanisches Bedienkonzept mit 5-Gang-Getrieben, bietet jedoch mit einer Heckhubkraft von bis zu 4.525 kg und einem zulässigen Gesamtgewicht von 6,5 Tonnen deutlich mehr Reserven für die Feldarbeit. Damit ist die Serie 5 Keyline eine zweckmäßige Lösung für Betriebe, die hohe Stabilität und Zugkraft bei gleichzeitig einfacher, wartungsfreundlicher Technik suchen. {| class="wikitable" | ab 2024 |- | valign="top" | * {{:Traktorenlexikon: Create|5075}} 55kW (75PS) * {{:Traktorenlexikon: Create|5095}} 70kW (95PS) * {{:Traktorenlexikon: Create|5105 / PLUS}} 78kW (106PS) * {{:Traktorenlexikon: Create|5115}} 85kW (116PS) * {{:Traktorenlexikon: Create|5125}} 93kW (126PS) |} ==== Serie 5 ==== [[File:Deutz-Fahr 5125 Agritechnica 2025 (DSC08580).jpg|thumb|Deutz-Fahr 5125]] Die Serie 5 von Deutz-Fahr bildet das technologische Herzstück der Mittelklasse und ist als vielseitiger Premium-Allrounder für Ackerbau, Grünland und Transport konzipiert. Im Gegensatz zu den einfacheren Keyline-Modellen zeichnet sich diese Baureihe durch ein hohes Maß an Komfort und technischer Ausstattung aus, wie etwa das PowerShuttle-Wendegetriebe mit einstellbarem Ansprechverhalten (SenseClutch) und die optionale Zweistufen-Lastschaltung (Hi-Lo) oder Dreistufen-Lastschaltung (HML). Die leistungsstarken FARMotion-Motoren decken dabei einen Bereich von 95 PS bis 126 PS ab und erfüllen dank modernster Abgasreinigung die Stufe V. Besonderes Merkmal der Serie 5 ist die hochwertige TopVision-Kabine, die durch das innovative „Hydro Silent-Block“-Lagersystem Schwingungen um bis zu 40 % reduziert und eine erstklassige Rundumsicht bietet. Die hydraulische Ausstattung ist mit einer Förderleistung von bis zu 90 l/min (im „On-Demand“-System) und einer Heckhubkraft von bis zu 5.410 kg deutlich leistungsstärker ausgelegt als bei den Einstiegsmodellen. Mit Features wie der „Stop&Go“-Funktion für kupplungsfreies Anhalten und modernen Precision-Farming-Optionen ist die Serie 5 darauf ausgelegt, maximale Produktivität bei gleichzeitig hohem Bedienkomfort für professionelle landwirtschaftliche Betriebe zu liefern. {| class="wikitable" | ab 2021 |- | valign="top" | * {{:Traktorenlexikon: Create|5095}} 70kW (95PS) * {{:Traktorenlexikon: Create|5100}} 75kW (102PS) * {{:Traktorenlexikon: Create|5105}} 78kW (106PS) * {{:Traktorenlexikon: Create|5115}} 85kW (116PS) * {{:Traktorenlexikon: Create|5125}} 93kW (126PS) |} === Serie 6 === ==== Serie 6C ==== [[File:Deutz-Fahr 6115 C Agritechnica 2025 (DSC03580).jpg|thumb|Deutz-Fahr 6115 C]] Die im Februar 2022 vorgestellte und im italienischen Werk Treviglio produzierte Serie 6C bildet das fundamentale Bindeglied zwischen kompakten Hofschleppern und leistungsstarken Ackerschleppern. Als Antrieb fungiert der flüssigkeitsgekühlte Deutz TCD 3.6 Vierzylindermotor, der ein breites Leistungsspektrum von 114 bis 143 PS (inklusive Boost) abdeckt. Die Serie zeichnet sich durch eine am Markt einzigartige Getriebevielfalt auf einer Plattform aus: Kunden können zwischen dem klassischen PowerShift-Getriebe (3 Lastschaltstufen), dem automatisierten RVShift-Getriebe und dem stufenlosen TTV-Antrieb wählen. Technische Besonderheiten sind die TopVision-Kabine mit optionalem Freisichtdach für optimierte Frontladerarbeiten sowie das „SDF Smart Farming Solutions“-Paket für den Einstieg in die präzise Landwirtschaft. Mit einem Radstand von 2.480 mm und einer hohen Wendigkeit ist die Serie 6C primär für Gemischt- und Grünlandbetriebe sowie als wendiger Pflegeschlepper in Ackerbaubetrieben optimiert. {| class="wikitable" | ab 2022 |- | valign="top" | * {{:Traktorenlexikon: Create|6115C}} 89 kW (121 PS) * {{:Traktorenlexikon: Create|6125C}} 95 kW (129 PS) * {{:Traktorenlexikon: Create|6135C}} 101 kW (137 PS) |} ==== Serie 6.4 ==== [[File:Deutz-Fahr 6140.4 RVshift Agritechnica 2025 (DSC08632).jpg|thumb|Deutz-Fahr 6140.4 RVshift]] Die seit 2023 im bayerischen „Deutz-Fahr Land“ in Lauingen gefertigte Serie 6.4 erweitert das Portfolio um einen leistungsstarken Vierzyinder-Schlepper im Premiumsegment. Technisches Herzstück ist der FARMotion 45 Motor mit 4,5 Litern Hubraum, elektronisch gesteuerter Common-Rail-Einspritzung und VTG-Turbolader, der auf ein hohes Drehmoment bei niedrigen Betriebsdrehzahlen optimiert ist. Die Baureihe verzichtet auf ein klassisches Lastschaltgetriebe und wird ausschließlich mit dem voll-lastschaltbaren RVShift-Getriebe oder dem stufenlosen TTV-Getriebe angeboten. Zu den technischen Besonderheiten gehört die Verwendung der MaxiVision-Kabine, die eine physische Entkopplung vom Motorraum aufweist und somit den Komfortstandard der größeren Sechszylindermodelle in die 130- bis 150-PS-Klasse überträgt. Mit einer Hydraulikleistung von bis zu 120 l/min (Load-Sensing) und einer zulässigen Gesamtmasse von 10,5 Tonnen ist die Serie 6.4 für den kombinierten Einsatz in Ackerbau und Transport sowie für anspruchsvolle Frontladerarbeiten konzipiert. {| class="wikitable" | ab 2023 |- | valign="top" | * {{:Traktorenlexikon: Create|6130}} 100 kW (136 PS) * {{:Traktorenlexikon: Create|6140}} 108 kW (147 PS) * {{:Traktorenlexikon: Create|6150}} 115 kW (156 PS) * {{:Traktorenlexikon: Create|6160}} 118 kW (161 PS) * {{:Traktorenlexikon: Create|6170}} 126 kW (171 PS) |} ==== Serie 6 ==== [[File:Deutz-Fahr 6180 TTV 30 Jahre Agrotron Agritechnica 2025 (DSC08553).jpg|thumb|Deutz-Fahr 6180 TTV "30 Jahre Agrotron"]] Die seit 2021 im bayerischen Lauingen gefertigte Deutz-Fahr Serie 6 bildet als „Made in Germany“-Plattform das technologische Rückgrat für den professionellen Ackerbau und schwere Transportlogistik. Angetrieben von flüssigkeitsgekühlten Deutz TCD 6.1 L6 Sechszylindermotoren mit Turbo-Intercooler und Common-Rail-Technologie, bietet die Baureihe eine hohe Leistungsdichte bei optimierter Kraftstoffeffizienz gemäß Abgasstufe V. Die technische Flexibilität wird durch drei Getriebekonzepte sichergestellt: das mechanisch-hydraulische Powershift-Getriebe mit sechs Lastschaltstufen, das vollautomatisierte RCshift-Getriebe sowie das stufenlose TTV-Getriebe für einen unterbrechungsfreien Kraftfluss. Zu den technischen Besonderheiten zählen die MaxiVision-Kabine in verschiedenen Ausbaustufen, eine leistungsstarke Load-Sensing-Hydraulik mit bis zu 160 l/min Förderleistung sowie die vollständige Integration von SDF Smart Farming Solutions zur präzisen Steuerung von ISOBUS-Komponenten und satellitengestützter Spurführung. {| class="wikitable" | ab 2021 |- | valign="top" | * {{:Traktorenlexikon: Create|6160}} 119 kW (161 PS) * {{:Traktorenlexikon: Create|6170}} 126 kW (171 PS) * {{:Traktorenlexikon: Create|6180}} 133 kW (181 PS) * {{:Traktorenlexikon: Create|6190}} 141 kW (192 PS) * {{:Traktorenlexikon: Create|6210}} 159 kW (216 PS) * {{:Traktorenlexikon: Create|6230}} 169 kW (230 PS) |} === Serie 7 === [[File:Deutz-Fahr 7250 TTV Warrior Agritechnica 2023 (DSC04914).jpg|thumb|Deutz-Fahr 7250 TTV Warrior]] Die seit 2021 im bayerischen „Deutz-Fahr Land“ in Lauingen produzierte Serie 7 repräsentiert die Hochleistungs-Klasse für großflächige Ackerbaubetriebe und Lohnunternehmen. Herzstück dieser Baureihe ist der Deutz TCD 6.1 L6 Sechszylindermotor, der durch ein elektronisch gesteuertes Twin-Turbo-System und Common-Rail-Einspritzung eine Maximalleistung von bis zu 247 PS (Modell 7250 TTV) bei optimierten Wartungsintervallen von 1.000 Stunden bereitstellt. Im Gegensatz zu den kleineren Serien wird die Serie 7 ausschließlich mit dem stufenlosen TTV-Getriebe ausgestattet, das eine präzise Geschwindigkeitssteuerung von 0 bis 60 km/h (bei reduzierter Motordrehzahl) ohne Zugkraftunterbrechung ermöglicht. Zu den technischen Besonderheiten gehören die MaxiVisionPro-Kabine mit der ergonomischen MaxCom-Armlehne, eine verstärkte Hinterachse mit integrierten Scheibenbremsen im Ölbad sowie eine High-End-Hydraulikanlage mit einer Load-Sensing-Pumpe von bis zu 210 l/min. Dank der serienmäßigen Integration des iMonitor3 und umfangreicher SDF Smart Farming Solutions ist das Fahrzeug für hochpräzise Anwendungen wie Section Control und Variable Rate Control im Precision Farming optimiert. {| class="wikitable" | ab 2021 |- | valign="top" | * {{:Traktorenlexikon: Create|7250 TTV}} 182 kW (247 PS) |} === Serie 8 === [[Datei:Deutz-Fahr 8280 TTV Warrior agra 2024 (DSC02756).jpg|thumb|Deutz-Fahr 8280 TTV]] Die im Jahr 2020 eingeführte und im bayerischen Lauingen gefertigte Serie 8 TTV (primär repräsentiert durch das Modell 8280 TTV) bildet die technologische Brücke zwischen den Baureihen 7 und 9. Technisches Kernstück ist der flüssigkeitsgekühlte Deutz TTCD 6.1 L6 Sechszylindermotor mit zweistufiger Turboaufladung und Common-Rail-Einspritzung (2.000 bar), der eine Maximalleistung von 287 PS generiert. Die Kraftübertragung erfolgt über das stufenlose TTV-Getriebe (SDF T7780), welches die Motorleistung über vier mechanische Fahrbereiche verzweigt und eine Endgeschwindigkeit von bis zu 60 km/h bei reduzierter Drehzahl ermöglicht. Zu den spezifischen Merkmalen zählen die MaxiVisionPro-Kabine, eine Load-Sensing-Hydraulik mit bis zu 210 l/min sowie ein zulässiges Gesamtgewicht von 16 Tonnen. Die Baureihe ist vollständig für SDF Smart Farming Solutions (iMonitor3, ISOBUS) integriert. {| class="wikitable" | ab 2020 |- | valign="top" | * {{:Traktorenlexikon: Create|8280 TTV}} 197 kW (268 PS) |} ==== Serie 8 (2025) ==== [[File:Deutz-Fahr 8310 TTV Agritechnica 2025 (DSC00446).jpg|thumb|Deutz-Fahr 8310 TTV]] Die im November 2025 auf der Agritechnica präsentierte neue Generation der Serie 8 umfasst die Modelle 8310 TTV und 8340 TTV mit einer Maximalleistung von bis zu 340 PS. Wesentliche technische Neuerung ist der Wechsel auf den FPT N67 Sechszylindermotor mit 6,7 Litern Hubraum, der vollständig HVO-kompatibel ist. Die Kraftübertragung erfolgt über ein verstärktes stufenloses TTV-Getriebe, das speziell für die erhöhten Drehmomentanforderungen der 340-PS-Klasse ausgelegt wurde. Ein zentrales Merkmal ist die neu entwickelte SigmaVision-Kabine im 4-Säulen-Design, die über die innovative iControl-Armlehne bedient wird. Zu den technischen Highlights gehören eine Hydraulikförderleistung von 220 l/min, ein Heckhubwerk mit 12.000 kg Hubkraft sowie das TAGS-System (Tractor Assisted Guidance System), welches mittels 3D-Hinderniserkennung und KI-basierter Sensorik teilautonome Fahrfunktionen ermöglicht. Die Markteinführung und Auslieferung der in Lauingen produzierten Maschinen ist für Mai 2026 vorgesehen. {| class="wikitable" | ab 2026 |- | valign="top" | * {{:Traktorenlexikon: Create|8310 TTV}} 228 kW (310 PS) * {{:Traktorenlexikon: Create|8340 TTV}} 250 kW (340 PS) |} === Serie 9 === [[File:Deutz-Fahr 9340 TTV Warrior Agritechnica 2023 (DSC04972).jpg|thumb|Deutz-Fahr 9340 TTV Warrior]] Die seit 2015 im bayerischen Lauingen gefertigte und zuletzt 2021 technisch aktualisierte Serie 9 TTV stellt das Flaggschiff der Standardtraktoren von Deutz-Fahr dar. Technisches Kernstück dieser Baureihe ist der flüssigkeitsgekühlte Deutz TTCD 7.8 L6 Sechszylindermotor mit 7,8 Litern Hubraum, zweistufiger Turboaufladung und Ladeluftkühlung, der eine Maximalleistung von bis zu 336 PS (Modell 9340 TTV) generiert. Die Kraftübertragung wird exklusiv über das stufenlose TTV-Getriebe der Baureihe ZF TMT 32 realisiert, welches durch vier mechanische Fahrbereiche einen hohen Wirkungsgrad über das gesamte Geschwindigkeitsspektrum von 0,2 bis 60 km/h sicherstellt. Zu den markanten Merkmalen gehören die von der Motorhaube entkoppelte MaxiVisionPro-Kabine für minimale Vibrationswerte und einen Geräuschpegel von nur 69 dB(A), eine gefederte Vorderachse mit trockenen Scheibenbremsen sowie eine Load-Sensing-Hydraulikanlage mit einer Förderleistung von bis zu 210 l/min. Mit einem zulässigen Gesamtgewicht von 18 Tonnen und einer Heckhubkraft von 12.000 kg ist die Serie 9 für schwerste Bodenbearbeitung und anspruchsvolle Systemtechnik im Rahmen der SDF Smart Farming Solutions optimiert. Angekündigt wurde zudem als viertes (und kleinstes) Modell der '''9270 TTV'''. Die Serienproduktion wurde allerdings nicht aufgenommen.<ref>http://zugtier.info/deutz-fahr-serie-9/</ref> {| class="wikitable" | ab 2015 |- | valign="top" | * {{:Traktorenlexikon: Create|9290 TTV}} 217 kW (295 PS) * {{:Traktorenlexikon: Create|9310 TTV}} 229 kW (312 PS) * {{:Traktorenlexikon: Create|9340 TTV}} 247 kW (336 PS) |} === Serie 11 === [[File:Agritechnica 2013 by-RaBoe 09.jpg|thumb|Deutz Fahr 11440 TTV]] Die Serie 11 war als Vorstoß von Deutz-Fahr in das Segment der Großtraktoren über 400 PS geplant, wurde jedoch nie in Serie produziert. Trotz der offiziellen Vorstellung von Prototypen (insbesondere des Modells 11440 TTV) wurde das Projekt vor dem geplanten Verkaufsstart aus strategischen Gründen innerhalb der SDF-Gruppe eingestellt. {| class="wikitable" | 2013 vorgestellt |- | valign="top" | * {{:Traktorenlexikon: Create|11350 TTV}} * {{:Traktorenlexikon: Create|11400 TTV}} * {{:Traktorenlexikon: Create|11440 TTV}} |} == Prototypen/Kleinserien == {| class="wikitable" | valign="top" | * D5505 Tandemschlepper<ref>http://www.oldtimerplus.de/blog/deutz-d5505-tandem-schlepper/</ref> * {{:Traktorenlexikon: Create|Agro XXL}} 440kW (600 PS) - 2009 |} === Deutz D5505 Tandem === [[File:Deutz D 5505 Tandem Nachbau 2017 by RaBoe.jpg|thumb|Deutz D 5505 Tandem Nachbau]] Der Deutz D 5505 Tandemschlepper (oft auch als „Deutz-Gigant“ bezeichnet) war ein spektakulärer Prototyp bzw. Eigenbau aus dem Jahr 1965, der die Antwort auf den steigenden Leistungsbedarf in der Landwirtschaft vor der Ära der echten Großschlepper darstellte. Technisch bestand das Gespann aus zwei gekoppelten D 5505, bei denen der vordere Schlepper seiner Hinterachse beraubt und fest mit der Vorderachse des hinteren Schleppers verbunden wurde. Angetrieben wurde die Einheit von zwei luftgekühlten Vierzylinder-Motoren (Typ F4L 812), was eine Gesamtleistung von 104 PS ergab. Da es noch keine ausgereiften Knicklenker-Systeme von der Stange gab, wurden die beiden Motoren und Getriebe über ein komplexes Gestänge synchronisiert und vom hinteren Fahrersitz aus gesteuert. Trotz der enormen Zugkraft und der beeindruckenden Optik blieb der Tandemschlepper ein Einzelstück, da die Konstruktion für die Serienreife zu aufwendig war und Deutz kurz darauf mit der Entwicklung leistungsstarker Einzelschlepper wie dem D 9005 begann. === Deutz-Fahr Agro XXL === [[Datei:Deutz Agro XXL.JPG|thumb|Deutz-Fahr Agro XXL]] Der Deutz-Fahr AgroXXL 1630 wurde auf der Agritechnica 2009 als Prototyp eines 600 PS starken Großschleppers vorgestellt, der in Kooperation mit der DTU (Deutsche Traktoren Union) entstand. Das Herzstück des Giganten war ein 16-Liter-V8-Motor von Deutz, dessen Kraft über acht Räder auf zwei Tandemachsen auf den Boden übertragen wurde. Technisch war das Fahrzeug als Knicklenker mit einem hydraulischen Knickwinkel von ca. 40° konstruiert, was trotz der enormen Abmessungen einen inneren Wenderadius von nur 5,50 Metern ermöglichte. Ziel war es, die Zugkraft eines schweren Knicklenkers mit der Bodenschonung und Straßentauglichkeit eines Acht-Rad-Konzepts zu vereinen; das Projekt ging jedoch aufgrund hoher Komplexität nie in Serienfertigung. == Literatur & Weblinks == {{Commons|Category:Deutz-Fahr tractors|Deutz-Fahr-Traktoren}} {{Wikipedia1|Deutz-Fahr}} * Karel Vermoesen, Michael Bruse: ''Alle Traktoren von Deutz und Deutz-Fahr.'' 2 Bd. Verlag Klaus Rabe, 2009. ISBN 9783926071385 * [http://www.samedeutz-fahr.com www.samedeutz-fahr.com] * [http://www.deutz-fahr.com www.deutz-fahr.com] * [http://www.deutzforum.de/ www.deutzforum.de] Die Listen folgender Websites sind in Teilen unstimmig, zur groben Orientierung jedoch brauchbar: * [http://www.deutz-traktoren.de/ www.deutz-traktoren.de] * [http://www.konedata.net/Traktorit/deutz.htm www.konedata.net] (Modelldaten Finnisch/Englisch) * [http://home.arcor.de/gbotzet/Schlepperlisten%20Deutz.htm Private Datensammlung zu Deutz- und Deutz-Fahr-Traktoren von J. Botzet] Die folgende Seite wird wahrscheinlich weiter bearbeitet und ist deshalb nur zeitlich begrenzt in dieser Variante verfügbar? * https://issuu.com/deutz-fahr === Quellen === <references /> {{:Traktorenlexikon: Navigation}} ifguw7iw7j0got0domjrknqnp95l9lj 1090560 1090559 2026-09-08T14:17:52Z JaWa1998 115962 /* D-07 */ 1090560 wikitext text/x-wiki {{:Traktorenlexikon: Navigation}} [[File:DF Logo Neu.jpg|thumb|Logo Deutz-Fahr]] [[File:Logo SDF.jpg|thumb|Logo SDF]] '''Deutz-Fahr''' ist eine seit 1981 bestehende deutsche Landmaschinen- und Traktorenmarke, die aus dem Agrartechnikbereich der Klöckner-Humboldt-Deutz AG (KHD) mit den Marken [[Traktorenlexikon: Deutz|Deutz]] und [[Traktorenlexikon: Fahr|Fahr]] hervorging. Seit 1995 gehört Deutz-Fahr zur [[Traktorenlexikon: SAME Deutz-Fahr|SAME-Deutz-Fahr]]-Gruppe (seit Dezember 2015 SDF-Group). ==Geschichte== Historischer Ursprung von KHD bzw. Deutz ist die 1864 gegründete ''Motorenfabrik N.A. Otto & Cie.'', die acht Jahre später in ''Gasmotoren-Fabrik Deutz AG'' umbenannt wurde. Firmensitz war die damalige Stadt Deutz, heute [[w:Deutz (Köln)|Köln-Deutz]]. 1927 wurde in Köln die Serienfertigung dieselbetriebener Traktoren aufgenommen. Aus der Gasmotoren-Fabrik Deutz war 1938 nach mehreren Übernahmen und Zusammenschlüssen die ''Klöckner-Humboldt-Deutz AG'' geworden, die in den 1960er Jahren auch Aktien des deutschen Landmaschinen- und Traktorenherstellers Fahr erwarb und diesen erst mehrheitlich, dann 1975 komplett übernahm. In den Folgejahren vermarktete KHD verschiedene Maschinen noch getrennt unter den beiden Markennamen [[Traktorenlexikon: Deutz|Deutz]] und [[Traktorenlexikon: Fahr|Fahr]]. 1981 begann die Produktion unter der neugebildeten Marke Deutz-Fahr. 1995 veräußerte KHD die Landtechniksparte an die italienische SLH-Gruppe (SAME-Lamborghini-Hürlimann) und konzentrierte sich wieder stärker auf die Motorenproduktion. Seitdem gehört Deutz-Fahr zur neugebildeten [[Traktorenlexikon: SAME Deutz-Fahr|SAME-Deutz-Fahr]]-Gruppe (SDF). Die Deutz-Fahr-Traktorenwerke wurden anschließend 1996 von Köln nach [[w:Lauingen (Donau)|Lauingen]] im schwäbischen Landkreis Dillingen an der Donau verlegt, wo bis heute produziert wird. 1997 wurde der Name von KHD in ''Deutz AG'' geändert. Ab 2003 erwarb SDF wiederum Aktienpakete der Deutz AG und war zwischenzeitlich mit 45 Prozent größter Einzelaktionär. Inzwischen ist Volvo der größte Einzelaktionär. Die meisten Deutz-Fahr-Traktoren sind mit Deutz-Motoren ausgestattet. Davon abweichend sind die Serien 5, 6C und 6.4, die mit den SDF-eigenen FARMOTION 4-Zylinder-Motoren angetrieben werden. Die auf der Agritechnica 2025 vorgestellte neue Serie 8 nutzt erstmals Motoren des Herstellers FPT (N67) mit bis zu 340PS Nennleistung. Neben Traktoren wurden und werden unter dem Namen Deutz-Fahr weitere Landmaschinen vermarktet, zum Beispiel Mähdrescher (Produktion 2025 eingestellt), Mähwerke, Heuwender, Schwader, Ladewagen, Ballenpressen und Teleskoplader. Seit 2017 wird am früheren Fahr-Standort in Lauingen an der Donau das aktuell modernste Traktorenwerk Europas von SDF betrieben. Dort werden Traktoren der SDF-Gruppe mit mehr als 100 kW gefertigt. Das bedeutet z.Z. kommen die Deutz-Fahr Serien 6, 7, 8 und 9 für die SDF-Gruppe aus Lauingen. == Typen == Unter dem Markennamen Deutz-Fahr wurden und werden Traktoren mit folgenden Typenbezeichnungen vertrieben: === INTRAC / IN-trac === {{Wikipedia|Deutz INTRAC}} [[File:Intrac 2003 A.jpg|thumb|INTRAC 2003 A (1. Generation)]] [[Datei:DeutzFahr Intrac 6.60.JPG|thumb|IN-trac 6.60 (2. Generation)]] Die [[Traktorenlexikon: Deutz#INTRAC-Reihe|INTRAC]]-Baureihe von [[Traktorenlexikon: Deutz|Deutz]] (später IN-trac bei Deutz-Fahr) stellt ein wegweisendes Systemschlepper-Konzept dar, das ab 1972 als Antwort auf den MB-trac entwickelt wurde. Das markanteste Merkmal ist die weit nach vorne gerückte Kabine über dem Motor, wodurch eine große Aufbauplattform im Heck und ein vollwertiger Frontanbauraum entstanden. Man unterscheidet im Wesentlichen zwischen der ersten Generation (Intrac 2000er-Serie) und der zweiten, leistungsstärkeren Generation (Intrac 6.00er-Serie). Die frühen Modelle wie der Intrac 2002, 2003 und 2005 basierten technisch auf der bewährten 06er-Serie und nutzten luftgekühlte Drei-, Vier- und Fünfzylindermotoren. Sie waren als echte Geräteträger konzipiert, die durch drei Anbauräume (Front, Aufbau, Heck) eine enorme Schlagkraft bei kombinierten Arbeitsgängen boten. Mit der Einführung der großen Baureihe Ende der 1980er-Jahre, insbesondere dem IN-trac 6.30 und 6.60, erreichte das Konzept seinen technologischen Höhepunkt. Diese Maschinen leisteten bis zu 150 PS, verfügten über die moderne Hochraum-Komfortkabine und waren für schwerste Systemarbeiten ausgelegt. Trotz der überlegenen Übersicht und der vielseitigen Einsatzmöglichkeiten blieb der Intrac aufgrund der höheren Anschaffungskosten und der komplexeren Wartung durch die verbaute Kabine ein Nischenprodukt. Historisch gesehen ist der Intrac jedoch von großer Bedeutung, da er die Vision eines universellen Systemfahrzeugs verkörperte und als letzter großer Systemschlepper aus Köln gilt, bevor das Konzept zugunsten der Standardtraktoren aufgegeben wurde. Heute haben gut erhaltene Intrac-Modelle absoluten Sammlerstatus und gelten als Ikonen der deutschen Landtechnik-Geschichte. {| class="wikitable" | '''1. Generation''' (1981–1989) || '''2. Generation''' (1987–1990) |- | valign="top" | * [[Traktorenlexikon: Deutz INTRAC 2002|INTRAC 2002]] 37kW (51PS) * [[Traktorenlexikon: Deutz INTRAC 2003|INTRAC 2003]] 44kW (60PS) * [[Traktorenlexikon: Deutz INTRAC 2004|INTRAC 2004]] 51kW (70PS) * {{:Traktorenlexikon: Create|INTRAC 2005}} 59kW (80PS) * {{:Traktorenlexikon: Create|INTRAC 2006}} 81kW (110PS) * {{:Traktorenlexikon: Create|INTRAC 2007}} 103kW (140PS) * ''siehe auch [[Traktorenlexikon: Deutz#INTRAC-Reihe|Deutz INTRAC]]'' | valign="top" | * {{:Traktorenlexikon: Create|IN-trac 6.05}} 72kW (98PS) * {{:Traktorenlexikon: Create|IN-trac 6.30}} 85kW (115PS) * {{:Traktorenlexikon: Create|IN-trac 6.30 turbo}} 93kW (126PS) * {{:Traktorenlexikon: Create|IN-trac 6.60 turbo}} 110kW (150PS) |} === D-07 === [[File:Deutz D7807 HH-Volksdorf (2023).jpg|thumb|Deutz-Fahr D7807]] 1980 kam die letzte Entwicklungsstufe der Deutz-Baureihe [[Traktorenlexikon: Deutz#D-06|D-06]] unter der Bezeichnung D-07 auf den Markt. Die wesentlichen Veränderungen betrafen die verstärkten Dreipunktgestänge, die geänderte Motorhaube mit abnehmbarem Grill nach Art der DX-Traktoren sowie die für DX-Gewichte geeigneten Frontballastträger. Dazu kam wahlweise eine Halbkabine mit hinten angeschlagenden Türen. Das D-07-Program bestand zunächst aus folgenden Familien:<br /> '''1. Kleine Baureihe''' * D 4007 bis D 6207 (entsprechend D 4006 bis D 6206), * ab D 4507 auch mit Allradantrieb.<br /> * FL912 Motoren '''2. Mittlere Baureihe''' * D 6807, D 7207 und D 7807 (entsprechend D 6806 bis D 7206) * Optional mit Allrad. * FL912 Motoren '''3. Große Baureihe''' * D 7807 mit F4L913-Motor und 75 PS. * F4L913 Motor mit 75 PS Die D-07er Modelle sind durch vierstellige Nummern gekennzeichnet, die jeweils auf „07“ enden. Traktoren dieser Serie wurden bis 1990 von Deutz-Fahr – bis 1981 noch unter dem Markennamen [[Traktorenlexikon: Deutz|Deutz]] – gefertigt. Modelle mit dem Zusatz „C“ sind Ausführungen mit Kabine, Modelle mit dem Zusatz „A“ sind Allradausführungen. Der Zusatz „P“ kennzeichnet Schmalspurversionen (hier noch nicht aufgeführt). ''Der Einfachheit halber werden im Traktorenlexikon alle D-07-Modelle unter „Deutz-Fahr“ geführt.'' {| class="wikitable" | '''D-07''' (1980–1990) |- | valign="top" | * {{:Traktorenlexikon: Create|D 2807}} 21kW (29 PS) * {{:Traktorenlexikon: Create|D 3607}} 25kW (34 PS) * {{:Traktorenlexikon: Create|D 4007}} 26kW (35 PS) * {{:Traktorenlexikon: Create|D 4507}} 30kW (40 PS) <!-- 4507–7807 alle als C mit Spezialkabine; + P-Schmalspurausführungen, aber welche? --> * {{:Traktorenlexikon: Create|D 4807}} 33kW (45 PS) <!-- mind bis 1982 --> * {{:Traktorenlexikon: Create|D 5207}} 38kW (51 PS) <!-- H mind bis 1983 --> * {{:Traktorenlexikon: Create|D 6007}} 42kW (57 PS) <!-- mind bis 1983 --> * {{:Traktorenlexikon: Create|D 6207}} 44kW (60 PS) <!-- A mind bis 1984 --> * {{:Traktorenlexikon: Create|D 6507}} 46kW (62 PS) <!-- mind bis 1984 --> * {{:Traktorenlexikon: Create|D 6807}} 49kW (67 PS) * {{:Traktorenlexikon: Create|D 6907}} 51kW (70 PS) <!-- CA mind bis 1985 --> * {{:Traktorenlexikon: Create|D 7007}} 51kW (70 PS) * {{:Traktorenlexikon: Create|D 7207}} 51kW (70 PS) <!-- mind bis 1982 --> * {{:Traktorenlexikon: Create|D 7807}} 55kW (75 PS) <!-- C mind bis 1985 --> |} === DX === {{Wikipedia|Deutz-Fahr DX}} [[File:DEUTZ DX140.jpg|thumb|DEUTZ DX 140 (1. Generation)]] [[File:Deutz-Fahr Traktor 137 PS.jpg|thumb|DEUTZ-FAHR DX 6.50 (2. Generation)]] Die DX-Serie von Deutz-Fahr, eingeführt im Jahr 1978 (noch unter dem Namen Deutz), markierte einen entscheidenden technologischen Sprung in die Ära der modernen Komfort- und Großschlepper und löste die 6-Zylinder-Traktoren der erfolgreichen Serie 06 ab. Die Traktoren waren von Grund auf neu kosntruiert worden, um ertsmals eine voll integrierte Kabine anbieten zu können. Die DX-Traktoren hoben sich vom Markt durch ihre doppelt Rhombus-förmige Haube und Kabine ab, welche durch den Intrac inspiriert wurde. Die Getriebe stammten nun nicht mehr von ZF, da man sich in Köln unabhängiger aufstellen wollte. Daher erhielten die Modelle DX85, DX90 und DX110 direkt selbst entwicklete KHD-TW90-Triebwerke. Da man aber noch keine eigenen Getreibe für Leistungen oberhalb von 120PS entwicklet hatte, griff man bei den beiden Top-Modellen DX140 und DX160 auf Treibwerke der Firm Steyr aus Österreich zurück. Mit diesen war man eine Getriebe-Kooperation eingeganen, die Steyrer erhielten im gegenzug TW90 Getriebe von KHD für ihre mittlere Leistungsklasse (Serie 80). Man unterscheidet bei der Serie DX grundlegend dabei zwischen der ersten Generation (1978–1983) und der darauffolgenden, strukturell neu geordneten DX-Generation ab 1984. '''Die Merkmale der 1. Generation (1978-1983) waren:''' * Schriftzug DEUTZ auf dem gesamten Schlepper * Eine Tür links aus GFK, nach vorne öffnend * Kabine in Deutz-Grün ´74, Kotflügel in schwarzblau * max. 30km/h * seitliche Kardanwelle für den Vorderradantrieb '''Die Merkmale der 2. Generation (1983-1996) waren:''' * Schriftzug DEUTZ-FAHR auf dem gesamten Schlepper * Vollglastüren rechts und links, nach hinten öffnend * Kabine in schwarzblau, Kotflügel in Deutz-Grün ´74 * max. 40km/h * mittige Kardanwelle für den Vorderradantrieb ''Die Grenze kann nicht ganz strikt im Jahr 1983 gezogen werden, manche Modelle wurden schon 1980 oder 1982 überarbeitet. Spätestens aber 1983 waren alle Modelle auf dem neuen Stand.'' Die Modellbezeichnung der ersten Generation entsprach dabei grob der maximalen Leistung, wich aber mit steigender Zahl immer weiter ab (DX90 = 88 PS, DX140 = 125 PS). Technisch setzten sie konsequent auf die bewährten luftgekühlten Motoren der Baureihe 912/913. Eine Besonderheit stellten die Modelle DX85 und DX90 dar, da sie mit einem luftgekühlten 5-Zylinder-Motor (F5L912) ausgestattet waren. Diese beiden Modelle wurden während der 1. Serie noch ersetzt bzw. ergänzt, da sich der 5-Zylinder-Motor in der Praxis bei den Kunden als unbliebt zeigte, vor allem wegen dem größeren Wenderadius und der fehlenden Spritzigkeit gegenüber in der Leistungsklasse mittlerweile etablierten Traktoren mit 4-Zylinder-Turbomotoren. Daher wich der F5L912 dem BF4L913. Die überarbeitete Serie ab 1983 – unterteilt in die Klassen DX 3, 4, 6, 7 und 8 - erhielt eine neue Nomenklatur und wurde mit einer vorangestellten Zahl, die die Leistungsklasse angab und meist der Zylinderzahl entsprach, bezeichnet. Nach der ersten Ziffer folgte nach einem Punkt eine zweistellige Ziffer, die die Position innerhalb der Leistungsklasse angab. An ihr konnte die Motorleistung nicht direkt abgelesen werden. Die DX-Klassen können folgendermaßen eingeordnet werden: '''DX 3''' * 46 - 75 PS * Standard StarCab * Teilw. mit hinten offener VarioCab lieferbar * 3- oder 4-Zylinder-Saugmotoren * Kompaktmodelle * 2./3.-Traktor, Grünlandbetriebe, Pflege- und Frontladerarbeiten, Nebenerwerb '''DX 4''' * 70 - 90 PS * Standard MasterCab * Spritzige 4-Zylinder-Turbomotoren * Wendige Traktoren für den Neben- oder Vollerwerb * Haupt- oder 2.-Traktor, Grünland- und Ackerbetriebe, Pflege- und Frontladerarbeiten '''DX 6''' * 98 - 137 PS * Standard MasterCab * Durchzugsstarke und kräftige 6-Zylinder Saug- oder Turbomotoren * Teilweise mit Lastschaltung POWERMATIC * Für den Vollerwerb oder Lohnunternehmer * Haupttraktor, Acker- und Transportarbeiten '''DX 7''' * 160 PS * Standard MasterCab * Durchzugsstarker und kräftiger 6-Zylinder Turbomotor * Mit Lastschaltung POWERMATIC * Für den Großbetrieb, ehem. LPG oder Lohnunternehmer * Haupttraktor, Acker- und Transportarbeiten auf absoluten Großbetrieben '''DX 8''' * 220 PS * Standard MasterCab * Durchzugsstarker und kräftiger 6-Zylinder Turbomotor der NFZ-Serie 513 mit 9,5 l Hubraum * Mit Lastschaltung POWERMATIC * Für Gutshöfe und Großbetriebe ausserhalb Europas, ehem. UDSSR, Australien, USA etc. * Absoluter Ackergigant: Pflügen, Grubbern, Tiefenlockern etc. In dieser zweiten Phase hielt zudem die Elektronik in Form der Agrotronic Einzug, was die Präzision der Hubwerksregelung und die Überwachung der Maschinenfunktionen revolutionierte. Vom kompakten DX 3 als wendigem Hofschlepper bis zum DX 8.30 für schwerste Ackerarbeiten deckte die Serie das gesamte landwirtschaftliche Spektrum ab. Aufgrund ihrer mechanischen Robustheit und der wartungsfreundlichen Kühltechnik gilt die DX-Reihe heute als das Fundament für den Erfolg von Deutz-Fahr in den 80er-Jahren und ist auf dem Gebrauchtmarkt für ihre außergewöhnliche Langlebigkeit bekannt. Daneben gab es auch noch den Deutz-Fahr DX3.500, der von [[Traktorenlexikon: Agritalia|Agritalia]] gefertigt wurde und baugleich als Renault gebaut wurde. ''Der Einfachheit halber werden im Traktorenlexikon alle DX-Modelle unter „Deutz-Fahr“ geführt.'' {| class="wikitable" | colspan="3" | <center>'''1. Generation Serie DX''' ab 1978 </center> |- | '''Modelle bei Einführung ''' || '''Überarbeitung/Ergänzung ab 1980/1982''' || '''Schmalspurtraktoren''' |- | valign="top" | * {{:Traktorenlexikon: Create|DX 85}} 59kW (80PS) * {{:Traktorenlexikon: Create|DX 90}} 65kW (88PS) * {{:Traktorenlexikon: Create|DX 110}} 75kW (102PS) * {{:Traktorenlexikon: Create|DX 140}} 92kW (125PS) * {{:Traktorenlexikon: Create|DX 160}} 110kW (150PS) * {{:Traktorenlexikon: Create|DX 230}} 147kW (200PS) * {{:Traktorenlexikon: Create|DX 430}} (Prototyp) | valign="top" | * {{:Traktorenlexikon: Create|DX 80}} 55kW (75PS) * {{:Traktorenlexikon: Create|DX 86}} 60kW (82PS) * {{:Traktorenlexikon: Create|DX 92}} 66kW (90PS) * {{:Traktorenlexikon: Create|DX 120}} 81kW (110PS) * {{:Traktorenlexikon: Create|DX 145}} 97kW (132PS) * {{:Traktorenlexikon: Create|DX 230}} 147kW (200PS) * {{:Traktorenlexikon: Create|DX 250}} 162kW (220PS) * {{:Traktorenlexikon: Create|DX 430}} (Prototyp) | valign="top" | * {{:Traktorenlexikon: Create|DX 36 V}} 21kW (29PS) * {{:Traktorenlexikon: Create|DX 50 V}} 34kW (46PS) * {{:Traktorenlexikon: Create|DX 55 V}} 40kW (54PS) |} [[File:DX 8.30.jpg|thumb|DX 8.30]] {| class="wikitable" | colspan="4" | <center>'''2. Generation Serie DX''' (1983–1995)</center> |- | '''DX 3''' || '''DX 4''' || '''DX 6''' || '''DX 7/8''' |- | valign="top" | * {{:Traktorenlexikon: Create|DX 3.10}} 34kW (46 PS) * {{:Traktorenlexikon: Create|DX 3.30}} 40kW (54 PS) * {{:Traktorenlexikon: Create|DX 3.50}} 44kW (60 PS) * {{:Traktorenlexikon: Create|DX 3.60}} 48kW (65 PS) * {{:Traktorenlexikon: Create|DX 3.65}} 51kW (70 PS) * {{:Traktorenlexikon: Create|DX 3.70}} 51kW (70 PS) * {{:Traktorenlexikon: Create|DX 3.75 A}} 57kW (78 PS) * {{:Traktorenlexikon: Create|DX 3.80 AS}} 55kW (75 PS) * {{:Traktorenlexikon: Create|DX 3.90}} 55KW(75 PS) | valign="top" | * {{:Traktorenlexikon: Create|DX 4.10}} 51kW (70 PS) * {{:Traktorenlexikon: Create|DX 4.30}} 55kW (75 PS) * {{:Traktorenlexikon: Create|DX 4.50}} 60kW (82 PS) * {{:Traktorenlexikon: Create|DX 4.70}} 66kW (90 PS) | valign="top" | * {{:Traktorenlexikon: Create|DX 6.05}} 72kW (98 PS) * {{:Traktorenlexikon: Create|DX 6.10}} 74kW (100 PS) * {{:Traktorenlexikon: Create|DX 6.30}} 85kW (115 PS) * {{:Traktorenlexikon: Create|DX 6.50}} 101kW (137 PS) | valign="top" | * {{:Traktorenlexikon: Create|DX 7.10}} 118kW (160 PS) ---- * {{:Traktorenlexikon: Create|DX 8.30}} 162kW (220 PS) |} === AgroPrima === [[File:2024-01-31 15-58-15 manif-Belfort.jpg|thumb|AgroPrima 4.51]] Die AgroPrima-Reihe von Deutz-Fahr besetzte als wirtschaftliche Mittelklasse das strategische Kernsegment für Familienbetriebe und Gemischtbetriebe. Mit einem Leistungsspektrum von 70 bis 115 PS fungierte sie als robustes Bindeglied zwischen der einfacheren AgroXtra-Serie und den technologisch gehobenen AgroStar-Modellen. Das Image der Serie ist bis heute durch ihre außergewöhnliche Zuverlässigkeit geprägt, was sie zu einem gefragten Allrounder auf dem Gebrauchtmarkt macht. Diese Marktposition verdankt sie der Kombination aus bewährter, mechanischer Technik – insbesondere den langlebigen luftgekühlten Motoren – und einem für damalige Verhältnisse hohen Komfort durch die StarCab-Kabine. Damit gilt die AgroPrima als das letzte klassische „Arbeitstier“ von Deutz-Fahr vor dem Einzug umfassender Elektronikkomponenten in die Landtechnik. {| class="wikitable" | 1989-1995 |- | valign="top" | * {{:Traktorenlexikon: Create|AgroPrima 4.31}} 55kW (75PS) * {{:Traktorenlexikon: Create|AgroPrima 4.51}} 60kW (82PS) * {{:Traktorenlexikon: Create|AgroPrima 4.56}} 66kW (90PS) * {{:Traktorenlexikon: Create|AgroPrima 6.06}} 74kW (100PS) * {{:Traktorenlexikon: Create|AgroPrima 6.16}} 81kW (110PS) |} === AgroXtra === {{Wikipedia|Deutz-Fahr AgroXtra}} [[File:Deutz-Fahr AgroXtra 4.17 in Mauren TG.jpg|thumb|AgroXtra 4.17]] Die AgroXtra-Reihe von Deutz-Fahr war als spezialisierter Allrounder im Leistungsbereich von 60 bis 100 PS positioniert und ergänzte die klassische AgroPrima-Serie. Ihr zentrales Alleinstellungsmerkmal war das innovative Freisicht-Konzept mit einer stark abgeschrägten Motorhaube, das in Verbindung mit der StarCab-Kabine eine für die damalige Zeit überragende Übersicht auf Frontanbaugeräte ermöglichte. Technisch setzte die Baureihe auf die bewährte Kombination aus robusten, luftgekühlten Motoren (Reihe 912 und 913) und unkomplizierter Mechanik, was ihr bis heute ein Image höchster Zuverlässigkeit und Wartungsfreundlichkeit verleiht. In der Marktpositionierung richtete sie sich vor allem an Betriebe mit intensivem Frontlader- und Pflegeeinsatz. Aufgrund dieser funktionalen Spezialisierung bei gleichzeitig hoher Wertstabilität gilt die AgroXtra-Serie heute als gesuchter Klassiker des modernen, mechanischen Schlepperbaus. Die Bezeichnung der Traktoren der AgroXtra-Serie setzen sich aus einer Zahl vor dem Punkt zusammen, die die Zylinderzhal des Motors angibt. Die erste Ziffer nach dem Punkt beschreibt grob die Leistungsstufe innerhalb der Serie, die zweite Ziffer ist immer eine 7. {| class="wikitable" | 1990-1995 |- | valign="top" | * {{:Traktorenlexikon: Create|AgroXtra 3.57}} 44kW (60PS) * {{:Traktorenlexikon: Create|AgroXtra 4.07}} 50kW (68PS) * {{:Traktorenlexikon: Create|AgroXtra 4.17}} 55kw (75PS) * {{:Traktorenlexikon: Create|AgroXtra 4.47}} 63kW (85PS) * {{:Traktorenlexikon: Create|AgroXtra 4.57}} 70kW (95PS) * {{:Traktorenlexikon: Create|AgroXtra 6.07}} 74kW (100PS) * {{:Traktorenlexikon: Create|AgroXtra 6.17}} 83kW (113PS) |} === AgroStar === [[File:Deutz-fahr agrostar 6.61.jpg|thumb|AgroStar 6.61 (Normalhaube)]] [[File:Deutz-Fahr AgroStar 6.38.jpg|thumb|AgroStar 6.38 (Freisichthaube)]] Die AgroStar-Baureihe markierte in den 1990er Jahren als technologisches Flaggschiff das obere Leistungssegment von 80 bis 190 PS und definierte den Standard für Großbetriebe und Lohnunternehmen. Ein zentrales Merkmal war die EuroCab, die mit einem Lärmpegel von nur 72 dB(A) zu den leisesten Kabinen ihrer Zeit gehörte und durch das Agrotronic-System eine präzise elektronische Überwachung sowie Hubwerksregelung ermöglichte. Während der Großteil der Serie auf die bewährte luftgekühlte Motorentechnik der Serie 913 von DEUTZ vertraute, bildeten die Spitzenmodelle 6.71 und 6.81 eine Zäsur, da sie mit wassergekühlten MWM-Motoren und einem Full-Powershift-Getriebe von Same ausgestattet waren. Diese beiden Topmodelle waren das Ergebnis der Zusammenarbeit innerhalb der neuen Konzerngruppe, kämpften jedoch mit technischen Herausforderungen, insbesondere einer für die hohe Motorleistung teilweise unterdimensionierten Vorderachse und Abstimmungsschwierigkeiten im Triebwerk, die bei einer Überarbeitung behoben wurde (Vorderachse ersetzt druch SIGE-Achse). Historisch ist die Serie zudem von besonderer Bedeutung, da sie die letzte große Traktoren-Baureihe darstellt, die im Stammwerk in Köln vom Band lief, bevor die Produktion im Zuge der Einführung der Agrotron-Serie und struktureller Veränderungen nach Lauingen verlagert wurde. Durch diese Kombination aus maximalem Komfort der leisen Kabine und der Rolle als letzter „echter Kölner“ nimmt der AgroStar heute eine Sonderstellung in der Markenhistorie ein. {| class="wikitable" | 1990-1997 |- | '''Normalhaube''' (ab 1990) || '''Freisichthaube''' (ab 1993) |- | valign="top" | Vierzylinder: * {{:Traktorenlexikon: Create|AgroStar 4.61}} 60kW (82PS) * {{:Traktorenlexikon: Create|AgroStar 4.71}} 70kW (95PS) ---- Sechszylinder: * {{:Traktorenlexikon: Create|AgroStar 6.11}} 74kW (100PS) * {{:Traktorenlexikon: Create|AgroStar 6.21}} 83kW (113PS) * {{:Traktorenlexikon: Create|AgroStar 6.31}} 88kW (120PS) * {{:Traktorenlexikon: Create|AgroStar 6.61}} 105kW (143PS) * {{:Traktorenlexikon: Create|AgroStar 6.71}} 121kW (165PS) * {{:Traktorenlexikon: Create|AgroStar 6.81}} 136kW (185PS) | valign="top" | Vierzylinder: * {{:Traktorenlexikon: Create|AgroStar 4.68}} 67kW (91PS) * {{:Traktorenlexikon: Create|AgroStar 4.78}} 74kW (100PS) ---- Sechszylinder: * {{:Traktorenlexikon: Create|AgroStar 6.08}} 79kW (107PS) * {{:Traktorenlexikon: Create|AgroStar 6.28}} 85kW (115PS) * {{:Traktorenlexikon: Create|AgroStar 6.38}} 92kW (125PS) |- | valign="top" colspan="2" | '''Sonderform'''<!--„leicht schräge Haube“--> (1993–1995) * {{:Traktorenlexikon: Create|AgroStar 8.31}} 169kW (230PS) |} [[File:Agrostar 8.31.jpg|thumb|AgroStar 8.31]] Eine Ausnahme im AgroStar-Programm bildete der AgroStar 8.31 mit 230 PS als absolute Leistungsspitze des Deutz-Fahr-Programms und war als schwerer Ackerschlepper für den Weltmarkt konzipiert. Er basierte auf einer Kooperation mit dem US-Hersteller Allis-Gleaner Corporation (AGCO) und entsprach baugleich dem White 6215. Technisch unterschied er sich radikal von den kleineren Modellen: Er verfügte über einen luftgekühlten Deutz BF6L 513 FR Motor und ein Full-Powershift-Getriebe von Funk. Trotz seiner enormen Zugkraft blieb er mit nur geringen Stückzahlen ein Exot im Portfolio, der den Versuch markierte, im Segment der Knicklenker und Großtraktoren gegen US-Konkurrenz zu bestehen. === Agrosun === [[File:Agrosun 140 (6055469803).jpg|thumb|Agrosun 140]] Die Agrosun-Serie von Deutz-Fahr ist eine eher seltene Baureihe, die ab Ende der 1990er Jahre primär für Exportmärkte (unter anderem Osteuropa und Südamerika) produziert wurde. Sie kombinieren die robuste [[Traktorenlexikon: SAME|SAME]]-''Laser''-Reihe (aus dem Konzernverbund) mit den bewährten, luftgekühlten Deutz-Motoren der Baureihe 913 (BF6L). {| class="wikitable" | 1995-2004 |- | valign="top" | * {{:Traktorenlexikon: Create|Agrosun 100}} 74kW (100 PS) * {{:Traktorenlexikon: Create|Agrosun 120}} 88kW (120 PS) * {{:Traktorenlexikon: Create|Agrosun 140}} 103kW (140 PS) |} ---- <!-- Beginn Agrotron-Abschnitt --> === Agrotron === {{Wikipedia|Deutz-Fahr Agrotron}} Die Agrotron-Baureihe markiert im Jahr 1995 die radikalste technische und optische Zäsur in der Geschichte von Deutz-Fahr. Mit dem Ende der klassischen DX-Abstammung führte diese Serie die flächendeckende Wasserkühlung sowie das markante Design mit einer extrem flach abfallenden Motorhaube und einer rundum verglasten Panorama-Kabine ein, was eine bis dahin unerreichte Rundumsicht ermöglichte. Wurde die Reihe noch in Köln entwickelt, wanderte die Fertigung 1996 mit der Übernahme von Deutz-Fahr durch die SLH- bzw. SDF-Gruppe nach Lauingen, wo bis dato nur Mähdrescher und die größten Traktorenmodelle von KHD gefertigt wurden. Modelle unter dem Namen Agrotron werden bis heute (2026) produziert. Aus diesem Anlass bot Deutz-Fahr 2025 eine spezielle "30 Jahre Agrotron" -Edition an. ==== Agrotron (MK1–MK3) ==== [[File:DEUTZ-FAHR Agrotron 6.15 MK1.jpg|thumb|Agrotron 6.15 MK1]] Die erste Generation, der Agrotron MK1 (1995–1997), setzte konsequent auf moderne wassergekühlte Motoren und elektronisch gesteuerte Lastschaltgetriebe (ZF). Trotz des revolutionären Konzepts litt diese frühe Phase unter erheblichen Qualitätsproblemen, insbesondere in der Elektronik und der Verarbeitung, was den Ruf der Marke zeitweise belastete. Mit der Überarbeitung zum Agrotron MK2 (1997–2000) wurden viele dieser Kinderkrankheiten durch verbesserte Komponenten und eine stabilere Software behoben, was die Zuverlässigkeit deutlich steigerte. Die finale Stufe dieser Ära bildete der Agrotron MK3 (2000–2003), der durch die Einführung der B-Serie der wassergekühlten Motoren und eine weiter optimierte Kabinenausstattung als technisch ausgereift galt. In dieser Phase wurde auch die Bedienung durch das neue PowerCom-S-Bedienkonzept ergonomisch verfeinert. Die Agrotron-Modelle MK1 bis MK3 legten damit den Grundstein für die heutige Traktorengeneration von Deutz-Fahr, indem sie den Fokus endgültig von rein mechanischer Robustheit hin zu einer Kombination aus High-Tech-Elektronik, hoher Hydraulikleistung und maximalem Fahrkomfort verschoben. Die Typenbezeichnungen der Agrotrons aus den Jahren 1995 bis etwa 2008 sind dank diverser Varianten und mehrfacher Modellüberholungen vielfältig. * Modelle der ersten Baureihe (MK1) tragen einen Punkt in der Modellbezeichnung; die Nummer davor entspricht der Zylinderzahl. * Modelle der zweiten Baureihe (MK2) tragen einfache zwei- oder dreistellige Nummern, die sich an der Motorleistung in PS orientieren. * Modelle der dritten Baureihe (MK3) setzen das Nummerierungsschema der zweiten Reihe fort, tragen jedoch den Zusatz „MK3“ im Namen. Das steht für engl. mark 3 (sinngemäß „3. erreichte Qualitätsstufe“). {| class="wikitable" | '''Agrotron MK1-Reihe'''<br />(1995–1997) || '''Agrotron MK2-Reihe'''<br />(1997–2000) || '''Agrotron MK3-Reihe'''<br />(2000–2003) |- | valign="top" | <!-- MK1-Reihe, 1995–1997 --> * {{:Traktorenlexikon: Create|Agrotron 4.70}} 51kW (70PS) * {{:Traktorenlexikon: Create|Agrotron 4.80}} 55kW (75PS) * {{:Traktorenlexikon: Create|Agrotron 4.85}} 60kW (82PS) * {{:Traktorenlexikon: Create|Agrotron 4.90}} 65kW (88PS) * {{:Traktorenlexikon: Create|Agrotron 4.95}} 69kW (94PS) <!-- tt? http://www.dlg-test.de/pbdocs/traktoren/deutzfahr-agrotron495tt.pdf --> ---- * {{:Traktorenlexikon: Create|Agrotron 6.00}} 69kW (94PS) <!-- TT3 (1995) --> * {{:Traktorenlexikon: Create|Agrotron 6.01}} 73kW (100PS) * {{:Traktorenlexikon: Create|Agrotron 6.05}} 77kW (105PS) * {{:Traktorenlexikon: Create|Agrotron 6.15}} 85kW (115PS) <!--1996: http://www.dlg-test.de/pbdocs/traktoren/deutzfahr-agrotron615.pdf --> * {{:Traktorenlexikon: Create|Agrotron 6.20}} 88kW (120PS) * {{:Traktorenlexikon: Create|Agrotron 6.30}} 99kW (135PS) * {{:Traktorenlexikon: Create|Agrotron 6.45}} 107kW (145PS) | valign="top" | <!-- MK2-Reihe, 1997–2000 --> * {{:Traktorenlexikon: Create|Agrotron 80}} 59KW (80PS) * {{:Traktorenlexikon: Create|Agrotron 85}} 63kW (85PS) * {{:Traktorenlexikon: Create|Agrotron 90}} 66kW (90PS) * {{:Traktorenlexikon: Create|Agrotron 100}} 70kW (95PS) <!-- 1996: http://www.dlg-test.de/pbdocs/traktoren/deutzfahr-agrotron100.pdf --> * {{:Traktorenlexikon: Create|Agrotron 105}} 74kW (100PS) * {{:Traktorenlexikon: Create|Agrotron 106}} 74kW (100PS) * {{:Traktorenlexikon: Create|Agrotron 110}} 77kW (105PS) * {{:Traktorenlexikon: Create|Agrotron 115}} 85kW (115PS) * {{:Traktorenlexikon: Create|Agrotron 120}} 88kW (120PS) <!-- 2000: http://www.dlg-test.de/pbdocs/traktoren/deutzfahr-agrotron120.pdf --> * {{:Traktorenlexikon: Create|Agrotron 135}} 99kW (135PS) * {{:Traktorenlexikon: Create|Agrotron 150}} 110kW (150PS) * {{:Traktorenlexikon: Create|Agrotron 156}} 114kW (155PS) * {{:Traktorenlexikon: Create|Agrotron 160}} 118kW (160PS) * {{:Traktorenlexikon: Create|Agrotron 175}} 129kW (175PS) * {{:Traktorenlexikon: Create|Agrotron 200}} 147kW (200PS) * {{:Traktorenlexikon: Create|Agrotron 230}} 162kW (220PS) <!--1999: http://www.dlg-test.de/pbdocs/traktoren/deutzfahr-agrotron230.pdf --> * {{:Traktorenlexikon: Create|Agrotron 260}} 191kW (260PS) | valign="top" | <!-- MK3-Reihe, 2000–2003 --> * {{:Traktorenlexikon: Create|Agrotron 80 MK3}} 60kW (82PS) * {{:Traktorenlexikon: Create|Agrotron 85 MK3}} 66kW (90PS) * {{:Traktorenlexikon: Create|Agrotron 90 MK3}} 69kW (94PS) <!-- bis 2005 gebaut? http://www.dlg-test.de/pbdocs/traktoren/Deutz-Fahr_Agrotron_90_MK3.pdf --> * {{:Traktorenlexikon: Create|Agrotron 100 MK3}} 74kW (101PS) * {{:Traktorenlexikon: Create|Agrotron 105 MK3}} 77kW (105PS) * {{:Traktorenlexikon: Create|Agrotron 106 MK3}} 74kW (100PS) * {{:Traktorenlexikon: Create|Agrotron 110 MK3}} 80kW (109PS) <!-- bis 2005 gebaut? http://www.dlg-test.de/pbdocs/traktoren/deutz-fahr_agrotron110_mk3.pdf --> * {{:Traktorenlexikon: Create|Agrotron 115 MK3}} 87kW (118PS) * {{:Traktorenlexikon: Create|Agrotron 120 MK3}} 88kW (120PS) <!-- http://www.dlg-test.de/pbdocs/traktoren/deutzfahr-agrotron120mk3.pdf --> * {{:Traktorenlexikon: Create|Agrotron 135 MK3}} 100kw (136PS) <!-- http://www.dlg-test.de/pbdocs/traktoren/Deutz-Fahr_Agrotron_135_MK3.pdf --> * {{:Traktorenlexikon: Create|Agrotron 150 MK3}} 110kW (150PS) * {{:Traktorenlexikon: Create|Agrotron 165 MK3}} 121kW (165PS) * {{:Traktorenlexikon: Create|Agrotron 175 MK3}} 129kW (175PS) <!-- bis 2004? --> * {{:Traktorenlexikon: Create|Agrotron 200 MK3}} 147kW (200PS) <!-- bis 2004? --> * {{:Traktorenlexikon: Create|Agrotron 205 MK3}} 144kw (196PS) <!-- 2003/04 --> * {{:Traktorenlexikon: Create|Agrotron 230 MK3}} 171kW (233PS) * {{:Traktorenlexikon: Create|Agrotron 260 MK3}} 191kW (260PS) |} ==== Agrotron (Serie 4 / New Generation) ==== [[File:Deutz-Fahr Agrotron 130.jpg|thumb|Agrotron 130]] Die Agrotron-Serie 4 (oft als New Generation oder MK4 bezeichnet), produziert zwischen 2003 und 2007, stellte die finale Reifestufe des ursprünglichen Agrotron-Konzepts dar. Sie löste die MK3-Reihe ab und gilt unter Praktikern heute als eine der stabilsten und ausgereiftesten Baureihen, da sie die moderne Technik der Vorgänger mit einer deutlich höheren Fertigungsqualität und Standfestigkeit kombinierte. Technisch basierte die „New Generation“ auf den wassergekühlten Deutz-Motoren der Baureihe 2012, die nun flächendeckend die Euro-II-Abgasnorm erfüllten und für ihre Spritzigkeit sowie ihre effiziente Kraftentfaltung bekannt waren. Ein wesentliches Merkmal war die Einführung des vierstufigen Lastschaltgetriebes von ZF (7200er Serie), das in Verbindung mit der bewährten elektronischen Hubwerksregelung und einer leistungsstarken Axialkolbenpumpe für die Hydraulik eine hohe Arbeitsleistung garantierte. Optisch blieb das markante Freisicht-Design erhalten, wurde jedoch im Detail verfeinert. Die Kabine profitierte von einer nochmals verbesserten Schalldämmung und einer intuitiveren Anordnung der Bedienelemente, wie dem ergonomischen Multifunktionsgriff PowerCom-S. Mit dem MK4 schaffte Deutz-Fahr endgültig den Turnaround nach den schwierigen MK1-Jahren: Die Maschinen dieser Ära gelten als äußerst wertstabil und markieren den Übergang zu den späteren Baureihen (wie dem Agrotron K, M und TTV), indem sie bewiesen, dass das Agrotron-Konzept im harten Alltagseinsatz vollends zuverlässig sein kann. Die Typenbezeichnungen der Agrotrons aus den Jahren 1995 bis etwa 2008 sind dank diverser Varianten und mehrfacher Modellüberholungen vielfältig. * Bei der MK4-serie wurden überholte/weiterentwickelte „Nachfolgemodelle“ auf den Markt gebracht, die entweder vorher noch nicht benutzte Nummern tragen (teilweise mit Zusatz) oder aber Nummern der MK2- oder MK3-Reihe weiterverwenden (ohne Zusatz). ''Wir versuchen, hier etwas Ordnung ins Modell-Wirrwar zu bringen. Korrekturhinweise bitte auf der [[Diskussion:Traktorenlexikon: Deutz-Fahr|Diskussionsseite]] anbringen. Danke!'' {| class="wikitable" | '''Agrotron''' (MK4, „New“)<br />(2003–2008, z.T. bis 2010) |- | valign="top" | <!-- Nachfolge-Reihen "New" (2003–2005–2008) --> <!-- Liste "Agrotron New": 130, 140, 155, 165, 210, 235, 265 ODER 80, 90, 100, 105, 110, 130, 140, 150.7, 155, 165, 165.7 --> * {{:Traktorenlexikon: Create|Agrotron 80 (New)}} 60kW (82PS) <!-- 2003-2005 --> * {{:Traktorenlexikon: Create|Agrotron 90 (New)}} 65kW (88PS) <!-- 2003-2005, noch als MK3 bezeichnet? --> * {{:Traktorenlexikon: Create|Agrotron 100 (New)}} 73kW (99PS) <!-- 2004-2005, noch als MK3 bezeichnet? --> * {{:Traktorenlexikon: Create|Agrotron 105 (New)}} 74kW (100PS) <!-- 2003-2005, noch als MK3 bezeichnet? --> * {{:Traktorenlexikon: Create|Agrotron 108}} 80kW (109PS) <!-- 2003-2005, 106MK3-Nachfolger [http://www.dlv.de/grafiken/traktorenDB/pdf/2003/LZ311028.pdf] (2003) --> * {{:Traktorenlexikon: Create|Agrotron 110 (New)}} 74kW (100PS) <!-- 2003-2005, noch als MK3 bezeichnet? --> * {{:Traktorenlexikon: Create|Agrotron 118}} 90kW (122PS) <!-- 2003-2005, TT3-1 (2004), 110MK3-Nachfolger [http://www.fat.admin.ch/traktor/trak1867d.pdf] --> * {{:Traktorenlexikon: Create|Agrotron 120 (New)}} 80kW (109PS) <!--TT 2005-2008 --> * {{:Traktorenlexikon: Create|Agrotron 128}} 93kW (126PS) <!-- 2003-2005, 115MK3-Nachfolger --> * {{:Traktorenlexikon: Create|Agrotron 130}} 94kW (128PS) <!-- zwei unterschiedlich starke Modelle 2003-2005-2008 --> * {{:Traktorenlexikon: Create|Agrotron 130 (NEW)}} 90kW (122PS) * {{:Traktorenlexikon: Create|Agrotron 140}} 105kW (143PS) <!-- 2003-2005 --> * {{:Traktorenlexikon: Create|Agrotron 150 (New)}} 107kW (145PS) <!-- 2005-2008, TT3 (2007); 2006: http://www.dlg-test.de/pbdocs/traktoren/Deutz-Fahr_Agrotron_150.pdf --> * {{:Traktorenlexikon: Create|Agrotron 150.7}} 107kW (145PS) <!-- 2005-2007/08 http://www.dlg-test.de/pbdocs/traktoren/Deutz-Fahr_Agrotron_150_7.pdf --> * {{:Traktorenlexikon: Create|Agrotron 155}} 113kW (153PS) <!-- 2003-2005 --> * {{:Traktorenlexikon: Create|Agrotron 165 (New)}} 120kW (163PS) <!-- 2003-2004/05 --> * {{:Traktorenlexikon: Create|Agrotron 165.7}} 121kW (165PS) <!-- 2005-2007/08, nur Profiline? --> * {{:Traktorenlexikon: Create|Agrotron 180.7}} 125kW (170PS) <!-- 2005-2007/08, nur Profiline? --> * {{:Traktorenlexikon: Create|Agrotron 200 (New)}} 151kW (205PS) <!-- 2003-2005-2008, zwei Modelle? Übergang zum L 720? --> * {{:Traktorenlexikon: Create|Agrotron 210}} 146kW (198PS) <!--2003-2005 http://www.dlg-test.de/pbdocs/traktoren/Deutz-FahrAgrotron210_2004.pdf --> * {{:Traktorenlexikon: Create|Agrotron 215}} 147kW (200PS) <!-- 2004–2005-2007-2010US --> * {{:Traktorenlexikon: Create|Agrotron 235}} 170kW (231PS) <!-- 2003-2005 --> * {{:Traktorenlexikon: Create|Agrotron 265}} 184kW (250PS) <!-- 2003-2005-2008-2010US: zwei leicht unterschiedliche Modelle --> |} ==== Agrotron TTV ==== [[File:TTV 630.JPG|thumb|Agrotron TTV 630]] Die Agrotron TTV-Baureihe, eingeführt ab dem Jahr 2001 (mit dem TTV 1160), markierte den Einstieg von Deutz-Fahr in die Ära der stufenlosen Antriebstechnik. Während die Standard-Agrotrons auf Lastschaltgetriebe setzten, verfügten die TTV-Modelle über das leistungsverzweigte S-Matic-Getriebe von ZF, das eine stufenlose Beschleunigung von 0 bis 50 km/h ohne Zugkraftunterbrechung ermöglichte. Technisch kombinierten diese Schlepper die bewährte Freisicht-Philosophie und die wassergekühlten Deutz-Motoren mit einem völlig neuen Bedienkonzept. Ein zentrales Element war der PowerCom-S-Multifunktionsgriff, über den der Fahrer die gesamte Geschwindigkeit, Fahrtrichtung und die Hydraulikfunktionen mit einer Hand steuern konnte. In den Folgejahren wurde die Serie stetig erweitert, wobei die Generationen analog zur Entwicklung der M- und L-Serie (ca. 2007 bis 2013) durch modernere Deutz-Common-Rail-Motoren (DCR) und eine leistungsfähigere Elektronik mit iMonitor-Schnittstelle ergänzt wurden. Der Agrotron TTV positionierte sich als technologisches Aushängeschild der Marke für anspruchsvolle Ackerbau- und Transportbetriebe, die maximale Effizienz bei reduziertem Kraftstoffverbrauch suchten. Er bewies, dass das ursprüngliche Agrotron-Konzept auch in der Oberklasse der stufenlosen Getriebetechnik voll konkurrenzfähig war und legte den Grundstein für die heutige 6er, 7er und 8er TTV-Großtraktorenfamilie. {| class="wikitable" | '''erste TTV-Reihe''' (2001-2007) || '''zweite TTV-Reihe''' (2008-2012) || '''TTV 400''' (2011-2013) |- | valign="top" | <!-- erste Reihe ab 2001 --> * {{:Traktorenlexikon: Create|Agrotron TTV 1130}} 92kW (125PS) * {{:Traktorenlexikon: Create|Agrotron TTV 1145}} 103kW (140PS) * {{:Traktorenlexikon: Create|Agrotron TTV 1160}} 110kW (150PS) | valign="top" | <!-- zweite Reihe ab 2008 --> * {{:Traktorenlexikon: Create|Agrotron TTV 610}} 115kW (157PS) * {{:Traktorenlexikon: Create|Agrotron TTV 620}} 120kW (163PS) * {{:Traktorenlexikon: Create|Agrotron TTV 630}} 149kW (203PS) | valign="top" | <!-- TTV 400 --> * {{:Traktorenlexikon: Create|Agrotron TTV 410}} 73kW (99PS) * {{:Traktorenlexikon: Create|Agrotron TTV 420}} 81kW (110PS) * {{:Traktorenlexikon: Create|Agrotron TTV 430}} 91kW (124PS) |} ==== Agrotron K ==== [[File:Deutz-Fahr Agrotron K100.jpg|thumb|Agrotron K100]] Die Agrotron K-Baureihe, produziert zwischen 2005 und 2013, wurde als kompakter und wendiger Allrounder unterhalb der größeren M-Serie positioniert. Sie löste die kleineren Agrotron-Modelle (wie den 80 bis 105) ab und war speziell für gemischte Betriebe, Grünlandwirtschaft und den Frontladereinsatz konzipiert. Die Serie umfasste Modelle wie den K 90, 100, 110 und später die stärkeren K 410, 420 und 430. Technisch setzten die K-Modelle auf die wassergekühlten Deutz-Vierzylindermotoren der Baureihe 2012 (später 2013), die sich durch ein kompaktes Maß und eine hohe Drehmomentreserve auszeichneten. Ein wesentliches Merkmal war das bewährte ZF-Getriebe mit dreifacher Lastschaltung, das eine feine Abstufung für die tägliche Arbeit bot. Trotz ihrer kompakteren Abmessungen verfügten die Schlepper über die vollwertige Agrotron-Kabine, die eine exzellente Rundumsicht bot und in der „Profiline“-Ausstattung sogar über eine elektronische Steuergerätebedienung am Multifunktionsgriff verfügte. {| class="wikitable" | '''1. K-Reihe''' (2005–2009) || '''2. K-Reihe''' (2008–2013) |- | valign="top" | * {{:Traktorenlexikon: Create|Agrotron K 90}} 62kW (84 PS) * {{:Traktorenlexikon: Create|Agrotron K 100}} 70kW (95 PS) * {{:Traktorenlexikon: Create|Agrotron K 110}} 76kW (104 PS) * {{:Traktorenlexikon: Create|Agrotron K 120}} 85kW (115 PS) | valign="top" | * {{:Traktorenlexikon: Create|Agrotron K 410}} 65kW (89 PS) * {{:Traktorenlexikon: Create|Agrotron K 420}} 74kW (100 PS) * {{:Traktorenlexikon: Create|Agrotron K 430}} 82kW (112 PS) * {{:Traktorenlexikon: Create|Agrotron K 610}} 82kW (112 PS) |} ==== Agrotron M ==== [[File:Deutz-Fahr Agrotron M620 mit Anhänger.jpg|thumb|Agrotron M620]] Die Agrotron M-Baureihe, produziert zwischen 2007 und 2013, war das Herzstück des Deutz-Fahr-Programms im mittleren und gehobenen Leistungssegment von ca. 110 bis 190 PS. Sie löste die erfolgreichen Modelle der Agrotron 100er-Serie sowie die „New Generation“ (MK4) ab und basierte auf einem technisch ausgereiften Konzept, das Zuverlässigkeit mit moderner Common-Rail-Technologie verband. Technisch setzten die M-Modelle (wie der M 600, 620 oder 650) flächendeckend auf die Deutz-Sechszylindermotoren (TCD 2012 L06) mit dem DCR-System (Deutz Common Rail). Diese Motoren zeichneten sich durch eine effiziente Verbrennung und eine hohe Drehmomentreserve aus. Kraftübertragungstechnisch kam das bewährte ZF-Triebwerk (7200er Serie) mit vierfacher Lastschaltung zum Einsatz, das für seine Langlebigkeit und den hohen Wirkungsgrad bekannt war. Ein besonderes Merkmal war die Wahlmöglichkeit bei der Ausstattung: Während die Basismodelle mechanische Steuergeräte besaßen, bot die Profiline-Ausstattung eine voll-elektronische Bedienung über den PowerCom-S-Multifunktionsgriff. Die Agrotron M haben Schwestermodelle im [[Traktorenlexikon: SAME Deutz-Fahr|SDF-Konzern]] mit der Motorhaube in silber die [[Traktorenlexikon: Lamborghini#R6|Lamborghini R6]], mit orange-roten Motorhauben die [[Traktorenlexikon: SAME#Iron|SAME Iron]] und die [[Traktorenlexikon: Hürlimann#XL|Hürlimann XL]]. {| class="wikitable" | colspan="2" | '''2008-2013''' |- | || NaturalPower (Rapsölbetrieb) |- | valign="top" | * {{:Traktorenlexikon: Create|Agrotron M 600}} 89kW (121 PS) * {{:Traktorenlexikon: Create|Agrotron M 610}} 97kW (132 PS) * {{:Traktorenlexikon: Create|Agrotron M 620}} 114kW (155 PS) * {{:Traktorenlexikon: Create|Agrotron M 640}} 126kW (171 PS) * {{:Traktorenlexikon: Create|Agrotron M 650}} 133kW (181 PS) | valign="top" | * {{:Traktorenlexikon: Create|Agrotron M 600 NaturalPower}} * {{:Traktorenlexikon: Create|Agrotron M 610 NaturalPower}} * {{:Traktorenlexikon: Create|Agrotron M 620 NaturalPower}} * {{:Traktorenlexikon: Create|Agrotron M 640 NaturalPower}} * {{:Traktorenlexikon: Create|Agrotron M 650 NaturalPower}} |- | colspan="2" | '''2010-2013''' |- | 4 Zylinder || 6 Zylinder |- | valign="top" | * {{:Traktorenlexikon: Create|Agrotron M 410}} 99kW (134 PS) * {{:Traktorenlexikon: Create|Agrotron M 420}} 113kW (154 PS) | valign="top" | * {{:Traktorenlexikon: Create|Agrotron M 615}} 107kW (146 PS) * {{:Traktorenlexikon: Create|Agrotron M 625}} 120kW (163 PS) |} ==== Agrotron L ==== [[File:Deutz-Fahr Agrotron L 720 Tractor at IndAgra Farm Romexpo 2010 (front view).JPG|thumb|Agrotron L 720]] Die Agrotron L-Baureihe, produziert zwischen 2007 und 2013, war als großvolumige Ergänzung zur M-Serie konzipiert und deckte das obere Segment der Sechszylinder-Traktoren bis etwa 210 PS ab. Im Gegensatz zu den kleineren Modellen, die primär auf ZF-Komponenten setzten, markierte die L-Serie eine engere technische Verflechtung innerhalb des SDF-Konzerns (Same Deutz-Fahr). Technisch basierte die Baureihe zwar auf den bewährten Deutz-Motoren (TCD 2012 L06) mit Common-Rail-Einspritzung, griff jedoch bei der Kraftübertragung auf eine Same-Basis zurück. Das verbaute Triebwerk stammte aus der Entwicklung von Same und kam baugleich auch in Modellen wie dem Same Iron Continuity oder dem Lamborghini R7 zum Einsatz. Dieses Getriebe verfügte über eine 9-stufige Lastschaltung (insgesamt 27 Vorwärts- und 27 Rückwärtsgänge), was dem Fahrer eine extrem feine Abstufung im Hauptarbeitsbereich ermöglichte, jedoch in der Bedienung eine Umstellung zu den ZF-basierten Modellen darstellte. Die Agrotron L-Modelle, wie der L 710, 720 und 730, waren für schwere Zugarbeiten optimiert und verfügten über eine massivere Hinterachse sowie eine enorme Hubkraft. Trotz der hohen Leistungsfähigkeit blieb die Serie ein Nischenmodell, da die Kooperation mit der Same-Getriebetechnik in der 200-PS-Klasse bei klassischen Deutz-Kunden auf ein geteiltes Echo stieß. Dennoch gilt die L-Serie heute als robuste Maschine für Betriebe, die eine schwere Lastschaltmaschine mit dem Komfort der Panorama-Kabine suchten, bevor sie durch die Serie 7 abgelöst wurde. {| class="wikitable" | 2008-2013 |- | valign="top" | * {{:Traktorenlexikon: Create|Agrotron L 710}} 138kW (187 PS) * {{:Traktorenlexikon: Create|Agrotron L 720}} 145kW (197 PS) * {{:Traktorenlexikon: Create|Agrotron L 730}} 162kW (220 PS) |} ==== Agrotron X ==== [[File:Belagro-2019 (foreign manufacturers) 016.jpg|thumb|Agrotron X720]] Die Agrotron X-Baureihe, produziert zwischen 2007 und 2013, bildete die absolute Leistungsspitze von Deutz-Fahr im Bereich der schweren Ackerschlepper. Im Gegensatz zur L-Serie, die auf SDF-Komponenten basierte, griff man bei den Flaggschiffen wieder auf eine bewährte Kombination aus deutschen Kernkomponenten zurück, um maximale Zuverlässigkeit bei Leistungen bis zu 275 PS zu garantieren. Das Herzstück der Kraftübertragung bildete das ZF-Powershift-Getriebe (Typ T 7300) mit 40 Vorwärts- und 40 Rückwärtsgängen. Die technische Besonderheit, die den Agrotron X von vielen Wettbewerbern abhob, war der Einsatz einer Voith-Strömungskupplung (Turbokupplung). Diese ermöglichte ein extrem verschleißfreies und sanftes Anfahren selbst unter schwerster Last und schützte den Motor sowie das Getriebe vor Drehmomentspitzen – ein Merkmal, das besonders bei schweren Zugarbeiten und Transporten mit hohen Lasten geschätzt wurde. Unter der Haube arbeiteten die großvolumigen 7,1-Liter-Deutz-Motoren (TCD 2013 L06 4V), die dank Common-Rail-Technik und elektronischer Motorregelung (DPC) enorme Kraftreserven mobilisierten. Die Kombination aus dem ZF-Triebwerk, der Voith-Kupplung und der bewährten Panorama-Kabine machte den Agrotron X zu einem hocheffizienten Traktor. Er war die letzte große Lastschalt-Bastion der Marke in dieser Leistungsklasse, bevor die Entwicklung mit der Serie 9 vollständig auf stufenlose Antriebe umgestellt wurde. {| class="wikitable" | 2007-2013 |- | valign="top" | * {{:Traktorenlexikon: Create|Agrotron X 710}} 161kW (219 PS) * {{:Traktorenlexikon: Create|Agrotron X 720}} 193kW (262 PS) * {{:Traktorenlexikon: Create|Agrotron X 730}} 224kW (305 PS) |} ==== Agrotron Serie 5 ==== [[File:Deutz-Fahr Agrotron 5120C.jpg|thumb|Deutz-Fahr Agrotron 5120C]] Die Serie 5, eingeführt im Jahr 2013, gliederte das Segment zwischen 70 und 130 PS in vier spezialisierte Unterbaureihen, um unterschiedliche Anforderungsprofile abzudecken. Während die Standard-Serie 5 als High-Tech-Flaggschiff mit Deutz-Motoren (TCD 3.6) und optionalem stufenlosem TTV-Getriebe den oberen Bereich markierte, bot die Serie 5C einen kompakten, gehobenen Allrounder mit Fokus auf Frontladerarbeiten. Im preisbewussten Mittelfeld positionierte sich die Serie 5G, die modular aufgebaut war und verstärkt auf die konzerneigenen SDF-FARMotion-Motoren setzte, gefolgt von der Serie 5D als schmalerem Nachfolger des Agroplus für Hof- und Kommunaleinsätze. Allen Modellen gemeinsam war das moderne Design sowie technische Features wie das SenseClutch-System, womit Deutz-Fahr die Flexibilität in der Kompaktklasse massiv steigerte. Ab 2013. {| class="wikitable" | '''Serie 5''' || '''Serie 5C''' || '''Serie 5D''' || '''Serie 5G''' |- | valign="top" | * {{:Traktorenlexikon: Create|Agrotron 5100}} * {{:Traktorenlexikon: Create|Agrotron 5110}} * {{:Traktorenlexikon: Create|Agrotron 5120}} * {{:Traktorenlexikon: Create|Agrotron 5130}} | valign="top" | * {{:Traktorenlexikon: Create|5090 C}} * {{:Traktorenlexikon: Create|5100 C}} * {{:Traktorenlexikon: Create|5110 C}} * {{:Traktorenlexikon: Create|5120 C}} | valign="top" | * {{:Traktorenlexikon: Create|5080 D}} * {{:Traktorenlexikon: Create|5090 D}} * {{:Traktorenlexikon: Create|5090.4 D}} * {{:Traktorenlexikon: Create|5100.4 D}} | valign="top" | * {{:Traktorenlexikon: Create|5090 G}} * {{:Traktorenlexikon: Create|5090.4 G}} * {{:Traktorenlexikon: Create|5100 G}} * {{:Traktorenlexikon: Create|5105.4 G}} * {{:Traktorenlexikon: Create|5115.4 G}} |} Ab 2014. {| class="wikitable" | '''Serie 5D''' || '''Serie 5G''' |- | valign="top" | * {{:Traktorenlexikon: Create|Agrotron 5080 D}} * {{:Traktorenlexikon: Create|Agrotron 5090 D}} * {{:Traktorenlexikon: Create|Agrotron 5090.4 D}} * {{:Traktorenlexikon: Create|Agrotron 5100.4 D}} | valign="top" | * {{:Traktorenlexikon: Create|Agrotron 5080 G}} * {{:Traktorenlexikon: Create|Agrotron 5090 G}} * {{:Traktorenlexikon: Create|Agrotron 5100 G}} * {{:Traktorenlexikon: Create|Agrotron 5090.4 G}} * {{:Traktorenlexikon: Create|Agrotron 5105.4 G}} * {{:Traktorenlexikon: Create|Agrotron 5115.4 G}} |} Stand 2017: Der Name Agrotron ist bei der '''Serie 5''' im Netz nicht mehr zu finden, deshalb siehe [[Traktorenlexikon: Deutz-Fahr#Serie 5|Serie 5]] als Nachfolger oder Fortführung der hier beschriebenen Modelle. ==== Agrotron Serie 6 ==== [[File:Serie 6 TTV.jpg|thumb|Agrotron 6180 TTV]] Die Serie 6, eingeführt im Jahr 2013, löste die Agrotron M-Baureihe ab und bildete das technologische Rückgrat von Deutz-Fahr im Leistungsbereich von ca. 120 bis 210 PS. Diese Generation markierte den Übergang zur Abgasstufe 3b (Tier 4i), was den Einsatz von SCR-Technologie (AdBlue) bei den bewährten Deutz-TCD-Motoren (4,1 und 6,1 Liter) erforderlich machte. Ein zentrales Merkmal dieser Serie war die konsequente Trennung der Getriebekonzepte bei weitgehend identischer Optik: Die Powershift-Modelle setzten weiterhin auf die robusten ZF-Lastschaltgetriebe (7200er-Serie), während die TTV-Modelle mit dem stufenlosen S-Matic-Getriebe ausgestattet waren. Neu eingeführt wurde zudem die CShift-Variante, die ein elektrohydraulisches Schalten der sechs Gänge per Joystick ermöglichte, ohne die Kupplung oder den Schalthebel zu betätigen. Optisch wurde das Design durch die Zusammenarbeit mit Giugiaro Design modernisiert, wobei die markante Panorama-Kabine in der MaxiVision-Ausführung ihren Standard definierte – inklusive einer verbesserten Geräuschdämmung und des iMonitor 2.0. Durch die enorme Modellvielfalt, die vom kompakten Vierzylinder bis zum schweren Sechszylinder reichte, festigte die Serie 6 die Marktposition von Deutz-Fahr als Anbieter hochmoderner, effizienter Allround- und Ackerschlepper. {| class="wikitable" | 2013-2016/2017 |- | 4 Zylinder || 6 Zylinder |- | valign="top" | * {{:Traktorenlexikon: Create|Agrotron 6120.4}} (114 PS) * {{:Traktorenlexikon: Create|Agrotron 6130.4}} (124 PS) * {{:Traktorenlexikon: Create|Agrotron 6140.4}} (130 PS) * {{:Traktorenlexikon: Create|Agrotron 6150.4}} (137 PS) * {{:Traktorenlexikon: Create|Agrotron 6160.4}} (156 PS) | valign="top" | * {{:Traktorenlexikon: Create|Agrotron 6140}} (144 PS) * {{:Traktorenlexikon: Create|Agrotron 6150}} (150 PS) * {{:Traktorenlexikon: Create|Agrotron 6160}} (158 PS) * {{:Traktorenlexikon: Create|Agrotron 6180}} (167 PS) * {{:Traktorenlexikon: Create|Agrotron 6190}} (184 PS) * {{:Traktorenlexikon: Create|Agrotron 6210}} (210 PS) |} Die Serie 6 wurde 2016/2017 überarbeitet und bekam neue Typennummern, siehe auch die Schwestermodelle von [[Traktorenlexikon: Lamborghini#Spark|Lamborghini]].Die Lamborghini-Modelle haben einen 3,8 l FARMotion-Motor und die Deutz-Fahr-Modelle den Deutz 3,6 l Motor! Die '''"kleine" Serie 6''' der 2. Generation: {| class="wikitable" | valign="top" | {{:Traktorenlexikon: Create|Agrotron 6120}} (120 PS) {{:Traktorenlexikon: Create|Agrotron 6130}} (125 PS) Boost: (135 PS) {{:Traktorenlexikon: Create|Agrotron 6140}} (130 PS) Boost: (143 PS) |} Die '''"große" Serie 6''' der 2. Generation: {| class="wikitable" | 4 Zylinder || 6 Zylinder |- | valign="top" | * {{:Traktorenlexikon: Create|Agrotron 6145.4}} (137 PS) * {{:Traktorenlexikon: Create|Agrotron 6155.4}} (149 PS) * {{:Traktorenlexikon: Create|Agrotron 6165.4}} (157 PS) EU 2015/96: 163 PS * {{:Traktorenlexikon: Create|Agrotron 6175.4}} (163 PS) | valign="top" | * {{:Traktorenlexikon: Create|Agrotron 6155}} (149 PS) * {{:Traktorenlexikon: Create|Agrotron 6165}} (157 PS) * {{:Traktorenlexikon: Create|Agrotron 6175}} (169 PS) * {{:Traktorenlexikon: Create|Agrotron 6185}} (181 PS) * {{:Traktorenlexikon: Create|Agrotron 6205}} (196 PS) * {{:Traktorenlexikon: Create|Agrotron 6215}} (201 PS) EU 2015/96: 214 PS |} ==== Agrotron Serie 7 ==== [[File:Deutz-Fahr Agrotron 7250 TTV.jpg|thumb|Agrotron 7250 TTV]] Die Serie 7, eingeführt im Jahr 2013, positionierte sich als leistungsstarke, ausschließlich stufenlose Baureihe zwischen der Serie 6 und den Großtraktoren. Die Premierengeneration (7210 bis 7250 TTV) nutzte 6,1-Liter-Deutz-Motoren und das bewährte ZF-S-Matic-Getriebe, ergänzt durch technische Besonderheiten wie externe Scheibenbremsen an der Vorderachse. Mit den Überarbeitungen ab 2016 (Stage IV) und 2021 (Stage V) hielten die MaxiVision-II-Kabine, eine leistungsstärkere Hydraulik sowie das neue SDF-Hinterwagenkonzept Einzug. Dank des markanten Giugiaro-Designs und der konsequenten Ausrichtung auf Effizienz etablierte sich die Serie als Standardmaschine für Lohnunternehmer und anspruchsvolle Ackerbaubetriebe im Bereich bis 250 PS. '''Leistungsangaben''' sind hier wahrscheinlich die max. mit Boost oder ähnlichem! {| class="wikitable" ! '''Serie 7''' |- | 2013-2016 |- | valign="top" | * {{:Traktorenlexikon: Create|Agrotron 7210}} (224 PS) * {{:Traktorenlexikon: Create|Agrotron 7230}} (245 PS) * {{:Traktorenlexikon: Create|Agrotron 7250}} (263 PS) |- | 2016-2021 |- | valign="top" | * {{:Traktorenlexikon: Create|Agrotron 7230}} (226 PS) * {{:Traktorenlexikon: Create|Agrotron 7250}} (246 PS) |} ---- <!-- Ende Agrotron-Abschnitt --> === Agrokid === [[File:Deutz-Fahr AgroKid.jpg|thumb|Deutz-Fahr AgroKid]] Der Agrokid, produziert von 1996 bis 2020, war der kompakteste Schlepper im Portfolio von Deutz-Fahr und als wendiger Kleintraktor für den Garten- und Landschaftsbau, Kommunaleinsätze sowie als Hofschlepper konzipiert. Er deckte einen Leistungsbereich von etwa 30 bis 50 PS ab. Technisch basierte der Agrokid auf einer engen Zusammenarbeit innerhalb des SDF-Konzerns und nutzte japanische Mitsubishi-Vierzylindermotoren. Diese galten als extrem zuverlässig, laufruhig und sparsam. Das Getriebe verfügte in der Regel über 12 Vorwärts- und 12 Rückwärtsgänge mit synchronisierter Wendeschaltung, was zusammen mit dem hohen Lenkeinschlag für eine überragende Manövrierfähigkeit auf engstem Raum sorgte. Ein wesentliches Merkmal war die für diese Größenklasse sehr geräumige und komfortable Kabine (oder optional eine offene Plattform), die eine gute Rundumsicht bot. Trotz seiner geringen Abmessungen verfügte der Agrokid über eine vollwertige Heckhydraulik und Zapfwellenausstattung, ergänzt durch optionale Frontkraftheber und Zwischenachszapfwellen für Mäharbeiten. Nach über zwei Jahrzehnten am Markt wurde der Agrokid schließlich durch die neue Serie 3 abgelöst, bleibt aber aufgr {| class="wikitable" | colspan="2" | ab 1996 bis 2020 |- | valign="top" | * {{:Traktorenlexikon: Create|Agrokid 25}} 20kW (27PS) * {{:Traktorenlexikon: Create|Agrokid 30}} 24kW (33PS) * {{:Traktorenlexikon: Create|Agrokid 35}} 26kW (35PS) * {{:Traktorenlexikon: Create|Agrokid 40}} 29kW (40PS) * {{:Traktorenlexikon: Create|Agrokid 45}} 31kW (42PS) * {{:Traktorenlexikon: Create|Agrokid 50}} 35kW (47PS) | valign="top" | * {{:Traktorenlexikon: Create|Agrokid 210}} 26kW (35PS) * {{:Traktorenlexikon: Create|Agrokid 220}} 30kW (41PS) * {{:Traktorenlexikon: Create|Agrokid 230}} 35kw (47PS) |} === Agroplus === [[Datei:Deutz-Fahr Agroplus 67.JPG|thumb|[[Traktorenlexikon: Deutz-Fahr Agroplus 67|Agroplus 67]]]] [[Datei:Deutz-Fahr Agroplus 70.jpg|thumb|[[Traktorenlexikon: Deutz-Fahr Agroplus 70|Agroplus 70]]]] [[File:Deutz-Fahr Agroplus 410.JPG|thumb|Deutz-Fahr Agroplus 410]] Der Agroplus, eingeführt im Jahr 1996, wurde als kompakte und vielseitige Ergänzung zum Agrotron konzipiert, um das Segment der Standard-Kompaktschlepper zwischen 60 und 95 PS abzudecken. Er war die Antwort auf die Nachfrage nach einer wendigen Maschine für Grünlandbetriebe, Sonderkulturen und den Frontladereinsatz. Technisch markierte der Agroplus eine Besonderheit im Deutz-Fahr-Programm: Da er eine Gemeinschaftsentwicklung innerhalb des SDF-Konzerns war, kam hier eine Mischung aus deutscher und italienischer Technik zum Einsatz. Während die ersten Modelle (wie der Agroplus 70, 80 und 100) noch mit wassergekühlten Deutz-Motoren der Serie 1012 ausgestattet waren, verfügte das Getriebe über eine Same-Basis. Dieses bot meist 15 Vorwärts- und 15 Rückwärtsgänge sowie eine dreistufige Lastschaltung (Powershift), was für diese Klasse damals ein hohes Maß an Komfort darstellte. Charakteristisch für den Agroplus war die flache Bauweise und die gute Übersichtlichkeit, kombiniert mit einer für damalige Verhältnisse modernen Kabine, die jedoch kompakter ausfiel als die des Agrotrons. Über die Jahre wurde die Serie mehrfach überarbeitet, wobei später auch die luftgekühlten Motoren der Serie 913 (in den Modellen 60 bis 80) oder die SDF-1000er-Motoren Einzug hielten. Der Agroplus etablierte sich als robuster Allrounder und bildete die Grundlage für die spätere Serie 5D, indem er die Brücke zwischen dem kleinen Agrokid und den großen Agrotrons schlug. {| class="wikitable" | '''Standardtraktoren''' (ab 1996) || '''Schmalspurtraktoren''' |- | valign="top" | * {{:Traktorenlexikon: Create|Agroplus 60}} * {{:Traktorenlexikon: Create|Agroplus 67}} * {{:Traktorenlexikon: Create|Agroplus 70}} * {{:Traktorenlexikon: Create|Agroplus 75}} * {{:Traktorenlexikon: Create|Agroplus 77}} * {{:Traktorenlexikon: Create|Agroplus 80}} * {{:Traktorenlexikon: Create|Agroplus 85}} * {{:Traktorenlexikon: Create|Agroplus 87}} * {{:Traktorenlexikon: Create|Agroplus 95 new}} * {{:Traktorenlexikon: Create|Agroplus 95}} * {{:Traktorenlexikon: Create|Agroplus 100}} ---- * {{:Traktorenlexikon: Create|Agroplus 310}} * {{:Traktorenlexikon: Create|Agroplus 320}} * {{:Traktorenlexikon: Create|Agroplus 410}} * {{:Traktorenlexikon: Create|Agroplus 420}} | valign="top" | * {{:Traktorenlexikon: Create|Agroplus S 70}} * {{:Traktorenlexikon: Create|Agroplus S 75}} * {{:Traktorenlexikon: Create|Agroplus S 90}} * {{:Traktorenlexikon: Create|Agroplus S 100}} ---- * {{:Traktorenlexikon: Create|Agroplus S 320}} * {{:Traktorenlexikon: Create|Agroplus S 410}} * {{:Traktorenlexikon: Create|Agroplus S 420}} ---- * {{:Traktorenlexikon: Create|Agroplus F 320}} * {{:Traktorenlexikon: Create|Agroplus F 410}} * {{:Traktorenlexikon: Create|Agroplus F 420}} ---- * {{:Traktorenlexikon: Create|Agroplus V 320}} * {{:Traktorenlexikon: Create|Agroplus V 410}} * {{:Traktorenlexikon: Create|Agroplus V 420}} |} Die Agroplusreihen weisen wahrscheinlich noch Lücken auf. ==== Agroplus F Keyline ==== [[File:Deutz-Fahr Agroplus 15 F tractor at IndAgra Farm Romexpo 2010.JPG|thumb|Deutz-Fahr Agroplus 15 F tractor at IndAgra Farm Romexpo 2010]] Die Agroplus F Keyline-Serie ist als kosteneffiziente, mechanische Lösung für den Obst- und Weinbau sowie kommunale Einsätze konzipiert. Angetrieben von kompakten SDF FARMotion-Dreizylindermotoren, setzt die Baureihe auf einfache Robustheit ohne komplexe Elektronik. Das voll synchronisierte Wendegetriebe und das serienmäßige Vierrad-Bremssystem gewährleisten sicheres Arbeiten in Hanglagen, während die schmale Bauweise und der hohe Lenkeinschlag maximale Wendigkeit in engen Kulturen ermöglichen. Als primär offener Plattformschlepper bietet er eine niedrige Bauhöhe und reduziert die Technik auf das wesentliche Fundament für Wartungsfreundlichkeit und Wirtschaftlichkeit. Modelle: Die Schwestermodelle von [[Traktorenlexikon: Lamborghini#Spire|Lamborghini]] sind die RF Trend-Serie und bei [[Traktorenlexikon: SAME#Frutteto|SAME]] die Frutteto-Serie. {| class="wikitable" ! bis ~ 2018 || ab ~ 2018 |- ! SDF-Motor || FARMotion Motor |- | valign="top" | * {{:Traktorenlexikon: Create|Agroplus 55F Keyline}} 41 kW (55 PS) * {{:Traktorenlexikon: Create|Agroplus 65F Keyline}} 46 kW (62 PS) * {{:Traktorenlexikon: Create|Agroplus 75F Keyline}} 53 kW (72 PS) * {{:Traktorenlexikon: Create|Agroplus 80.4F Keyline}} 55 kW (75 PS) | valign="top" | * {{:Traktorenlexikon: Create|Agroplus 70F Keyline}} 48 kW (65 PS) * {{:Traktorenlexikon: Create|Agroplus 80F Keyline}} 55 kW (75 PS) * {{:Traktorenlexikon: Create|Agroplus 80.4F Keyline}} 55 kW (75 PS) |} === Agrocompact === [[File:Deutz-Fahr Agrocompact 70F3 Traktor.jpg|thumb|Agrocompact 70F]] Die Agrocompact-Baureihe, produziert zwischen 1996 und ca. 2004, war die spezialisierte Antwort von Deutz-Fahr auf die Anforderungen im Wein- und Obstbau. Sie basierte technisch weitgehend auf der Agroplus-Plattform, wurde jedoch durch extrem schmale Spurweiten und kompakte Abmessungen für den Einsatz in engen Plantagen optimiert. Als Antrieb dienten die luftgekühlten Deutz-Motoren der Serie 913 (3- und 4-Zylinder), die für ihre Robustheit und einfache Wartung bekannt waren, sowie teils wassergekühlte Motoren in den stärkeren Modellen (z. B. Agrocompact 90). Die Kraftübertragung erfolgte über ein Same-basiertes Getriebe, das mit einer dreistufigen Lastschaltung ausgestattet werden konnte und dem Fahrer hohe Flexibilität bei wechselnden Bodenverhältnissen bot. Besonderes Merkmal war die Wahlmöglichkeit zwischen verschiedenen Breiten (F für Obstbau und V für den schmalen Weinbau) sowie die Integration eines leistungsstarken Hydrauliksystems für Spezialgeräte. Mit seiner Kombination aus bewährter Motorentechnik und kompaktester Bauweise setzte der Agrocompact den Standard für Spezialschlepper der Marke, bevor er durch die spezialisierten Agroplus-Varianten und die spätere Serie 5 DF/DS/DV abgelöst wurde. {| class="wikitable" | colspan="2" | ab 1992 |- | valign="top" | * {{:Traktorenlexikon: Create|AgroCompact 3.30}} * {{:Traktorenlexikon: Create|AgroCompact 3.50}} * {{:Traktorenlexikon: Create|AgroCompact 3.70}} * {{:Traktorenlexikon: Create|AgroCompact 3.90}} |} {| class="wikitable" | colspan="2" | ab 1998/99 bis 2007 |- | valign="top" | * {{:Traktorenlexikon: Create|Agrocompact 60}} <!-- F 2003 --> * {{:Traktorenlexikon: Create|Agrocompact 70}} * {{:Traktorenlexikon: Create|Agrocompact 80}} * {{:Traktorenlexikon: Create|Agrocompact 90}} | valign="top" | * {{:Traktorenlexikon: Create|Agrocompact 70 F}}<!-- 1999 --> * {{:Traktorenlexikon: Create|Agrocompact 75 F}} * {{:Traktorenlexikon: Create|Agrocompact 90 F}} * {{:Traktorenlexikon: Create|Agrocompact 100 F}}<!-- 2007 --> |} === Agrolux === [[File:Deutz fhar agrolux.jpg|thumb|Agrolux Export-Modell]] Die Agrolux-Baureihe wurde als unkomplizierte, robuste Einstiegsserie für kleinere Betriebe, Nebenerwerbslandwirte und den Einsatz als Zweitschlepper konzipiert. Sie deckte primär den Leistungsbereich von 55 bis ca. 100 PS ab und legte den Fokus auf maximale Wirtschaftlichkeit und rein mechanische Bedienung. Technisch basiert der Agrolux auf einer bewährten Same-Basis innerhalb des SDF-Konzerns. Als Antrieb dienten überwiegend die konzerneigenen SDF-1000er-Motoren (3- oder 4-Zylinder), die entweder luft- oder wassergekühlt ausgeführt waren und für ihre Wartungsfreundlichkeit bekannt sind. Das Getriebe ist einfach aufgebaut: Ein voll synchronisiertes Wendegetriebe mit meist 12 Vorwärts- und 12 Rückwärtsgängen verzichtet auf Lastschaltstufen und Elektronik, was die Störanfälligkeit minimiert. Der Agrolux wurde häufig als Plattformschlepper mit Überrollbügel (ROPS) oder mit einer einfachen Kabine ausgeliefert, um die Bauhöhe für niedrige Stalleinfahrten gering zu halten. Trotz der nüchternen Ausstattung bietet er mit einer soliden Hubkraft und einer unabhängigen Zapfwelle alle nötigen Funktionen für klassische Hof- und Feldarbeiten. Inzwischen wurde die Serie weitgehend durch die Keyline-Modelle der Serie 5D und 5G abgelöst, gilt aber weiterhin als Inbegriff des funktionalen, rein mechanischen Nutztraktors. Die Same-Reihe [[Traktorenlexikon: SAME#Argon|Argon]] war technisch bei mehreren Modellen baugleich. Die Agrolux aus Indien waren mit dem Same-Reihe [[Traktorenlexikon: SAME#Tiger|Tiger ab 2009]] baugleich. {| class="wikitable" | ab 1999/2000? |- | valign="top" | * {{:Traktorenlexikon: Create|Agrolux 60}} * {{:Traktorenlexikon: Create|Agrolux 70}} |- | 2000-2005 |- | Auf Exportmärkten war Deutz-Fahr mit diesen Modellen auf dem Markt |- | valign="top" | * {{:Traktorenlexikon: Create|Agrolux 80}} * {{:Traktorenlexikon: Create|Agrolux 90}} |- | 2006-2008 |- | der Agrolux bekamen statt der luftgekühlten Deutz-Motoren nun wassergekühlte Same-Antriebe |- | valign="top" | * {{:Traktorenlexikon: Create|Agrolux 57}} * {{:Traktorenlexikon: Create|Agrolux 67}} |- | 2008-20?? |- | diese Agrolux wurden mit wassergekühlten Same-Motoren und einfachen 8v + 2r Getrieben in Indien gefertigt |- | valign="top" | * {{:Traktorenlexikon: Create|Agrolux 65}} * {{:Traktorenlexikon: Create|Agrolux 75}} |- | Auf Exportmärkten war Deutz-Fahr mit diesen Modellen auf dem Markt |- | valign="top" | * {{:Traktorenlexikon: Create|Agrolux 85}} * {{:Traktorenlexikon: Create|Agrolux 95}} |- | 2009-201? |- | vorerst letzte Generation der Agrolux ? |- | valign="top" | * {{:Traktorenlexikon: Create|Agrolux 100}} * {{:Traktorenlexikon: Create|Agrolux 310}} * {{:Traktorenlexikon: Create|Agrolux 320}} |- | 2018 neue Modelle für den indischen Markt |- | diese Agrolux wurden mit wassergekühlten Motoren und einfachen 8v + 2r oder 12v + 3r Getrieben in Indien gefertigt |- | valign="top" | * {{:Traktorenlexikon: Create|Agrolux 45}} * {{:Traktorenlexikon: Create|Agrolux 50}} * {{:Traktorenlexikon: Create|Agrolux 55}} * {{:Traktorenlexikon: Create|Agrolux 60}} * {{:Traktorenlexikon: Create|Agrolux 70}} * ----- * {{:Traktorenlexikon: Create|Agrolux Profiline 75}} * {{:Traktorenlexikon: Create|Agrolux Profiline 80}} |} Zur Agritechnica 2017 wurden als Nachfolgemodelle für den europäische Markt die [[Traktorenlexikon: Deutz-Fahr#Serie 4E|Serie 4E]] vorgestellt. === Agromax === Die Agromax-Baureihe ist eine spezialisierte Traktorenserie von Deutz-Fahr, die primär für globale Märkte mit Fokus auf mechanische Einfachheit und extreme Robustheit entwickelt wurde. Sie ist eng mit der technologischen Plattform der SDF-Konzernmutter verwandt und deckt den mittleren Leistungsbereich von etwa 45 bis 100 PS ab. Angetrieben werden die Maschinen von den bewährten SDF-1000er-Motoren (wahlweise als 3- oder 4-Zylinder), die für ihre Langlebigkeit und hohe Drehmomentreserve bei geringem Kraftstoffverbrauch bekannt sind. Die Kraftübertragung erfolgt über ein rein mechanisches Synchrongetriebe, das meist mit 8x8 oder 12x12 Gängen ausgestattet ist. Durch den bewussten Verzicht auf komplexe Elektronik und Lastschaltstufen ist der Agromax besonders wartungsfreundlich und für Regionen mit einfacher Infrastruktur optimiert. Das Design ist funktional und auf maximale Übersichtlichkeit ausgelegt, wobei die Serie häufig als Plattformschlepper mit Überrollbügel (ROPS) zum Einsatz kommt. Mit einer soliden Hydraulikleistung und einer robusten Hinterachskonstruktion ist der Agromax als klassischer Arbeitsschlepper für die Bodenbearbeitung und Transportaufgaben in der Landwirtschaft positioniert, wo Zuverlässigkeit unter harten Bedingungen oberste Priorität hat. {| class="wikitable" | ab 2018 |- | valign="top" | * {{:Traktorenlexikon: Create|Agromax 40}} * {{:Traktorenlexikon: Create|Agromax 45}} * {{:Traktorenlexikon: Create|Agromax 50}} * {{:Traktorenlexikon: Create|Agromax 55}} * {{:Traktorenlexikon: Create|Agromax 60}} |} === Agrofarm === [[Datei:Deutz-Fahr Agrofarm 420 Tractor at IndAgra Farm Romexpo 2010.JPG|thumb|[[Traktorenlexikon: Deutz-Fahr Agrofarm 420|Agrofarm 420]]]] Die Agrofarm-Baureihe, produziert zwischen 2007 und 2014, wurde als kompakter Allrounder im Leistungsbereich von ca. 85 bis 115 PS eingeführt. Sie füllte die Lücke zwischen den kleinen Agroplus-Modellen und der größeren Agrotron-Serie und war besonders als Frontlader- und Grünlandschlepper erfolgreich. Technisch basierte die Serie auf einer starken Synergie innerhalb des SDF-Konzerns: Während als Antrieb die bewährten 4-Liter-Deutz-Motoren (TCD 2012 L04) zum Einsatz kamen, stammte das Getriebe und die Hinterachskonstruktion von Same. Die Getriebevarianten reichten von einer einfachen mechanischen Synchronisierung bis hin zur Profiline-Ausstattung mit zweistufiger Lastschaltung und elektrohydraulischem PowerShuttle (SenseClutch). Ein besonderes Merkmal war die kompakte Bauweise kombiniert mit einer geräumigen Freisichtkabine, die speziell für Frontladerarbeiten optimiert war. Neben der Standardversion bot Deutz-Fahr mit dem Agrofarm TTV zudem einen der ersten Traktoren dieser Leistungsklasse mit einem stufenlosen Getriebe an. Die Serie wurde später durch die Serie 5 abgelöst, gilt aber aufgrund der Kombination aus spritzigem Deutz-Motor und robuster Same-Mechanik bis heute als sehr wertstabiler und beliebter Universalschlepper. Die einfachen Agrofarm sind baugleich mit Hürlimann XB MAX, Lamborghini R3.evo und Same Explorer3. Wird in Italien produziert. Die Profiline und TTV-Modelle entsprechen dem Same Silver³. {| class="wikitable" | colspan="2" | ab 2006? |- | valign="top" | * {{:Traktorenlexikon: Create|Agrofarm 85}} * {{:Traktorenlexikon: Create|Agrofarm 100}} * {{:Traktorenlexikon: Create|Agrofarm 410}} * {{:Traktorenlexikon: Create|Agrofarm 420}} * {{:Traktorenlexikon: Create|Agrofarm 430}} | valign="top" | * {{:Traktorenlexikon: Create|Agrofarm TB 410}} * {{:Traktorenlexikon: Create|Agrofarm TB 420}} ---- * {{:Traktorenlexikon: Create|Agrofarm Profiline 420}} * {{:Traktorenlexikon: Create|Agrofarm Profiline 430}} * {{:Traktorenlexikon: Create|Agrofarm TTV 420}} * {{:Traktorenlexikon: Create|Agrofarm TTV 430}} |} Nach einer Info <ref>https://issuu.com/deutz-fahr/docs/308.8174.2.4-1_fr</ref> von SDF waren folgende Modelle 2015 im Angebot: {| class="wikitable" | ab 2015? |- | valign="top" | * {{:Traktorenlexikon: Create|Agrofarm C 75}} * {{:Traktorenlexikon: Create|Agrofarm C 85}} * {{:Traktorenlexikon: Create|Agrofarm C 95}} |} === Agroclimber === Die Agroclimber-Baureihe stellt die spezialisierte Raupenschlepper-Linie von Deutz-Fahr dar, die für extreme Hanglagen, weiche Böden und den Einsatz in Sonderkulturen (Obst- und Weinbau) konzipiert wurde. Da Raupenfahrwerke eine deutlich größere Aufstandsfläche als Räder bieten, zeichnet sich diese Serie durch maximale Traktion bei gleichzeitig geringem Bodendruck aus. Technisch basiert der Agroclimber auf der bewährten Same-Raupentechnik innerhalb des Konzerns. Als Antrieb dienen die robusten SDF-1000er-Motoren (3- oder 4-Zylinder), die für ihre Zuverlässigkeit unter Dauerlast bekannt sind. Das Getriebe ist als rein mechanisches, voll synchronisiertes Schaltgetriebe ausgelegt, um die enormen Zugkräfte verlustarm auf die Kettenlaufwerke zu übertragen. Die Steuerung erfolgt klassisch über Lenkhebel und eine Bandbremseinrichtung, was ein Wenden auf der Stelle ermöglicht. Die Serie umfasst verschiedene Varianten, wie den schmalen Agroclimber V für den Weinbau oder den breiteren Agroclimber F für den Obstbau. Mit ihrer niedrigen Bauweise, dem tiefen Schwerpunkt und der enormen Steigfähigkeit ist sie die spezialisierte Lösung für Geländeformen, an denen Standard-Radtraktoren an ihre physikalischen Grenzen stoßen. {| class="wikitable" | '''Raupenschlepper''' (ab 2007/08) <!--zur SIMA 2007 http://www.landtechnikmagazin.de/Traktoren-Artikel-DEUTZ-FAHR-stellt-Agroclimber-Raupentraktor-vor-367.php --> |- | valign="top" | * {{:Traktorenlexikon: Create|Agroclimber V 70}} * {{:Traktorenlexikon: Create|Agroclimber V 80}} * {{:Traktorenlexikon: Create|Agroclimber F 90}} * {{:Traktorenlexikon: Create|Agroclimber F 100}} * {{:Traktorenlexikon: Create|Agroclimber 105}} * {{:Traktorenlexikon: Create|Agroclimber V 310}} * {{:Traktorenlexikon: Create|Agroclimber 410}} * {{:Traktorenlexikon: Create|Agroclimber F 410}} |} === Agrotrac === [[Datei:Deutz-Fahr Agrotrac 110 Tractor at IndAgra Farm Romexpo 2010.JPG|thumb|[[Traktorenlexikon: Deutz-Fahr Agrotrac 110|Agrotrac 110]]]] Die Agrotrac-Baureihe ist eine auf maximale Robustheit und mechanische Einfachheit ausgelegte Serie, die von Deutz-Fahr primär für Exportmärkte außerhalb Europas (z. B. Afrika, Türkei oder Südostasien) entwickelt wurde. Sie deckt einen Leistungsbereich von etwa 100 bis 170 PS ab. Technisch basieren die Schlepper auf bewährten SDF-Komponenten und nutzen überwiegend flüssigkeitsgekühlte 6-Zylinder-Motoren (Typ Lamborghini/SDF 1000.6), die für ihre hohe Zugkraft und Langlebigkeit unter harten Bedingungen bekannt sind. Das Getriebe ist konsequent rein mechanisch aufgebaut (meist 15/15 oder 24/12 Gänge mit Kriechgruppe), was den Agrotrac besonders wartungsfreundlich macht, da er weitgehend ohne komplexe Elektronik auskommt. Er wird sowohl als offener Plattformschlepper als auch mit einer funktionalen Kabine angeboten. Damit ist er die ideale Maschine für Regionen, in denen einfache Instandsetzung und Zuverlässigkeit wichtiger sind als modernste High-Tech-Assistenzsysteme. {| class="wikitable" | 2004-2010 || 2010-2017 || 2014-2017 |- | valign="top" | * {{:Traktorenlexikon: Create|Agrotrac 100}} * {{:Traktorenlexikon: Create|Agrotrac 110}} * {{:Traktorenlexikon: Create|Agrotrac 115}} * {{:Traktorenlexikon: Create|Agrotrac 125}} * {{:Traktorenlexikon: Create|Agrotrac 130}} * {{:Traktorenlexikon: Create|Agrotrac 150}} * {{:Traktorenlexikon: Create|Agrotrac 170}} | valign="top" | * {{:Traktorenlexikon: Create|Agrotrac 610}}<!--Frankreich 2010--> * {{:Traktorenlexikon: Create|Agrotrac 620}}<!--Frankreich 2010--> <!-- Agrotrac 265, Südafrika 2010, 184 kW – unklar http://www.agfacts.co.za/traprdtz.htm --> | valign="top" | * {{:Traktorenlexikon: Create|Agrotrac 115.6 Turbo}}<!--Frankreich 2014--> |} === Serie 2E === Die Serie 2E wurde ab ca. 2017/2018 als preiswertes Einstiegsmodell im Kompaktsegment (ca. 25 bis 40 PS) eingeführt und ab 2021/2022 auf die Abgasstufe Stage V aktualisiert. Basierend auf einer Kooperation mit Sonalika, verzichtet der Schlepper auf komplexe Elektronik und setzt stattdessen auf einfache Dreizylindermotoren sowie rein mechanische Getriebe. Primär als offener Plattformschlepper konzipiert, bietet die Serie 2E maximale Wartungsfreundlichkeit und ist für einfache Hofarbeiten, den privaten Gartenbau oder Einsätze in Gewächshäusern optimiert, bei denen ein funktionales Fundament ohne technisches Zusatzgewicht im Vordergrund steht. Sie ist in Deutschland nicht verfügbar. {| class="wikitable" |- | ab 2017 |- | Serie 2E |- | valign="top" | * {{:Traktorenlexikon: Create|2025E}} * {{:Traktorenlexikon: Create|2030E}} * {{:Traktorenlexikon: Create|2035E}} * {{:Traktorenlexikon: Create|2040E}} |} === Serie 3E === Die Serie 3E wurde ab ca. 2017/2018 als leistungsstärkere Ergänzung zur Serie 2E eingeführt und ab 2021 durch die Serie 3 abgelöst. Sie deckt den Bereich von ca. 30 bis 40 PS ab und basiert ebenfalls auf der bewährten, rein mechanischen Kooperation mit Sonalika. Ausgestattet mit einem Dreizylinder-Saugmotor und einem synchronisierten 8x2- oder 12x12-Wendegetriebe, bietet sie mehr Hubkraft und Einsatzflexibilität als das kleinere Schwestermodell. Als robuster Plattformschlepper ist die Serie 3E gezielt für Hobby-Landwirte und Gartenbaubetriebe konzipiert, die eine unkomplizierte, wartungsarme Maschine für schwerere Anbaugeräte suchen. {| class="wikitable" |- | 2017-2021 |- | Serie 3E |- | valign="top" | * {{:Traktorenlexikon: Create|3035E}} * {{:Traktorenlexikon: Create|3040E}} * {{:Traktorenlexikon: Create|3042E}} |} === Serie 3 === Die Deutz-Fahr Serie 3 umfasst kompakte Universaltraktoren, die speziell für den Einsatz im Garten- und Landschaftsbau, in Baumschulen sowie für kommunale Dienstleistungen konzipiert sind und in ihrer aktuellen Generation mit Stage-V-konformen Motoren seit dem Jahr 2021 am Markt bestehen. Die Baureihe zeichnet sich durch ein geringes Eigengewicht und eine hohe Wendigkeit aus, wobei sie sich primär in die Standardmodelle 3050 und 3060 sowie die besonders schmale Variante 3050 Basso gliedert. Während die Standardmodelle wahlweise mit einer verglasten Komfortkabine oder als offene Plattformversion mit klappbarem Überrollbügel erhältlich sind, ist die Basso-Ausführung konsequent auf extrem beengte Platzverhältnisse optimiert. Technisch setzen die Traktoren auf 4-Zylinder-Motoren in einem Leistungsspektrum von etwa 51 bis 60 PS und verfügen über ein synchronisiertes Wendeschaltgetriebe mit 12 Vorwärts- und 12 Rückwärtsgängen. Trotz der kompakten Abmessungen bietet die Serie vollwertige Merkmale wie einen zuschaltbaren Allradantrieb, eine Heckhydraulik mit bis zu 1.200 kg Hubkraft sowie optionale Frontkraftheber und Frontzapfwellen, wodurch die Maschinen für den ganzjährigen Einsatz vom Mähbetrieb bis zum Winterdienst flexibel einsetzbar sind. {| class="wikitable" |- | ab 2021 |- | Serie 3 |- | valign="top" | * {{:Traktorenlexikon: Create|3050 Basso}} 38kW (51PS) * {{:Traktorenlexikon: Create|3050}} 38kW (51PS) * {{:Traktorenlexikon: Create|3060}} 44kW (59PS) |} === Serie 4E === [[File:Deutz Fahr 4090e.jpg|thumb|Deutz-Fahr 4090E]] Die Serie 4E, eingeführt im Jahr 2014 als Nachfolger der Agrolux-Reihe und ab 2021 in der Stage V-Version verfügbar, bildet die robuste Mittelklasse der Kompaktschlepper im Bereich von 65 bis 100 PS. Technisch setzt die Serie auf die konzerneigenen SDF FARMotion-Motoren (3- oder 4-Zylinder), die speziell für hohe Drehmomentreserven bei kompakter Bauweise entwickelt wurden. Das Getriebe ist konsequent mechanisch ausgelegt, wobei Käufer zwischen verschiedenen Konfigurationen von 12x12 bis zu 30x15 Gängen mit Kriechganggruppe wählen können. Ein zentrales Merkmal ist die Vielseitigkeit: Die Serie 4E ist sowohl als Plattformschlepper als auch mit einer modernen Kabine erhältlich und verfügt über ein echtes Vierrad-Bremssystem im Ölbad. Damit ist sie die ideale Lösung für Gemischtbetriebe und Kommunen, die einen wendigen Allrounder für Frontladerarbeiten, Grünlandpflege und leichte Ackerarbeiten suchen, ohne auf computergesteuerte Komplexität angewiesen zu sein. {| class="wikitable" |- | ab 2014 |- | Serie 4E |- | valign="top" | * {{:Traktorenlexikon: Create|4050E}} * {{:Traktorenlexikon: Create|4065E}} * {{:Traktorenlexikon: Create|4075E}} * {{:Traktorenlexikon: Create|4085E}} * {{:Traktorenlexikon: Create|4080.4E}} |} Für D sind andere Daten <ref> http://www.deutz-fahr.com/de-de/produkte/traktoren/6236-serie-4e </ref> angekündigt: Motorleistungen<ref> https://www.landtechnikmagazin.de/Traktoren-Bild-Die-neue-Deutz-Fahr-Serie-4E-mit-den-vier-Modellen-4070E-4080E-4090E-4100E-loest-Baureihe-Agrolux-ab-34884-7559.php </ref> des 3 Zylinder-FARMotion Motors mit 2,9 l: {| class="wikitable" |- | ab 2018 |- | Serie 4E in Deutschland |- | valign="top" | * {{:Traktorenlexikon: Create|4070E}} 48 kW / 65 PS * {{:Traktorenlexikon: Create|4080E}} 55 kW / 75 PS * {{:Traktorenlexikon: Create|4090E}} 62 kW / 84 PS * {{:Traktorenlexikon: Create|4100E}} 67 kW / 92 PS |} === Raupentraktoren === Die aktuellen Raupentraktoren von Deutz-Fahr, primär unter der Bezeichnung Serie 5K zusammengefasst, bilden eine hochspezialisierte Baureihe für extreme Hanglagen und schwierige Bodenverhältnisse, die in ihrer aktuellen Generation mit Stage-V-Motoren seit dem Jahr 2021 stetig erweitert wurde. Das Programm unterteilt sich funktional in die drei Varianten 5KF für schmale Obstbauanlagen, 5KM für den gemischten Einsatz in weiten Reihen sowie die breite Serie 5K für den schweren Ackerbau auf offenem Feld. Während die KF-Modelle durch eine niedrige Bauweise für das Unterfahren von Kulturen optimiert sind, bietet die Standard-Serie 5K durch einen ebenen Plattformboden und eine größere Spurbreite maximale Standfestigkeit bei Zugarbeiten an Steilhängen. Technisch kommen moderne 4-Zylinder-FARMotion-Motoren zum Einsatz, die ihre Kraft über mechanische Getriebe mit bis zu 16 Vorwärts- und Rückwärtsgängen auf die Laufwerke übertragen. Die Maschinen sind wahlweise mit klassischen Stahlketten für höchste Traktion oder mit bodenschonenden ComfortTrack-Gummiketten ausgestattet, wobei die Steuerung über servogesteuerte Hebel eine präzise Manövrierbarkeit sicherstellt. Mit einer Hubkraft von bis zu 3.170 kg im Heck und einer leistungsstarken Hydraulikanlage erfüllen diese Raupenschlepper die Anforderungen professioneller Betriebe, die in Gebieten arbeiten, in denen herkömmliche Radtraktoren an ihre Grenzen stoßen. Die Bezeichnungen bei den Raupentraktoren von Deutz-Fahr dienen der Kennzeichnung des jeweiligen Einsatzgebiets und der damit verbundenen Fahrzeugbreite. Das K steht hierbei grundsätzlich für das italienische Wort „Cingolato“ (Raupe), während die Zusatzbuchstaben die spezifische Konfiguration definieren. * '''KF (Frutteto)''': Das „F“ steht für Frutteto (Obstgarten). Diese Modelle sind schmal gebaut und speziell für den Einsatz in schmalen Reihenkulturen und Obstplantagen konzipiert. Sie besitzen oft eine kompakte Bauweise, um das Unterfahren von Baumkronen zu erleichtern. * '''KM (Montagna)''': Das „M“ steht für Montagna (Berg). Diese Variante ist als mittelschwere und mittelbreite Raupe für den gemischten Einsatz ausgelegt. Sie bietet eine höhere Standfestigkeit als die F-Variante und ist für die Arbeit in hügeligem Gelände oder in weiten Reihenkulturen (z. B. Weinbau am Steilhang) optimiert. * '''K (Standard/Campo Aperto)''': Das reine „K“ ohne Zusatzbuchstaben bezeichnet die breiteste Ausführung für das offene Feld (Campo Aperto). Diese Maschinen sind für den schweren Ackerbau und großflächige Zugarbeiten in extremen Steillagen konzipiert, bei denen maximale Spurbreite für die Kippsicherheit und eine breite Aufstandsfläche für höchste Traktion erforderlich sind. {| class="wikitable" | '''Serie 5 K''' || '''Serie 5 KM''' || '''Serie 5 KF''' |- | valign="top" | * {{:Traktorenlexikon: Create|5115 K}} 85kW (116PS) | valign="top" | * {{:Traktorenlexikon: Create|5105 KM}} 78kW (106PS) * {{:Traktorenlexikon: Create|5115 KM}} 85kW (116PS) | valign="top" | * {{:Traktorenlexikon: Create|5 KF}} 56kW (76PS) * {{:Traktorenlexikon: Create|5090 KF}} 67kW (91PS) * {{:Traktorenlexikon: Create|5100 KF}} 75kW (102PS) |} === Serie 5 (Spezialtraktoren) === [[File:Deutz-Fahr 5105 DF TTV Agritechnica 2025 (DSC08573).jpg|thumb|Deutz-Fahr 5105 DF TTV]] Die Deutz-Fahr Serie 5 Spezialtraktoren bilden seit ihrer Einführung im Jahr 2017 ein modulares Programm von Schmalspur- und Kompaktschleppern, die primär für den Einsatz im Weinbau (V = Vino), Obstbau (F = Fruit/Frutetto) sowie in der Kommunalpflege entwickelt wurden. Die Baureihe nutzt effiziente FARMotion-Motoren und bietet durch verschiedene Fahrzeugbreiten – von extrem schmalen Modellen (S/V) für den Weinbau bis hin zu breiteren Varianten für den Obstbau (F) – Lösungen für räumlich begrenzte Arbeitsumgebungen. Die Serie differenziert sich in mehrere spezialisierte Untergruppen: * '''Serie 5DF Keyline & Ecoline''': Diese Baureihen stellen die Einstiegssegmente dar und konzentrieren sich auf mechanische Robustheit sowie einfache Bedienung bei hoher Wirtschaftlichkeit. * '''Serie 5DF (Platform)''': Diese Variante verzichtet auf eine geschlossene Kabine zugunsten eines klappbaren Überrollbügels, um maximale Durchfahrtshöhen in niedrigen Kulturen oder Gewächshäusern zu erreichen. * '''Serie 5 DF/DS/DV & PRO''': Die Standardserie bietet eine breite Auswahl an Getrieben und Hydraulikleistungen, wobei die PRO-Modelle durch gesteigerte Hydraulikkapazitäten und höheren Bedienkomfort für den professionellen Dauereinsatz optimiert sind. * '''Serie 5DF/DS/DV TTV''': Als technologische Oberklasse verfügt diese Serie über ein stufenloses Getriebe (TTV), das eine präzise Geschwindigkeitsanpassung ermöglicht und die Effizienz bei spezialisierten Arbeitsprozessen maximiert. * Serie 5TB: Sie zeichnen sich durch einen besonders niedrigen Schwerpunkt und eine geringe Bauhöhe aus, was sie ideal für die Arbeit in Hanglagen sowie in Oliven- oder Nussplantagen macht. Die gesamte Serie nutzt moderne FARMotion-Motoren (3- oder 4-Zylinder), die speziell für die Landwirtschaft entwickelt wurden und die geltenden Abgasnormen erfüllen. Ein zentrales Merkmal der Baureihe ist die Vielseitigkeit der Getriebeoptionen, die von vollsynchronisierten mechanischen Getrieben über Lastschaltstufen (Powershift) bis hin zur stufenlosen Technologie reichen. Je nach Modell kommen unterschiedliche Vorderachskonzepte zum Einsatz. Die TTV-Modelle verfügen häufig über eine Einzelradaufhängung mit aktiver Federung, um Fahrstabilität und Komfort bei Straßenfahrten und Feldarbeit zu erhöhen. Die Hydraulikanlagen sind modular aufgebaut und bieten je nach Konfiguration bis zu fünf doppeltwirkende Steuergeräte im Heck sowie zusätzliche Anschlüsse im Zwischenachsbereich. {| class="wikitable" | '''Serie 5DF/DS/DV Ecoline (ab 2017)''' || '''Serie 5DF Keyline (ab 2021)''' || '''Serie 5DF (Platform) (ab 2021)''' || '''Serie 5 DF/DS/DV / PRO (ab 2025)''' || '''Serie 5DF/DS/DV TTV / DF TTV 4 WHEEL STEERING (ab 2018)''' || '''Serie 5TB (ab 2023)''' |- | valign="top" | * {{:Traktorenlexikon: Create|5080 DF/DS/DV Ecoline}} 56kW (76PS) | valign="top" | * {{:Traktorenlexikon: Create|5070 DF Keyline}} 49kW (66PS) * {{:Traktorenlexikon: Create|5080 DF Keyline}} 59kW (76PS) | valign="top" | * {{:Traktorenlexikon: Create|5090 DF Plattform}} 67kW (91PS) * {{:Traktorenlexikon: Create|5095 DF Plattform}} 70kW (95PS) * {{:Traktorenlexikon: Create|5100 DF Plattform}} 75kW (102PS) * {{:Traktorenlexikon: Create|5105 DF Plattform}} 78kW (106PS) * {{:Traktorenlexikon: Create|5115 DF Plattform}} 85kW (116PS) | valign="top" | * {{:Traktorenlexikon: Create|5090 DF/DS/DV Kabine / PRO}} 67kW (91PS) * {{:Traktorenlexikon: Create|5095 DF/DS/DV Kabine / PRO}} 70kW (95PS) * {{:Traktorenlexikon: Create|5100 DF/DS/DV Kabine / PRO}} 75kW (102PS) * {{:Traktorenlexikon: Create|5105 DF/DS/DV Kabine / PRO}} 78kW (106PS) * {{:Traktorenlexikon: Create|5115 DF/DS/DV Kabine / PRO}} 85kW (116PS) | valign="top" | * {{:Traktorenlexikon: Create|5090 DF/DS/DV TTV}} 67kW (91PS) * {{:Traktorenlexikon: Create|5095 DF/DS/DV TTV}} 70kW (95PS) * {{:Traktorenlexikon: Create|5100 DF/DS/DV TTV}} 75kW (102PS) * {{:Traktorenlexikon: Create|5105 DF/DS/DV TTV}} 78kW (106PS) * {{:Traktorenlexikon: Create|5115 DF/DS/DV TTV}} 85kW (116PS) | valign="top" | * {{:Traktorenlexikon: Create|5105 TB}} 78kW (106PS) * {{:Traktorenlexikon: Create|5115 TB}} 85kW (116PS) |} === Serie 5 (Standardtraktoren) === Die Serie 5 für Standardtraktoren umfasst aktuell (2026) 5 Ausbaustufen: 5D Keyline, 5D, 5D TTV, 5 Keyline, 5. ==== Serie 5D Keyline ==== [[File:Deutz-Fahr 5080 D Keyline Traktor.jpg|thumb|Deutz-Fahr 5080 D Keyline]] Die Serie 5D Keyline, eingeführt um 2019 und seit 2021 als Stage V-Version verfügbar, ist die konsequente Weiterentwicklung des Agrolux-Konzepts für das moderne Segment der 65 bis 100 PS. Ausgestattet mit effizienten SDF FARMotion-Dreizylindermotoren, konzentriert sich diese Baureihe auf das Wesentliche: mechanische Zuverlässigkeit ohne elektronischen Ballast. Mit einem synchronisierten Wendegetriebe (wahlweise 15+15 oder 30+15 Gänge), einer mechanischen Hubwerksregelung und dem serienmäßigen Vierrad-Bremssystem bietet sie solide Technik für Nebenerwerbslandwirte und kleine Hofstellen. Sie fungiert als wirtschaftlicher Allrounder, der die Brücke zwischen der einfachen Serie 4E und der technologisch gehobenen Serie 5D schlägt, wobei der Fokus klar auf geringen Betriebskosten und intuitiver Bedienung liegt. Die Schwestermodelle aus dem SDF-Konzern sind der [[Traktorenlexikon: Lamborghini#Spire Trend|Lamborghini Spire Trend]] und der [[Traktorenlexikon: SAME#Dorado Natural|SAME Dorado Natural]]. {| class="wikitable" |- | valign="top" | * {{:Traktorenlexikon: Create|5070 D Keyline}} 48 kW / 65 PS * {{:Traktorenlexikon: Create|5080 D Keyline}} 55 kW / 75 PS * {{:Traktorenlexikon: Create|5090 D Keyline}} 62 kW / 84 PS * {{:Traktorenlexikon: Create|5100 D Keyline}} 67 kW / 92 PS |} ==== Serie 5D ==== [[File:Deutz-Fahr 5105 D Agritechnica 2025 (DSC08595).jpg|thumb|Deutz-Fahr 5105 D]] Die Serie 5D von Deutz-Fahr stellt die aktuelle Baureihe im Segment der Kompakt- und Allroundtraktoren dar, die speziell für Viehhaltungsbetriebe, Hofarbeiten und die Bewirtschaftung von Sonderkulturen konzipiert wurde. Technisch zeichnet sich die Serie durch eine hohe Wendigkeit und eine kompakte Bauweise aus, wobei moderne FARMotion-Motoren (3- oder 4-Zylinder) zum Einsatz kommen, die aktuelle Abgasnormen erfüllen. Das Leistungsspektrum der Serie 5D deckt den Bereich von 65 PS bis 106 PS ab, was in etwa 48 kW bis 78 kW entspricht. Ein zentrales technisches Merkmal ist die Wahlmöglichkeit zwischen verschiedenen Getriebevarianten, die vom einfachen mechanischen Wendegetriebe bis hin zum PowerShuttle mit Lastschaltung und der „Stop&Go“-Funktion reichen, welche das Anhalten und Anfahren allein über das Bremspedal ermöglicht. Ergänzt wird die technische Ausstattung durch eine leistungsstarke Hydraulikanlage mit bis zu 54 Litern Förderleistung pro Minute und eine komfortable Vier-Pfosten-Kabine, die eine optimierte Rundumsicht für Frontladerarbeiten bietet. {| class="wikitable" | ab 2014 |- | valign="top" | * {{:Traktorenlexikon: Create|5075 D}} 55kW (75PS) * {{:Traktorenlexikon: Create|5095 D}} 70kW (95PS) * {{:Traktorenlexikon: Create|5105 D}} 78kW (106PS) |} ==== Serie 5D TTV ==== Mit der Einführung der Serie 5D TTV im Jahr 2021 übertrug Deutz-Fahr die Technologie stufenloser Antriebe erstmals in das Segment der kompakten Allround-Traktoren. Diese Baureihe kombiniert die Abmessungen eines Kompakt-Schleppers mit der High-End-Technik der größeren Serien, wobei das Herzstück das eigenentwickelte TTV-Getriebe ist, das ein stufenloses Beschleunigen von 0 bis 40 km/h bei reduzierter Motordrehzahl ermöglicht. Angetrieben werden die Maschinen von FARMotion-Motoren mit drei oder vier Zylindern, die ein Leistungsspektrum von 88 PS (65 kW) im Modell 5090 D TTV bis zu 126 PS (92,6 kW) im Topmodell 5115 D TTV abdecken. Besonderes Augenmerk liegt auf der Hydraulikleistung und der Bedienung: Die Serie verfügt serienmäßig über eine Load-Sensing-Pumpe mit bis zu 100 l/min Förderleistung und die ergonomische MaxCom-Armlehne, über die sämtliche Funktionen per Joystick gesteuert werden. Dank der gefederten Vorderachse, einer modernen Vier-Pfosten-Kabine mit flachem Boden und der Integration von Precision-Farming-Systemen (wie iMonitor und GPS) ist der 5D TTV als professionelle Arbeitsmaschine für Kommunalbetriebe, Hofwirtschaften und den Einsatz in Sonderkulturen positioniert. Die Produktion erfolgt im Werk in Triviglio, Italien, wobei die Modelle seit ihrem Erscheinen kontinuierlich an die aktuellsten Abgasnormen der Stufe V angepasst wurden. {| class="wikitable" | ab 2021 |- | valign="top" | * {{:Traktorenlexikon: Create|5095 D TTV}} 70kW (95PS) * {{:Traktorenlexikon: Create|5105 D TTV}} 78kW (106PS) * {{:Traktorenlexikon: Create|5115 D TTV}} 85kW (116PS) |} ==== Serie 5 Keyline ==== [[File:Deutz-Fahr 5125 Keyline Agritechnica 2025 (DSC08559).jpg|thumb|Deutz-Fahr 5125 Keyline]] Die Serie 5 Keyline wurde als robuster und wirtschaftlicher Allrounder konzipiert, der die Lücke zwischen den kompakten Hofschleppern und der gehobenen Mittelklasse schließt. Im Gegensatz zur kleineren D-Variante basiert sie auf einem größeren Chassis und nutzt den hubraumstarken FARMotion 45 Vierzylinder-Motor mit 3,8 Litern Hubraum, der ein Leistungsspektrum von 75 PS (55,2 kW) bis 106 PS (78 kW) abdeckt. Die Serie setzt auf ein rein mechanisches Bedienkonzept mit 5-Gang-Getrieben, bietet jedoch mit einer Heckhubkraft von bis zu 4.525 kg und einem zulässigen Gesamtgewicht von 6,5 Tonnen deutlich mehr Reserven für die Feldarbeit. Damit ist die Serie 5 Keyline eine zweckmäßige Lösung für Betriebe, die hohe Stabilität und Zugkraft bei gleichzeitig einfacher, wartungsfreundlicher Technik suchen. {| class="wikitable" | ab 2024 |- | valign="top" | * {{:Traktorenlexikon: Create|5075}} 55kW (75PS) * {{:Traktorenlexikon: Create|5095}} 70kW (95PS) * {{:Traktorenlexikon: Create|5105 / PLUS}} 78kW (106PS) * {{:Traktorenlexikon: Create|5115}} 85kW (116PS) * {{:Traktorenlexikon: Create|5125}} 93kW (126PS) |} ==== Serie 5 ==== [[File:Deutz-Fahr 5125 Agritechnica 2025 (DSC08580).jpg|thumb|Deutz-Fahr 5125]] Die Serie 5 von Deutz-Fahr bildet das technologische Herzstück der Mittelklasse und ist als vielseitiger Premium-Allrounder für Ackerbau, Grünland und Transport konzipiert. Im Gegensatz zu den einfacheren Keyline-Modellen zeichnet sich diese Baureihe durch ein hohes Maß an Komfort und technischer Ausstattung aus, wie etwa das PowerShuttle-Wendegetriebe mit einstellbarem Ansprechverhalten (SenseClutch) und die optionale Zweistufen-Lastschaltung (Hi-Lo) oder Dreistufen-Lastschaltung (HML). Die leistungsstarken FARMotion-Motoren decken dabei einen Bereich von 95 PS bis 126 PS ab und erfüllen dank modernster Abgasreinigung die Stufe V. Besonderes Merkmal der Serie 5 ist die hochwertige TopVision-Kabine, die durch das innovative „Hydro Silent-Block“-Lagersystem Schwingungen um bis zu 40 % reduziert und eine erstklassige Rundumsicht bietet. Die hydraulische Ausstattung ist mit einer Förderleistung von bis zu 90 l/min (im „On-Demand“-System) und einer Heckhubkraft von bis zu 5.410 kg deutlich leistungsstärker ausgelegt als bei den Einstiegsmodellen. Mit Features wie der „Stop&Go“-Funktion für kupplungsfreies Anhalten und modernen Precision-Farming-Optionen ist die Serie 5 darauf ausgelegt, maximale Produktivität bei gleichzeitig hohem Bedienkomfort für professionelle landwirtschaftliche Betriebe zu liefern. {| class="wikitable" | ab 2021 |- | valign="top" | * {{:Traktorenlexikon: Create|5095}} 70kW (95PS) * {{:Traktorenlexikon: Create|5100}} 75kW (102PS) * {{:Traktorenlexikon: Create|5105}} 78kW (106PS) * {{:Traktorenlexikon: Create|5115}} 85kW (116PS) * {{:Traktorenlexikon: Create|5125}} 93kW (126PS) |} === Serie 6 === ==== Serie 6C ==== [[File:Deutz-Fahr 6115 C Agritechnica 2025 (DSC03580).jpg|thumb|Deutz-Fahr 6115 C]] Die im Februar 2022 vorgestellte und im italienischen Werk Treviglio produzierte Serie 6C bildet das fundamentale Bindeglied zwischen kompakten Hofschleppern und leistungsstarken Ackerschleppern. Als Antrieb fungiert der flüssigkeitsgekühlte Deutz TCD 3.6 Vierzylindermotor, der ein breites Leistungsspektrum von 114 bis 143 PS (inklusive Boost) abdeckt. Die Serie zeichnet sich durch eine am Markt einzigartige Getriebevielfalt auf einer Plattform aus: Kunden können zwischen dem klassischen PowerShift-Getriebe (3 Lastschaltstufen), dem automatisierten RVShift-Getriebe und dem stufenlosen TTV-Antrieb wählen. Technische Besonderheiten sind die TopVision-Kabine mit optionalem Freisichtdach für optimierte Frontladerarbeiten sowie das „SDF Smart Farming Solutions“-Paket für den Einstieg in die präzise Landwirtschaft. Mit einem Radstand von 2.480 mm und einer hohen Wendigkeit ist die Serie 6C primär für Gemischt- und Grünlandbetriebe sowie als wendiger Pflegeschlepper in Ackerbaubetrieben optimiert. {| class="wikitable" | ab 2022 |- | valign="top" | * {{:Traktorenlexikon: Create|6115C}} 89 kW (121 PS) * {{:Traktorenlexikon: Create|6125C}} 95 kW (129 PS) * {{:Traktorenlexikon: Create|6135C}} 101 kW (137 PS) |} ==== Serie 6.4 ==== [[File:Deutz-Fahr 6140.4 RVshift Agritechnica 2025 (DSC08632).jpg|thumb|Deutz-Fahr 6140.4 RVshift]] Die seit 2023 im bayerischen „Deutz-Fahr Land“ in Lauingen gefertigte Serie 6.4 erweitert das Portfolio um einen leistungsstarken Vierzyinder-Schlepper im Premiumsegment. Technisches Herzstück ist der FARMotion 45 Motor mit 4,5 Litern Hubraum, elektronisch gesteuerter Common-Rail-Einspritzung und VTG-Turbolader, der auf ein hohes Drehmoment bei niedrigen Betriebsdrehzahlen optimiert ist. Die Baureihe verzichtet auf ein klassisches Lastschaltgetriebe und wird ausschließlich mit dem voll-lastschaltbaren RVShift-Getriebe oder dem stufenlosen TTV-Getriebe angeboten. Zu den technischen Besonderheiten gehört die Verwendung der MaxiVision-Kabine, die eine physische Entkopplung vom Motorraum aufweist und somit den Komfortstandard der größeren Sechszylindermodelle in die 130- bis 150-PS-Klasse überträgt. Mit einer Hydraulikleistung von bis zu 120 l/min (Load-Sensing) und einer zulässigen Gesamtmasse von 10,5 Tonnen ist die Serie 6.4 für den kombinierten Einsatz in Ackerbau und Transport sowie für anspruchsvolle Frontladerarbeiten konzipiert. {| class="wikitable" | ab 2023 |- | valign="top" | * {{:Traktorenlexikon: Create|6130}} 100 kW (136 PS) * {{:Traktorenlexikon: Create|6140}} 108 kW (147 PS) * {{:Traktorenlexikon: Create|6150}} 115 kW (156 PS) * {{:Traktorenlexikon: Create|6160}} 118 kW (161 PS) * {{:Traktorenlexikon: Create|6170}} 126 kW (171 PS) |} ==== Serie 6 ==== [[File:Deutz-Fahr 6180 TTV 30 Jahre Agrotron Agritechnica 2025 (DSC08553).jpg|thumb|Deutz-Fahr 6180 TTV "30 Jahre Agrotron"]] Die seit 2021 im bayerischen Lauingen gefertigte Deutz-Fahr Serie 6 bildet als „Made in Germany“-Plattform das technologische Rückgrat für den professionellen Ackerbau und schwere Transportlogistik. Angetrieben von flüssigkeitsgekühlten Deutz TCD 6.1 L6 Sechszylindermotoren mit Turbo-Intercooler und Common-Rail-Technologie, bietet die Baureihe eine hohe Leistungsdichte bei optimierter Kraftstoffeffizienz gemäß Abgasstufe V. Die technische Flexibilität wird durch drei Getriebekonzepte sichergestellt: das mechanisch-hydraulische Powershift-Getriebe mit sechs Lastschaltstufen, das vollautomatisierte RCshift-Getriebe sowie das stufenlose TTV-Getriebe für einen unterbrechungsfreien Kraftfluss. Zu den technischen Besonderheiten zählen die MaxiVision-Kabine in verschiedenen Ausbaustufen, eine leistungsstarke Load-Sensing-Hydraulik mit bis zu 160 l/min Förderleistung sowie die vollständige Integration von SDF Smart Farming Solutions zur präzisen Steuerung von ISOBUS-Komponenten und satellitengestützter Spurführung. {| class="wikitable" | ab 2021 |- | valign="top" | * {{:Traktorenlexikon: Create|6160}} 119 kW (161 PS) * {{:Traktorenlexikon: Create|6170}} 126 kW (171 PS) * {{:Traktorenlexikon: Create|6180}} 133 kW (181 PS) * {{:Traktorenlexikon: Create|6190}} 141 kW (192 PS) * {{:Traktorenlexikon: Create|6210}} 159 kW (216 PS) * {{:Traktorenlexikon: Create|6230}} 169 kW (230 PS) |} === Serie 7 === [[File:Deutz-Fahr 7250 TTV Warrior Agritechnica 2023 (DSC04914).jpg|thumb|Deutz-Fahr 7250 TTV Warrior]] Die seit 2021 im bayerischen „Deutz-Fahr Land“ in Lauingen produzierte Serie 7 repräsentiert die Hochleistungs-Klasse für großflächige Ackerbaubetriebe und Lohnunternehmen. Herzstück dieser Baureihe ist der Deutz TCD 6.1 L6 Sechszylindermotor, der durch ein elektronisch gesteuertes Twin-Turbo-System und Common-Rail-Einspritzung eine Maximalleistung von bis zu 247 PS (Modell 7250 TTV) bei optimierten Wartungsintervallen von 1.000 Stunden bereitstellt. Im Gegensatz zu den kleineren Serien wird die Serie 7 ausschließlich mit dem stufenlosen TTV-Getriebe ausgestattet, das eine präzise Geschwindigkeitssteuerung von 0 bis 60 km/h (bei reduzierter Motordrehzahl) ohne Zugkraftunterbrechung ermöglicht. Zu den technischen Besonderheiten gehören die MaxiVisionPro-Kabine mit der ergonomischen MaxCom-Armlehne, eine verstärkte Hinterachse mit integrierten Scheibenbremsen im Ölbad sowie eine High-End-Hydraulikanlage mit einer Load-Sensing-Pumpe von bis zu 210 l/min. Dank der serienmäßigen Integration des iMonitor3 und umfangreicher SDF Smart Farming Solutions ist das Fahrzeug für hochpräzise Anwendungen wie Section Control und Variable Rate Control im Precision Farming optimiert. {| class="wikitable" | ab 2021 |- | valign="top" | * {{:Traktorenlexikon: Create|7250 TTV}} 182 kW (247 PS) |} === Serie 8 === [[Datei:Deutz-Fahr 8280 TTV Warrior agra 2024 (DSC02756).jpg|thumb|Deutz-Fahr 8280 TTV]] Die im Jahr 2020 eingeführte und im bayerischen Lauingen gefertigte Serie 8 TTV (primär repräsentiert durch das Modell 8280 TTV) bildet die technologische Brücke zwischen den Baureihen 7 und 9. Technisches Kernstück ist der flüssigkeitsgekühlte Deutz TTCD 6.1 L6 Sechszylindermotor mit zweistufiger Turboaufladung und Common-Rail-Einspritzung (2.000 bar), der eine Maximalleistung von 287 PS generiert. Die Kraftübertragung erfolgt über das stufenlose TTV-Getriebe (SDF T7780), welches die Motorleistung über vier mechanische Fahrbereiche verzweigt und eine Endgeschwindigkeit von bis zu 60 km/h bei reduzierter Drehzahl ermöglicht. Zu den spezifischen Merkmalen zählen die MaxiVisionPro-Kabine, eine Load-Sensing-Hydraulik mit bis zu 210 l/min sowie ein zulässiges Gesamtgewicht von 16 Tonnen. Die Baureihe ist vollständig für SDF Smart Farming Solutions (iMonitor3, ISOBUS) integriert. {| class="wikitable" | ab 2020 |- | valign="top" | * {{:Traktorenlexikon: Create|8280 TTV}} 197 kW (268 PS) |} ==== Serie 8 (2025) ==== [[File:Deutz-Fahr 8310 TTV Agritechnica 2025 (DSC00446).jpg|thumb|Deutz-Fahr 8310 TTV]] Die im November 2025 auf der Agritechnica präsentierte neue Generation der Serie 8 umfasst die Modelle 8310 TTV und 8340 TTV mit einer Maximalleistung von bis zu 340 PS. Wesentliche technische Neuerung ist der Wechsel auf den FPT N67 Sechszylindermotor mit 6,7 Litern Hubraum, der vollständig HVO-kompatibel ist. Die Kraftübertragung erfolgt über ein verstärktes stufenloses TTV-Getriebe, das speziell für die erhöhten Drehmomentanforderungen der 340-PS-Klasse ausgelegt wurde. Ein zentrales Merkmal ist die neu entwickelte SigmaVision-Kabine im 4-Säulen-Design, die über die innovative iControl-Armlehne bedient wird. Zu den technischen Highlights gehören eine Hydraulikförderleistung von 220 l/min, ein Heckhubwerk mit 12.000 kg Hubkraft sowie das TAGS-System (Tractor Assisted Guidance System), welches mittels 3D-Hinderniserkennung und KI-basierter Sensorik teilautonome Fahrfunktionen ermöglicht. Die Markteinführung und Auslieferung der in Lauingen produzierten Maschinen ist für Mai 2026 vorgesehen. {| class="wikitable" | ab 2026 |- | valign="top" | * {{:Traktorenlexikon: Create|8310 TTV}} 228 kW (310 PS) * {{:Traktorenlexikon: Create|8340 TTV}} 250 kW (340 PS) |} === Serie 9 === [[File:Deutz-Fahr 9340 TTV Warrior Agritechnica 2023 (DSC04972).jpg|thumb|Deutz-Fahr 9340 TTV Warrior]] Die seit 2015 im bayerischen Lauingen gefertigte und zuletzt 2021 technisch aktualisierte Serie 9 TTV stellt das Flaggschiff der Standardtraktoren von Deutz-Fahr dar. Technisches Kernstück dieser Baureihe ist der flüssigkeitsgekühlte Deutz TTCD 7.8 L6 Sechszylindermotor mit 7,8 Litern Hubraum, zweistufiger Turboaufladung und Ladeluftkühlung, der eine Maximalleistung von bis zu 336 PS (Modell 9340 TTV) generiert. Die Kraftübertragung wird exklusiv über das stufenlose TTV-Getriebe der Baureihe ZF TMT 32 realisiert, welches durch vier mechanische Fahrbereiche einen hohen Wirkungsgrad über das gesamte Geschwindigkeitsspektrum von 0,2 bis 60 km/h sicherstellt. Zu den markanten Merkmalen gehören die von der Motorhaube entkoppelte MaxiVisionPro-Kabine für minimale Vibrationswerte und einen Geräuschpegel von nur 69 dB(A), eine gefederte Vorderachse mit trockenen Scheibenbremsen sowie eine Load-Sensing-Hydraulikanlage mit einer Förderleistung von bis zu 210 l/min. Mit einem zulässigen Gesamtgewicht von 18 Tonnen und einer Heckhubkraft von 12.000 kg ist die Serie 9 für schwerste Bodenbearbeitung und anspruchsvolle Systemtechnik im Rahmen der SDF Smart Farming Solutions optimiert. Angekündigt wurde zudem als viertes (und kleinstes) Modell der '''9270 TTV'''. Die Serienproduktion wurde allerdings nicht aufgenommen.<ref>http://zugtier.info/deutz-fahr-serie-9/</ref> {| class="wikitable" | ab 2015 |- | valign="top" | * {{:Traktorenlexikon: Create|9290 TTV}} 217 kW (295 PS) * {{:Traktorenlexikon: Create|9310 TTV}} 229 kW (312 PS) * {{:Traktorenlexikon: Create|9340 TTV}} 247 kW (336 PS) |} === Serie 11 === [[File:Agritechnica 2013 by-RaBoe 09.jpg|thumb|Deutz Fahr 11440 TTV]] Die Serie 11 war als Vorstoß von Deutz-Fahr in das Segment der Großtraktoren über 400 PS geplant, wurde jedoch nie in Serie produziert. Trotz der offiziellen Vorstellung von Prototypen (insbesondere des Modells 11440 TTV) wurde das Projekt vor dem geplanten Verkaufsstart aus strategischen Gründen innerhalb der SDF-Gruppe eingestellt. {| class="wikitable" | 2013 vorgestellt |- | valign="top" | * {{:Traktorenlexikon: Create|11350 TTV}} * {{:Traktorenlexikon: Create|11400 TTV}} * {{:Traktorenlexikon: Create|11440 TTV}} |} == Prototypen/Kleinserien == {| class="wikitable" | valign="top" | * D5505 Tandemschlepper<ref>http://www.oldtimerplus.de/blog/deutz-d5505-tandem-schlepper/</ref> * {{:Traktorenlexikon: Create|Agro XXL}} 440kW (600 PS) - 2009 |} === Deutz D5505 Tandem === [[File:Deutz D 5505 Tandem Nachbau 2017 by RaBoe.jpg|thumb|Deutz D 5505 Tandem Nachbau]] Der Deutz D 5505 Tandemschlepper (oft auch als „Deutz-Gigant“ bezeichnet) war ein spektakulärer Prototyp bzw. Eigenbau aus dem Jahr 1965, der die Antwort auf den steigenden Leistungsbedarf in der Landwirtschaft vor der Ära der echten Großschlepper darstellte. Technisch bestand das Gespann aus zwei gekoppelten D 5505, bei denen der vordere Schlepper seiner Hinterachse beraubt und fest mit der Vorderachse des hinteren Schleppers verbunden wurde. Angetrieben wurde die Einheit von zwei luftgekühlten Vierzylinder-Motoren (Typ F4L 812), was eine Gesamtleistung von 104 PS ergab. Da es noch keine ausgereiften Knicklenker-Systeme von der Stange gab, wurden die beiden Motoren und Getriebe über ein komplexes Gestänge synchronisiert und vom hinteren Fahrersitz aus gesteuert. Trotz der enormen Zugkraft und der beeindruckenden Optik blieb der Tandemschlepper ein Einzelstück, da die Konstruktion für die Serienreife zu aufwendig war und Deutz kurz darauf mit der Entwicklung leistungsstarker Einzelschlepper wie dem D 9005 begann. === Deutz-Fahr Agro XXL === [[Datei:Deutz Agro XXL.JPG|thumb|Deutz-Fahr Agro XXL]] Der Deutz-Fahr AgroXXL 1630 wurde auf der Agritechnica 2009 als Prototyp eines 600 PS starken Großschleppers vorgestellt, der in Kooperation mit der DTU (Deutsche Traktoren Union) entstand. Das Herzstück des Giganten war ein 16-Liter-V8-Motor von Deutz, dessen Kraft über acht Räder auf zwei Tandemachsen auf den Boden übertragen wurde. Technisch war das Fahrzeug als Knicklenker mit einem hydraulischen Knickwinkel von ca. 40° konstruiert, was trotz der enormen Abmessungen einen inneren Wenderadius von nur 5,50 Metern ermöglichte. Ziel war es, die Zugkraft eines schweren Knicklenkers mit der Bodenschonung und Straßentauglichkeit eines Acht-Rad-Konzepts zu vereinen; das Projekt ging jedoch aufgrund hoher Komplexität nie in Serienfertigung. == Literatur & Weblinks == {{Commons|Category:Deutz-Fahr tractors|Deutz-Fahr-Traktoren}} {{Wikipedia1|Deutz-Fahr}} * Karel Vermoesen, Michael Bruse: ''Alle Traktoren von Deutz und Deutz-Fahr.'' 2 Bd. Verlag Klaus Rabe, 2009. ISBN 9783926071385 * [http://www.samedeutz-fahr.com www.samedeutz-fahr.com] * [http://www.deutz-fahr.com www.deutz-fahr.com] * [http://www.deutzforum.de/ www.deutzforum.de] Die Listen folgender Websites sind in Teilen unstimmig, zur groben Orientierung jedoch brauchbar: * [http://www.deutz-traktoren.de/ www.deutz-traktoren.de] * [http://www.konedata.net/Traktorit/deutz.htm www.konedata.net] (Modelldaten Finnisch/Englisch) * [http://home.arcor.de/gbotzet/Schlepperlisten%20Deutz.htm Private Datensammlung zu Deutz- und Deutz-Fahr-Traktoren von J. Botzet] Die folgende Seite wird wahrscheinlich weiter bearbeitet und ist deshalb nur zeitlich begrenzt in dieser Variante verfügbar? * https://issuu.com/deutz-fahr === Quellen === <references /> {{:Traktorenlexikon: Navigation}} l54dibr4l5f4k9f3ozqfvbayxhevkm4 Traktorenlexikon: Deutz-Fahr DX 110 0 46616 1090614 1089858 2026-09-09T11:50:53Z JaWa1998 115962 1090614 wikitext text/x-wiki {{:Traktorenlexikon: Navigation |HERSTELLER-LINK=Traktorenlexikon: Deutz-Fahr |HERSTELLER= Deutz-Fahr}} {{:Traktorenlexikon: Modell-Infobox | HERSTELLER = [[Traktorenlexikon: Deutz-Fahr|Deutz-Fahr]] | MODELLREIHE = DX-Reihe | MODELL = DX 110 | BILD = Deutz DX110.JPG | BILDBESCHREIBUNG = | BAUWEISE = Blockbauweise | PRODUKTIONSBEGINN = 1978 | PRODUKTIONSENDE = 1983 | STÜCKZAHL = | EIGENGEWICHT = 4.420 (A: 4.900) | LÄNGE = 4.490 | BREITE = 2.304 | HÖHE = 2.720 | RADSTAND = 2.688 (A: 2683) | BODENFREIHEIT = 590 (A: 450) | SPURWEITE = | SPURWEITE VORNE = 1.596-2.196 (A: 1.800 oder 2.000) | SPURWEITE HINTEN = 1.800 oder 2.000 | WENDERADIUS MIT LENKBREMSE = 4.280 | WENDERADIUS OHNE LENKBREMSE = 4720 (A: 6.090) | BEREIFUNG VORNE = 11.00-16 ASF (A: 14.9-24 AS) | BEREIFUNG HINTEN = 18.4-38 AS | LEISTUNG KW = 75 | LEISTUNG PS = 102 | NENNDREHZAHL = 2.300 | ZYLINDER = 6 | HUBRAUM = 5.652 | DREHMOMENTANSTIEG = | KRAFTSTOFF = Diesel | KÜHLSYSTEM = Luftkühlung | ANTRIEBSTYP = Hinterrad- oder Allradantrieb | GETRIEBE = 12V/4R oder 15V/5R | HÖCHSTGESCHWINDIGKEIT = 25 oder 30 | KATEGORIESORTIERUNG = Deutz-Fahr DX 110 }} Der '''Deutz DX 110''' gehört zur '''1978''' eingeführten, neu entwickleten '''DX-Serie''' von Deutz. Er war direkt ab Marktstart erhältlich (gehört somit zur 1. Generation) und stellte dabei das mittlere Modell dar. Er ersetzte den [[Traktorenlexikon: Deutz D 10006|D 10006]] aus der Vorgängerserie '''06''' sowohl als Hinterrad- als auch Allradmaschine. Ausgestattet war der 100PS-Schlepper mit dem '''F6L 912'''-Motor, der schon im Vorgänger verbaut und bewährt war. Beim Getriebe standen eine Normal- (4-Gang, 25km/h) und eine Schnellgang-Ausführung (5-Gang, 30km/h) zur Wahl. Damit verbunden wurde bei Deutz-Fahr eine Zweistummel-Ausführung der Zapfwelle (540/1000) eingeführt. Bei der Fahrerkabine konnte anfangs noch zwischen der '''JuniorCab''' und der '''MasterCab''' gewählt werden, nach kurzer Zeit wurde dann aber die besser ausgestattete MasterCab serienmäßig verbaut. Nach 5 Jahren Bauzeit wurde der DX 110 im Jahr 1983 durch seinen Nachfolger [[Traktorenlexikon: Deutz-Fahr DX 6.10|DX 6.10]] mit neuer Nomenklatur ersetzt. ==Motor== * KHD, Typ: F6L 912, stehend-luftgekühlter Viertakt-Sechszylinder-Reihen-Saugmotor mit Direkteinspritzverfahren, Bosch-Reihen-Einspritzpumpe, zahnradgetriebener Nockenwelle, Dralleinspritzkanal, Bosch-Vierloch-Düse, hängende Ventile, siebenfach-gelagerter Kurbelwelle, Bosch-Drehzahlregler, Pierburg-Kraftstoffpumpe, Kolbenkühlung, Druckumlaufschmierung mittels Zahnradpumpe, Einzel-Aluminium-Zylinderköpfe, integrierter Motorölkühler, Trockenluftfilter mit Zyklon-Vorabscheider, Dreiring-Leichtmetall-Kolben und thermostatisch-geregeltes Axialgebläse. * Bohrung = 100 mm, Hub = 120 mm * Verdichtung = 17:1 * Drehmoment bei Höchstleistung = 312 Nm * Max. Drehmoment = 349 Nm bei 1.600 U/min. * Leerlaufdrehzahl = 650 bis 750 U/min. * Geregelter Drehzahlbereich = 750 bis 2.450 U/min. * Max. Einspritzdruck = 175 bar * Einspritzmenge = 52 mm³/Hub und Nenndrehzahl * Pierburg-Kraftstoffpumpe, Typ: PE 15 252 * Bosch-Drehzahlregler, Typ: EP/RSV 325-1150 A 8 B 2014 DL * Bosch-Einspritzpumpe, Typ: PES 6 A 80 D 410/3 RS 2527 * Bosch-Mehrloch-Düse, Typ: DLLA 149 S 394 ==Kupplung== * unabhängige, trockene Doppelkupplung * Pedal betätigte Fahrkupplung mit 310 mm Scheiben-Durchmesser * Handhebel betätigte Zapfwellenkupplung mit 310 mm Scheiben-Durchmesser * Typ: LuK 310/310 TGU 6 ==Getriebe== '''Merkmale''' * Im Ölbad laufendes, schrägverzahntes Deutz-Synchrongetriebe '''TW90.3''' mit Seitenschaltung * Viergang-Version mit '''Typ: TW-90.30''' für die '''25 km/h'''-Ausführung * Fünfgang-Version mit '''Typ: TW-90.31''' für die '''30 km/h'''-Ausführung * Vollsynchronisiertes Wechselgetriebe mit vier bzw. fünf Gängen * Gruppen-Getriebe mit drei Vorwärts- und einer Rückwärtsgruppe, in die Bereiche L-M-H und R unterteilt * Gruppen L und H mit Klauenschaltung * Gruppen M und R mit Synchronschaltung '''Eigenschaften''' * Gangzahl vorwärts/rückwärts = 12/4 * Auf Wunsch mit Schnellgang = 15/5 ''Optional mit klauengeschalteter Kriechgruppe LL'' * Gangzahl vorwärts/rückwärts = 16/4 * Auf Wunsch mit Schnellgang = 20/5 '''''Änderungen im Jahr 1982''''' * Im Ölbad laufendes, schrägverzahntes Deutz-Vollsynchron-Getriebe, Typ: TW-903 mit Seitenschaltung * Synchronisiertes Wechselgetriebe mit sechs Gängen * Bei der 30 km/h- Ausführung ist der sechste Gang gesperrt * Synchronisiertes Gruppengetriebe mit drei Vorwärts- und einer Rückwärtsgruppe, in die Bereiche L-M-H und R unterteilt * 15 Vorwärts- und 5 Rückwärtsgänge bzw. 18 Vorwärts- und 6 Rückwärtsgänge ''Optional mit klauengeschalteter Kriechgruppe'' * 20 Vorwärts- und 5 Rückwärtsgänge bzw. 24 Vorwärts- und 6 Rückwärtsgänge '''Gesamtübersetzung-Triebwerk TW-90.30 bzw. TW-90.31''' "Gruppe-LL" * 1.Gang = 1758,73:1 * 2.Gang = 1151,92:1 * 3.Gang = 939,53:1 * 4.Gang = 647,95:1 * 5.Gang = 527,96:1 "Gruppe-L" * 1.Gang = 329,29:1 * 2.Gang = 215,68:1 * 3.Gang = 175,91:1 * 4.Gang = 121,32:1 * 5.Gang = 98,85:1 "Gruppe-M" * 1.Gang = 162,51:1 * 2.Gang = 106,44:1 * 3.Gang = 86,81:1 * 4.Gang = 59,87:1 * 5.Gang = 48,78:1 "Gruppe-H" * 1.Gang = 77,48:1 * 2.Gang = 50,75:1 * 3.Gang = 41,39:1 * 4.Gang = 28,55:1 * 5.Gang = 23,26:1 "Gruppe-R" * 1.Gang = 132,41:1 * 2.Gang = 86,72:1 * 3.Gang = 70,73:1 * 4.Gang = 48,78:1 * 5.Gang = 39,75:1 ===Geschwindigkeiten vor- und rückwärts=== ''Geschwindigkeiten Triebwerk TW-90.30 bzw. TW-90.31 mit Bereifung 18.4-38 AS'' "Gruppe-LL" * 1.Gang = 0,40 km/h * 2.Gang = 0,62 km/h * 3.Gang = 0,76 km/h * 4.Gang = 1,09 km/h * 5.Gang = 1,35 km/h "Gruppe-L" * 1.Gang = 2,2 km/h * 2.Gang = 3,3 km/h * 3.Gang = 4,0 km/h * 4.Gang = 5,9 km/h * 5.Gang = 7,2 km/h "Gruppe-M" * 1.Gang = 4,4 km/h * 2.Gang = 6,7 km/h * 3.Gang = 8,2 km/h * 4.Gang = 11,9 km/h * 5.Gang = 14,6 km/h "Gruppe-H" * 1.Gang = 9,2 km/h * 2.Gang = 14,0 km/h * 3.Gang = 17,2 km/h * 4.Gang = 25,0 km/h * 5.Gang = 30,0 km/h "Gruppe-R" * 1.Gang = 5,4 km/h * 2.Gang = 8,2 km/h * 3.Gang = 10,0 km/h * 4.Gang = 14,6 km/h * 5.Gang = 17,9 km/h ''Geschwindigkeiten Triebwerk TW-903 mit Bereifung 18.4 R 38 AS'' "Gruppe-LL" * 1.Gang = 0,4 km/h * 2.Gang = 0,6 km/h * 3.Gang = 0,7 km/h * 4.Gang = 1,1 km/h * 5.Gang = 1,3 km/h * 6.Gang = 1,7 km/h "Gruppe-L" * 1.Gang = 2,4 km/h * 2.Gang = 3,2 km/h * 3.Gang = 4,1 km/h * 4.Gang = 5,9 km/h * 5.Gang = 7,2 km/h * 6.Gang = 9,1 km/h "Gruppe-M" * 1.Gang = 4,9 km/h * 2.Gang = 6,7 km/h * 3.Gang = 8,4 km/h * 4.Gang = 12,2 km/h * 5.Gang = 15,0 km/h * 6.Gang = 18,9 km/h "Gruppe-H" * 1.Gang = 10,0 km/h * 2.Gang = 13,5 km/h * 3.Gang = 17,0 km/h * 4.Gang = 25,0 km/h * 5.Gang = 30,0 km/h * 6.Gang = 40,0 km/h "Gruppe-R" * 1.Gang = 4,6 km/h * 2.Gang = 6,2 km/h * 3.Gang = 7,8 km/h * 4.Gang = 11,3 km/h * 5.Gang = 14,0 km/h * 6.Gang = 17,6 km/h ==Zapfwelle== * Unabhängige Motorzapfwelle * Handhebel betätigt und lastschaltbar * 540/min b. Motordrehzahl 2.070/min, Mmax = 1.400 Nm * 1.000/min b. Motordrehzahl 2.070/min, Pmax = 68 kW * Stummel bei 540er-Zapfwelle = 1 3/8"- 6 Keile (Form A) * Stummel bei 1.000er-Zapfwelle = 1 3/8"- 21 teilig (Form B), wahlweise 1 3/8"- 6 Keile (Form A) ''Optional mit unabhängiger und lastschaltbarer Frontzapfwelle'' * Drehzahl = 1.000 U/min. ==Bremsen== '''Betriebsbremse''' * hydraulische "Teves"-Festsattel-Scheibenbremse Typ: '''TEVES SS-60''' * Auf die Differentialseitenwellen wirkend, als Einzelrad-Bremse zu verwenden * Außendurchmesser der Scheibe = 276 mm '''Feststellbremse''' * Unabhängige, mechanisch betätigte Feststellbremse * Simplex-Innenbacken-Bremse * Auf zwei Bremstrommeln wirkend * Bremstrommel = 180 x 60 mm '''Verzögerungswerte''' * Max. Verzögerung = 4,0 m/s² * Pedalkraft = 23 daN * Bremsweg bei 25 km/h = 7,6 m '''Optional''' * Zweikreis-Druckluftbremsanlage * Kombinierte Ein-und Zweikreis-Druckluftbremsanlage * Förderleistung = 120 l/min * Betriebsdruck = 8 bar * Kesselinhalt = 20 l ==Achsen== '''Vorderachsen''' ''Bei Hinterradantrieb (2WD)'' * Pendelnd-gelagerte Teleskop-Vorderachse, Typ: '''KHD Tele-02''' * Spurweiten in Stufen von 100 mm = 1.500 bis 2.100 mm ''Bei Allradantrieb (4WD)'' * Allrad mit Handhebel betätigter, lastschaltbarer SIGE-Lenktriebachse Typ: ''' * Typ: '''SIGE 4173''' mit seitlicher Kardanwelle * Spurweiten = 1.800 und 2.000 mm ''Wahlweise'' * Allrad mit Handhebel betätigter, lastschaltbarer SIGE-Portal-Lenktriebachse * Typ: '''SIGE 2000 P''' mit seitlicher Kardanwelle * Optitrac-Selbstsperrdifferential * Spurweiten = 1.800 und 2.000 mm '''Hinterachse''' * Hinterachse mit Kegelrad-Getriebe und Stirnradübersetzung * Sechsfache Spurweite durch Verstellräder, in Stufen von 100 mm = 1.600 bis 2.000 mm * Pedal betätigte, selbstausrückende und lastschaltbare Differentialsperre '''Achslasten''' ''bei Allradantrieb'' * Vorderachslast = 1.905 kg (2WD = 1.500 kg) * Zul. Vorderachslast = 2.700 kg (2WD = 2.300 kg) * Hinterachslast = 2.940 kg (2WD = 2.900 kg) * Zul. Hinterachslast = 4.600 kg ==Lenkung== '''Lenkanlage''' * Hydrostatische ZF-Lenkung, Typ: '''ZF Servostat 8452''' * Lenkzylinder mit 50 mm Kolbendurchmesser und 250 mm Kolbenhub '''Hydraulische Versorgung''' * Förderleistung je Pumpenumdrehung = 14 cm³ * Fördermenge = 34,7 l/min * Betriebsdruck = 120 bar ==Hydrauliksystem und Kraftheber== '''Kraftheber''' * DEUTZ-TRANSFERMATIC-SYSTEM K55.2 mit 2 Zusatzhubzylindern und Unterlenkerregelung * Pumpenantrieb direkt vom Motor * Dreipunktkupplung = Kat. II * Zusatzsteuergeräte = max. 3 '''Funktionen''' * Heben, Senken, Neutral- und Schwimmstellung, Lage- und Zugkraftregelung * Hubhöhenbegrenzung, Seitenstabilisierung und Transportsicherung '''Hydraulische Versorgung''' * Bosch-Tandem-Hydraulikpumpe, Typ: HY/ZFFS 11/22,5 + 14 L * Förderleistung je Pumpenumdrehung = 22,5cm³ * Fördermenge = 55,7 l/min * Arbeitsdruck = 175 bar '''Leistung''' * Leistung der Hydraulik = 10,7 kW * Max. Hubkraft an den Koppelpunkten = 51.000 N (5.200 kp ~ 5.200 kg) ''Optional mit Fronthubwerk'' * Dreipunktkupplung der Kategorie I * Max. Hubkraft = 1.800 kg ==Steuergeräte== * 1 DW Steuergerät * Optional bis zu zwei weitere EW oder DW Zusatz-Steuergeräte ==Elektrische Ausrüstung== * 12 Volt-Einrichtung nach StVZO * Batterie, 12 V-110 Ah * Bosch-Anlasser, JD 12 V-2,7 kW * Bosch-Lichtmaschine, G1 14 V-33 A 27 (462 W) * Beru-Glühkerze, Typ: 169 G 9.5 V ==Maße und Abmessungen == '''Allrad''' * Bei Bereifung vorn/hinten = 14.9-24/18.4-38 * Radstand = 2.683 mm * Länge = 4.458 mm * Breite = 2.300 mm * Höhe über Auspuff = 2.780 mm * Höhe mit offener Auspuffklappe = 2.880 mm * Bodenfreiheit unter der Fronttriebachse, Typ: 4172 oder 4173 = 480 mm * Bodenfreiheit unter der Fronttriebachse, Typ: 2000 P = 580 mm * Spurweiten vorn = 1.800 u. 2.000 mm * Spurweiten hinten = 1.600...2.200 mm * Wenderadius o. Lenkbremse = 6.090 mm * Leergewicht = 4.900 kg * Zul. Gesamtgewicht = 6.800 kg '''Geänderte Werte durch Hinterradantrieb-Ausführung''' * Radstand = 2.558 mm * Bodenfreiheit unter der Teleskop-Vorderachse = 560 mm * Leergewicht = 4.420 kg * Zul. Gesamtgewicht = 6.800 kg ===Bereifung=== '''Standardbereifung''' (Allrad) * Vorne = 12.4/24 AS (2WD = 11.00-16) * ''Niederquerschnitt:'' '''85''': 320/85R24 '''70''': 360/70R24 '''65''': 420/65R24 * Hinten = 18.4-38 AS * ''Niederquerschnitt:'' '''85''': 460/85R38 '''70''': 520/70R38 '''65''': 600/65R38 '''Optional''' (Allrad) * Vorne = 13.6-24 AS (2WD = 7.50-20) * ''Niederquerschnitt:'' '''85''': 340/85R24 '''70''': 380/70R24 '''65''': 440/65R24 * Hinten = 18.4-34 AS * ''Niederquerschnitt:'' '''85''': 460/85R34 '''70''': 520/70R34 '''65''': 600/65R34 * Hinten = 20.8-34 AS * ''Niederquerschnitt:'' '''85''': 520/85R34 '''70''': 580/70R34, 620/70R34 '''65''': 650/65R34, 750/65R30 * Hinten = 16.9-38 AS * ''Niederquerschnitt:'' '''85''': 420/85R38 '''70''': 480/70R38 '''65''': 540/65R38 '''Pflegebereifung''' (Allrad) * Vorne = 9.5-32 AS * Hinten = 9.5-48 AS ==Füllmengen== * Tankinhalt = '''120 l''' * Mit Zusatztank = '''220 l''' * ''Diesel'' * Motoröl inkl. Filter = '''15 l''' * ''15W-40'', ''10W-30'' oder ''10W-40'' * ''Wechsel 200h/ 12 Monate'' * Hydraulik = '''13 l''' * Mit optionalem Hydrauliktank: = '''25 l''' * ''15W-40'' oder ''20W-20'' * ''Prüfen 100h, Wechsel 12 Monate'' * Getriebe = '''38 l''', mit Allrad = '''40 l''' * ''15W-40'', ''80W-90 GL4'' oder ''10W-30'' * ''Prüfen 500h, Wechsel 1000h/ 12 Monate'' * Fronttriebachse, Typ: 2000 P = '''7 l''' plus '''1 l''' je Planetentrieb * Fronttriebachse, Typ: 4173 = '''8 l''' plus '''0,5 l''' je Planetentrieb * ''80W-90 GL5'' * ''Prüfen 500h, Wechsel 1000h/ 12 Monate'' * Bremsflüssigkeit = '''0,5 l''' DOT4 ===Verbrauch=== * Optimaler Kraftstoffverbrauch = 223 g/kWh bei 41,8 kW und 1.495 U/min. ==Kabine== * Vollverglaste, gummigelagerte, staub- und schallisolierte (85 dB A) MasterCap-Kabine mit ebenen Boden, Grammer-Komfort-Sitz, ausstellbare Front-, Seiten- und Heckscheibe, dreistufiges Heizungs- und Belüftungsgebläse mit acht Düsen, Traktormeter, Kontrolleuchten, Kraftstoffanzeige, klappbarem Beifahrersitz und Außen- und Innenspiegel ==Sonderausrüstung== * Frontzapfwelle * Frontkraftheber * Rad- und Frontgewichte * Frontlader * Druckluftbremsanlage * Klimaanlage * Kriechgruppe * Zugpendel * Super-Komfort-Sitz * Zusatz-Steuergeräte * Arbeitsscheinwerfer * Verstellräder ==Sonstiges== ==Literatur== * Vom DX bis zum Agrostar (Karel Vermoesen/Michael Bruse) Seite 570 * Deutz-Das Typenbuch (Albert Mößmer) * Vom MTH zum Agrotron (Bernd Ertl) ==Weblinks== {{:Traktorenlexikon: Navigation |HERSTELLER-LINK=Traktorenlexikon: Deutz-Fahr |HERSTELLER=Deutz-Fahr}} 5xneb0atwcfu6vpo358w7n4hhnjfxz2 Gitarre: Melodiepicking - Should Auld Acquaintance 0 61379 1090597 1064737 2026-09-09T05:02:36Z Mjchael 2222 /* Should Auld Acquaintance */ 1090597 wikitext text/x-wiki <noinclude> {{:Gitarre/ Navi|Einführung_in_das_Melodiepicking|Kategorietitel=Should Auld Acquaintance| {{:Gitarre: Melodiepicking/ Navi}} |img=Tablature music icon.svg|px=60}} </noinclude> =Should Auld Acquaintance= Bei beiden Varianten in D-Dur und A-Dur gibt es keine besonderen Schwierigkeiten. Melodie- und Akkordtöne werden als Arpeggio gespielt: Greife den Akkord, setze alle Zupfhand-Finger auf und ziehe sie schnell nacheinander ab – ähnlich dem [[Gitarre: Zupfen im Vierviertel-Takt|Pima-Zupfmuster]], nur schneller, sodass ein harfenartiger Klang entsteht. Der Daumen streicht meist über zwei Saiten. Die Melodie wird vom Mittelfinger gespielt und vom Zeigefinger mit einem Fülltong aus dem Akkord unterstützt. ==== A-Dur-Variante==== <score> << \new ChordNames { \chordmode { \once \override ChordName.text = "Aj7" a:7+ e:sus4 e:6 d:/a }} \new FretBoards { \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < a, e-2 gis-1 cis'-3 e' > % Aj7 < e, b,-2 e-3 a-4 b e' > % Esus4 < e, b,-2 e-3 gis-1 cis'-4 e' > % Esus4 < a,-3\6 d-4\5 fis-2\4> % D\A } >> </score> Von E6 zum E (2. 6. und 14. Takt) spielst du eine Abzugsbindung ( = Pull-Off ). Zupfe den E6 und ziehe kurz danach den kleinen Finger nach unten hin ab. Im Lied kommt der Ton F# (D-Saite, 4.Bund) vor. Wenn man diesen F# mit dem kleinen Finger greift, hat man kein D als Bass-Ton zur Verfügung. Allein mit dem A im Bass so ganz ohne D klingt es mit dem Melodieton F# nicht überzeugend. Daher greife den Ton D auf der A-Saite im 5. Bund und den Ton A auf der E-Saite im 5.Bund. Schau dir ggf. noch mal den Begleitvorschlag für [[Gitarre: Akkorderweiterungen Bonus|Vida La Vita (Coldplay)]] an. In dem PDF-Dokument ist das erste A eingeklammert ist. Das heißt hier nur, dass dieser schon gegriffen, aber noch nicht gespielt wird. Es ist eine [[w:Umkehrung (Musik)|Umkehrung]] des D-Dur-Akkordes. [[Datei: Picking_Should_Auld_Acquaintance_in_A.pdf]] <div class="noprint> {{Audio|Picking_Should_Auld_Acquaintance_in_A.mid| hier das "Picking_Should_Auld_Acquaintance_in_A" anhören}} {{PDF-Version|Picking_Should_Auld_Acquaintance_in_A.pdf|hier das PDF zum "Picking_Should_Auld_Acquaintance_in_A" mit Noten und Tabulatur herunterladen}} </div> ====Die D-Dur-Variante==== <score> << \new ChordNames { \chordmode { \once \override ChordName.text = "Aj7" d:7+ a:sus4 a:6 }} \new FretBoards { \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < d a-1 cis'-2 fis'-3 > % Dj7 < a, e-1 a-2 d'-4 e' > % Asus4 < a, e-1 a-2 cis'-3 fis'-4 > % A6 } >> </score> <score> << \new ChordNames { \chordmode { d d:5 g:/d }} \new FretBoards { \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < d a-1 d'-2 fis'-1 > % D* < d a-1 d'-2 a'-4 > % D5 < d d'-2\3 g'-3\2 b'-1\1 > % G/D } >> </score> Beim D-Dur-Akkord mußt du mit dem Melodieton rauf bis zum A (E-Saite 5.Bund). Den einfachen D kannst du auch mit dem Zeigefinger quer über die drei unteren Saiten im 2. Bund greifen. Dann kommt der kleine Finger bequem in den 5. Bund zum A. Den Mini-Barré kannst du auch beim D5 beibehalten. D5, weil die Durterz (3) kurzfristig verdeckt ist. [[Datei: Picking_Should_Auld_Acquaintance_in_D.pdf]] <div class="noprint> ;das Stück in D-Dur {{Audio|Picking_Should_Auld_Acquaintance_in_D.mid| hier das "Picking_Should_Auld_Acquaintance_in_D" anhören}} {{PDF-Version|Picking_Should_Auld_Acquaintance_in_D.pdf|hier das PDF zum "Picking_Should_Auld_Acquaintance_in_D" mit Noten und Tabulatur herunterladen}} </div> {{:Liederbuch/ Auld Lang Syne}} <noinclude> <div class="noprint> {{Navigation Thema| zurücklink=Gitarre: Melodiepicking - Plaisir D'Amoure| hochlink=#top | vorlink=Gitarre: Melodiepicking - Michael Row Your Board Ashore}} </div> [[Kategorie:Liederbuch/_Irish-Folk]] </noinclude> 7cve1x1677jjvx6q96p2tse4lhqul5h Musiklehre: einfache Transponiertabelle 0 78964 1090568 1011302 2026-09-08T17:24:17Z DennisDieterRoth 116858 /* Akkorde Transponieren */ Kommas ergänzt 1090568 wikitext text/x-wiki <noinclude>{{:Musiklehre/ Navi|Musiklehre| {{:Musiklehre/ Navi_Abschnitte}}| {{:Musiklehre/ Navi_Harmonielehre}}}} </noinclude> == Akkorde Transponieren == *In der ersten Spalte siehst du die Namen der Dur-Tonart und die parallele Molltonart. *Die nächsten drei Spalten zeigen die üblichen Dur-Akkorde, die in der Tonart vorkommen. *Die folgenden drei Spalten zeigen die üblichen Moll-Akkorde, die in der Tonart vorkommen. *Es folgt die Dominante der Moll-Tonart. *Der letzte Akkord in der Reihe wird seltener gebraucht und ist eher für Jazzer interessant. *Die Anzahl der Vorzeichen am Schluss können eine weitere Orientierung sein. #Wähle dir eine Tonart aus (oder schlicht eine Reihe, in der alle deine Akkorde vorkommen); #Zahlen und Zusätze wie sus und add lässt man der Einfachheit halber weg (sie werden hinterher einfach wieder angefügt); #dann wähle dir eine Zieltonart aus und tausche jeden Akkord der einen Reihe durch den Akkord der anderen Reihe aus. {| class="wikitable" border="1" |-style="background:#B9FFC5" |- !Tonart !&nbsp; !colspan="3"|Dur-Akkorde !&nbsp; !colspan="3"|Moll-Akkorde !&nbsp; !colspan="2"|Moll-Dominante<br>und 7. Akkordstufe !&nbsp; !Vorzeichen |- !Gb-Dur/Ebm !width="30px"|&nbsp; |Cb (!) |Gb |Db<sup>(7)</sup> !width="30px"|&nbsp; |Abm |Ebm |Bbm !width="30px"|&nbsp; |Bb7 |Fm7b5 !width="30px"|&nbsp; |bbbbbb(6) |- !Db-Dur/Bbm !width="30px"|&nbsp; |Gb |Db |Ab<sup>(7)</sup> !width="30px"|&nbsp; |Ebm |Bbm |Fm !width="30px"|&nbsp; |F7 |Cm7b5 !width="30px"|&nbsp; |bbbbb(5) |- !Ab-Dur/Fm !width="30px"|&nbsp; |Db |Ab |Eb<sup>(7)</sup> !width="30px"|&nbsp; |Bbm |Fm |Cm !width="30px"|&nbsp; |C7 |Gm7b5 !width="30px"|&nbsp; |bbbb(4) |- !Eb-Dur/Cm !width="30px"|&nbsp; |Ab |Eb |Bb<sup>(7)</sup> !width="30px"|&nbsp; |Fm |Cm |Gm !width="30px"|&nbsp; |G7 |Dm7b5 !width="30px"|&nbsp; |bbb(3) |- !Bb-Dur/Gm !width="30px"|&nbsp; |Eb |Bb |F<sup>(7)</sup> !width="30px"|&nbsp; |Cm |Gm |Dm !width="30px"|&nbsp; |D7 |Am7b5 !width="30px"|&nbsp; |bb(2) |- !F-Dur/Dm !width="30px"|&nbsp; |Bb |F |C<sup>(7)</sup> !width="30px"|&nbsp; |Gm |Dm |Am !width="30px"|&nbsp; |A7 |Em7b5 !width="30px"|&nbsp; |b(1) |- !C-Dur/Am !width="30px"|&nbsp; !F !C !G<sup>(7)</sup> !width="30px"|&nbsp; !Dm !Am !Em !width="30px"|&nbsp; !E7 !Hm7b5 !width="30px"|&nbsp; !0b 0# |- !G-Dur/Em !width="30px"|&nbsp; |C |G |D<sup>(7)</sup> !width="30px"|&nbsp; |Am |Em |Hm !width="30px"|&nbsp; |H7 |F#m7b5 !width="30px"|&nbsp; |# (1) |- !D-Dur/Hm !width="30px"|&nbsp; |G |D |A<sup>(7)</sup> !width="30px"|&nbsp; |Em |Hm |F#m !width="30px"|&nbsp; |F#7 |C#m7b5 !width="30px"|&nbsp; |##(2) |- !A-Dur/F#m !width="30px"|&nbsp; |D |A |E<sup>(7)</sup> !width="30px"|&nbsp; |Hm |F#m |C#m !width="30px"|&nbsp; |C#7 |G#m7b5 !width="30px"|&nbsp; |###(3) |- !E-Dur/C#m !width="30px"|&nbsp; |A |E |H<sup>(7)</sup> !width="30px"|&nbsp; |F#m |C#m |G#m !width="30px"|&nbsp; |G#7 |D#m7b5 !width="30px"|&nbsp; |####(4) |- !H-Dur/G#m !width="30px"|&nbsp; |E |H |F#<sup>(7)</sup> !width="30px"|&nbsp; |C#m |G#m |D#m !width="30px"|&nbsp; |D#7 |A#m7b5 !width="30px"|&nbsp; |#####(5) |- !F#-Dur/D#m !width="30px"|&nbsp; |H |F# |C#<sup>(7)</sup> !width="30px"|&nbsp; |G#m |D#m |A#m !width="30px"|&nbsp; |A#7 |E#m7b5 (!) !width="30px"|&nbsp; |######(6) |} Die Tonarten C#, G#, D# und A# werden in der Praxis so gut wie nie verwendet. Stattdessen nimmt man die Bb-Tonarten. Es käme sonst regelmäßig zu merkwürdige Akkorde wie E#m oder H#m oder zu Tönen wie F## (Fisis) oder C## (Cisis). Wenn es nicht unbedingt sein muss, meidet man solch seltsame Akkorde bzw. Töne. Also anstelle einer C# Dur-Tonleiter nimmt man die Db-Dur-Tonleiter. Statt G#-Dur nimmt man Ab-Dur, statt D#-Dur nimmt man Eb-Dur und statt einer A#-Dur-Tonleiter nimmt man eine Bb-Dur-Tonleiter. Du siehst, dass in einer Tonleiter bei den Vorzeichen nie Kreuze und Bes gemischt werden. <noinclude> {{Navigation hoch}} </noinclude> hkpyhkup4pqjqdxat4x06vyalrfvmfb Traktorenlexikon: Deutz-Fahr DX 85 0 84367 1090555 1089857 2026-09-08T13:21:21Z JaWa1998 115962 1090555 wikitext text/x-wiki {{:Traktorenlexikon: Navigation |HERSTELLER-LINK=Traktorenlexikon: Deutz-Fahr |HERSTELLER= Deutz-Fahr}} {{:Traktorenlexikon: Modell-Infobox | HERSTELLER = Deutz | MODELLREIHE = DX-Reihe | MODELL = DX 85 | BILD = Deutz_DX_85.JPG | BILDBESCHREIBUNG = Deutz DX 85 | BAUWEISE = Blockbauweise | PRODUKTIONSBEGINN = 1978 | PRODUKTIONSENDE = 1982 | STÜCKZAHL = | EIGENGEWICHT = 4.470 (A: 4.830) | LÄNGE = 4.360 | BREITE = 2.304 | HÖHE = 2.680 | RADSTAND = 2.558 (A: 2.553) | BODENFREIHEIT = 560 (A: 420) | SPURWEITE = | SPURWEITE VORNE = 1.476–1.976 | SPURWEITE HINTEN = 1.600–2.000 | WENDERADIUS MIT LENKBREMSE = 3.900 | WENDERADIUS OHNE LENKBREMSE = 4.430 (A: 5.870) | BEREIFUNG VORNE = 7.50-20 ASF (A: 12.4-24 AS) | BEREIFUNG HINTEN = 16.9-34 AS | LEISTUNG KW = 59 | LEISTUNG PS = 80 | NENNDREHZAHL = 2.300 | ZYLINDER = 5 | HUBRAUM = 4.712 | DREHMOMENTANSTIEG = | KRAFTSTOFF = Diesel | KÜHLSYSTEM = Luftkühlung | ANTRIEBSTYP = Allrad- oder Hinterradantrieb | GETRIEBE = 12V/4R bzw. 15V/5R | HÖCHSTGESCHWINDIGKEIT = 25 oder 30 | KATEGORIESORTIERUNG = Deutz-Fahr DX 85 }} Mit den Traktoren der '''DX-Serie''' brachte Deutz '''1978''' eine komplett neu entwickelte Schlepperserie mit erstmals voll integrierten Kabinen auf den Markt. Sie ersetzte die großen 6-Zylinder-Traktoren der erfolgreichen Baureihe D06 (D8006-D13006) und führte anstatt der ZF-Getriebe nun hauseigene Getriebe bzw. ab dem DX 140 Steyr-Getriebe ein. Deutz setzte dabei zum einen auf die bewährten Suagmotoren der Reihe 912, führte aber auch gleichzeitig in den Top-Modellen die neue Reihe 913 als Saug- und Turbomotoren ein. Der '''DX 85''' stellte dabei das Einstiegsmodell dar und ersetzte den [[Traktorenlexikon: Deutz D 8006|D 8006]] sowohl als Hinterrad- als auch Allradmaschine. Bemerkenswert war der '''F5L 912''' Fünfzylindermotor, da der schwierige Massenausgleich (144° Kurbelwellenversatz) bis Ende der 1970er Jahre die Fertigung von Motoren mit fünf Zylindern bei Deutz nicht möglich gemacht hatte. Andere Hersteller setzten damals in dieser Leistungsklasse meist auf 4-Zylinder-(Turbo)motoren. Anfängliche Probleme mit dem TW 90.1 Getriebe bei einigen Modellen wurden durch eine Rückrufaktion weitestgehend behoben. Heute noch laufende Maschinen sind entweder überholt worden oder die Probleme traten nie auf. Beim Getriebe standen eine Normal- (4-Gang, 25km/h) und eine Schnellgang-Ausführung (5-Gang, 30km/h) zur Wahl. Damit verbunden wurde bei Deutz-Fahr eine Zweistummel-Ausführung der Zapfwelle eingeführt. Bei der Fahrerkabine konnte anfangs noch zwischen der '''JuniorCab''' und der '''MasterCab''' gewählt werden, nach kurzer Zeit wurde dann aber die besser ausgestattete MasterCab serienmäßig verbaut. Die erste DX-Serie, wozu der DX 85 gezählt wird, ist sehr gut an den an der A-Säule der Kabine angeschlagenen schwarzen GFK-Türen zu erkennen. Nach 4 Jahren Bauzeit wurde der '''DX 85''' 1982 durch seinen etwas stärkeren Nachfolger [[Traktorenlexikon: Deutz-Fahr DX 86|DX 86]] ersetzt und erhielt, wie alle weiteren Modelle in dieser Leistungsklasse, den neuen BF4L 913 4-Zylinder-Turbo-Motor. ==Motor== * KHD, Typ: F5L 912, stehender luftgekühlter Viertakt-Fünfzylinder-Reihen-Saugmotor mit Direkteinspritzverfahren, Dralleinspritzkanal, Druckumlaufschmierung mittels Zahnradpumpe, Bosch-Vierloch-Düse, Kolbenkühlung, Pierburg-Kraftstoffpumpe, zahnradgetriebener Nockenwelle, Siccopur-Trockenluftfilter, Bosch-Reihen-Einspritzpumpe, Dreiring-Leichtmetall-Kolben, Einzel-Aluminium-Zylinderköpfe, Bosch-Drehzahlregler, hängenden Ventilen, sechsfach-gelagerter Kurbelwelle und Axial-Gebläse. * Bohrung = 100 mm, Hub = 120 mm * Verdichtung = 17:1 * Drehmoment bei Höchstleistung = 248 Nm * Max. Drehmoment = 282 Nm bei 1.605 U/min * Leerlaufdrehzahl = 650 bis 700 U/min * Geregelter Drehzahlbereich = 750 bis 2.400 U/min * Max. Einspritzdruck = 175 bar * Einspritzmenge = 49 mm³/Hub und Nenndrehzahl * Pierburg-Kraftstoffpumpe, Typ: PE 15 252 * Bosch-Drehzahlregler, Typ: EP/RSV 325-1150 A 8 B 2014 DL * Bosch-Einspritzpumpe, Typ: PES 5 A 80 D 410/3 RS 2526 * Bosch-Mehrloch-Düse, Typ: DLLA 149 S 394 ==Kupplung== * unabhängige, trockene Doppelkupplung * Pedal betätigte Fahrkupplung mit 300 mm Scheiben-Durchmesser * Handhebel betätigte Zapfwellenkupplung mit 280 mm Scheiben-Durchmesser * Typ: LuK 300/280 TGU 6 oder auch DT 295/280 G ==Getriebe== '''Merkmale''' * Im Ölbad laufendes, schrägverzahntes Deutz-Synchrongetriebe '''TW90''' mit Seitenschaltung * Viergang-Version mit '''Typ: TW-90.10''' für die '''25 km/h'''-Ausführung * Fünfgang-Version mit '''Typ: TW-90.11''' für die '''30 km/h'''-Ausführung * Vollsynchronisiertes Wechselgetriebe mit vier bzw. fünf Gängen * Gruppen-Getriebe mit drei Vorwärts- und einer Rückwärtsgruppe, in die Bereiche L-M-H und R unterteilt * Gruppen L und H mit Klauenschaltung * Gruppen M und R mit Synchronschaltung '''Eigenschaften''' * Gangzahl vorwärts/rückwärts = 12/4 * Auf Wunsch mit Schnellgang = 15/5 '''Optional mit klauengeschalteter Kriechgruppe ''LL'' ''' * Gangzahl vorwärts/rückwärts = 16/4 * Auf Wunsch mit Schnellgang = 20/5 '''Gesamtübersetzung-Triebwerk TW-90.10 bzw. TW-90.11''' "Gruppe-LL" * 1.Gang = 1644,39:1 * 2.Gang = 1077,03:1 * 3.Gang = 878,45:1 * 4.Gang = 605,83:1 * 5.Gang = 493,64:1 "Gruppe-L" * 1.Gang = 307,89:1 * 2.Gang = 201,66:1 * 3.Gang = 164,48:1 * 4.Gang = 113,43:1 * 5.Gang = 92,43:1 "Gruppe-M" * 1.Gang = 151,94:1 * 2.Gang = 99,52:1 * 3.Gang = 81,17:1 * 4.Gang = 55,98:1 * 5.Gang = 45,61:1 "Gruppe-H" * 1.Gang = 72,44:1 * 2.Gang = 47,45:1 * 3.Gang = 38,70:1 * 4.Gang = 26,69:1 * 5.Gang = 21,75:1 "Gruppe-R" * 1.Gang = 123,80:1 * 2.Gang = 81,09:1 * 3.Gang = 66,14:1 * 4.Gang = 45,61:1 * 5.Gang = 37,16:1 ==Geschwindigkeiten vor- und rückwärts== ''Geschwindigkeiten mit Bereifung 16.9-34 AS'' "Gruppe-LL" * 1.Gang = 0,39 km/h * 2.Gang = 0,60 km/h * 3.Gang = 0,74 km/h * 4.Gang = 1,1 km/h * 5.Gang = 1,3 km/h "Gruppe-L" * 1.Gang = 2,1 km/h * 2.Gang = 3,2 km/h * 3.Gang = 3,9 km/h * 4.Gang = 5,7 km/h * 5.Gang = 7,0 km/h "Gruppe-M" * 1.Gang = 4,4 km/h * 2.Gang = 6,5 km/h * 3.Gang = 8,0 km/h * 4.Gang = 11,5 km/h * 5.Gang = 14,2 km/h "Gruppe-H" * 1.Gang = 8,9 km/h * 2.Gang = 13,6 km/h * 3.Gang = 16,7 km/h * 4.Gang = 25,0 km/h * 5.Gang = 30,0 km/h "Gruppe-R" * 1.Gang = 5,2 km/h * 2.Gang = 8,0 km/h * 3.Gang = 9,8 km/h * 4.Gang = 14,2 km/h * 5.Gang = 17,4 km/h ==Zapfwelle== * Unabhängige Motorzapfwelle * Handhebel betätigt und lastschaltbar * 540/min b. Motordrehzahl 2.070/min, Mmax = 1.400 Nm * 1.000/min b. Motordrehzahl 2.070/min, Pmax = 52,9 kW * Stummel bei 540er-Zapfwelle = 1 3/8"- 6 Keile (Form A) * Stummel bei 1.000er-Zapfwelle = 1 3/8"- 21 teilig (Form B), wahlweise 1 3/8"- 6 Keile (Form A) ==Bremsen== '''Betriebsbremse''' * hydraulische "Teves"-Festsattel-Scheibenbremse * Auf die Differentialseitenwellen wirkend, als Einzelrad-Bremse zu verwenden * Außendurchmesser der Scheibe = 276 mm '''Feststellbremse''' * Unabhängige, mechanisch betätigte Feststellbremse * Simplex-Innenbacken-Bremse * Auf zwei Bremstrommeln wirkend * Bremstrommel = 180 x 60 mm '''Verzögerungswerte''' * Max. Verzögerung = 3,8 m/s² * Pedalkraft = 25 daN * Bremsweg bei 25 km/h = 7,8 m '''Optional''' * Zweikreis-Druckluftbremsanlage * Kombinierte Ein-und Zweikreis-Druckluftbremsanlage * Förderleistung = 120 l/min * Betriebsdruck = 8 bar * Kesselinhalt = 20 l ==Achsen== '''Vorderachsen''' ''Bei Hinterradantrieb (2WD)'' * Pendelnd-gelagerte Teleskop-Vorderachse, Typ: '''KHD Tele-01''' * wahlweise als verstärkte Ausführung, Typ: '''KHD Tele-02''' * Spurweiten "Tele-01" in Stufen von 100 mm = 1.476 bis 1.976 mm * Spurweiten "Tele-02" in Stufen von 100 mm = 1.500 bis 2.100 mm ''Bei Allradantrieb (4WD)'' * Allrad mit Handhebel betätigter, lastschaltbarer SIGE-Lenktriebachse * Typ: '''SIGE 5300''' mit zentraler Gelenkwelle * Spurweiten = 1.800 und 2.000 mm ''Wahlweise'' * Typ: '''SIGE 4172''' mit zentraler Gelenkwelle * Optitrac-Selbstsperrdifferential * Typ: '''ZF APL-1551''' * Spurweiten = 1.500 und 1.800 mm * Optitrac-Selbstsperrdifferential * Typ: '''SIGE 4173''' * Spurweiten = 1.800 und 2.000 mm * Optitrac-Selbstsperrdifferential * SIGE-Portalachse * Typ: '''SIGE 2000 P''' * Spurweiten = 1.800 und 2.000 mm * Optitrac-Selbstsperrdifferential * Übersetzungsverhältnis '''1,396''' '''Hinterachse''' * Hinterachse mit Kegelrad-Getriebe und Stirnradübersetzung * Vierfache Spurweite durch Verstellräder, in Stufen von 100 mm = 1.600 bis 2.000 mm * Pedal betätigte, selbstausrückende und lastschaltbare Differentialsperre '''Achslasten''' ''bei Allradantrieb'' * Vorderachslast = 1.800 kg (2WD = 1.620 kg) * Zul. Vorderachslast = 2.500 kg (2WD = 2.010 kg) * Hinterachslast = 2.850 kg * Zul. Hinterachslast = 4.200 kg ==Lenkung== '''Lenkanlage''' * Hydrostatische ZF-Lenkung, Typ: '''ZF Servostat 8452''' * Lenkzylinder mit 50 mm Kolbendurchmesser und 250 mm Kolbenhub * "Tele-01" mit doppelt wirkenden Lenkzylinder mit 45 mm Kolbendurchmesser und 250 mm Kolbenhub * "Tele-02" mit doppelt wirkenden Lenkzylinder mit 50 mm Kolbendurchmesser und 250 mm Kolbenhub '''Hydraulische Versorgung''' * Förderleistung je Pumpenumdrehung = 14 cm³ * Fördermenge = 34,7 l/min * Betriebsdruck = 120 bar ==Hydrauliksystem und Kraftheber== '''Kraftheber''' * DEUTZ-TRANSFERMATIC-SYSTEM K55.2 mit Zusatzhubzylinder * Optional 2. Zusatzhubzylinder * Pumpenantrieb direkt vom Motor * Dreipunktkupplung = Kat. II * Zusatzsteuergeräte = max. 3 '''Funktionen''' * Heben, Senken, Neutral- und Schwimmstellung, Lage- und Zugkraftregelung * Hubhöhenbegrenzung, Seitenstabilisierung und Transportsicherung '''Hydraulische Versorgung''' * Bosch-Tandem-Hydraulikpumpe, Typ: HY/ZFFS 11/16 + 14 L * Förderleistung je Pumpenumdrehung = 16,5 cm³ (Wunsch 22,5cm³) * Fördermenge = 40 l/min (Wunsch 56 l/min) * Arbeitsdruck = 175 bar '''Leistung''' * Leistung der Hydraulik = 10,43 kW * Max. Hubkraft an den Koppelpunkten = 34.350 N (3.500 kp ~ 3.500kg) ''Bei 2. Zusatzhubzylinder'' * Max. Hubkraft an den Koppelpunkten = 50.030 N (5.100 kp ~ 5.100 kg) ==Steuergeräte== * 1 DW Steuergerät * Optional bis zu zwei weitere EW oder DW Zusatz-Steuergeräte ==Elektrische Ausrüstung== * 12 Volt-Einrichtung nach StVZO * Batterie: 12 V-110 AH * Bosch-Anlasser, Typ: JD 12 V-3 kW * Bosch-Lichtmaschine, Typ: G1 14 V-33 A 27 (462 W) * Kaltstart-Flammglühkerze, Typ: B 12 V H 7632 ==Maße und Abmessungen== '''Allrad''' * Bei Bereifung vorn/hinten = 12.4-24/16.9-34 * Radstand = 2.553 mm * Länge = 4.320 mm * Breite = 2.304 mm * Höhe mit Kabine = 2.604 mm * Höhe mit offener Auspuffklappe = 2.780 mm * Bodenfreiheit unter der Fronttriebachse, Typ: 4172 oder 4173 = 420 mm * Bodenfreiheit unter der Fronttriebachse, Typ: 2000 P = 520 mm * Spurweiten vorn = 1.500 u. 1.800 mm (1.800 u. 2.000 mm) * Spurweiten hinten = 1.500...2.000 mm * Wenderadius o. Lenkbremse = 5.870 mm * Leergewicht = 4.830 kg * Zul. Gesamtgewicht = 6.000 kg '''Geänderte Werte durch Hinterradantrieb-Ausführung''' * Bodenfreiheit unter der Teleskop-Achse = 560 mm * Radstand = 2.558 mm * Bodenfreiheit unter der Teleskop-Vorderachse = 560 mm * Eigengewicht = 4.470 kg * Zul. Gesamtgewicht = 5.600 kg ==Bereifung== '''Standardbereifung''' (Allrad) * Vorne = 12.4/24 AS (2WD = 7.50-20) * ''Niederquerschnitt:'' '''85''': 320/85R24 '''70''': 360/70R24 '''65''': 420/65R24 * Hinten = 16.9-34 AS * ''Niederquerschnitt:'' '''85''': 420/85R34 '''70''': 480/70R34 '''65''': 540/65R34 '''Optional''' (Allrad) * Vorne = 13.6-24 AS (2WD = 7.50-18/ 10.00-16) * ''Niederquerschnitt:'' '''85''': 340/85R24 '''70''': 380/70R24 '''65''': 440/65R24 * Hinten = 13.6-38 AS * ''Niederquerschnitt:'' '''85''': 340/85R38 '''70''': 500/70R34 '''65''': 540/65R34 * Hinten = 18.4-34 AS * ''Niederquerschnitt:'' '''85''': 460/85R34 '''70''': 520/70R38, 680/70R32 '''65''': 600/65R38 '''Pflegebereifung''' (Allrad) * Vorne = 9.5-28 AS * Hinten = 9.5-44 AS ==Füllmengen== * Tankinhalt = '''120 l''' * ''Diesel'' * Motoröl inkl. Filter = '''13 l''' * ''15W-40'', ''10W-30'' oder ''10W-40'' * ''Wechsel 200h/ 12 Monate'' * Hydraulik = '''13 l''' * Mit optionalem Hydrauliktank: = '''25 l''' * ''15W-40'' oder ''20W-20'' * ''Prüfen 100h, Wechsel 12 Monate'' * Getriebe = 38 l, mit Allrad = 48 l * ''15W-40'', ''80W-90 GL4'' oder ''10W-30'' * ''Prüfen 500h, Wechsel 1000h/ 12 Monate'' * Optionaler Ölbadluftfilter = 0,9 l * ''Siehe Motoröl'' * Fronttriebachse, Typ: 4172 = 5,5 l plus 0,5 l je Planetentrieb * Fronttriebachse, Typ: 2000 P = 7 l plus 1 l je Planetentrieb * Fronttriebachse, Typ: 4173 = 8 l plus 0,5 l je Planetentrieb * ''80W-90 GL5'' * ''Prüfen 500h, Wechsel 1000h/ 12 Monate'' * Bremsflüssigkeit = 0,5 l DOT4 ==Verbrauch== * Geringster spezifischer Kraftstoffverbrauch bei Vollast = 216 g/kWh * Optimaler Kraftstoffverbrauch = 229 g/kWh bei 48,9 kW und 1.955 U/min ==Kabine== * Vollverglaste, elastisch-gelagerte, staub-und schallisolierte (85 dB(A)) Deutz-MasterCab mit ebenen Boden, Grammer-Komfortsitz, dreistufen Heizungs- und Belüftungsgebläse, Traktormeter, ausstellbare Front- und Heckscheibe, klappbarer Beifahrersitz, innen- und außen Spiegel, Kraftstoffanzeige, Scheibenwaschanlage und Kontrollleuchten. ==Sonderausrüstung== * Front- und Radgewichte * Klimaanlage * Luftgefederter Fahrersitz * Frontlader * Druckluftbremsanlage * Zusatz-Steuergeräte * Zweiter Zusatz-Hubzylinder * Kriechgruppe * Schnellgang-Ausführung * Allradantrieb * Zugpendel * Zeituhr * Luftdruckmesser * Arbeitsscheinwerfer * Tele-02-Achse ==Literatur== Aust, Oliver: Deutz-Traktoren im Einsatz, Podszun-Verlag * Deutz-Das Typenbuch (Albert Mößmer) * Vom MTH bis zur 07-Serie (Karel Vermoesen/Michael Bruse) Seite 562 * Betriebsanleitung der Traktoren DX 85, DX 90, DX 110 und DX 120 ==Quellen== Aust, Oliver: Deutz-Traktoren im Einsatz, Podszun-Verlag <references /> ==Weblinks== {{:Traktorenlexikon: Navigation |HERSTELLER-LINK=Traktorenlexikon: Deutz-Fahr |HERSTELLER= Deutz-Fahr}} t5tet0ornya69op1ahs12zbjmq8sapj 1090599 1090555 2026-09-09T08:10:56Z JaWa1998 115962 1090599 wikitext text/x-wiki {{:Traktorenlexikon: Navigation |HERSTELLER-LINK=Traktorenlexikon: Deutz-Fahr |HERSTELLER= Deutz-Fahr}} {{:Traktorenlexikon: Modell-Infobox | HERSTELLER = Deutz | MODELLREIHE = DX-Reihe | MODELL = DX 85 | BILD = Deutz_DX_85.JPG | BILDBESCHREIBUNG = Deutz DX 85 | BAUWEISE = Blockbauweise | PRODUKTIONSBEGINN = 1978 | PRODUKTIONSENDE = 1982 | STÜCKZAHL = | EIGENGEWICHT = 4.470 (A: 4.830) | LÄNGE = 4.360 | BREITE = 2.304 | HÖHE = 2.680 | RADSTAND = 2.558 (A: 2.553) | BODENFREIHEIT = 560 (A: 420) | SPURWEITE = | SPURWEITE VORNE = 1.476–1.976 | SPURWEITE HINTEN = 1.600–2.000 | WENDERADIUS MIT LENKBREMSE = 3.900 | WENDERADIUS OHNE LENKBREMSE = 4.430 (A: 5.870) | BEREIFUNG VORNE = 7.50-20 ASF (A: 12.4-24 AS) | BEREIFUNG HINTEN = 16.9-34 AS | LEISTUNG KW = 59 | LEISTUNG PS = 80 | NENNDREHZAHL = 2.300 | ZYLINDER = 5 | HUBRAUM = 4.712 | DREHMOMENTANSTIEG = | KRAFTSTOFF = Diesel | KÜHLSYSTEM = Luftkühlung | ANTRIEBSTYP = Allrad- oder Hinterradantrieb | GETRIEBE = 12V/4R bzw. 15V/5R | HÖCHSTGESCHWINDIGKEIT = 25 oder 30 | KATEGORIESORTIERUNG = Deutz-Fahr DX 85 }} Der '''Deutz DX 85''' gehört zur '''1978''' eingeführten, neu entwickleten '''DX-Serie''' von Deutz. Er war direkt ab Marktstart erhältlich (gehört somit zur 1. Generation) und stellte dabei das Einstiegsmodell dar. Er ersetzte den [[Traktorenlexikon: Deutz D 8006|D 8006]] aus der Vorgängerserie '''06''' sowohl als Hinterrad- als auch Allradmaschine. Bemerkenswert war der '''F5L 912''' Fünfzylindermotor, da der schwierige Massenausgleich (144° Kurbelwellenversatz) bis Ende der 1970er Jahre die Fertigung von Motoren mit fünf Zylindern bei Deutz erschwert hatte. Andere Hersteller setzten damals in dieser Leistungsklasse meist auf 4-Zylinder-(Turbo)motoren. Anfängliche Probleme mit dem TW90.1-Getriebe bei einigen Modellen wurden durch eine Rückrufaktion weitestgehend behoben. Heute noch laufende Maschinen wurden überholt oder waren nicht von den Problemen betroffen. Beim Getriebe standen eine Normal- (4-Gang, 25km/h) und eine Schnellgang-Ausführung (5-Gang, 30km/h) zur Wahl. Damit verbunden wurde bei Deutz-Fahr eine Zweistummel-Ausführung der Zapfwelle (540/1000) eingeführt. Bei der Fahrerkabine konnte anfangs noch zwischen der '''JuniorCab''' und der '''MasterCab''' gewählt werden, nach kurzer Zeit wurde dann aber die besser ausgestattete MasterCab serienmäßig verbaut. Nach 4 Jahren Bauzeit wurde der '''DX 85''' 1982 durch seinen etwas stärkeren Nachfolger [[Traktorenlexikon: Deutz-Fahr DX 86|DX 86]] ersetzt und erhielt, wie alle weiteren Modelle in dieser Leistungsklasse, den neuen BF4L 913 4-Zylinder-Turbo-Motor. ==Motor== * KHD, Typ: F5L 912, stehender luftgekühlter Viertakt-Fünfzylinder-Reihen-Saugmotor mit Direkteinspritzverfahren, Dralleinspritzkanal, Druckumlaufschmierung mittels Zahnradpumpe, Bosch-Vierloch-Düse, Kolbenkühlung, Pierburg-Kraftstoffpumpe, zahnradgetriebener Nockenwelle, Siccopur-Trockenluftfilter, Bosch-Reihen-Einspritzpumpe, Dreiring-Leichtmetall-Kolben, Einzel-Aluminium-Zylinderköpfe, Bosch-Drehzahlregler, hängenden Ventilen, sechsfach-gelagerter Kurbelwelle und Axial-Gebläse. * Bohrung = 100 mm, Hub = 120 mm * Verdichtung = 17:1 * Drehmoment bei Höchstleistung = 248 Nm * Max. Drehmoment = 282 Nm bei 1.605 U/min * Leerlaufdrehzahl = 650 bis 700 U/min * Geregelter Drehzahlbereich = 750 bis 2.400 U/min * Max. Einspritzdruck = 175 bar * Einspritzmenge = 49 mm³/Hub und Nenndrehzahl * Pierburg-Kraftstoffpumpe, Typ: PE 15 252 * Bosch-Drehzahlregler, Typ: EP/RSV 325-1150 A 8 B 2014 DL * Bosch-Einspritzpumpe, Typ: PES 5 A 80 D 410/3 RS 2526 * Bosch-Mehrloch-Düse, Typ: DLLA 149 S 394 ==Kupplung== * unabhängige, trockene Doppelkupplung * Pedal betätigte Fahrkupplung mit 300 mm Scheiben-Durchmesser * Handhebel betätigte Zapfwellenkupplung mit 280 mm Scheiben-Durchmesser * Typ: LuK 300/280 TGU 6 oder auch DT 295/280 G ==Getriebe== '''Merkmale''' * Im Ölbad laufendes, schrägverzahntes Deutz-Synchrongetriebe '''TW90''' mit Seitenschaltung * Viergang-Version mit '''Typ: TW-90.10''' für die '''25 km/h'''-Ausführung * Fünfgang-Version mit '''Typ: TW-90.11''' für die '''30 km/h'''-Ausführung * Vollsynchronisiertes Wechselgetriebe mit vier bzw. fünf Gängen * Gruppen-Getriebe mit drei Vorwärts- und einer Rückwärtsgruppe, in die Bereiche L-M-H und R unterteilt * Gruppen L und H mit Klauenschaltung * Gruppen M und R mit Synchronschaltung '''Eigenschaften''' * Gangzahl vorwärts/rückwärts = 12/4 * Auf Wunsch mit Schnellgang = 15/5 ''Optional mit klauengeschalteter Kriechgruppe LL'' * Gangzahl vorwärts/rückwärts = 16/4 * Auf Wunsch mit Schnellgang = 20/5 '''Gesamtübersetzung-Triebwerk TW-90.10 bzw. TW-90.11''' "Gruppe-LL" * 1.Gang = 1644,39:1 * 2.Gang = 1077,03:1 * 3.Gang = 878,45:1 * 4.Gang = 605,83:1 * 5.Gang = 493,64:1 "Gruppe-L" * 1.Gang = 307,89:1 * 2.Gang = 201,66:1 * 3.Gang = 164,48:1 * 4.Gang = 113,43:1 * 5.Gang = 92,43:1 "Gruppe-M" * 1.Gang = 151,94:1 * 2.Gang = 99,52:1 * 3.Gang = 81,17:1 * 4.Gang = 55,98:1 * 5.Gang = 45,61:1 "Gruppe-H" * 1.Gang = 72,44:1 * 2.Gang = 47,45:1 * 3.Gang = 38,70:1 * 4.Gang = 26,69:1 * 5.Gang = 21,75:1 "Gruppe-R" * 1.Gang = 123,80:1 * 2.Gang = 81,09:1 * 3.Gang = 66,14:1 * 4.Gang = 45,61:1 * 5.Gang = 37,16:1 ==Geschwindigkeiten vor- und rückwärts== ''Geschwindigkeiten mit Bereifung 16.9-34 AS'' "Gruppe-LL" * 1.Gang = 0,39 km/h * 2.Gang = 0,60 km/h * 3.Gang = 0,74 km/h * 4.Gang = 1,1 km/h * 5.Gang = 1,3 km/h "Gruppe-L" * 1.Gang = 2,1 km/h * 2.Gang = 3,2 km/h * 3.Gang = 3,9 km/h * 4.Gang = 5,7 km/h * 5.Gang = 7,0 km/h "Gruppe-M" * 1.Gang = 4,4 km/h * 2.Gang = 6,5 km/h * 3.Gang = 8,0 km/h * 4.Gang = 11,5 km/h * 5.Gang = 14,2 km/h "Gruppe-H" * 1.Gang = 8,9 km/h * 2.Gang = 13,6 km/h * 3.Gang = 16,7 km/h * 4.Gang = 25,0 km/h * 5.Gang = 30,0 km/h "Gruppe-R" * 1.Gang = 5,2 km/h * 2.Gang = 8,0 km/h * 3.Gang = 9,8 km/h * 4.Gang = 14,2 km/h * 5.Gang = 17,4 km/h ==Zapfwelle== * Unabhängige Motorzapfwelle * Handhebel betätigt und lastschaltbar * 540/min b. Motordrehzahl 2.070/min, Mmax = 1.400 Nm * 1.000/min b. Motordrehzahl 2.070/min, Pmax = 52,9 kW * Stummel bei 540er-Zapfwelle = 1 3/8"- 6 Keile (Form A) * Stummel bei 1.000er-Zapfwelle = 1 3/8"- 21 teilig (Form B), wahlweise 1 3/8"- 6 Keile (Form A) ==Bremsen== '''Betriebsbremse''' * hydraulische "Teves"-Festsattel-Scheibenbremse * Auf die Differentialseitenwellen wirkend, als Einzelrad-Bremse zu verwenden * Außendurchmesser der Scheibe = 276 mm '''Feststellbremse''' * Unabhängige, mechanisch betätigte Feststellbremse * Simplex-Innenbacken-Bremse * Auf zwei Bremstrommeln wirkend * Bremstrommel = 180 x 60 mm '''Verzögerungswerte''' * Max. Verzögerung = 3,8 m/s² * Pedalkraft = 25 daN * Bremsweg bei 25 km/h = 7,8 m '''Optional''' * Zweikreis-Druckluftbremsanlage * Kombinierte Ein-und Zweikreis-Druckluftbremsanlage * Förderleistung = 120 l/min * Betriebsdruck = 8 bar * Kesselinhalt = 20 l ==Achsen== '''Vorderachsen''' ''Bei Hinterradantrieb (2WD)'' * Pendelnd-gelagerte Teleskop-Vorderachse, Typ: '''KHD Tele-01''' * wahlweise als verstärkte Ausführung, Typ: '''KHD Tele-02''' * Spurweiten "Tele-01" in Stufen von 100 mm = 1.476 bis 1.976 mm * Spurweiten "Tele-02" in Stufen von 100 mm = 1.500 bis 2.100 mm ''Bei Allradantrieb (4WD)'' * Allrad mit Handhebel betätigter, lastschaltbarer SIGE-Lenktriebachse * Typ: '''SIGE 5300''' mit zentraler Gelenkwelle * Spurweiten = 1.800 und 2.000 mm ''Wahlweise'' * Typ: '''SIGE 4172''' mit zentraler Gelenkwelle * Optitrac-Selbstsperrdifferential * Typ: '''ZF APL-1551''' * Spurweiten = 1.500 und 1.800 mm * Optitrac-Selbstsperrdifferential * Typ: '''SIGE 4173''' * Spurweiten = 1.800 und 2.000 mm * Optitrac-Selbstsperrdifferential * SIGE-Portalachse * Typ: '''SIGE 2000 P''' * Spurweiten = 1.800 und 2.000 mm * Optitrac-Selbstsperrdifferential * Übersetzungsverhältnis '''1,396''' '''Hinterachse''' * Hinterachse mit Kegelrad-Getriebe und Stirnradübersetzung * Vierfache Spurweite durch Verstellräder, in Stufen von 100 mm = 1.600 bis 2.000 mm * Pedal betätigte, selbstausrückende und lastschaltbare Differentialsperre '''Achslasten''' ''bei Allradantrieb'' * Vorderachslast = 1.800 kg (2WD = 1.620 kg) * Zul. Vorderachslast = 2.500 kg (2WD = 2.010 kg) * Hinterachslast = 2.850 kg * Zul. Hinterachslast = 4.200 kg ==Lenkung== '''Lenkanlage''' * Hydrostatische ZF-Lenkung, Typ: '''ZF Servostat 8452''' * Lenkzylinder mit 50 mm Kolbendurchmesser und 250 mm Kolbenhub * "Tele-01" mit doppelt wirkenden Lenkzylinder mit 45 mm Kolbendurchmesser und 250 mm Kolbenhub * "Tele-02" mit doppelt wirkenden Lenkzylinder mit 50 mm Kolbendurchmesser und 250 mm Kolbenhub '''Hydraulische Versorgung''' * Förderleistung je Pumpenumdrehung = 14 cm³ * Fördermenge = 34,7 l/min * Betriebsdruck = 120 bar ==Hydrauliksystem und Kraftheber== '''Kraftheber''' * DEUTZ-TRANSFERMATIC-SYSTEM K55.2 mit Zusatzhubzylinder und Oberlenkerregelung * Optional 2. Zusatzhubzylinder * Pumpenantrieb direkt vom Motor * Dreipunktkupplung = Kat. II * Zusatzsteuergeräte = max. 3 '''Funktionen''' * Heben, Senken, Neutral- und Schwimmstellung, Lage- und Zugkraftregelung * Hubhöhenbegrenzung, Seitenstabilisierung und Transportsicherung '''Hydraulische Versorgung''' * Bosch-Tandem-Hydraulikpumpe, Typ: HY/ZFFS 11/16 + 14 L * Förderleistung je Pumpenumdrehung = 16,5 cm³ (Wunsch 22,5cm³) * Fördermenge = 40 l/min (Wunsch 56 l/min) * Arbeitsdruck = 175 bar '''Leistung''' * Leistung der Hydraulik = 10,43 kW * Max. Hubkraft an den Koppelpunkten = 34.350 N (3.500 kp ~ 3.500kg) ''Bei 2. Zusatzhubzylinder'' * Max. Hubkraft an den Koppelpunkten = 50.030 N (5.100 kp ~ 5.100 kg) ==Steuergeräte== * 1 DW Steuergerät * Optional bis zu zwei weitere EW oder DW Zusatz-Steuergeräte ==Elektrische Ausrüstung== * 12 Volt-Einrichtung nach StVZO * Batterie: 12 V-110 AH * Bosch-Anlasser, Typ: JD 12 V-3 kW * Bosch-Lichtmaschine, Typ: G1 14 V-33 A 27 (462 W) * Kaltstart-Flammglühkerze, Typ: B 12 V H 7632 ==Maße und Abmessungen== '''Allrad''' * Bei Bereifung vorn/hinten = 12.4-24/16.9-34 * Radstand = 2.553 mm * Länge = 4.320 mm * Breite = 2.304 mm * Höhe mit Kabine = 2.604 mm * Höhe mit offener Auspuffklappe = 2.780 mm * Bodenfreiheit unter der Fronttriebachse, Typ: 4172 oder 4173 = 420 mm * Bodenfreiheit unter der Fronttriebachse, Typ: 2000 P = 520 mm * Spurweiten vorn = 1.500 u. 1.800 mm (1.800 u. 2.000 mm) * Spurweiten hinten = 1.500...2.000 mm * Wenderadius o. Lenkbremse = 5.870 mm * Leergewicht = 4.830 kg * Zul. Gesamtgewicht = 6.000 kg '''Geänderte Werte durch Hinterradantrieb-Ausführung''' * Bodenfreiheit unter der Teleskop-Achse = 560 mm * Radstand = 2.558 mm * Bodenfreiheit unter der Teleskop-Vorderachse = 560 mm * Eigengewicht = 4.470 kg * Zul. Gesamtgewicht = 5.600 kg ==Bereifung== '''Standardbereifung''' (Allrad) * Vorne = 12.4/24 AS (2WD = 7.50-20) * ''Niederquerschnitt:'' '''85''': 320/85R24 '''70''': 360/70R24 '''65''': 420/65R24 * Hinten = 16.9-34 AS * ''Niederquerschnitt:'' '''85''': 420/85R34 '''70''': 480/70R34 '''65''': 540/65R34 '''Optional''' (Allrad) * Vorne = 13.6-24 AS (2WD = 7.50-18/ 10.00-16) * ''Niederquerschnitt:'' '''85''': 340/85R24 '''70''': 380/70R24 '''65''': 440/65R24 * Hinten = 13.6-38 AS * ''Niederquerschnitt:'' '''85''': 340/85R38 '''70''': 500/70R34 '''65''': 540/65R34 * Hinten = 18.4-34 AS * ''Niederquerschnitt:'' '''85''': 460/85R34 '''70''': 520/70R38, 680/70R32 '''65''': 600/65R38 '''Pflegebereifung''' (Allrad) * Vorne = 9.5-28 AS * Hinten = 9.5-44 AS ==Füllmengen== * Tankinhalt = '''120 l''' * ''Diesel'' * Motoröl inkl. Filter = '''13 l''' * ''15W-40'', ''10W-30'' oder ''10W-40'' * ''Wechsel 200h/ 12 Monate'' * Hydraulik = '''13 l''' * Mit optionalem Hydrauliktank: = '''25 l''' * ''15W-40'' oder ''20W-20'' * ''Prüfen 100h, Wechsel 12 Monate'' * Getriebe = 38 l, mit Allrad = 48 l * ''15W-40'', ''80W-90 GL4'' oder ''10W-30'' * ''Prüfen 500h, Wechsel 1000h/ 12 Monate'' * Optionaler Ölbadluftfilter = 0,9 l * ''Siehe Motoröl'' * Fronttriebachse, Typ: 4172 = 5,5 l plus 0,5 l je Planetentrieb * Fronttriebachse, Typ: 2000 P = 7 l plus 1 l je Planetentrieb * Fronttriebachse, Typ: 4173 = 8 l plus 0,5 l je Planetentrieb * ''80W-90 GL5'' * ''Prüfen 500h, Wechsel 1000h/ 12 Monate'' * Bremsflüssigkeit = 0,5 l DOT4 ==Verbrauch== * Geringster spezifischer Kraftstoffverbrauch bei Vollast = 216 g/kWh * Optimaler Kraftstoffverbrauch = 229 g/kWh bei 48,9 kW und 1.955 U/min ==Kabine== * Vollverglaste, elastisch-gelagerte, staub-und schallisolierte (85 dB(A)) Deutz-MasterCab mit ebenen Boden, Grammer-Komfortsitz, dreistufen Heizungs- und Belüftungsgebläse, Traktormeter, ausstellbare Front- und Heckscheibe, klappbarer Beifahrersitz, innen- und außen Spiegel, Kraftstoffanzeige, Scheibenwaschanlage und Kontrollleuchten. ==Sonderausrüstung== * Front- und Radgewichte * Klimaanlage * Luftgefederter Fahrersitz * Frontlader * Druckluftbremsanlage * Zusatz-Steuergeräte * Zweiter Zusatz-Hubzylinder * Kriechgruppe * Schnellgang-Ausführung * Allradantrieb * Zugpendel * Zeituhr * Luftdruckmesser * Arbeitsscheinwerfer * Tele-02-Achse ==Literatur== Aust, Oliver: Deutz-Traktoren im Einsatz, Podszun-Verlag * Deutz-Das Typenbuch (Albert Mößmer) * Vom MTH bis zur 07-Serie (Karel Vermoesen/Michael Bruse) Seite 562 * Betriebsanleitung der Traktoren DX 85, DX 90, DX 110 und DX 120 ==Quellen== Aust, Oliver: Deutz-Traktoren im Einsatz, Podszun-Verlag <references /> ==Weblinks== {{:Traktorenlexikon: Navigation |HERSTELLER-LINK=Traktorenlexikon: Deutz-Fahr |HERSTELLER= Deutz-Fahr}} mmwaisroezc1i4djqb89qca78m9x8c5 1090615 1090599 2026-09-09T11:54:54Z JaWa1998 115962 1090615 wikitext text/x-wiki {{:Traktorenlexikon: Navigation |HERSTELLER-LINK=Traktorenlexikon: Deutz-Fahr |HERSTELLER= Deutz-Fahr}} {{:Traktorenlexikon: Modell-Infobox | HERSTELLER = Deutz | MODELLREIHE = DX-Reihe | MODELL = DX 85 | BILD = Deutz_DX_85.JPG | BILDBESCHREIBUNG = Deutz DX 85 | BAUWEISE = Blockbauweise | PRODUKTIONSBEGINN = 1978 | PRODUKTIONSENDE = 1982 | STÜCKZAHL = | EIGENGEWICHT = 4.470 (A: 4.830) | LÄNGE = 4.360 | BREITE = 2.304 | HÖHE = 2.680 | RADSTAND = 2.558 (A: 2.553) | BODENFREIHEIT = 560 (A: 420) | SPURWEITE = | SPURWEITE VORNE = 1.476–1.976 | SPURWEITE HINTEN = 1.600–2.000 | WENDERADIUS MIT LENKBREMSE = 3.900 | WENDERADIUS OHNE LENKBREMSE = 4.430 (A: 5.870) | BEREIFUNG VORNE = 7.50-20 ASF (A: 12.4-24 AS) | BEREIFUNG HINTEN = 16.9-34 AS | LEISTUNG KW = 59 | LEISTUNG PS = 80 | NENNDREHZAHL = 2.300 | ZYLINDER = 5 | HUBRAUM = 4.712 | DREHMOMENTANSTIEG = | KRAFTSTOFF = Diesel | KÜHLSYSTEM = Luftkühlung | ANTRIEBSTYP = Allrad- oder Hinterradantrieb | GETRIEBE = 12V/4R bzw. 15V/5R | HÖCHSTGESCHWINDIGKEIT = 25 oder 30 | KATEGORIESORTIERUNG = Deutz-Fahr DX 85 }} Der '''Deutz DX 85''' gehört zur '''1978''' eingeführten, neu entwickleten '''DX-Serie''' von Deutz. Er war direkt ab Marktstart erhältlich (gehört somit zur 1. Generation) und stellte dabei das Einstiegsmodell dar. Er ersetzte den [[Traktorenlexikon: Deutz D 8006|D 8006]] aus der Vorgängerserie '''06''' sowohl als Hinterrad- als auch Allradmaschine. Bemerkenswert war der '''F5L 912''' Fünfzylindermotor, da der schwierige Massenausgleich (144° Kurbelwellenversatz) bis Ende der 1970er Jahre die Fertigung von Motoren mit fünf Zylindern bei Deutz erschwert hatte. Andere Hersteller setzten damals in dieser Leistungsklasse meist auf 4-Zylinder-(Turbo)motoren. Anfängliche Probleme mit dem TW90.1-Getriebe bei einigen Modellen wurden durch eine Rückrufaktion weitestgehend behoben. Heute noch laufende Maschinen wurden überholt oder waren nicht von den Problemen betroffen. Beim Getriebe standen eine Normal- (4-Gang, 25km/h) und eine Schnellgang-Ausführung (5-Gang, 30km/h) zur Wahl. Damit verbunden wurde bei Deutz-Fahr eine Zweistummel-Ausführung der Zapfwelle (540/1000) eingeführt. Bei der Fahrerkabine konnte anfangs noch zwischen der '''JuniorCab''' und der '''MasterCab''' gewählt werden, nach kurzer Zeit wurde dann aber die besser ausgestattete MasterCab serienmäßig verbaut. Nach 4 Jahren Bauzeit wurde der '''DX 85''' 1982 durch seinen etwas stärkeren Nachfolger [[Traktorenlexikon: Deutz-Fahr DX 86|DX 86]] ersetzt und erhielt, wie alle weiteren Modelle in dieser Leistungsklasse, den neuen BF4L 913 4-Zylinder-Turbo-Motor. ==Motor== * KHD, Typ: F5L 912, stehender luftgekühlter Viertakt-Fünfzylinder-Reihen-Saugmotor mit Direkteinspritzverfahren, Dralleinspritzkanal, Druckumlaufschmierung mittels Zahnradpumpe, Bosch-Vierloch-Düse, Kolbenkühlung, Pierburg-Kraftstoffpumpe, zahnradgetriebener Nockenwelle, Siccopur-Trockenluftfilter, Bosch-Reihen-Einspritzpumpe, Dreiring-Leichtmetall-Kolben, Einzel-Aluminium-Zylinderköpfe, Bosch-Drehzahlregler, hängenden Ventilen, sechsfach-gelagerter Kurbelwelle und Axial-Gebläse. * Bohrung = 100 mm, Hub = 120 mm * Verdichtung = 17:1 * Drehmoment bei Höchstleistung = 248 Nm * Max. Drehmoment = 282 Nm bei 1.605 U/min * Leerlaufdrehzahl = 650 bis 700 U/min * Geregelter Drehzahlbereich = 750 bis 2.400 U/min * Max. Einspritzdruck = 175 bar * Einspritzmenge = 49 mm³/Hub und Nenndrehzahl * Pierburg-Kraftstoffpumpe, Typ: PE 15 252 * Bosch-Drehzahlregler, Typ: EP/RSV 325-1150 A 8 B 2014 DL * Bosch-Einspritzpumpe, Typ: PES 5 A 80 D 410/3 RS 2526 * Bosch-Mehrloch-Düse, Typ: DLLA 149 S 394 ==Kupplung== * unabhängige, trockene Doppelkupplung * Pedal betätigte Fahrkupplung mit 300 mm Scheiben-Durchmesser * Handhebel betätigte Zapfwellenkupplung mit 280 mm Scheiben-Durchmesser * Typ: LuK 300/280 TGU 6 oder auch DT 295/280 G ==Getriebe== '''Merkmale''' * Im Ölbad laufendes, schrägverzahntes Deutz-Synchrongetriebe '''TW90.1''' mit Seitenschaltung * Viergang-Version mit '''Typ: TW-90.10''' für die '''25 km/h'''-Ausführung * Fünfgang-Version mit '''Typ: TW-90.11''' für die '''30 km/h'''-Ausführung * Vollsynchronisiertes Wechselgetriebe mit vier bzw. fünf Gängen * Gruppen-Getriebe mit drei Vorwärts- und einer Rückwärtsgruppe, in die Bereiche L-M-H und R unterteilt * Gruppen L und H mit Klauenschaltung * Gruppen M und R mit Synchronschaltung '''Eigenschaften''' * Gangzahl vorwärts/rückwärts = 12/4 * Auf Wunsch mit Schnellgang = 15/5 ''Optional mit klauengeschalteter Kriechgruppe LL'' * Gangzahl vorwärts/rückwärts = 16/4 * Auf Wunsch mit Schnellgang = 20/5 '''Gesamtübersetzung-Triebwerk TW-90.10 bzw. TW-90.11''' "Gruppe-LL" * 1.Gang = 1644,39:1 * 2.Gang = 1077,03:1 * 3.Gang = 878,45:1 * 4.Gang = 605,83:1 * 5.Gang = 493,64:1 "Gruppe-L" * 1.Gang = 307,89:1 * 2.Gang = 201,66:1 * 3.Gang = 164,48:1 * 4.Gang = 113,43:1 * 5.Gang = 92,43:1 "Gruppe-M" * 1.Gang = 151,94:1 * 2.Gang = 99,52:1 * 3.Gang = 81,17:1 * 4.Gang = 55,98:1 * 5.Gang = 45,61:1 "Gruppe-H" * 1.Gang = 72,44:1 * 2.Gang = 47,45:1 * 3.Gang = 38,70:1 * 4.Gang = 26,69:1 * 5.Gang = 21,75:1 "Gruppe-R" * 1.Gang = 123,80:1 * 2.Gang = 81,09:1 * 3.Gang = 66,14:1 * 4.Gang = 45,61:1 * 5.Gang = 37,16:1 ==Geschwindigkeiten vor- und rückwärts== ''Geschwindigkeiten mit Bereifung 16.9-34 AS'' "Gruppe-LL" * 1.Gang = 0,39 km/h * 2.Gang = 0,60 km/h * 3.Gang = 0,74 km/h * 4.Gang = 1,1 km/h * 5.Gang = 1,3 km/h "Gruppe-L" * 1.Gang = 2,1 km/h * 2.Gang = 3,2 km/h * 3.Gang = 3,9 km/h * 4.Gang = 5,7 km/h * 5.Gang = 7,0 km/h "Gruppe-M" * 1.Gang = 4,4 km/h * 2.Gang = 6,5 km/h * 3.Gang = 8,0 km/h * 4.Gang = 11,5 km/h * 5.Gang = 14,2 km/h "Gruppe-H" * 1.Gang = 8,9 km/h * 2.Gang = 13,6 km/h * 3.Gang = 16,7 km/h * 4.Gang = 25,0 km/h * 5.Gang = 30,0 km/h "Gruppe-R" * 1.Gang = 5,2 km/h * 2.Gang = 8,0 km/h * 3.Gang = 9,8 km/h * 4.Gang = 14,2 km/h * 5.Gang = 17,4 km/h ==Zapfwelle== * Unabhängige Motorzapfwelle * Handhebel betätigt und lastschaltbar * 540/min b. Motordrehzahl 2.070/min, Mmax = 1.400 Nm * 1.000/min b. Motordrehzahl 2.070/min, Pmax = 52,9 kW * Stummel bei 540er-Zapfwelle = 1 3/8"- 6 Keile (Form A) * Stummel bei 1.000er-Zapfwelle = 1 3/8"- 21 teilig (Form B), wahlweise 1 3/8"- 6 Keile (Form A) ==Bremsen== '''Betriebsbremse''' * hydraulische "Teves"-Festsattel-Scheibenbremse * Auf die Differentialseitenwellen wirkend, als Einzelrad-Bremse zu verwenden * Außendurchmesser der Scheibe = 276 mm '''Feststellbremse''' * Unabhängige, mechanisch betätigte Feststellbremse * Simplex-Innenbacken-Bremse * Auf zwei Bremstrommeln wirkend * Bremstrommel = 180 x 60 mm '''Verzögerungswerte''' * Max. Verzögerung = 3,8 m/s² * Pedalkraft = 25 daN * Bremsweg bei 25 km/h = 7,8 m '''Optional''' * Zweikreis-Druckluftbremsanlage * Kombinierte Ein-und Zweikreis-Druckluftbremsanlage * Förderleistung = 120 l/min * Betriebsdruck = 8 bar * Kesselinhalt = 20 l ==Achsen== '''Vorderachsen''' ''Bei Hinterradantrieb (2WD)'' * Pendelnd-gelagerte Teleskop-Vorderachse, Typ: '''KHD Tele-01''' * wahlweise als verstärkte Ausführung, Typ: '''KHD Tele-02''' * Spurweiten "Tele-01" in Stufen von 100 mm = 1.476 bis 1.976 mm * Spurweiten "Tele-02" in Stufen von 100 mm = 1.500 bis 2.100 mm ''Bei Allradantrieb (4WD)'' * Allrad mit Handhebel betätigter, lastschaltbarer SIGE-Lenktriebachse * Typ: '''SIGE 5300''' mit seitlicher Kardanwelle * Spurweiten = 1.800 und 2.000 mm ''Wahlweise'' * Typ: '''SIGE 4172''' mit zentraler Gelenkwelle * Optitrac-Selbstsperrdifferential * Typ: '''ZF APL-1551''' * Spurweiten = 1.500 und 1.800 mm * Optitrac-Selbstsperrdifferential * Typ: '''SIGE 4173''' * Spurweiten = 1.800 und 2.000 mm * Optitrac-Selbstsperrdifferential * SIGE-Portalachse * Typ: '''SIGE 2000 P''' * Spurweiten = 1.800 und 2.000 mm * Optitrac-Selbstsperrdifferential * Übersetzungsverhältnis '''1,396''' '''Hinterachse''' * Hinterachse mit Kegelrad-Getriebe und Stirnradübersetzung * Vierfache Spurweite durch Verstellräder, in Stufen von 100 mm = 1.600 bis 2.000 mm * Pedal betätigte, selbstausrückende und lastschaltbare Differentialsperre '''Achslasten''' ''bei Allradantrieb'' * Vorderachslast = 1.800 kg (2WD = 1.620 kg) * Zul. Vorderachslast = 2.500 kg (2WD = 2.010 kg) * Hinterachslast = 2.850 kg * Zul. Hinterachslast = 4.200 kg ==Lenkung== '''Lenkanlage''' * Hydrostatische ZF-Lenkung, Typ: '''ZF Servostat 8452''' * Lenkzylinder mit 50 mm Kolbendurchmesser und 250 mm Kolbenhub * "Tele-01" mit doppelt wirkenden Lenkzylinder mit 45 mm Kolbendurchmesser und 250 mm Kolbenhub * "Tele-02" mit doppelt wirkenden Lenkzylinder mit 50 mm Kolbendurchmesser und 250 mm Kolbenhub '''Hydraulische Versorgung''' * Förderleistung je Pumpenumdrehung = 14 cm³ * Fördermenge = 34,7 l/min * Betriebsdruck = 120 bar ==Hydrauliksystem und Kraftheber== '''Kraftheber''' * DEUTZ-TRANSFERMATIC-SYSTEM K55.2 mit Zusatzhubzylinder und Oberlenkerregelung * Optional 2. Zusatzhubzylinder * Pumpenantrieb direkt vom Motor * Dreipunktkupplung = Kat. II * Zusatzsteuergeräte = max. 3 '''Funktionen''' * Heben, Senken, Neutral- und Schwimmstellung, Lage- und Zugkraftregelung * Hubhöhenbegrenzung, Seitenstabilisierung und Transportsicherung '''Hydraulische Versorgung''' * Bosch-Tandem-Hydraulikpumpe, Typ: HY/ZFFS 11/16 + 14 L * Förderleistung je Pumpenumdrehung = 16,5 cm³ (Wunsch 22,5cm³) * Fördermenge = 40 l/min (Wunsch 56 l/min) * Arbeitsdruck = 175 bar '''Leistung''' * Leistung der Hydraulik = 10,43 kW * Max. Hubkraft an den Koppelpunkten = 34.350 N (3.500 kp ~ 3.500kg) ''Bei 2. Zusatzhubzylinder'' * Max. Hubkraft an den Koppelpunkten = 50.030 N (5.100 kp ~ 5.100 kg) ==Steuergeräte== * 1 DW Steuergerät * Optional bis zu zwei weitere EW oder DW Zusatz-Steuergeräte ==Elektrische Ausrüstung== * 12 Volt-Einrichtung nach StVZO * Batterie: 12 V-110 AH * Bosch-Anlasser, Typ: JD 12 V-3 kW * Bosch-Lichtmaschine, Typ: G1 14 V-33 A 27 (462 W) * Kaltstart-Flammglühkerze, Typ: B 12 V H 7632 ==Maße und Abmessungen== '''Allrad''' * Bei Bereifung vorn/hinten = 12.4-24/16.9-34 * Radstand = 2.553 mm * Länge = 4.320 mm * Breite = 2.304 mm * Höhe mit Kabine = 2.604 mm * Höhe mit offener Auspuffklappe = 2.780 mm * Bodenfreiheit unter der Fronttriebachse, Typ: 4172 oder 4173 = 420 mm * Bodenfreiheit unter der Fronttriebachse, Typ: 2000 P = 520 mm * Spurweiten vorn = 1.500 u. 1.800 mm (1.800 u. 2.000 mm) * Spurweiten hinten = 1.500...2.000 mm * Wenderadius o. Lenkbremse = 5.870 mm * Leergewicht = 4.830 kg * Zul. Gesamtgewicht = 6.000 kg '''Geänderte Werte durch Hinterradantrieb-Ausführung''' * Radstand = 2.558 mm * Bodenfreiheit unter der Teleskop-Vorderachse = 560 mm * Leergewicht = 4.470 kg * Zul. Gesamtgewicht = 5.600 kg ==Bereifung== '''Standardbereifung''' (Allrad) * Vorne = 12.4/24 AS (2WD = 7.50-20) * ''Niederquerschnitt:'' '''85''': 320/85R24 '''70''': 360/70R24 '''65''': 420/65R24 * Hinten = 16.9-34 AS * ''Niederquerschnitt:'' '''85''': 420/85R34 '''70''': 480/70R34 '''65''': 540/65R34 '''Optional''' (Allrad) * Vorne = 13.6-24 AS (2WD = 7.50-18/ 10.00-16) * ''Niederquerschnitt:'' '''85''': 340/85R24 '''70''': 380/70R24 '''65''': 440/65R24 * Hinten = 13.6-38 AS * ''Niederquerschnitt:'' '''85''': 340/85R38 '''70''': 500/70R34 '''65''': 540/65R34 * Hinten = 18.4-34 AS * ''Niederquerschnitt:'' '''85''': 460/85R34 '''70''': 520/70R34, 680/70R34 '''65''': 600/65R34 '''Pflegebereifung''' (Allrad) * Vorne = 9.5-28 AS * Hinten = 9.5-44 AS ==Füllmengen== * Tankinhalt = '''120 l''' * ''Diesel'' * Motoröl inkl. Filter = '''13 l''' * ''15W-40'', ''10W-30'' oder ''10W-40'' * ''Wechsel 200h/ 12 Monate'' * Hydraulik = '''13 l''' * Mit optionalem Hydrauliktank: = '''25 l''' * ''15W-40'' oder ''20W-20'' * ''Prüfen 100h, Wechsel 12 Monate'' * Getriebe = 38 l, mit Allrad = 48 l * ''15W-40'', ''80W-90 GL4'' oder ''10W-30'' * ''Prüfen 500h, Wechsel 1000h/ 12 Monate'' * Optionaler Ölbadluftfilter = 0,9 l * ''Siehe Motoröl'' * Fronttriebachse, Typ: 4172 = 5,5 l plus 0,5 l je Planetentrieb * Fronttriebachse, Typ: 2000 P = 7 l plus 1 l je Planetentrieb * Fronttriebachse, Typ: 4173 = 8 l plus 0,5 l je Planetentrieb * ''80W-90 GL5'' * ''Prüfen 500h, Wechsel 1000h/ 12 Monate'' * Bremsflüssigkeit = 0,5 l DOT4 ==Verbrauch== * Geringster spezifischer Kraftstoffverbrauch bei Vollast = 216 g/kWh * Optimaler Kraftstoffverbrauch = 229 g/kWh bei 48,9 kW und 1.955 U/min ==Kabine== * Vollverglaste, elastisch-gelagerte, staub-und schallisolierte (85 dB(A)) Deutz-MasterCab mit ebenen Boden, Grammer-Komfortsitz, dreistufen Heizungs- und Belüftungsgebläse, Traktormeter, ausstellbare Front- und Heckscheibe, klappbarer Beifahrersitz, innen- und außen Spiegel, Kraftstoffanzeige, Scheibenwaschanlage und Kontrollleuchten. ==Sonderausrüstung== * Front- und Radgewichte * Klimaanlage * Luftgefederter Fahrersitz * Frontlader * Druckluftbremsanlage * Zusatz-Steuergeräte * Zweiter Zusatz-Hubzylinder * Kriechgruppe * Schnellgang-Ausführung * Allradantrieb * Zugpendel * Zeituhr * Luftdruckmesser * Arbeitsscheinwerfer * Tele-02-Achse ==Literatur== Aust, Oliver: Deutz-Traktoren im Einsatz, Podszun-Verlag * Deutz-Das Typenbuch (Albert Mößmer) * Vom MTH bis zur 07-Serie (Karel Vermoesen/Michael Bruse) Seite 562 * Betriebsanleitung der Traktoren DX 85, DX 90, DX 110 und DX 120 ==Quellen== Aust, Oliver: Deutz-Traktoren im Einsatz, Podszun-Verlag <references /> ==Weblinks== {{:Traktorenlexikon: Navigation |HERSTELLER-LINK=Traktorenlexikon: Deutz-Fahr |HERSTELLER= Deutz-Fahr}} lcd1glzq03efvey06gqz4ny2g3ckyqg Traktorenlexikon: Deutz-Fahr DX 90 0 88178 1090604 1089859 2026-09-09T08:40:34Z JaWa1998 115962 1090604 wikitext text/x-wiki {{:Traktorenlexikon: Navigation |HERSTELLER-LINK=Traktorenlexikon: Deutz-Fahr |HERSTELLER= Deutz-Fahr}} {{:Traktorenlexikon: Modell-Infobox | HERSTELLER = Deutz-Fahr | MODELLREIHE = DX-Reihe | MODELL = DX 90 | BILD = Deutz DX 90 A-N 1978.jpg | BILDBESCHREIBUNG = Deutz DX 90 A-N EZ:1978 | BAUWEISE = Blockbauweise | PRODUKTIONSBEGINN = 1978 | PRODUKTIONSENDE = 1982 | STÜCKZAHL = | EIGENGEWICHT = 4.275 (A: 4.830) | LÄNGE = 4.360 | BREITE = 2.304 | HÖHE = 2.600 | RADSTAND = 2.558 (A: 2.553) | BODENFREIHEIT = 560 (A: 456) | SPURWEITE = | SPURWEITE VORNE = 1.476–1.976 (A: 1.800/2.000) | SPURWEITE HINTEN = 1.600–2.000 | WENDERADIUS MIT LENKBREMSE = 4.020 | WENDERADIUS OHNE LENKBREMSE = 4.430 (A: 5.880) | BEREIFUNG VORNE = 7.50-20 ASF (A: 14.9-24 AS) | BEREIFUNG HINTEN = 16.9-38 AS | LEISTUNG KW = 65 | LEISTUNG PS = 88 | NENNDREHZAHL = 2.300 | ZYLINDER = 5 | HUBRAUM = 4.712 | DREHMOMENTANSTIEG = | KRAFTSTOFF = Diesel | KÜHLSYSTEM = Luftkühlung | ANTRIEBSTYP = Heck-oder Allradantrieb | GETRIEBE = 12V/4R bzw. 15V/5R | HÖCHSTGESCHWINDIGKEIT = 25 oder 30 | KATEGORIESORTIERUNG = }} Der '''Deutz DX 90''' gehört zur '''1978''' eingeführten, neu entwickleten '''DX-Serie''' von Deutz. Er war direkt ab Marktstart erhältlich (gehört somit zur 1. Generation) und stellte dabei das zweikleinste Modell der Serie dar und füllte mit seinen 88PS die Lücke zwischen 80 PS (DX 85) und 102PS (DX 110). Er hatte keinen direkten Vorgänger, man kann aber den bis 1970 gebauten [[Traktorenlexikon: Deutz D 9006|D 9006]] nennen. Der DX90 war weitestgehend Baugleich mit dem DX 85, bis auf die höhere Motorleistung, stärkeres Getriebe (TW90.2 anstatt 90.1), Axial-Regelgebläse, die Unterlenkerregelung des Hubwerks (Beim DX 85 Oberlenkerregelung) und weitere Details. Es gab ihn sowohl als Hinterrad- als auch Allradmaschine. Bemerkenswert war der '''F5L 912''' Fünfzylindermotor, da der schwierige Massenausgleich (144° Kurbelwellenversatz) bis Ende der 1970er Jahre die Fertigung von Motoren mit fünf Zylindern bei Deutz erschwert hatte. Andere Hersteller setzten damals in dieser Leistungsklasse meist auf 4-Zylinder-(Turbo)motoren. Anfängliche Probleme mit dem TW90.1-Getriebe bei einigen Modellen wurden durch eine Rückrufaktion weitestgehend behoben. Heute noch laufende Maschinen wurden überholt oder waren nicht von den Problemen betroffen. Beim Getriebe standen eine Normal- (4-Gang, 25km/h) und eine Schnellgang-Ausführung (5-Gang, 30km/h) zur Wahl. Damit verbunden wurde bei Deutz-Fahr eine Zweistummel-Ausführung der Zapfwelle (540/1000) eingeführt. Bei der Fahrerkabine konnte anfangs noch zwischen der '''JuniorCab''' und der '''MasterCab''' gewählt werden, nach kurzer Zeit wurde dann aber die besser ausgestattete MasterCab serienmäßig verbaut. Nach 4 Jahren Bauzeit wurde der DX 90 1982 durch seinen etwas stärkeren Nachfolger [[Traktorenlexikon: Deutz-Fahr DX 92|DX 92]] ersetzt und erhielt, wie alle weiteren Modelle in dieser Leistungsklasse, den neuen BF4L 913 4-Zylinder-Turbo-Motor. ==Motor== * KHD, Typ: F5L 912, stehender luftgekühlter Viertakt-Fünfzylinder-Reihen-Saugmotor mit Direkteinspritzverfahren, hängenden Ventilen, Pierburg-Kraftstoffpumpe, Bosch-Vierloch-Düse, Dralleinspritzkanal, Bosch-Reihen-Einspritzpumpe, Kolbenkühlung, sechsfach-gelagerter Kurbelwelle, Trockenluftfilter, Einzel-Aluminium-Zylinderköpfe, zahnradgetriebener Nockenwelle, Dreiring-Leichtmetall-Kolben, integrierter Ölkühler, Bosch-Drehzahlregler, Druckumlaufschmierung mittels Zahnradpumpe und thermostatisch-geregeltem Axialgebläse. * Bohrung = 100 mm, Hub = 120 mm * Verdichtung = 17:1 * Drehmoment bei Höchstleistung = 271 Nm * Max. Drehmoment = 300 Nm bei 1.697 U/min * Leerlaufdrehzahl = 650 bis 700 U/min * Geregelter Drehzahlbereich = 750 bis 2.400 U/min * Max. Einspritzdruck = 175 bar * Einspritzmenge = 55 mm³/Hub und Nenndrehzahl * Pierburg-Kraftstoffpumpe, Typ: PE 15 252 * Bosch-Drehzahlregler, Typ: EP/RSV 325-1150 A 8 B 2014 DL * Bosch-Einspritzpumpe, Typ: PES 5 A 80 D 410/3 RS 2526 * Bosch-Mehrloch-Düse, Typ: DLLA 149 S 394 ==Kupplung== * unabhängige, trockene Doppelkupplung * Pedal betätigte Fahrkupplung mit 300 mm Scheiben-Durchmesser * Handhebel betätigte Zapfwellenkupplung mit 280 mm Scheiben-Durchmesser * Typ: LuK 300/280 TGU 6 oder auch DT 295/280 G ==Getriebe== '''Merkmale''' * Im Ölbad laufendes, schrägverzahntes Deutz-Synchrongetriebe '''TW90.2''' mit Seitenschaltung * Viergang-Version mit '''Typ: TW-90.20''' für die '''25 km/h'''-Ausführung * Fünfgang-Version mit '''Typ: TW-90.21''' für die '''30 km/h'''-Ausführung * Vollsynchronisiertes Wechselgetriebe mit vier bzw. fünf Gängen * Gruppen-Getriebe mit drei Vorwärts- und einer Rückwärtsgruppe, in die Bereiche L-M-H und R unterteilt * Gruppen L und H mit Klauenschaltung * Gruppen M und R mit Synchronschaltung '''Eigenschaften''' * Gangzahl vorwärts/rückwärts = 12/4 * Auf Wunsch mit Schnellgang = 15/5 ''Optional mit klauengeschalteter Kriechgruppe LL'' * Gangzahl vorwärts/rückwärts = 16/4 * Auf Wunsch mit Schnellgang = 20/5 ''' ''Änderungen im Jahr 1982'' ''' * Im Ölbad laufendes, schrägverzahntes Deutz-Synchrongetriebe '''TW-901.1''' mit Seitenschaltung * Vollsynchronisiertes Wechselgetriebe mit fünf Gängen, in der 30 km/h-Ausführung * Oder vollsynchronisiertes Wechselgetriebe mit sechs Gängen, in der 40 km/h-Ausführung * Vollsynchronisiertes Gruppen-Getriebe mit drei Vorwärtsgruppen und einer Rückwärtsgruppe, in die Bereiche L-M-H und R unterteilt '''Eigenschaften''' * Gangzahl vorwärts/rückwärts = 15/5 * Auf Wunsch mit Schnellgang = 18/6 ''Optional mit klauengeschalteter Kriechgruppe'' * Gangzahl vorwärts/rückwärts = 20/5 * Auf Wunsch mit Schnellgang = 24/6 '''Gesamtübersetzung-Triebwerk TW-90.20 bzw. TW-90.21''' "Gruppe-LL" * 1.Gang = 1721,21:1 * 2.Gang = 1127,41:1 * 3.Gang = 919,54:1 * 4.Gang = 634,17:1 * 5.Gang = 516,73:1 "Gruppe-L" * 1.Gang = 322,29:1 * 2.Gang = 211,09:1 * 3.Gang = 172,17:1 * 4.Gang = 118,74:1 * 5.Gang = 96,75:1 "Gruppe-M" * 1.Gang = 159,05:1 * 2.Gang = 104,17:1 * 3.Gang = 84,97:1 * 4.Gang = 58,60:1 * 5.Gang = 47,75:1 "Gruppe-H" * 1.Gang = 75,83:1 * 2.Gang = 49,67:1 * 3.Gang = 40,51:1 * 4.Gang = 27,94:1 * 5.Gang = 22,76:1 "Gruppe-R" * 1.Gang = 129,59:1 * 2.Gang = 84,88:1 * 3.Gang = 69,23:1 * 4.Gang = 47,74:1 * 5.Gang = 38,90:1 ==Geschwindigkeiten vor- und rückwärts== ''Geschwindigkeiten-Triebwerk TW-90.20 bzw. TW-90.21 mit Bereifung 16.9-34 AS'' "Gruppe-LL" * 1.Gang = 0,36 km/h * 2.Gang = 0,57 km/h * 3.Gang = 0,70 km/h * 4.Gang = 1,0 km/h * 5.Gang = 1,3 km/h "Gruppe-L" * 1.Gang = 2,0 km/h * 2.Gang = 3,1 km/h * 3.Gang = 3,8 km/h * 4.Gang = 5,4 km/h * 5.Gang = 6,7 km/h "Gruppe-M" * 1.Gang = 4,3 km/h * 2.Gang = 6,2 km/h * 3.Gang = 7,6 km/h * 4.Gang = 11,0 km/h * 5.Gang = 13,6 km/h "Gruppe-H" * 1.Gang = 8,80 km/h * 2.Gang = 13,0 km/h * 3.Gang = 16,0 km/h * 4.Gang = 25,0 km/h * 5.Gang = 30,0 km/h "Gruppe-R" * 1.Gang = 5,0 km/h * 2.Gang = 7,8 km/h * 3.Gang = 9,3 km/h * 4.Gang = 13,5 km/h * 5.Gang = 16,6 km/h Geschwindigkeiten-Triebwerk TW-901.1 mit Bereifung 18.4 R 34 AS "Gruppe-LL" * 1.Gang = 0,4 km/h * 2.Gang = 0,5 km/h * 3.Gang = 0,7 km/h * 4.Gang = 1,0 km/h * 5.Gang = 1,2 km/h * 6.Gang = 1,6 km/h "Gruppe-L" * 1.Gang = 2,3 km/h * 2.Gang = 3,2 km/h * 3.Gang = 4,0 km/h * 4.Gang = 5,8 km/h * 5.Gang = 7,2 km/h * 6.Gang = 9,1 km/h "Gruppe-M" * 1.Gang = 4,9 km/h * 2.Gang = 6,6 km/h * 3.Gang = 8,4 km/h * 4.Gang = 12,1 km/h * 5.Gang = 14,9 km/h * 6.Gang = 18,9 km/h "Gruppe-H" * 1.Gang = 10,0 km/h * 2.Gang = 13,5 km/h * 3.Gang = 17,1 km/h * 4.Gang = 24,8 km/h * 5.Gang = 30,4 km/h * 6.Gang = 40,0 km/h "Gruppe-R" * 1.Gang = 4,6 km/h * 2.Gang = 6,2 km/h * 3.Gang = 7,8 km/h * 4.Gang = 11,3 km/h * 5.Gang = 13,9 km/h * 6.Gang = 17,6 km/h ==Zapfwelle== * Unabhängige Motorzapfwelle * Handhebel betätigt und lastschaltbar * 540/min b. Motordrehzahl 2.070/min, Mmax = 1.600 Nm * 1.000/min b. Motordrehzahl 2.070/min, Pmax = 61,2 kW * Stummel bei 540er-Zapfwelle = 1 3/8"- 6 Keile (Form A) * Stummel bei 1.000er-Zapfwelle = 1 3/8"- 21 teilig (Form B), wahlweise 1 3/8"- 6 Keile (Form A) ''Optional mit unabhängiger und lastschaltbarer Frontzapfwelle'' * Drehzahl = 1.000 U/min ==Bremsen== '''Betriebsbremse''' * hydraulische "Teves"-Festsattel-Scheibenbremse * Auf die Differentialseitenwellen wirkend, als Einzelrad-Bremse zu verwenden * Außendurchmesser der Scheibe = 276 mm '''Feststellbremse''' * Unabhängige, mechanisch betätigte Feststellbremse * Simplex-Innenbacken-Bremse * Auf zwei Bremstrommeln wirkend * Bremstrommel = 180 x 60 mm '''Verzögerungswerte''' * Max. Verzögerung = 3,8 m/s² * Pedalkraft = 25 daN * Bremsweg bei 25 km/h = 7,8 m '''Optional''' * Zweikreis-Druckluftbremsanlage * Kombinierte Ein-und Zweikreis-Druckluftbremsanlage * Förderleistung = 120 l/min * Betriebsdruck = 8 bar * Kesselinhalt = 20 l ==Achsen== '''Vorderachsen''' ''Bei Hinterradantrieb (2WD)'' * Pendelnd-gelagerte Teleskop-Vorderachse, Typ: '''KHD Tele-01''' * wahlweise als verstärkte Ausführung, Typ: '''KHD Tele-02''' * Spurweiten "Tele-01" in Stufen von 100 mm = 1.476 bis 1.976 mm * Spurweiten "Tele-02" in Stufen von 100 mm = 1.500 bis 2.100 mm ''Bei Allradantrieb (4WD)'' ** Typ: '''SIGE 4173''' * Spurweiten = 1.800 und 2.000 mm * Optitrac-Selbstsperrdifferential ''Wahlweise'' * SIGE-Portalachse * Typ: '''SIGE 2000 P''' * Spurweiten = 1.800 und 2.000 mm * Optitrac-Selbstsperrdifferential * Übersetzungsverhältnis '''1,396''' '''Hinterachse''' * Hinterachse mit Kegelrad-Getriebe und Stirnradübersetzung * Vierfache Spurweite durch Verstellräder, in Stufen von 100 mm = 1.600 bis 2.000 mm * Pedal betätigte, selbstausrückende und lastschaltbare Differentialsperre '''Achslasten''' ''bei Allradantrieb'' * Vorderachslast = 1.980 kg (2WD = 1.620 kg) * Zul. Vorderachslast = 2.500 kg (2WD = 2.010 kg) * Hinterachslast = 2.850 kg * Zul. Hinterachslast = 4.200 kg ==Lenkung== * Hydrostatische ZF-Lenkung, Typ: '''ZF Servostat 8452''' * Ein doppeltwirkender Lenkzylinder mit 45 mm Kolbendurchmesser und 250 mm Kolbenhub * Verstärkte Ausführung mit 55 mm Kolbendurchmesser und 250 mm Kolbenhub '''Hydraulische Versorgung''' * Förderleistung je Pumpenumdrehung = 14 cm³ * Fördermenge = 34,7 l/min * Betriebsdruck = 120 bar ==Hydrauliksystem und Kraftheber== '''Kraftheber''' * DEUTZ-TRANSFERMATIC-SYSTEM K55.2 mit Zusatzhubzylinder und Unterlenkerregelung * Optional 2. Zusatzhubzylinder * Pumpenantrieb direkt vom Motor * Dreipunktkupplung = Kat. II * Zusatzsteuergeräte = max. 3 '''Funktionen''' * Heben, Senken, Neutral- und Schwimmstellung, Lage- und Zugkraftregelung * Hubhöhenbegrenzung, Seitenstabilisierung und Transportsicherung '''Hydraulische Versorgung''' * Bosch-Tandem-Hydraulikpumpe, Typ: HY/ZFFS 11/16 + 14 L * Förderleistung je Pumpenumdrehung = 16,5 cm³ (Wunsch 22,5cm³) * Fördermenge = 40 l/min (Wunsch 56 l/min) * Arbeitsdruck = 175 bar '''Leistung''' * Leistung der Hydraulik = 10,43 kW * Max. Hubkraft an den Koppelpunkten = 34.350 N (3.500 kp ~ 3.500kg) ''Bei 2. Zusatzhubzylinder'' * Max. Hubkraft an den Koppelpunkten = 50.030 N (5.100 kp ~ 5.100 kg) ''Optional mit Fronthubwerk'' * Dreipunktkupplung der Kategorie I * Max. Hubkraft = 1.800 kg ==Steuergeräte== * 1 DW Steuergerät * Optional bis zu zwei weitere EW oder DW Zusatz-Steuergeräte ==Elektrische Ausrüstung== * 12 Volt-Einrichtung nach StVZO * Batterie: 12 V-110 Ah * Bosch-Anlasser, Typ: JD 12 V-3 kW * Bosch-Lichtmaschine, Typ: G1 14 V-33 A 27 (462 W) * Bosch-Flammglühkerze, Typ: B 12 V H 7632 ==Maße und Abmessungen== '''Allrad''' * Bei Bereifung vorn/hinten = 12.4-24/16.9-34 * Radstand = 2.553 mm * Länge = 4.320 mm * Breite = 2.304 mm * Höhe mit Kabine = 2.604 mm * Höhe mit offener Auspuffklappe = 2.7800 mm * Bodenfreiheit unter der Fronttriebachse, Typ: 4173 = 458 mm * Bodenfreiheit unter der Fronttriebachse, Typ: 2000 P = 520 mm * Spurweiten vorn = 1.800 u. 2.000 mm * Spurweiten hinten = 1.500...2.000 mm * Wenderadius o. Lenkbremse = 5.870 mm * Leergewicht = 4.830 kg * Zul. Gesamtgewicht = 6.000 kg '''Geänderte Werte durch Hinterradantrieb-Ausführung''' * Radstand = 2.558 mm * Bodenfreiheit unter der Teleskop-Vorderachse = 560 mm * Leergewicht = 4.470 kg * Zul. Gesamtgewicht = 5.600 kg ==Bereifung== '''Standardbereifung''' (Allrad) * Vorne = 13.6/24 AS (2WD = 7.50-20) * ''Niederquerschnitt:'' '''85''': 340/85R24 '''70''': 380/70R24 '''65''': 440/65R24 * Hinten = 18.4-34 AS * ''Niederquerschnitt:'' '''85''': 460/85R34 '''70''': 520/70R38, 680/70R32 '''65''': 600/65R38 '''Optional''' (Allrad) * Vorne = 14.9-24 AS * ''Niederquerschnitt:'' '''85''': 380/85R24 '''70''': 420/70R24 '''65''': 480/65R24 * Hinten = 16.9-38 AS * ''Niederquerschnitt:'' '''85''': 420/85R38 '''70''': 480/70R38 '''65''': 540/65R38 ==Füllmengen== * Tankinhalt = '''120 l''' * ''Diesel'' * Motoröl inkl. Filter = '''13 l''' * ''15W-40'', ''10W-30'' oder ''10W-40'' * ''Wechsel 200h/ 12 Monate'' * Hydraulik = '''13 l''' * Mit optionalem Hydrauliktank: = '''25 l''' * ''15W-40'' oder ''20W-20'' * ''Prüfen 100h, Wechsel 12 Monate'' * Getriebe = 38 l, mit Allrad = 48 l * ''15W-40'', ''80W-90 GL4'' oder ''10W-30'' * ''Prüfen 500h, Wechsel 1000h/ 12 Monate'' * Optionaler Ölbadluftfilter = 0,9 l * ''Siehe Motoröl'' * Fronttriebachse, Typ: 2000 P = 7 l plus 1 l je Planetentrieb * Fronttriebachse, Typ: 4173 = 8 l plus 0,5 l je Planetentrieb * ''80W-90 GL5'' * ''Prüfen 500h, Wechsel 1000h/ 12 Monate'' * Bremsflüssigkeit = 0,5 l DOT4 ==Verbrauch== * Optimaler Kraftstoffverbrauch = 220 g/kWh bei 37,4 kW und 1.500 U/min ==Kabine== * Vollverglaste, gummigelagerte, staub-und schallisolierte (84 dB A) MasterCab-Kabine, Typ: SK 1905-37 mit ebenen Boden, Grammer-Komfort-Sitz, ausstellbare Front-, Seiten- und Heckscheibe, dreistufen Heizungs- und Belüftungsgebläse mit acht Düsen, Traktormeter, Scheibenwaschanlage, Innen- und Außenspiegel, klappbaren Beifahrersitz und diversen Kontrollleuchten ==Sonderausrüstung== * Fronthubwerk * Frontzapfwelle * Allrad * Klimaanlage * Rad- und Frontgewichte * Frontlader * Kriechgruppe * Druckluftbremsanlage * Zugpendel * Schnellgang-Ausführung * Verstärkte Teleskop-Achse * Zusatz-Steuergeräte * Zweiter Zusatz-Hubzylinder * Verstärkte Hydraulikpumpe * "JuniorCab" ==Literatur== * Vom DX bis zum Agrostar (Karel Vermoesen/Michael Bruse) Seite 566 * Betriebsanleitung DX 90 * Deutz-Das Typenbuch (Albert Mößmer) * Vom MTH zum Agrotron (Bernd Ertl) ==Quellen== <references /> ==Weblinks== {{:Traktorenlexikon: Navigation |HERSTELLER-LINK=Traktorenlexikon: Deutz-Fahr |HERSTELLER= Deutz-Fahr}} 051it26d7sxlctqn2lkzu6t3tsivuno Traktorenlexikon: Deutz-Fahr DX 140 0 88187 1090552 1090551 2026-09-08T12:09:40Z JaWa1998 115962 1090552 wikitext text/x-wiki {{:Traktorenlexikon: Navigation |HERSTELLER-LINK=Traktorenlexikon: Deutz-Fahr |HERSTELLER= Deutz-Fahr}} {{:Traktorenlexikon: Modell-Infobox | HERSTELLER = Deutz | MODELLREIHE = DX-Reihe | MODELL = DX 140 | BILD = DEUTZ DX140.jpg | BILDBESCHREIBUNG = Deutz DX 140 | BAUWEISE = Blockbauweise | PRODUKTIONSBEGINN = 1978 | PRODUKTIONSENDE = 1980 | STÜCKZAHL = | EIGENGEWICHT = 5.400 (A: 5.860) | LÄNGE = 4.716 | BREITE = 2.370 | HÖHE = 2.790 | RADSTAND = 2.831 (A: 2.826) | BODENFREIHEIT = 620 (A: 480) | SPURWEITE = | SPURWEITE VORNE = 1.596-2.196 (A: 1.800/2.000) | SPURWEITE HINTEN = 1.800-2.200 | WENDERADIUS MIT LENKBREMSE = 4.470 | WENDERADIUS OHNE LENKBREMSE = 4.970 (A: 6.340) | BEREIFUNG VORNE = 11.00-16 ASF (A: 14.9-28 AS) | BEREIFUNG HINTEN = 18.4-38 AS | LEISTUNG KW = 91,5 | LEISTUNG PS = 125 | NENNDREHZAHL = 2.200 | ZYLINDER = 6 | HUBRAUM = 6.125 | DREHMOMENTANSTIEG = 20 | KRAFTSTOFF = Diesel | KÜHLSYSTEM = Luftkühlung | ANTRIEBSTYP = Heck-oder Allradradantrieb | GETRIEBE = 12V/4R, 24V/8R, 36V/12R | HÖCHSTGESCHWINDIGKEIT = 25/30 | KATEGORIESORTIERUNG = Standardtraktor }} Mit den Traktoren der '''DX-Serie''' brachte Deutz '''1978''' eine komplett neu entwickelte Schlepperserie mit erstmals voll integrierten Kabinen auf den Markt. Sie ersetzte die großen 6-Zylinder-Traktoren der erfolgreichen Baureihe D06 (D8006-D13006) und führte anstatt der ZF-Getriebe nun hauseigene Getriebe bzw. ab dem DX 140 Steyr-Getriebe ein. Deutz setzte dabei zum einen auf die bewährten Suagmotoren der Reihe 912, führte aber auch gleichzeitig in den Top-Modellen die neue Reihe 913 als Saug- und Turbomotoren ein. Der '''DX 140''' war bei seiner Einführung das zweitstärkste Modell der DX-Serie. Sein Vorgänger war das damalige Top-Modell [[Traktorenlexikon: Deutz D 13006|D 13006]] der Serie 06. Der DX 140 wurde allerdings mit dem neuen, turbo-aufgeladenen '''BF6L913'''-Motor mit 125PS ausgestattet. Da ZF das im Vorgänger verwendete Getriebe T-3402 ersatzlos entfallen lies und Deutz für den Leistungsbereich oberhalb von 120PS noch kein eigenes Getriebe entwickelt hatte, ging KHD eine Zusammenarbeit mit dem österreichischen Hersteller '''STEYR''' ein. Im Gegenzug lieferte Deutz das TW90-Triebwerk für Steyr-Modelle. Der DX 140 nutzte das Steyr-Triebwerk '''TW1200''' mit 2-facher, bei Deutz '''"Powermatic"''' genannten Lastschaltung, die über zwei Druckknöpfe im Armaturenbrett bedient wurde. Die Anordnung des Steyr-Triebwerks entsprach dem des TW90-Triebwerks, allerdings mit nur vier Gängen. Um das Lastschaltgetriebe in einer 25 km/h sowie einer 30 km/h-Variante anbieten zu können, musste die Gesamtübersetzung angepasst werden. Leider entwickelte sich die Ersatzteilversorgung mit den Jahren problematisch. Beim DX 140 wurde die '''MasterCab'''-Kabine serienmäßig angeboten. Die erste DX-Serie, wozu der DX 140 gezählt wird, ist sehr gut an den an der A-Säule der Kabine angeschlagenen schwarzen GFK-Türen zu erkennen. Zur Allrad-Variante bot Deutz auch eine Hinterradantrieb-Variante an, die aber ausschließlich für den Export bestimmt war. Nach nur 2 Jahren Bauzeit wurde der '''DX 140''' 1980 durch seinen 7PS stärkeren Nachfolger [[Traktorenlexikon: Deutz-Fahr DX 145|DX 145]] ersetzt. ==Motor== * KHD, Typ: BF6L 913, stehender-luftgekühlter Viertakt-Sechszylinder-Reihen-Turbomotor mit Direkteinspritzverfahren, Bosch-Reihen-Einspritzpumpe, Kolbenkühlung, Bosch-Vierloch-Düse, Dralleinspritzkanal, Trockenluftfilter mit Zyklon-Vorabscheider, hängenden Ventilen, Dreiring-Leichtmetall-Kolben, siebenfach-gelagerter Kurbelwelle, Bosch-Fliehkraft-Verstellregler, zahnradgetriebener Nockenwelle, Einzel-Aluminium-Zylinderköpfe, Druckumlaufschmierung mittel Zahnradpumpe, integrierter Motorölkühlung, Bosch-Kraftstoffpumpe, KKK-Abgas-Turbolader und Axial-Regelgebläse. * Bohrung = 102 mm, Hub = 125 mm * Hubraum = 6.125 cm³ * Drehmomentanstieg = 20% * Verdichtungsverhältnis = 15,5:1 * Drehmoment bei Höchstleistung = 401 Nm * Max. Drehmoment = 483 Nm bei 1.499 U/min. * Leerlaufdrehzahl = 600 bis 750 U/min. * Geregelter Drehzahlbereich = 700 bis 2.320 U/min. * Max. Einspritzdruck = 175 + 8 bar * Einspritzmenge = 67 mm³/Hub und Nenndrehzahl * Ladedruck = 440 mbar * Bosch-Kraftstoffpumpe, Typ: FB/KS 22 AD 23/2 * Bosch-Drehzahlregler, Typ: EP/RSV 325-1150 A 8 B 2020 D * Bosch-Einspritzpumpe, Typ: PES 6 A 85 D 410 RS 2537 * Bosch-Mehrloch-Düse, Typ: DLLA 149 S 490 * Kühnle, Kopp und Kausch-Turbolader, Typ: 3 LEP 229 A/13.2 ==Kupplung== * trockene Einfachkupplung * Pedal betätigt * 350 mm Durchmesser * Typ: LuK 350 DGFP ==Getriebe== '''Merkmale''' * Im Ölbad laufendes Steyr-Getriebe, Typ: '''STEYR TW 1200''' mit Seitenschaltung * Vollynchronisiertes Wechselgetriebe mit vier Gängen * Auf Wunsch Vorschaltgetriebe als zweistufige Lastschaltung zur Verdoppelung der Ganganzahl ('''DEUTZ-POWERMATIC''') * Gruppen-Getriebe mit drei Vorwärts- und einer Rückwärtsgruppe, in die Bereiche L-M-H und R unterteilt * Gruppen L und H mit Klauenschaltung * Gruppen M und R mit Synchronschaltung '''Eigenschaften''' * Gangzahl vorwärts/rückwärts = 12/4 * Auf Wunsch mit '''DEUTZ-POWERMATIC''' = 24/8 * Auf Wunsch mit '''DEUTZ-POWERMATIC''' und Kriechgängen = 36/12 '''Gesamtübersetzung der Lastschaltstufe in Stellung "HI"''' "Gruppe-L" * 1.Gang = 274,18:1 * 2.Gang = 195,26:1 * 3.Gang = 141,72:1 * 4.Gang = 101,75:1 "Gruppe-M" * 1.Gang = 164,73:1 * 2.Gang = 117,31:1 * 3.Gang = 85,15:1 * 4.Gang = 61,30:1 "Gruppe-H" * 1.Gang = 75,45:1 * 2.Gang = 53,73:1 * 3.Gang = 39,00:1 * 4.Gang = 28,00:1 "Gruppe-R" * 1.Gang = 158,62:1 * 2.Gang = 112,96:1 * 3.Gang = 81,99:1 * 4.Gang = 58,86:1 '''Gesamtübersetzung der Lastschaltstufe in Stellung "LO"''' "Gruppe-L" * 1.Gang = 344,02:1 * 2.Gang = 245,00:1 * 3.Gang = 177,82:1 * 4.Gang = 127,67:1 "Gruppe-M" * 1.Gang = 206,69:1 * 2.Gang = 147,19:1 * 3.Gang = 106,83:1 * 4.Gang = 76,70:1 "Gruppe-H" * 1.Gang = 94,67:1 * 2.Gang = 67,42:1 * 3.Gang = 48,93:1 * 4.Gang = 35,13:1 "Gruppe-R" * 1.Gang = 199,02:1 * 2.Gang = 141,74:1 * 3.Gang = 102,87:1 * 4.Gang = 73,86:1 '''Optionale Kriechgruppe''' "Gruppe-L" * 1.Gang = 2315,33:1 * 2.Gang = 1648,89:1 * 3.Gang = 1196,77:1 * 4.Gang = 859,22:1 "Gruppe-M" * 1.Gang = 1391,03:1 * 2.Gang = 990,64:1 * 3.Gang = 719,01:1 * 4.Gang = 516,21:1 "Gruppe-H" * 1.Gang = 637,14:1 * 2.Gang = 453,75:1 * 3.Gang = 329,33:1 * 4.Gang = 236,44:1 "Gruppe-R" * 1.Gang = 1339,45:1 * 2.Gang = 953,90:1 * 3.Gang = 692,35:1 * 4.Gang = 497,07:1 ==Geschwindigkeiten vor- und rückwärts== ''Geschwindigkeiten mit Bereifung 18.4-38 AS'' '''25 km/h-Variante''' "Gruppe-L" * 1.Gang Stufe-LO = 2,0 km/h * 1.Gang Stufe-HI = 2,5 km/h * 2.Gang Stufe-LO = 2,8 km/h * 2.Gang Stufe-HI = 3,5 km/h * 3.Gang Stufe-LO = 3,8 km/h * 3.Gang Stufe-HI = 4,8 km/h * 4.Gang Stufe-LO = 5,3 km/h * 4.Gang Stufe-HI = 6,7 km/h "Gruppe-M" * 1.Gang Stufe-LO = 3,3 km/h * 1.Gang Stufe-HI = 4,1 km/h * 2.Gang Stufe-LO = 4,6 km/h * 2.Gang Stufe-HI = 5,8 km/h * 3.Gang Stufe-LO = 6,4 km/h * 3.Gang Stufe-HI = 8,0 km/h * 4.Gang Stufe-LO = 8,9 km/h * 4.Gang Stufe-HI = 11,1 km/h "Gruppe-H" * 1.Gang Stufe-LO = 7,2 km/h * 1.Gang Stufe-HI = 9,0 km/h * 2.Gang Stufe-LO = 10,0 km/h * 2.Gang Stufe-HI = 12,7 km/h * 3.Gang Stufe-LO = 13,9 km/h * 3.Gang Stufe-HI = 17,4 km/h * 4.Gang Stufe-LO = 19,4 km/h * 4.Gang Stufe-HI = 25,0 km/h "Gruppe-R" * 1.Gang Stufe-LO = 3,4 km/h * 1.Gang Stufe-HI = 4,3 km/h * 2.Gang Stufe-LO = 4,8 km/h * 2.Gang Stufe-HI = 6,0 km/h * 3.Gang Stufe-LO = 6,6 km/h * 3.Gang Stufe-HI = 8,3 km/h * 4.Gang Stufe-LO = 9,2 km/h * 4.Gang Stufe-HI = 11,6 km/h '''30 km/h-Variante''' "Gruppe-L" * 1.Gang Stufe-LO = 2,3 km/h * 1.Gang Stufe-HI = 2,9 km/h * 2.Gang Stufe-LO = 3,3 km/h * 2.Gang Stufe-HI = 4,1 km/h * 3.Gang Stufe-LO = 4,5 km/h * 3.Gang Stufe-HI = 5,7 km/h * 4.Gang Stufe-LO = 6,2 km/h * 4.Gang Stufe-HI = 7,9 km/h "Gruppe-M" * 1.Gang Stufe-LO = 3,9 km/h * 1.Gang Stufe-HI = 4,9 km/h * 2.Gang Stufe-LO = 5,5 km/h * 2.Gang Stufe-HI = 6,8 km/h * 3.Gang Stufe-LO = 7,5 km/h * 3.Gang Stufe-HI = 9,4 km/h * 4.Gang Stufe-LO = 10,5 km/h * 4.Gang Stufe-HI = 13,1 km/h "Gruppe-H" * 1.Gang Stufe-LO = 8,5 km/h * 1.Gang Stufe-HI = 10,6 km/h * 2.Gang Stufe-LO = 11,9 km/h * 2.Gang Stufe-HI = 14,9 km/h * 3.Gang Stufe-LO = 16,4 km/h * 3.Gang Stufe-HI = 20,6 km/h * 4.Gang Stufe-LO = 22,8 km/h * 4.Gang Stufe-HI = 30,0 km/h "Gruppe-R" * 1.Gang Stufe-LO = 3,4 km/h * 1.Gang Stufe-HI = 4,3 km/h * 2.Gang Stufe-LO = 4,8 km/h * 2.Gang Stufe-HI = 6,0 km/h * 3.Gang Stufe-LO = 6,6 km/h * 3.Gang Stufe-HI = 8,3 km/h * 4.Gang Stufe-LO = 9,2 km/h * 4.Gang Stufe-HI = 11,6 km/h '''Optionale Kriechgruppe''' "Gruppe-L" * 1.Gang = 0,31 km/h * 2.Gang = 0,43 km/h * 3.Gang = 0,59 km/h * 4.Gang = 0,83 km/h "Gruppe-M" * 1.Gang = 0,51 km/h * 2.Gang = 0,72 km/h * 3.Gang = 0,99 km/h * 4.Gang = 1,37 km/h "Gruppe-H" * 1.Gang = 1,11 km/h * 2.Gang = 1,56 km/h * 3.Gang = 2,15 km/h * 4.Gang = 3,00 km/h "Gruppe-R" * 1.Gang = 0,53 km/h * 2.Gang = 0,74 km/h * 3.Gang = 1,02 km/h * 4.Gang = 1,43 km/h ==Zapfwelle== * Unabhängige Motorzapfwelle * Elektrohydraulisch betätigt und lastschaltbar * 1.000/min b. Motordrehzahl 1.920/min * Übertragbare Leistung = 82,4 kW ~ 112 PS * Stummel = 1 3/8" - 21-teilig (Form-B) ==Bremsen== '''Betriebsbremse''' * hydraulisch betätigte, nasse GIRLING-Vollscheibenbremse * Auf die Differentialseitenwellen wirkend, als Einzelrad-Bremse zu verwenden * Lamellen-Bremse mit sechs Belagscheiben, je eine links und rechts mit 222 mm Durchmesser '''Feststellbremse''' * Unabhängige, mechanisch betätigte Feststellbremse * Auf die Betriebsbremse wirkend * Auf Wunsch auf eigene Belagscheiben wirkend '''Verzögerungswerte''' * Max. Verzögerung = 3,9 m/s² * Pedalkraft = 25 daN * Bremsweg bei 25 km/h = 7,8 m '''Optional''' * Zweikreis-Druckluftbremsanlage * Kombinierte Ein-und Zweikreis-Druckluftbremsanlage ==Achsen== '''Vorderachsen''' ''Bei Hinterradantrieb (2WD)'' * Pendelnd-gelagerte Teleskop-Vorderachse, Typ: 03 * Spurweite sechsfach-verstellbar in Stufen von 100 mm = 1.596 bis 2.196 mm ''Bei Allradantrieb (4WD)'' * pendelnd-gelagerte, elektrohydraulisch-betätigte und lastschaltbare ZF-Lenktriebachse, Typ: '''ZF APL-3052''' mit seitlicher Gelenkwelle * Übersetzungsverhältnis = '''1,346''' * Spurweiten durch Radumschlag = 1.800 oder 2.000 mm '''Hinterachse''' * Hinterachse mit Kegelradgetriebe, Tellerrad und Planetengetriebe * Vierfache Spurverstellung durch Radumschlag und Radscheiben, in Stufen von 100 mm = 1.600 bis 2.200 mm * Selbstausrückendes Kegelraddifferential mit Sperre '''Achslasten''' ''bei Allradantrieb'' * Vorderachslast = 2.285 kg (2WD = 1.835 kg) * Zul. Vorderachslast = 3.200 kg (2WD = 2.800 kg) * Hinterachslast = 3.575 kg (2WD = 3.565 kg) * Zul. Hinterachslast = 6.300 kg ==Lenkung== '''Lenkanlage''' * Hydrostatische ZF-Lenkung, Typ: 8452 mit eigenem Ölkreislauf * Lenkzylinder mit 50 mm Kolbendurchmesser und 250 mm Kolbenhub '''Hydraulische Versorgung''' * Bosch-Pumpe, Typ: HY/ZFS 11/19 L * Förderleistung je Pumpenumdrehung = 19 cm³ * Fördermenge = 45 l/min. ==Hydrauliksystem und Kraftheber== '''Kraftheber''' * DEUTZ-TRANSFERMATIC-SYSTEM K55.2 mit 2 Zusatzhubzylindern mit Unterlenkerregelung * Pumpenantrieb direkt vom Getriebe * Dreipunktkupplung = Kat. II (Wunsch Kat. III) * Zusatzsteuergeräte = max. 3 '''Funktionen''' * Heben, Senken, Neutral- und Schwimmstellung, Lage- und Zugkraftregelung * Hubhöhenbegrenzung, Seitenstabilisierung und Transportsicherung '''Hydraulische Versorgung''' * Bosch-Zahnradpumpe, Typ: HY/ZFS 11/22,5 l * Förderleistung je Pumpenumdrehung = 22,5 cm³ * Fördermenge = 58,5 l/min. bei 175 bar und Nenndrehzahl '''Leistung''' * Leistung der Hydraulik = 16,2 kW * Max. Hubkraft an den Koppelpunkten = 63.800N (6.500kp ~ 6.500kg) ==Steuergeräte== * 1 DW Steuergerät * Optional bis zu zwei weitere EW oder DW Zusatz-Steuergeräte ==Elektrische Ausrüstung== * 12 Volt-Einrichtung nach StVZO * Batterie, 12 V-143 Ah * Bosch-Anlasser, ID 12 V-3 kW * Bosch-Lichtmaschine mit integriertem Regler, G1 14 V-65 A * Kaltstart-Flammglühkerze, B 12 VH 7632 ==Maße und Abmessungen== '''Allrad''' * Bei Bereifung vorn/hinten = 14.9-28/20.8-38 * Radstand = 2.826 mm * Länge = 4.716 mm * Breite = 2.370 mm * Höhe über Auspuff = 2.920 mm * Höhe über offene Auspuffklappe = 3.050 mm * Bodenfreiheit unter Allradachse = 480 mm * Spurweiten vorn = 1.800 u. 2.000 mm * Spurweiten hinten = (1.600) 1.700 ... 2.200 mm * Wenderadius o. Lenkbremse = 6.340 mm * Leergewicht = 5.750 kg * Zul. Gesamtgewicht = 8.000 kg '''Geänderte Werte durch Hinterradantrieb-Ausführung''' * Bodenfreiheit unter der Teleskop-Achse = 620 mm * Eigengewicht = 5.400 kg * Zul. Gesamtgewicht = 7.700 kg ==Bereifung== '''Standardbereifung''' (Allrad) * Vorne = 14.9-28 AS (2WD = 11.00-16) * ''Niederquerschnitt:'' '''85''': 380/85R28 '''70''': 420/70R28, 480/70R26 '''65''': 480/65R28, 540/65R26 * Hinten = 20.8-38 AS * ''Niederquerschnitt:'' '''85''': 520/85R38 '''70''': 580/70R38, 620/70R38 '''65''': 650/65R38, 750/65R34 '''Optional''' (Allrad) * Vorne = 13.6-28 AS * ''Niederquerschnitt:'' '''85''': 360/85R28 '''70''': 380/70R28, 420/70R28 '''65''': 440/65R28, 480/65R26 * Hinten = 18.4-38 AS * ''Niederquerschnitt:'' '''85''': 460/85R38 '''70''': 520/70R38, 680/70R32 '''65''': 600/65R38 '''Pflegebereifung''' (Allrad) * Vorne = 9.5-32 AS * Hinten = 9.5-48 AS ==Füllmengen== * Tankinhalt = '''155 l''' * Mit optionalem Zusatztank = '''205 l''' * ''Diesel'' * Motoröl inkl. Filter = '''16 l''' * ''10W-30'', ''10W-40'' oder ''15W-40'' * ''Wechsel 200h/ 12 Monate'' * Hydraulik = '''13 l''' * Mit optionalem Hydrauliktank: = '''33 l''' * ''20W20'' oder ''15W-40'' * ''Prüfen 250h, Wechsel 1000h/ 12 Monate'' * Getriebe inkl. Endantriebe = '''46 l''' * ''80W-90 GL4'', ''10W-30'' oder ''15W-40'' * ''Wechsel 1000h/ 24 Monate'' * Vorderachse = '''9 l''' * Endantriebe je = '''1L''' * ''80W-90 GL5'' * ''Prüfen 500h, Wechsel 1000h/ 12 Monate'' ==Verbrauch== * Optimaler Kraftstoffverbrauch = 216 g/kWh bzw. 160g/PSh bei Mmax * ca. 16,8L/h bei 125PS ==Kabine== * Vollverglaste, gummigelagerte, staub- und schallisolierte (85 dB(A)) Deutz-MasterCab-Kabine mit ebenen Boden, Grammer-Komfort-Sitz, ausstellbare Front- und Heckscheibe, dreistufen Heizung- und Belüftungsgebläse mit 7 Düsen, Traktormeter, Analog-Uhr, Motortemperaturanzeige, Kraftstoffanzeige, Kontrollleuchten und klappbarem Beifahrersitz. ==Sonderausrüstung== * Kriechgruppe * Front- und Radgewichte * Frontlader * Druckluftbremsanlage mit Druckmanometer im Armaturenbrett * Zusatz-Heizung * Arbeitsscheinwerfer * Klimaanlage * Zusatz-Tank * Zusatz-Steuergeräte * Zugpendel ==Literatur== * Vom DX zum Agrostar (Karel Vermoesen/Michael Bruse) Seite 576 * Deutz-Das Typenbuch (Albert Mößmer) * Vom MTH zum Agrotron (Bernd Ertl) ==Quellen== <references /> ==Weblinks== {{:Traktorenlexikon: Navigation |HERSTELLER-LINK=Traktorenlexikon: Deutz-Fahr |HERSTELLER= Deutz-Fahr}} 9za2q0k39o4wflqg2q6w5moihtxxgrp 1090556 1090552 2026-09-08T13:21:29Z JaWa1998 115962 1090556 wikitext text/x-wiki {{:Traktorenlexikon: Navigation |HERSTELLER-LINK=Traktorenlexikon: Deutz-Fahr |HERSTELLER= Deutz-Fahr}} {{:Traktorenlexikon: Modell-Infobox | HERSTELLER = Deutz | MODELLREIHE = DX-Reihe | MODELL = DX 140 | BILD = DEUTZ DX140.jpg | BILDBESCHREIBUNG = Deutz DX 140 | BAUWEISE = Blockbauweise | PRODUKTIONSBEGINN = 1978 | PRODUKTIONSENDE = 1980 | STÜCKZAHL = | EIGENGEWICHT = 5.400 (A: 5.860) | LÄNGE = 4.716 | BREITE = 2.370 | HÖHE = 2.790 | RADSTAND = 2.831 (A: 2.826) | BODENFREIHEIT = 620 (A: 480) | SPURWEITE = | SPURWEITE VORNE = 1.596-2.196 (A: 1.800/2.000) | SPURWEITE HINTEN = 1.800-2.200 | WENDERADIUS MIT LENKBREMSE = 4.470 | WENDERADIUS OHNE LENKBREMSE = 4.970 (A: 6.340) | BEREIFUNG VORNE = 11.00-16 ASF (A: 14.9-28 AS) | BEREIFUNG HINTEN = 18.4-38 AS | LEISTUNG KW = 91,5 | LEISTUNG PS = 125 | NENNDREHZAHL = 2.200 | ZYLINDER = 6 | HUBRAUM = 6.125 | DREHMOMENTANSTIEG = 20 | KRAFTSTOFF = Diesel | KÜHLSYSTEM = Luftkühlung | ANTRIEBSTYP = Heck-oder Allradradantrieb | GETRIEBE = 12V/4R, 24V/8R, 36V/12R | HÖCHSTGESCHWINDIGKEIT = 25/30 | KATEGORIESORTIERUNG = Standardtraktor }} Mit den Traktoren der '''DX-Serie''' brachte Deutz '''1978''' eine komplett neu entwickelte Schlepperserie mit erstmals voll integrierten Kabinen auf den Markt. Sie ersetzte die großen 6-Zylinder-Traktoren der erfolgreichen Baureihe D06 (D8006-D13006) und führte anstatt der ZF-Getriebe nun hauseigene Getriebe bzw. ab dem DX 140 Steyr-Getriebe ein. Deutz setzte dabei zum einen auf die bewährten Suagmotoren der Reihe 912, führte aber auch gleichzeitig in den Top-Modellen die neue Reihe 913 als Saug- und Turbomotoren ein. Der '''DX 140''' war bei seiner Einführung das zweitstärkste Modell der DX-Serie. Sein Vorgänger war das damalige Top-Modell [[Traktorenlexikon: Deutz D 13006|D 13006]] der Serie 06. Der DX 140 wurde allerdings mit dem neuen, turbo-aufgeladenen '''BF6L913'''-Motor mit 125PS ausgestattet. Da ZF das im Vorgänger verwendete Getriebe T-3402 ersatzlos entfallen lies und Deutz für den Leistungsbereich oberhalb von 120PS noch kein eigenes Getriebe entwickelt hatte, ging KHD eine Zusammenarbeit mit dem österreichischen Hersteller '''STEYR''' ein. Im Gegenzug lieferte Deutz das TW90-Triebwerk für Steyr-Modelle. Der DX 140 nutzte das Steyr-Triebwerk '''TW1200''' mit 2-facher, bei Deutz '''"Powermatic"''' genannten Lastschaltung, die über zwei Druckknöpfe im Armaturenbrett bedient wurde. Die Anordnung des Steyr-Triebwerks entsprach dem des TW90-Triebwerks, allerdings mit nur vier Gängen. Um das Lastschaltgetriebe in einer 25 km/h sowie einer 30 km/h-Variante anbieten zu können, musste die Gesamtübersetzung angepasst werden. Leider entwickelte sich die Ersatzteilversorgung mit den Jahren problematisch. Beim DX 140 wurde die '''MasterCab'''-Kabine serienmäßig angeboten. Die erste DX-Serie, wozu der DX 140 gezählt wird, ist sehr gut an den an der A-Säule der Kabine angeschlagenen schwarzen GFK-Türen zu erkennen. Zur Allrad-Variante bot Deutz auch eine Hinterradantrieb-Variante an, die aber ausschließlich für den Export bestimmt war. Nach nur 2 Jahren Bauzeit wurde der '''DX 140''' 1980 durch seinen 7PS stärkeren Nachfolger [[Traktorenlexikon: Deutz-Fahr DX 145|DX 145]] ersetzt. ==Motor== * KHD, Typ: BF6L 913, stehender-luftgekühlter Viertakt-Sechszylinder-Reihen-Turbomotor mit Direkteinspritzverfahren, Bosch-Reihen-Einspritzpumpe, Kolbenkühlung, Bosch-Vierloch-Düse, Dralleinspritzkanal, Trockenluftfilter mit Zyklon-Vorabscheider, hängenden Ventilen, Dreiring-Leichtmetall-Kolben, siebenfach-gelagerter Kurbelwelle, Bosch-Fliehkraft-Verstellregler, zahnradgetriebener Nockenwelle, Einzel-Aluminium-Zylinderköpfe, Druckumlaufschmierung mittel Zahnradpumpe, integrierter Motorölkühlung, Bosch-Kraftstoffpumpe, KKK-Abgas-Turbolader und Axial-Regelgebläse. * Bohrung = 102 mm, Hub = 125 mm * Hubraum = 6.125 cm³ * Drehmomentanstieg = 20% * Verdichtungsverhältnis = 15,5:1 * Drehmoment bei Höchstleistung = 401 Nm * Max. Drehmoment = 483 Nm bei 1.499 U/min. * Leerlaufdrehzahl = 600 bis 750 U/min. * Geregelter Drehzahlbereich = 700 bis 2.320 U/min. * Max. Einspritzdruck = 175 + 8 bar * Einspritzmenge = 67 mm³/Hub und Nenndrehzahl * Ladedruck = 440 mbar * Bosch-Kraftstoffpumpe, Typ: FB/KS 22 AD 23/2 * Bosch-Drehzahlregler, Typ: EP/RSV 325-1150 A 8 B 2020 D * Bosch-Einspritzpumpe, Typ: PES 6 A 85 D 410 RS 2537 * Bosch-Mehrloch-Düse, Typ: DLLA 149 S 490 * Kühnle, Kopp und Kausch-Turbolader, Typ: 3 LEP 229 A/13.2 ==Kupplung== * trockene Einfachkupplung * Pedal betätigt * 350 mm Durchmesser * Typ: LuK 350 DGFP ==Getriebe== '''Merkmale''' * Im Ölbad laufendes Steyr-Getriebe, Typ: '''STEYR TW 1200''' mit Seitenschaltung * Vollynchronisiertes Wechselgetriebe mit vier Gängen * Auf Wunsch Vorschaltgetriebe als zweistufige Lastschaltung zur Verdoppelung der Ganganzahl ('''DEUTZ-POWERMATIC''') * Gruppen-Getriebe mit drei Vorwärts- und einer Rückwärtsgruppe, in die Bereiche L-M-H und R unterteilt * Gruppen L und H mit Klauenschaltung * Gruppen M und R mit Synchronschaltung '''Eigenschaften''' * Gangzahl vorwärts/rückwärts = 12/4 * Auf Wunsch mit '''DEUTZ-POWERMATIC''' = 24/8 * Auf Wunsch mit '''DEUTZ-POWERMATIC''' und Kriechgängen = 36/12 '''Gesamtübersetzung der Lastschaltstufe in Stellung "HI"''' "Gruppe-L" * 1.Gang = 274,18:1 * 2.Gang = 195,26:1 * 3.Gang = 141,72:1 * 4.Gang = 101,75:1 "Gruppe-M" * 1.Gang = 164,73:1 * 2.Gang = 117,31:1 * 3.Gang = 85,15:1 * 4.Gang = 61,30:1 "Gruppe-H" * 1.Gang = 75,45:1 * 2.Gang = 53,73:1 * 3.Gang = 39,00:1 * 4.Gang = 28,00:1 "Gruppe-R" * 1.Gang = 158,62:1 * 2.Gang = 112,96:1 * 3.Gang = 81,99:1 * 4.Gang = 58,86:1 '''Gesamtübersetzung der Lastschaltstufe in Stellung "LO"''' "Gruppe-L" * 1.Gang = 344,02:1 * 2.Gang = 245,00:1 * 3.Gang = 177,82:1 * 4.Gang = 127,67:1 "Gruppe-M" * 1.Gang = 206,69:1 * 2.Gang = 147,19:1 * 3.Gang = 106,83:1 * 4.Gang = 76,70:1 "Gruppe-H" * 1.Gang = 94,67:1 * 2.Gang = 67,42:1 * 3.Gang = 48,93:1 * 4.Gang = 35,13:1 "Gruppe-R" * 1.Gang = 199,02:1 * 2.Gang = 141,74:1 * 3.Gang = 102,87:1 * 4.Gang = 73,86:1 '''Optionale Kriechgruppe''' "Gruppe-L" * 1.Gang = 2315,33:1 * 2.Gang = 1648,89:1 * 3.Gang = 1196,77:1 * 4.Gang = 859,22:1 "Gruppe-M" * 1.Gang = 1391,03:1 * 2.Gang = 990,64:1 * 3.Gang = 719,01:1 * 4.Gang = 516,21:1 "Gruppe-H" * 1.Gang = 637,14:1 * 2.Gang = 453,75:1 * 3.Gang = 329,33:1 * 4.Gang = 236,44:1 "Gruppe-R" * 1.Gang = 1339,45:1 * 2.Gang = 953,90:1 * 3.Gang = 692,35:1 * 4.Gang = 497,07:1 ==Geschwindigkeiten vor- und rückwärts== ''Geschwindigkeiten mit Bereifung 18.4-38 AS'' '''25 km/h-Variante''' "Gruppe-L" * 1.Gang Stufe-LO = 2,0 km/h * 1.Gang Stufe-HI = 2,5 km/h * 2.Gang Stufe-LO = 2,8 km/h * 2.Gang Stufe-HI = 3,5 km/h * 3.Gang Stufe-LO = 3,8 km/h * 3.Gang Stufe-HI = 4,8 km/h * 4.Gang Stufe-LO = 5,3 km/h * 4.Gang Stufe-HI = 6,7 km/h "Gruppe-M" * 1.Gang Stufe-LO = 3,3 km/h * 1.Gang Stufe-HI = 4,1 km/h * 2.Gang Stufe-LO = 4,6 km/h * 2.Gang Stufe-HI = 5,8 km/h * 3.Gang Stufe-LO = 6,4 km/h * 3.Gang Stufe-HI = 8,0 km/h * 4.Gang Stufe-LO = 8,9 km/h * 4.Gang Stufe-HI = 11,1 km/h "Gruppe-H" * 1.Gang Stufe-LO = 7,2 km/h * 1.Gang Stufe-HI = 9,0 km/h * 2.Gang Stufe-LO = 10,0 km/h * 2.Gang Stufe-HI = 12,7 km/h * 3.Gang Stufe-LO = 13,9 km/h * 3.Gang Stufe-HI = 17,4 km/h * 4.Gang Stufe-LO = 19,4 km/h * 4.Gang Stufe-HI = 25,0 km/h "Gruppe-R" * 1.Gang Stufe-LO = 3,4 km/h * 1.Gang Stufe-HI = 4,3 km/h * 2.Gang Stufe-LO = 4,8 km/h * 2.Gang Stufe-HI = 6,0 km/h * 3.Gang Stufe-LO = 6,6 km/h * 3.Gang Stufe-HI = 8,3 km/h * 4.Gang Stufe-LO = 9,2 km/h * 4.Gang Stufe-HI = 11,6 km/h '''30 km/h-Variante''' "Gruppe-L" * 1.Gang Stufe-LO = 2,3 km/h * 1.Gang Stufe-HI = 2,9 km/h * 2.Gang Stufe-LO = 3,3 km/h * 2.Gang Stufe-HI = 4,1 km/h * 3.Gang Stufe-LO = 4,5 km/h * 3.Gang Stufe-HI = 5,7 km/h * 4.Gang Stufe-LO = 6,2 km/h * 4.Gang Stufe-HI = 7,9 km/h "Gruppe-M" * 1.Gang Stufe-LO = 3,9 km/h * 1.Gang Stufe-HI = 4,9 km/h * 2.Gang Stufe-LO = 5,5 km/h * 2.Gang Stufe-HI = 6,8 km/h * 3.Gang Stufe-LO = 7,5 km/h * 3.Gang Stufe-HI = 9,4 km/h * 4.Gang Stufe-LO = 10,5 km/h * 4.Gang Stufe-HI = 13,1 km/h "Gruppe-H" * 1.Gang Stufe-LO = 8,5 km/h * 1.Gang Stufe-HI = 10,6 km/h * 2.Gang Stufe-LO = 11,9 km/h * 2.Gang Stufe-HI = 14,9 km/h * 3.Gang Stufe-LO = 16,4 km/h * 3.Gang Stufe-HI = 20,6 km/h * 4.Gang Stufe-LO = 22,8 km/h * 4.Gang Stufe-HI = 30,0 km/h "Gruppe-R" * 1.Gang Stufe-LO = 3,4 km/h * 1.Gang Stufe-HI = 4,3 km/h * 2.Gang Stufe-LO = 4,8 km/h * 2.Gang Stufe-HI = 6,0 km/h * 3.Gang Stufe-LO = 6,6 km/h * 3.Gang Stufe-HI = 8,3 km/h * 4.Gang Stufe-LO = 9,2 km/h * 4.Gang Stufe-HI = 11,6 km/h '''Optionale Kriechgruppe''' "Gruppe-L" * 1.Gang = 0,31 km/h * 2.Gang = 0,43 km/h * 3.Gang = 0,59 km/h * 4.Gang = 0,83 km/h "Gruppe-M" * 1.Gang = 0,51 km/h * 2.Gang = 0,72 km/h * 3.Gang = 0,99 km/h * 4.Gang = 1,37 km/h "Gruppe-H" * 1.Gang = 1,11 km/h * 2.Gang = 1,56 km/h * 3.Gang = 2,15 km/h * 4.Gang = 3,00 km/h "Gruppe-R" * 1.Gang = 0,53 km/h * 2.Gang = 0,74 km/h * 3.Gang = 1,02 km/h * 4.Gang = 1,43 km/h ==Zapfwelle== * Unabhängige Motorzapfwelle * Elektrohydraulisch betätigt und lastschaltbar * 1.000/min b. Motordrehzahl 1.920/min * Übertragbare Leistung = 82,4 kW ~ 112 PS * Stummel = 1 3/8" - 21-teilig (Form-B) ==Bremsen== '''Betriebsbremse''' * hydraulisch betätigte, nasse GIRLING-Vollscheibenbremse * Auf die Differentialseitenwellen wirkend, als Einzelrad-Bremse zu verwenden * Lamellen-Bremse mit sechs Belagscheiben, je eine links und rechts mit 222 mm Durchmesser '''Feststellbremse''' * Unabhängige, mechanisch betätigte Feststellbremse * Auf die Betriebsbremse wirkend * Auf Wunsch auf eigene Belagscheiben wirkend '''Verzögerungswerte''' * Max. Verzögerung = 3,9 m/s² * Pedalkraft = 25 daN * Bremsweg bei 25 km/h = 7,8 m '''Optional''' * Zweikreis-Druckluftbremsanlage * Kombinierte Ein-und Zweikreis-Druckluftbremsanlage ==Achsen== '''Vorderachsen''' ''Bei Hinterradantrieb (2WD)'' * Pendelnd-gelagerte Teleskop-Vorderachse, Typ: '''KHD Tele-03''' * Spurweite sechsfach-verstellbar in Stufen von 100 mm = 1.596 bis 2.196 mm ''Bei Allradantrieb (4WD)'' * pendelnd-gelagerte, elektrohydraulisch-betätigte und lastschaltbare ZF-Lenktriebachse, Typ: '''ZF APL-3052''' mit seitlicher Gelenkwelle * Übersetzungsverhältnis = '''1,346''' * Spurweiten durch Radumschlag = 1.800 oder 2.000 mm '''Hinterachse''' * Hinterachse mit Kegelradgetriebe, Tellerrad und Planetengetriebe * Vierfache Spurverstellung durch Radumschlag und Radscheiben, in Stufen von 100 mm = 1.600 bis 2.200 mm * Pedal betätigte, selbstausrückende und lastschaltbare Differentialsperre '''Achslasten''' ''bei Allradantrieb'' * Vorderachslast = 2.285 kg (2WD = 1.835 kg) * Zul. Vorderachslast = 3.200 kg (2WD = 2.800 kg) * Hinterachslast = 3.575 kg (2WD = 3.565 kg) * Zul. Hinterachslast = 6.300 kg ==Lenkung== '''Lenkanlage''' * Hydrostatische ZF-Lenkung, Typ: '''ZF Servostat 8452''' mit eigenem Ölkreislauf * Lenkzylinder mit 50 mm Kolbendurchmesser und 250 mm Kolbenhub '''Hydraulische Versorgung''' * Bosch-Pumpe, Typ: HY/ZFS 11/19 L * Förderleistung je Pumpenumdrehung = 19 cm³ * Fördermenge = 45 l/min. ==Hydrauliksystem und Kraftheber== '''Kraftheber''' * DEUTZ-TRANSFERMATIC-SYSTEM K55.2 mit 2 Zusatzhubzylindern mit Unterlenkerregelung * Pumpenantrieb direkt vom Getriebe * Dreipunktkupplung = Kat. II (Wunsch Kat. III) * Zusatzsteuergeräte = max. 3 '''Funktionen''' * Heben, Senken, Neutral- und Schwimmstellung, Lage- und Zugkraftregelung * Hubhöhenbegrenzung, Seitenstabilisierung und Transportsicherung '''Hydraulische Versorgung''' * Bosch-Zahnradpumpe, Typ: HY/ZFS 11/22,5 l * Förderleistung je Pumpenumdrehung = 22,5 cm³ * Fördermenge = 58,5 l/min * Arbeitsdruck = 175 bar '''Leistung''' * Leistung der Hydraulik = 16,2 kW * Max. Hubkraft an den Koppelpunkten = 63.800N (6.500kp ~ 6.500kg) ==Steuergeräte== * 1 DW Steuergerät * Optional bis zu zwei weitere EW oder DW Zusatz-Steuergeräte ==Elektrische Ausrüstung== * 12 Volt-Einrichtung nach StVZO * Batterie, 12 V-143 Ah * Bosch-Anlasser, ID 12 V-3 kW * Bosch-Lichtmaschine mit integriertem Regler, G1 14 V-65 A * Kaltstart-Flammglühkerze, B 12 VH 7632 ==Maße und Abmessungen== '''Allrad''' * Bei Bereifung vorn/hinten = 14.9-28/20.8-38 * Radstand = 2.826 mm * Länge = 4.716 mm * Breite = 2.370 mm * Höhe über Auspuff = 2.920 mm * Höhe über offene Auspuffklappe = 3.050 mm * Bodenfreiheit unter Allradachse = 480 mm * Spurweiten vorn = 1.800 u. 2.000 mm * Spurweiten hinten = (1.600) 1.700 ... 2.200 mm * Wenderadius o. Lenkbremse = 6.340 mm * Leergewicht = 5.750 kg * Zul. Gesamtgewicht = 8.000 kg '''Geänderte Werte durch Hinterradantrieb-Ausführung''' * Bodenfreiheit unter der Teleskop-Achse = 620 mm * Eigengewicht = 5.400 kg * Zul. Gesamtgewicht = 7.700 kg ==Bereifung== '''Standardbereifung''' (Allrad) * Vorne = 14.9-28 AS (2WD = 11.00-16) * ''Niederquerschnitt:'' '''85''': 380/85R28 '''70''': 420/70R28, 480/70R26 '''65''': 480/65R28, 540/65R26 * Hinten = 20.8-38 AS * ''Niederquerschnitt:'' '''85''': 520/85R38 '''70''': 580/70R38, 620/70R38 '''65''': 650/65R38, 750/65R34 '''Optional''' (Allrad) * Vorne = 13.6-28 AS * ''Niederquerschnitt:'' '''85''': 360/85R28 '''70''': 380/70R28, 420/70R28 '''65''': 440/65R28, 480/65R26 * Hinten = 18.4-38 AS * ''Niederquerschnitt:'' '''85''': 460/85R38 '''70''': 520/70R38, 680/70R32 '''65''': 600/65R38 '''Pflegebereifung''' (Allrad) * Vorne = 9.5-32 AS * Hinten = 9.5-48 AS ==Füllmengen== * Tankinhalt = '''155 l''' * Mit optionalem Zusatztank = '''205 l''' * ''Diesel'' * Motoröl inkl. Filter = '''16 l''' * ''15W-40'', ''10W-30'' oder ''10W-40'' * ''Wechsel 200h/ 12 Monate'' * Hydraulik = '''13 l''' * Mit optionalem Hydrauliktank: = '''33 l''' * ''15W-40'' oder ''20W-20'' * ''Prüfen 250h, Wechsel 1000h/ 12 Monate'' * Getriebe inkl. Endantriebe = '''46 l''' * ''15W-40'', ''80W-90 GL4'' oder ''10W-30'' * ''Wechsel 1000h/ 24 Monate'' * Vorderachse = '''9 l''' * Endantriebe je = '''1L''' * ''80W-90 GL5'' * ''Prüfen 500h, Wechsel 1000h/ 12 Monate'' ==Verbrauch== * Optimaler Kraftstoffverbrauch = 216 g/kWh bzw. 160g/PSh bei Mmax * ca. 16,8L/h bei 125PS ==Kabine== * Vollverglaste, gummigelagerte, staub- und schallisolierte (85 dB(A)) Deutz-MasterCab-Kabine mit ebenen Boden, Grammer-Komfort-Sitz, ausstellbare Front- und Heckscheibe, dreistufen Heizung- und Belüftungsgebläse mit 7 Düsen, Traktormeter, Analog-Uhr, Motortemperaturanzeige, Kraftstoffanzeige, Kontrollleuchten und klappbarem Beifahrersitz. ==Sonderausrüstung== * Kriechgruppe * Front- und Radgewichte * Frontlader * Druckluftbremsanlage mit Druckmanometer im Armaturenbrett * Zusatz-Heizung * Arbeitsscheinwerfer * Klimaanlage * Zusatz-Tank * Zusatz-Steuergeräte * Zugpendel ==Literatur== * Vom DX zum Agrostar (Karel Vermoesen/Michael Bruse) Seite 576 * Deutz-Das Typenbuch (Albert Mößmer) * Vom MTH zum Agrotron (Bernd Ertl) ==Quellen== <references /> ==Weblinks== {{:Traktorenlexikon: Navigation |HERSTELLER-LINK=Traktorenlexikon: Deutz-Fahr |HERSTELLER= Deutz-Fahr}} 6g31zeifqpin95u3bjreuxpyj0w0oad Musterentwürfe zum gerichtlichen Mahnverfahren/ Zusatzhinweise zum gerichtlichen Mahnverfahren 0 102119 1090613 1090261 2026-09-09T11:32:26Z Raimund Barkam 58500 1090613 wikitext text/x-wiki Die hier angegebenen Zusatzhinweise beziehen sich auf das gerichtliche Mahnverfahren und wurden den Büchern "BGB = 79. Auflage 2017" und "ZPO = 57. Auflage 2016" / "ZPO = 58. Auflage 2017" entnommen. Ebenso werden hier mit Unterstützung der genannten Bücher, die hier genannten Paragraphen durch Angabe aktueller Paragraphen geändert oder ergänzt und somit den gesetzgeberischen Regelungen angepasst und vervollständigt. Die Nachfolgend aufgeführten Zusatzhinweise wurden den beiden genannten Büchern entnommen und sollen die Paragraphen mit den Angaben lt. Gesetzestexten ergänzen: :''' Paragraphen und Text lt. Buch ZPO - Zivilprozessordnung''' ISBN 978-3-423-53106-1 (dtv) / ISBN 978-3-406-77913-8 (C. H. Beck) ::::::<Font Size="5"> '''1 Zivilprozessordnung'''</Font> ::::::In der Fassung der Bekanntmachung vom Dezember2005<sup>1)</sup> :::::::(BGB1. I S.3202, ber. 2006 I S. 431 und 2007 I S. 1781) <Font Size="3">&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;'''FNA 310-4''' zuletzt geänd. durch Art. 14 G zur Modernisierung des notariellen Berufsrechts und zur Änd. weiterer<br> Vorschriften v. 25.6.2021 (BGB1. I S. 2154) <Font Size="4">&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;'''Inhaltsübersicht''' :::::::'''Buch 1. Allgemeine Vorschriften''' ::::::::: Abschnitt 1. Gerichte :::::: Titel 1. Sachliche Zuständigkeit der Gerichte und Wertvorschriften § &emsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Sachliche Zuständigkeit<br> § &emsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Bedeutung des Wertes<br> § &emsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Wertfestsetzung nach freiem Ermessen<br> § &emsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Wertberechnung Nebenforderungen<br> § &emsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Mehrere Ansprüche<br> § &emsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Besitz; Sicherstellung; Pfandrecht<br> § &emsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Grunddienstbarkeit<br> § &emsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Pacht- oder Mietverhältnis<br> § &emsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Wiederkehrende Nutzungen oder Leistungen<br> § &emsp;&nbsp;&nbsp;&nbsp; 10 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; (weggefallen)<br> § &emsp;&nbsp;&nbsp;&nbsp; 11 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Bindende Entscheidung über Unzuständigkeit<br> :::::: Titel 2. Gerichtsstand § &emsp;&nbsp;&nbsp;&nbsp; 12 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Allgemeiner Gerichtsstand; Begriff<br> § &emsp;&nbsp;&nbsp;&nbsp; 13 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Allgemeiner Gerichtsstand des Wohnsitzes<br> § &emsp;&nbsp;&nbsp;&nbsp; 14 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; (weggefallen)<br> § &emsp;&nbsp;&nbsp;&nbsp; 15 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Allgemeiner Gerichtsstand für exterritoriale Deutsche<br> § &emsp;&nbsp;&nbsp;&nbsp; 16 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Allgemeiner Gerichtsstand wohnungsloser Personen<br> § &emsp;&nbsp;&nbsp;&nbsp; 17 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Allgemeiner Gerichtsstand juristischer Personen<br> § &emsp;&nbsp;&nbsp;&nbsp; 18 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Allgemeiner Gerichtsstand des Fiskus<br> § &emsp;&nbsp;&nbsp;&nbsp; 19 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Mehrere Gerichtsbezirke am Behördensitz<br> § &emsp;&nbsp;&nbsp;&nbsp; 19a&emsp;&emsp;&emsp;&emsp;&emsp; Allgemeiner Gerichtsstand des Insolvenzverwalters<br> § &emsp;&nbsp;&nbsp;&nbsp; 19b&emsp;&emsp;&emsp;&emsp;&emsp; Ausschließlicher Gerichtsstand bei restrukturierungsbezogenen Klagen; &emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Verordnungsermächtigung<br> § &emsp;&nbsp;&nbsp;&nbsp; 20 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Besonderer Gerichtsstand des Aufenthaltsorts<br> § &emsp;&nbsp;&nbsp;&nbsp; 21 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Besonderer Gerichtsstand der Niederlassung<br> § &emsp;&nbsp;&nbsp;&nbsp; 22 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Besonderer Gerichtsstand der Mitgliedschaft<br> § &emsp;&nbsp;&nbsp;&nbsp; 23 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Besonderer Gerichtsstand des Vermögens und des Gegenstands<br> § &emsp;&nbsp;&nbsp;&nbsp; 24 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Ausschließlicher dringlicher Gerichtsstand<br> § &emsp;&nbsp;&nbsp;&nbsp; 25 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Dinglicher Gerichtsstand des Sachzusammenhanges<br> § &emsp;&nbsp;&nbsp;&nbsp; 26 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Dinglicher Gerichtsstand für persönliche Klagen<br> § &emsp;&nbsp;&nbsp;&nbsp; 27 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Besonderer Gerichtsstand der Erbschaft<br> § &emsp;&nbsp;&nbsp;&nbsp; 28 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Erweiterter Gerichtsstand der Erbschaft<br> § &emsp;&nbsp;&nbsp;&nbsp; 29 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Besonderer Gerichtsstand des Erfüllungsorts<br> § &emsp;&nbsp;&nbsp;&nbsp; 29a&emsp;&emsp;&emsp;&emsp;&emsp; Ausschließlicher Gerichtsstand bei Miet- und Pachträumen<br> § &emsp;&nbsp;&nbsp;&nbsp; 29b&emsp;&emsp;&emsp;&emsp;&emsp; (weggefallen)<br> § &emsp;&nbsp;&nbsp;&nbsp; 29c&emsp;&emsp;&emsp;&emsp;&emsp; Besonderer Gerichtsstand für Haustürgeschäfte<br> § &emsp;&nbsp;&nbsp;&nbsp; 30 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Besonderer Gerichtsstand bei Beförderungen <br> § &emsp;&nbsp;&nbsp;&nbsp; 30a&emsp;&emsp;&emsp;&emsp;&emsp; Gerichtsstand bei Bergungsansprüchen<br> § &emsp;&nbsp;&nbsp;&nbsp; 31 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Besonderer Gerichtsstand der Vermögensverwaltung<br> § &emsp;&nbsp;&nbsp;&nbsp; 32 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Besonderer Gerichtsstand der unerlaubten Handlung<br> § &emsp;&nbsp;&nbsp;&nbsp; 32a&emsp;&emsp;&emsp;&emsp;&emsp; Ausschließlicher Gerichtsstand der Umwelteinwirkung<br> § &emsp;&nbsp;&nbsp;&nbsp; 32b&emsp;&emsp;&emsp;&emsp;&emsp; Ausschließlicher Gerichtsstand bei falschen, irreführenden oder unterlassenen öffentlichen Kapitalmarktinformationen<br> § &emsp;&nbsp;&nbsp;&nbsp; 32c&emsp;&emsp;&emsp;&emsp;&emsp; Ausschließlicher Gerichtsstand bei Musterfeststellungsverfahren<br> § &emsp;&nbsp;&nbsp;&nbsp; 33 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Besonderer Gerichtsstand der Widerlege<br> § &emsp;&nbsp;&nbsp;&nbsp; 34 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Besonderer Gerichtsstand des Hauptprozesses<br> § &emsp;&nbsp;&nbsp;&nbsp; 35 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Wahl unter mehreren Gerichtsständen<br> $ &emsp;&nbsp;&nbsp;&nbsp; 36 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Gerichtliche Bestimmung der Zuständigkeit<br> § &emsp;&nbsp;&nbsp;&nbsp; 37 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Verfahren bei gerichtlicher Bestimmung<br> :::::: Titel 3. Vereinbarung über die Zuständigkeit der Gerichte § &emsp;&nbsp;&nbsp;&nbsp; 38 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zugelassene Gerichtsstandsvereinbarung<br> § &emsp;&nbsp;&nbsp;&nbsp; 39 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zuständigkeit infolge regenloser Verhandlung<br> § &emsp;&nbsp;&nbsp;&nbsp; 40 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Unwirksame und unzulässige Gerichtsstandsvereinbarung<br> :::::: Titel 4. Ausschließung und Ablehnung der Gerichtspersonen § &emsp;&nbsp;&nbsp;&nbsp; 41 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Ausschluss von der Ausübung des Richteramtes<br> § &emsp;&nbsp;&nbsp;&nbsp; 42 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Ablehnung eines Richters<br> § &emsp;&nbsp;&nbsp;&nbsp; 43 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Verlust des Ablehnungsrechts<br> § &emsp;&nbsp;&nbsp;&nbsp; 44 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Ablehnungsgesuch<br> § &emsp;&nbsp;&nbsp;&nbsp; 45 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Entscheidung über das Ablehnungsgesuch<br> § &emsp;&nbsp;&nbsp;&nbsp; 46 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Entscheidung des Rechtsmittel<br> § &emsp;&nbsp;&nbsp;&nbsp; 47 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Unaufschiebbare Amtshandlungen<br> § &emsp;&nbsp;&nbsp;&nbsp; 48 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Selbstablehnung: Ablehnung von Amts wegen<br> § &emsp;&nbsp;&nbsp;&nbsp; 49 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Urkundsbeamte <br> ::::::: Abschnitt 2. Parteien :::::: Titel 1. Parteifähigkeit; Prozessfähigkeit § &emsp;&nbsp;&nbsp;&nbsp; 50 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Parteifähigkeit<br> § &emsp;&nbsp;&nbsp;&nbsp; 51 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Prozessfähigkeit; gesetzliche Vertretung, Prozessführung<br> § &emsp;&nbsp;&nbsp;&nbsp; 52 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Umfang der Prozessfähigkeit<br> '''[bis 31.12.2022:]'''<br> § &emsp;&nbsp;&nbsp;&nbsp; 53 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Prozessunfähigkeit bei Betreuung oder Pflegeschaft<br> '''[bis 1.1.2023:]'''<br> <i>§ &emsp;&nbsp;&nbsp;&nbsp; 53 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Prozessfähigkeit bei rechtlicher Betreuung</i><br> § &emsp;&nbsp;&nbsp;&nbsp; 54 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Besondere Ermächtigung zu Prozesshandlungen<br> § &emsp;&nbsp;&nbsp;&nbsp; 55 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Prozessfähigkeit von Ausländern<br> § &emsp;&nbsp;&nbsp;&nbsp; 56 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Prüfung von Amts wegen<br> § &emsp;&nbsp;&nbsp;&nbsp; 57 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Prozesspfleger<br> § &emsp;&nbsp;&nbsp;&nbsp; 58 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Prozesspfleger bei herrenlosem Grundstück oder Schiff<br> :::::: Titel 2. Streitgenossenschaft § &emsp;&nbsp;&nbsp;&nbsp; 59 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Streitgenossenschaft bei Rechtsgemeinschaft oder Identität des Grundes<br> § &emsp;&nbsp;&nbsp;&nbsp; 60 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Streitgenossenschaft bei Gleichartigkeit der Ansprüche<br> § &emsp;&nbsp;&nbsp;&nbsp; 61 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Wirkung der Streitgenossenschaft<br> § &emsp;&nbsp;&nbsp;&nbsp; 62 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Notwendige Streitgenossenschaft<br> § &emsp;&nbsp;&nbsp;&nbsp; 63 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Prozessbetrieb; Ladungen<br> :::::: Titel 3. Beteiligung Dritter am Rechtsstreit § &emsp;&nbsp;&nbsp;&nbsp; 64 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Hauptintervention<br> § &emsp;&nbsp;&nbsp;&nbsp; 65 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Aussetzung des Hauptprozesses<br> § &emsp;&nbsp;&nbsp;&nbsp; 66 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Nebenintervention<br> § &emsp;&nbsp;&nbsp;&nbsp; 67 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Rechtsstellung des Nebenintervenienten<br> § &emsp;&nbsp;&nbsp;&nbsp; 68 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Wirkung der Nebenintervention<br> § &emsp;&nbsp;&nbsp;&nbsp; 69 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Streitgenössische Nebenintervention<br> § &emsp;&nbsp;&nbsp;&nbsp; 70 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Beitritt des Nebenintervenienten<br> § &emsp;&nbsp;&nbsp;&nbsp; 71 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zwischenstreit über Nebenintervention<br> § &emsp;&nbsp;&nbsp;&nbsp; 72 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zulässigkeit der Streitverkündung<br> § &emsp;&nbsp;&nbsp;&nbsp; 73 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Form der Streitverkündung<br> § &emsp;&nbsp;&nbsp;&nbsp; 74 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Wirkung der Streitverkündung<br> § &emsp;&nbsp;&nbsp;&nbsp; 75 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Gläubigerstreit<br> § &emsp;&nbsp;&nbsp;&nbsp; 76 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Urheberbenennung bei Besitz<br> § &emsp;&nbsp;&nbsp;&nbsp; 77 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Urheberbenennung bei Eigentumsbeeinträchtigung<br> :::::: Titel 4. Prozessbevollmächtigte und Beistände § &emsp;&nbsp;&nbsp;&nbsp; 78 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Anwaltsprozess<br> § &emsp;&nbsp;&nbsp;&nbsp; 78a&emsp;&emsp;&emsp;&emsp; (weggefallen)<br> § &emsp;&nbsp;&nbsp;&nbsp; 78b&emsp;&emsp;&emsp;&emsp; Notanwalt<br> § &emsp;&nbsp;&nbsp;&nbsp; 78c&emsp;&emsp;&emsp;&emsp; Auswahl des Rechtsanwalts<br> § &emsp;&nbsp;&nbsp;&nbsp; 79 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Parteiprozess<br> § &emsp;&nbsp;&nbsp;&nbsp; 80 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Prozessvollmacht<br> § &emsp;&nbsp;&nbsp;&nbsp; 81 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Umfang der Prozessvollmacht<br> § &emsp;&nbsp;&nbsp;&nbsp; 82 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Geltung für Nebenverfahren<br> § &emsp;&nbsp;&nbsp;&nbsp; 83 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Beschränkung der Prozessvollmacht<br> § &emsp;&nbsp;&nbsp;&nbsp; 84 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Mehrere Prozessbevollmächtigte<br> § &emsp;&nbsp;&nbsp;&nbsp; 85 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Wirkung der Prozessvollmacht<br> § &emsp;&nbsp;&nbsp;&nbsp; 86 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Fortbestand der Prozessvollmacht<br> § &emsp;&nbsp;&nbsp;&nbsp; 87 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Erlöschen der vollmacht<br> § &emsp;&nbsp;&nbsp;&nbsp; 88 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Mangel der Vollmacht<br> § &emsp;&nbsp;&nbsp;&nbsp; 89 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; vollmachtloser Vertreter<br> § &emsp;&nbsp;&nbsp;&nbsp; 90 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Beistand<br> :::::: Titel 5. Prozesskosten § &emsp;&nbsp;&nbsp;&nbsp; 91 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Grundsatz und Umsatz der Kostenpflicht<br> § &emsp;&nbsp;&nbsp;&nbsp; 91a&emsp;&emsp;&emsp;&emsp; Kosten bei Erledigung der Hauptsache<br> § &emsp;&nbsp;&nbsp;&nbsp; 92 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Kosten bei teilweisen Obsiegen<br> § &emsp;&nbsp;&nbsp;&nbsp; 93 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Kosten bei sofortigem Anerkenntnis<br> § &emsp;&nbsp;&nbsp;&nbsp; 93a&emsp;&emsp;&emsp;&emsp; (weggefallen)<br> § &emsp;&nbsp;&nbsp;&nbsp; 93b&emsp;&emsp;&emsp;&emsp; Kosten bei Räumungsklagen<br> § &emsp;&nbsp;&nbsp;&nbsp; 94 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Kosten bei übergegangenem Anspruch<br> § &emsp;&nbsp;&nbsp;&nbsp; 95 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Kosten bei Säumnis oder Verschulden<br> § &emsp;&nbsp;&nbsp;&nbsp; 96 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Kosten erfolgloser Angriffs- oder Verteidigungsmittel<br> § &emsp;&nbsp;&nbsp;&nbsp; 97 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Rechtsmittelkosten<br> § &emsp;&nbsp;&nbsp;&nbsp; 98 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vergleichskosten<br> § &emsp;&nbsp;&nbsp;&nbsp; 99 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Anfechtung von Kostenentscheidungen<br> § &nbsp;&nbsp; 100 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Kosten bei Streitgenossen<br> § &nbsp;&nbsp; 101 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Kosten einer Nebenintervention<br> § &nbsp;&nbsp; 102 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp;(weggefallen)<br> § &nbsp;&nbsp; 103 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Kostenfestsetzungsgrundlage; Kostenfestsetzungsantrag<br> § &nbsp;&nbsp; 104 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Kostenfestsetzungsverfahren<br> § &nbsp;&nbsp; 105 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vereinfachter Kostenfestsetzungsbeschluss<br> § &nbsp;&nbsp; 106 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Verteilung nach Quoten<br> § &nbsp;&nbsp; 107 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Änderung nach Streitwertfestsetzung<br> :::::: Titel 6. Sicherheitsleistung § &nbsp;&nbsp; 108 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Art und Höhe der Sicherheit<br> § &nbsp;&nbsp; 109 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Rückgabe der Sicherheit<br> § &nbsp;&nbsp; 110 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Prozesskostensicherheit<br> § &nbsp;&nbsp; 111 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Nachhaltige Prozesskostensicherheit<br> § &nbsp;&nbsp; 112 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Höhe der Prozesskostensicherheit<br> § &nbsp;&nbsp; 113 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Fristbestimmung für Prozesskostensicherheit<br> :::::: Titel 7. Prozesskostenhilfe § &nbsp;&nbsp; 114 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Voraussetzungen<br> § &nbsp;&nbsp; 115 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Einsatz von Einkommen und Vermögen<br> § &nbsp;&nbsp; 116 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Partei kraft Amtes; juristische Person; parteifähige Vereinigung<br> § &nbsp;&nbsp; 117 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Antrag<br> § &nbsp;&nbsp; 118 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Bewilligungsverfahren<br> § &nbsp;&nbsp; 119 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Bewilligung<br> § &nbsp;&nbsp; 120 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Festsetzung von Zahlungen<br> § &nbsp;&nbsp; 120a&emsp;&emsp;&emsp;&emsp; Änderung der Bewilligung<br> § &nbsp;&nbsp; 121 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Beiordnung eines Rechtsanwalts<br> § &nbsp;&nbsp; 122 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Wirkung der Prozesskostenhilfe<br> § &nbsp;&nbsp; 123 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Kostenerstattung<br> § &nbsp;&nbsp; 124 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Aufhebung der Bewilligung<br> § &nbsp;&nbsp; 125 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Einbeziehung der Kosten<br> § &nbsp;&nbsp; 126 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Beitreibung der Rechtsanwaltskosten<br> § &nbsp;&nbsp; 127 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Entscheidungen<br> ::::::: Abschnitt 3. Verfahren :::::: Titel 1. Mündliche Verhandlung § &nbsp;&nbsp; 128 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Grundsatz der Mündlichkeit; schriftliches Verfahren<br> § &nbsp;&nbsp; 128a &emsp;&emsp;&emsp;&emsp; Verhandlung im Wege der Bild- und Tonübertragung<br> § &nbsp;&nbsp; 129 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vorbereitende Schriftsätze<br> § &nbsp;&nbsp; 129a&emsp;&emsp;&emsp;&emsp; Anträge und Erklärungen zu Protokoll<br> § &nbsp;&nbsp; 130 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Inhalt der Schriftsätze<br> § &nbsp;&nbsp; 130a &emsp;&emsp;&emsp;&emsp; Elektronisches Dokument<br> § &nbsp;&nbsp; 130b &emsp;&emsp;&emsp;&emsp; Gerichtliches elektronisches Instrument<br> § &nbsp;&nbsp; 130c &emsp;&emsp;&emsp;&emsp; Formulare: Verordnungsermächtigung<br> '''''[ab 1.1.2022:]'''''<br> § &nbsp;&nbsp; 130d &emsp;&emsp;&emsp;&emsp; ''Nutzungspflicht für Rechtsanwälte und Behörden''<br> § &nbsp;&nbsp; 131 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Beifügung von Urkunden<br> § &nbsp;&nbsp; 132 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Fristen für Schriftsätze<br> § &nbsp;&nbsp; 133 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Abschriften<br> § &nbsp;&nbsp; 134 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Einsicht von Urkunden<br> § &nbsp;&nbsp; 135 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Mitteilung von Urkunden unter Rechtsanwälten<br> § &nbsp;&nbsp; 136 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Prozessleistung durch Vorsitzenden<br> § &nbsp;&nbsp; 137 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Gang der mündlichen Verhandlung<br> § &nbsp;&nbsp; 138 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Erklärungspflicht über Tatsachen; Wahrheitspflicht<br> § &nbsp;&nbsp; 139 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Materielle Prozessleistung<br> § &nbsp;&nbsp; 140 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Beanstandung von Prozessleistung oder Fragen<br> § &nbsp;&nbsp; 141 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Anordnung des persönlichen Erscheinens<br> § &nbsp;&nbsp; 142 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Anordnung der Urkundenvorlegung<br> § &nbsp;&nbsp; 143 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Anordnung der Aktenübermittlung<br> § &nbsp;&nbsp; 144 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Augenschein; Sachverständige<br> § &nbsp;&nbsp; 145 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Prozesstrennung<br> § &nbsp;&nbsp; 146 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Beschränkung auf einzelne Angriffs- und Verteidigungsmittel<br> § &nbsp;&nbsp; 147 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Prozessverbindung<br> § &nbsp;&nbsp; 148 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Aussetzung bei Vortrefflichkeit<br> § &nbsp;&nbsp; 149 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Aussetzung bei Verdacht einer Straftat<br> § &nbsp;&nbsp; 150 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Aufhebung von Trennung, Verbindung oder Aussetzung<br> § &nbsp;&nbsp; 151 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; (weggefallen)<br> § &nbsp;&nbsp; 152 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Aussetzung bei Eheaufhebungsantrag<br> § &nbsp;&nbsp; 153 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Aussetzung bei Vaterschaftsanfechtungsklage<br> § &nbsp;&nbsp; 154 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Aussetzung bei Ehe- oder Kindschaftsstreit<br> § &nbsp;&nbsp; 155 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Aufhebung der Aussetzung bei Verzögerung<br> § &nbsp;&nbsp; 156 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Wiedereröffnung der Verhandlung<br> § &nbsp;&nbsp; 157 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Untervertretung in der Verhandlung<br> § &nbsp;&nbsp; 158 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Entfernung infolge Prozessleitungsanordnung<br> § &nbsp;&nbsp; 159 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Protokollaufnahme<br> § &nbsp;&nbsp; 160 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Inhalt des Protokolls<br> § &nbsp;&nbsp; 160a &emsp;&emsp;&emsp;&emsp; Vorläufige Protokollaufzeichnung<br> § &nbsp;&nbsp; 161 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Entbehrliche Feststellungen<br> § &nbsp;&nbsp; 162 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Genehmigung des Protokolls<br> § &nbsp;&nbsp; 163 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Wiedereröffnung der Verhandlung<br> § &nbsp;&nbsp; 164 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Protokollberechtigung<br> § &nbsp;&nbsp; 165 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Beweiskraft des Protokolls<br> :::::::::Titel 2. Verfahren bei Zustellungen :::::::Untertitel 1. Zustellungen von Amts wegen § &nbsp;&nbsp; 166 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zustellung<br> § &nbsp;&nbsp; 167 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Rückwirkung der Zustellung<br> § &nbsp;&nbsp; 168 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Aufgaben der Geschäftsstelle<br> § &nbsp;&nbsp; 169 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Bescheinigung des Zeitpunktes der Zustellung; Beglaubigung<br> § &nbsp;&nbsp; 170 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zustellung an Vertreter<br> '''''[ab 1.1.2023:]'''''<br> § &nbsp;&nbsp; 170a &emsp;&emsp;&emsp;&emsp; ''Zustellung bei rechtlicher Betreuung''<br> § &nbsp;&nbsp; 171 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zustellung an Bevollmächtigte<br> § &nbsp;&nbsp; 172 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zustellung an Prozessbevollmächtigte<br> § &nbsp;&nbsp; 173 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zustellung durch Aushändigung an der Amtsstelle<br> § &nbsp;&nbsp; 174 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zustellung gegen Empfangsbekenntnis oder automatisierte Eingangsbestätigung<br> § &nbsp;&nbsp; 175 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zustellung durch Einschreiben mit Rückschein<br> § &nbsp;&nbsp; 176 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zustellungsauftrag<br> § &nbsp;&nbsp; 177 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Ort der Zustellung<br> § &nbsp;&nbsp; 178 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Ersatzzustellung in der Wohnung, in Geschäftsräumen oder Einrichtungen<br> § &nbsp;&nbsp; 179 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zustellung bei verweigerter Annahme<br> § &nbsp;&nbsp; 180 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Ersatzzustellung durch Einlegen in den Briefkasten<br> § &nbsp;&nbsp; 181 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Ersatzzustellung durch Niederlegung<br> § &nbsp;&nbsp; 182 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zustellungsurkunde<br> § &nbsp;&nbsp; 183 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zustellung im Ausland<br> § &nbsp;&nbsp; 184 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zustellungsbevollmächtigter: Zustellung durch Aufgabe zur Post<br> § &nbsp;&nbsp; 185 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Öffentliche Zustellung<br> § &nbsp;&nbsp; 186 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Bewilligung und Ausführung der öffentlichen Zustellung<br> § &nbsp;&nbsp; 187 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Veröffentlichung der Benachrichtigung<br> § &nbsp;&nbsp; 188 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zeitpunkt der öffentlichen Zustellung<br> § &nbsp;&nbsp; 189 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Heilung von Zustellungsmängeln<br> § &nbsp;&nbsp; 190 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Einheitliche Zustellungsformulare<br> :::::::Untertitel 2. Zustellungen auf Betreiben der Parteien § &nbsp;&nbsp; 191 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zustellung<br> § &nbsp;&nbsp; 192 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zustellung durch Gerichtsvollzieher<br> § &nbsp;&nbsp; 193 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Ausführung der Zustellung<br> § &nbsp;&nbsp; 194 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zustellungsauftrag<br> § &nbsp;&nbsp; 195 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zustellung von Anwalt zu Anwalt<br> §§ &nbsp;195a-213a &emsp;&emsp;&emsp;&emsp; weggefallen<br> :::::::::Titel 3. Ladungen, Termine und Fristen § &nbsp;&nbsp; 214 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Ladung zum Termin<br> § &nbsp;&nbsp; 215 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Notwendiger Inhalt der Ladung zur mündlichen Verhandlung<br> § &nbsp;&nbsp; 216 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Terminbestimmung<br> § &nbsp;&nbsp; 217 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Ladungsfrist<br> § &nbsp;&nbsp; 218 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Entbehrlichkeit der Ladung<br> § &nbsp;&nbsp; 219 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Terminsort<br> § &nbsp;&nbsp; 220 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Aufruf der Sache; versäumter Termin<br> § &nbsp;&nbsp; 221 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Fristbeginn<br> § &nbsp;&nbsp; 222 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Fristberechnung<br> § &nbsp;&nbsp; 223 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; (weggefallen)<br> § &nbsp;&nbsp; 224 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Fristkürzung: Fristverlängerung<br> § &nbsp;&nbsp; 225 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Verfahren bei Friständerung<br> § &nbsp;&nbsp; 226 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Abkürzung von Zwischenfristen<br> § &nbsp;&nbsp; 227 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Terminsänderung<br> § &nbsp;&nbsp; 228 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; (weggefallen)<br> § &nbsp;&nbsp; 229 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Terminsänderung<br> :::::::::Titel 4. Folgen der Versäumnis Rechtsbehelfsbelehrung: Wiedereinsetzung in den vorigen Stand § &nbsp;&nbsp; 230 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Allgemeine Versäumungserfolge<br> § &nbsp;&nbsp; 231 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Keine Androhung: Nachholung der Prozesshandlung<br> § &nbsp;&nbsp; 232 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Behelfsbelehrung<br> § &nbsp;&nbsp; 233 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Terminsänderung<br> § &nbsp;&nbsp; 234 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Wiedereinsetzungsfrist<br> § &nbsp;&nbsp; 235 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; (weggefallen)<br> § &nbsp;&nbsp; 236 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Wiedereinsetzungsantrag<br> § &nbsp;&nbsp; 237 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zuständigkeit für Wiedereinsetzung<br> § &nbsp;&nbsp; 238 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Wiedereinsetzungsantrag<br> :::::::::Titel 5. Unterbrechung und Aussetzung des Verfahrens § &nbsp;&nbsp; 239 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Unterbrechung durch Tod der Partei<br> § &nbsp;&nbsp; 240 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Unterbrechung durch Insolvenzverfahren<br> § &nbsp;&nbsp; 241 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Unterbrechung durch Prozessunfähigkeit<br> § &nbsp;&nbsp; 242 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Unterbrechung durch Nachfolge<br> § &nbsp;&nbsp; 243 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Aufnahme bei Nachlasspflegschaft und Testamentsvollstreckung<br> § &nbsp;&nbsp; 244 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Unterbrechung durch Anwaltsverlust<br> § &nbsp;&nbsp; 245 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Unterbrechung durch Stillstand der Rechtspflege<br> § &nbsp;&nbsp; 246 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Aussetzung bei Vertretung durch Prozessbevollmächtigten<br> § &nbsp;&nbsp; 247 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Aussetzung bei abgeschnittenen Verkehr<br> § &nbsp;&nbsp; 248 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Verfahren bei Aussetzung<br> § &nbsp;&nbsp; 249 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Wirkung von Unterbrechung und Aussetzung<br> § &nbsp;&nbsp; 250 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Form von Aufnahme und Anzeige<br> § &nbsp;&nbsp; 251 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Ruhen des Verfahrens<br> § &nbsp;&nbsp; 251a &emsp;&emsp;&emsp;&emsp; Säumnis beider Parteien; Entscheidung nach Lage der Akten<br> § &nbsp;&nbsp; 252 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Rechtsmittel bei Aussetzung<br> :::::::'''Buch 2. Verfahren im ersten Rechtszug''' ::::::::: Abschnitt 1. Verfahren vor den Landgerichten :::::::::Titel 1. Verfahren bis zum Urteil § &nbsp;&nbsp; 253 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Klageschrift<br> § &nbsp;&nbsp; 254 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Stufenklage<br> § &nbsp;&nbsp; 255 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Fristbestimmung im Urteil<br> § &nbsp;&nbsp; 256 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Feststellungsklage<br> § &nbsp;&nbsp; 257 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Klage auf künftige Zahlung oder Räumung<br> § &nbsp;&nbsp; 258 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Klage auf wiederkehrende Leistungen<br> § &nbsp;&nbsp; 259 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Klage wegen Besorgnis nicht rechtzeitigen Leistung<br> § &nbsp;&nbsp; 260 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Anspruchshäufung<br> § &nbsp;&nbsp; 261 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Rechtshängigkeit<br> § &nbsp;&nbsp; 262 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Sonstige Wirkungen der Rechtshängigkeit<br> § &nbsp;&nbsp; 263 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Klageänderung<br> § &nbsp;&nbsp; 264 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Keine Klageänderung<br> § &nbsp;&nbsp; 265 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Veräußerung oder Abtretung der Streitsache<br> § &nbsp;&nbsp; 266 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Veräußerung eines Grundstücks<br> § &nbsp;&nbsp; 267 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vermutete Einwilligung in die Klageänderung<br> § &nbsp;&nbsp; 268 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Unanfechtbarkeit der Entscheidung<br> § &nbsp;&nbsp; 269 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Klagerücknahme<br> § &nbsp;&nbsp; 270 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zustellung; formlose Mitteilung<br> § &nbsp;&nbsp; 271 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zustellung der Klageschrift<br> § &nbsp;&nbsp; 272 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Bestimmung der Verfahrensweise<br> § &nbsp;&nbsp; 273 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vorbereitung des Termins<br> § &nbsp;&nbsp; 274 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Ladung der Parteien; Einlassungsfrist<br> § &nbsp;&nbsp; 275 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Früher erster Termin<br> § &nbsp;&nbsp; 276 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Schriftliches Vorverfahren<br> § &nbsp;&nbsp; 277 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Klageerwiderung: Replik<br> § &nbsp;&nbsp; 278 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Gütliche Streitbeilegung, Güterverhandlung, Vergleich<br> § &nbsp;&nbsp; 278a &emsp;&emsp;&emsp;&emsp; Mediation, außergerichtliche Konfliktbeilegung<br> § &nbsp;&nbsp; 279 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Mündliche Verhandlung<br> § &nbsp;&nbsp; 280 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Abgesonderte Verhandlung über Zuverlässigkeit der Klage<br> § &nbsp;&nbsp; 281 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Verweisung bei Unzuständigkeit<br> § &nbsp;&nbsp; 282 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Rechtzeitigkeit des Vorbringen<br> § &nbsp;&nbsp; 283 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Schriftsatzfrist für Erklärungen zur Vorbringen des Gegners<br> § &nbsp;&nbsp; 283a &emsp;&emsp;&emsp;&emsp; Sicherungsanordnung<br> § &nbsp;&nbsp; 284 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Schriftsatzfrist für Erklärungen zum Vorbringen des Gegners<br> § &nbsp;&nbsp; 285 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Verhandlung nach Beweisaufnahme<br> § &nbsp;&nbsp; 286 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Freie Beweiswürdigung<br> § &nbsp;&nbsp; 287 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Schadensermittlung; Höhe der Forderung<br> § &nbsp;&nbsp; 288 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Gerichtliches Geständnis<br> § &nbsp;&nbsp; 289 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zusätze beim Geständnis<br> § &nbsp;&nbsp; 290 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Widerruf des Geständnisses<br> § &nbsp;&nbsp; 291 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Offenkundige Tatsachen<br> § &nbsp;&nbsp; 292 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Gesetzliche Vermutungen<br> § &nbsp;&nbsp; 292a &emsp;&emsp;&emsp;&emsp; (weggefallen)<br> § &nbsp;&nbsp; 293 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Fremdes Recht; Gewohnheitsrecht; Statuten<br> § &nbsp;&nbsp; 294 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Glaubhaftmachung<br> § &nbsp;&nbsp; 295 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Verfahrensrügen<br> § &nbsp;&nbsp; 296 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zurückweisung verspäteten Vorbringens<br> § &nbsp;&nbsp; 296a &emsp;&emsp;&emsp;&emsp; Vorbringen nach Schluss der mündlichen Verhandlung<br> § &nbsp;&nbsp; 297 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Form der Antragstellung<br> § &nbsp;&nbsp; 298 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Aktenausdruck<br> § &nbsp;&nbsp; 298a &emsp;&emsp;&emsp;&emsp; Elektronische Akte; Verordnungsermächtigung<br> § &nbsp;&nbsp; 299 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Akteneinsicht; Abschriften<br> § &nbsp;&nbsp; 299a &emsp;&emsp;&emsp;&emsp; Datenträgerarchiv<br> :::::::::Titel 2. Urteil § &nbsp;&nbsp; 300 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Endurteil<br> § &nbsp;&nbsp; 301 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Teilurteil<br> § &nbsp;&nbsp; 302 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vorbehaltsurteil<br> § &nbsp;&nbsp; 303 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zwischenurteil<br> § &nbsp;&nbsp; 304 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zwischenurteil über den Grund<br> § &nbsp;&nbsp; 305 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Urteil unter Vorbehalt erbrechtlich beschränkter Haftung<br> § &nbsp;&nbsp; 305a &emsp;&emsp;&emsp;&emsp; Urteil unter Vorbehalt seerechtlich beschränkter Haftung<br> § &nbsp;&nbsp; 306 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Verzicht<br> § &nbsp;&nbsp; 307 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Anerkenntnis<br> § &nbsp;&nbsp; 308 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Bindung an die Parteianträge<br> § &nbsp;&nbsp; 309 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Erkennende Richter<br> § &nbsp;&nbsp; 310 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Termin der Urteilsverkündung<br> § &nbsp;&nbsp; 311 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Form der Urteilsverkündung<br> § &nbsp;&nbsp; 312 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Anwesenheit der Parteien<br> § &nbsp;&nbsp; 313 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Form und Inhalt des Urteils<br> § &nbsp;&nbsp; 313a &emsp;&emsp;&emsp;&emsp; Weglassen von Tatbestand und Entscheidungsgründen<br> § &nbsp;&nbsp; 313b &emsp;&emsp;&emsp;&emsp; Versäumnis-, Anerkenntnis- und Verzichtsurteil<br> § &nbsp;&nbsp; 314 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Beweiskraft des Tatbestandes<br> § &nbsp;&nbsp; 315 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Unterschrift des Richters<br> § &nbsp;&nbsp; 316 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; (weggefallen)<br> § &nbsp;&nbsp; 317 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Urteilszustellung und -ausfertigung<br> § &nbsp;&nbsp; 318 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Bindung des Gerichts<br> § &nbsp;&nbsp; 319 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Berichtigung des Urteils<br> § &nbsp;&nbsp; 320 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Berichtigung des Tatbestands<br> § &nbsp;&nbsp; 321 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Ergänzung des Urteils<br> § &nbsp;&nbsp; 321a &emsp;&emsp;&emsp;&emsp; Abhilfe bei Verletzung des Anspruchs auf rechtliches Gehör<br> § &nbsp;&nbsp; 322 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Materielle Rechtskraft<br> § &nbsp;&nbsp; 323 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Abänderung von Urteilen<br> § &nbsp;&nbsp; 323a &emsp;&emsp;&emsp;&emsp; Abänderung von Vergleichen und Urkunden<br> § &nbsp;&nbsp; 323b &emsp;&emsp;&emsp;&emsp; Verschärfte Haftung<br> § &nbsp;&nbsp; 324 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Nachforderungsklage zur Sicherheitsleistung<br> § &nbsp;&nbsp; 325 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Subjektive Rechtskraftwirkung<br> § &nbsp;&nbsp; 325a &emsp;&emsp;&emsp;&emsp; Feststellungswirkung des Musterentscheids<br> § &nbsp;&nbsp; 326 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Rechtskraft bei Nacherbfolge<br> § &nbsp;&nbsp; 327 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Rechtskraft bei Testamentsvollstreckung<br> § &nbsp;&nbsp; 328 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Anerkennung ausländischer Urteile-<br> § &nbsp;&nbsp; 329 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Beschlüsse und Verfügungen<br> :::::::::Titel 3. Versäumnisurteil § &nbsp;&nbsp; 330 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Versäumnisurteil gegen den Kläger<br> § &nbsp;&nbsp; 331 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Versäumnisurteil gegen den Beklagten<br> § &nbsp;&nbsp; 331a &emsp;&emsp;&emsp;&emsp; Entscheidung nach Aktenlage<br> § &nbsp;&nbsp; 332 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Begriff des Verhandlungstermins<br> § &nbsp;&nbsp; 333 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Nichtverhandeln der erscheinenden Partei<br> § &nbsp;&nbsp; 334 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Unvollständiges Verhandeln<br> § &nbsp;&nbsp; 335 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Unzulässigkeit einer Versäumniserscheinung<br> § &nbsp;&nbsp; 336 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Rechtsmittel bei Zurückweisung<br> § &nbsp;&nbsp; 337 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vertagung von Amts wegen<br> § &nbsp;&nbsp; 338 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Einspruch<br> § &nbsp;&nbsp; 339 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Einspruchsfrist<br> § &nbsp;&nbsp; 340 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Einspruchsschrift<br> § &nbsp;&nbsp; 340a &emsp;&emsp;&emsp;&emsp; Zustellung der Einspruchsschrift<br> § &nbsp;&nbsp; 341 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Einspruchsprüfungbr> § &nbsp;&nbsp; 341a &emsp;&emsp;&emsp;&emsp; Einspruchstermin<br> § &nbsp;&nbsp; 342 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Wirkungen des zulässigen Einspruchs<br> § &nbsp;&nbsp; 343 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Entscheidung nach Einspruch<br> § &nbsp;&nbsp; 344 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Versäumniskosten<br> § &nbsp;&nbsp; 345 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zweites Versäumnisurteil<br> § &nbsp;&nbsp; 346 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Verzicht und Zurücknahme des Einspruchs<br> § &nbsp;&nbsp; 347 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Verfahren bei Widerklage und Zwischenstreit<br> :::::::::Titel 4. Verfahren vor dem Einzelrichter § &nbsp;&nbsp; 348 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Originärer Einzelrichter<br> § &nbsp;&nbsp; 348a &emsp;&emsp;&emsp;&emsp; Obligatorischer Einzelrichter<br> § &nbsp;&nbsp; 349 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vorsitzender der Kammer für Handelssachen<br> § &nbsp;&nbsp; 350 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Rechtsmittel<br> § &nbsp;&nbsp; 351-354 (weggefallen)<br> :::::::::Titel 5. Allgemeine Vorschriften über die Beweisaufnahme § &nbsp;&nbsp; 355 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Unmittelbarkeit der Beweisaufnahme<br> § &nbsp;&nbsp; 356 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Beibringungsfrist<br> § &nbsp;&nbsp; 357 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Parteiöffentlichkeit<br> § &nbsp;&nbsp; 357a &emsp;&emsp;&emsp;&emsp; (weggefallen)<br> § &nbsp;&nbsp; 358 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Notwendigkeit eines Beweisschlusses<br> § &nbsp;&nbsp; 358a &emsp;&emsp;&emsp;&emsp; Beschwerdeschluss und Beweisaufnahme vor mündlicher Verhandlung<br> § &nbsp;&nbsp; 359 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Inhalt des Beweisschlussses<br> § &nbsp;&nbsp; 360 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Änderung des Beweisschlusses<br> § &nbsp;&nbsp; 361 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Beweisaufnahme durch beauftragten Richter<br> § &nbsp;&nbsp; 362 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Beweisaufnahme durch ersuchten Richter<br> § &nbsp;&nbsp; 363 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Beweisaufnahme im Ausland<br> § &nbsp;&nbsp; 364 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Parteimitwirkung bei Beweisaufnahme im Ausland<br> § &nbsp;&nbsp; 365 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Abgabe durch beauftragten oder ersuchten Richter<br> § &nbsp;&nbsp; 366 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zwischenstreit<br> § &nbsp;&nbsp; 367 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Ausbleiben der Partei<br> § &nbsp;&nbsp; 368 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Neuer Beweistermin<br> § &nbsp;&nbsp; 369 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Ausländische Beweisaufnahme<br> § &nbsp;&nbsp; 370 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Fortsetzung der mündlichen Verhandlung<br> :::::::::Titel 6. Beweis durch Augenschein § &nbsp;&nbsp; 371 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Beweis durch Augenschein<br> § &nbsp;&nbsp; 371a &emsp;&emsp;&emsp;&emsp; Beweiskraft elektronischer Dokumente<br> § &nbsp;&nbsp; 371b &emsp;&emsp;&emsp;&emsp; Beweiskraft gescannter öffentlicher Urkunden<br> § &nbsp;&nbsp; 372 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Beweisaufnahme § &nbsp;&nbsp; 372a &emsp;&emsp;&emsp;&emsp; Untersuchungen zur Feststellung der Abstammung<br> :::::::::Titel 7. Zeugenbeweis § &nbsp;&nbsp; 373 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Beweisantritt<br> § &nbsp;&nbsp; 374 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; (weggefallen)<br> § &nbsp;&nbsp; 375 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Beweisaufnahme durch beauftragten oder ersuchten Richter<br> § &nbsp;&nbsp; 376 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vernehmung bei Amtsverschwiegenheit<br> § &nbsp;&nbsp; 377 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zeugenladung<br> § &nbsp;&nbsp; 378 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Aussageerleichternde Unterlagen<br> § &nbsp;&nbsp; 379 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Auslagenvorschuss<br> § &nbsp;&nbsp; 380 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Folgen des Ausbleiben des Zeugen<br> § &nbsp;&nbsp; 381 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Genügende Entschuldigung des Ausbleibens<br> § &nbsp;&nbsp; 382 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vernehmung an bestimmten Orten<br> § &nbsp;&nbsp; 383 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zeugnisverweigerung aus persönlichen Gründen<br> § &nbsp;&nbsp; 384 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zeugnisverweigerung aus sachlichen Gründen<br> § &nbsp;&nbsp; 385 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Ausnahmen vom Zeugnisverweigerungsrecht<br> § &nbsp;&nbsp; 386 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Erklärung der Zeugnisverweigerung<br> § &nbsp;&nbsp; 387 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zwischenstreit über Zeugnisverweigerung<br> § &nbsp;&nbsp; 388 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zwischenstreit über schriftliche Zeugnisverweigerung<br> § &nbsp;&nbsp; 389 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zeugnisverweigerung vor beauftragtem oder ersuchtem Richer<br> § &nbsp;&nbsp; 390 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Folgen der Zeugnisverweigerung<br> § &nbsp;&nbsp; 391 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zeugenbeeidigung<br> § &nbsp;&nbsp; 392 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Nacheid; Eidesnorm<br> § &nbsp;&nbsp; 393 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Uneidliche Wahrnehmung<br> § &nbsp;&nbsp; 394 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Einzelvernehmung<br> § &nbsp;&nbsp; 395 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Wahrheitsermahnung, Vernehmung zur Person<br> § &nbsp;&nbsp; 396 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vernehmung zur Sache<br> § &nbsp;&nbsp; 397 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Fragerecht der Parteien<br> § &nbsp;&nbsp; 398 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Wiederholte und nachträgliche Vernehmung<br> § &nbsp;&nbsp; 399 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Verzicht auf Zeugen<br> § &nbsp;&nbsp; 400 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Befugnisse des mit der Beweisaufnahme betrauten Richters<br> § &nbsp;&nbsp; 401 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zeugenentschädigung<br> :::::: Titel 8. Beweis durch Sachverständige § &nbsp;&nbsp; 402 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Anwendbarkeit der Vorschriften für Zeugen<br> § &nbsp;&nbsp; 403 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Beweisantritt<br> § &nbsp;&nbsp; 404 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Sachverständigenauswahl<br> § &nbsp;&nbsp; 404a &emsp;&emsp;&emsp;&emsp; Vorläufige Leitung der Tätigkeit des Sachverständigen<br> § &nbsp;&nbsp; 405 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Auswahl durch den mit der Beweisaufnahme betrauten Richter<br> § &nbsp;&nbsp; 406 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Ablehnung eines Sachverständigen<br> § &nbsp;&nbsp; 407 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Pflicht zur Erstattung des Gutachtens<br> § &nbsp;&nbsp; 407a &emsp;&emsp;&emsp;&emsp; Weitere Pflichten des Sachverständigen<br> § &nbsp;&nbsp; 408 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Gutachtenverweigerungsrecht<br> § &nbsp;&nbsp; 409 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Folgen des Ausbleibens oder der Gutachterverweigerung<br> § &nbsp;&nbsp; 410 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Sachverständigenbeeidigung<br> § &nbsp;&nbsp; 411 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Schriftliches Gutachten<br> § &nbsp;&nbsp; 411a &emsp;&emsp;&emsp;&emsp; Verwertung von Sachverständigengutachten aus anderen Verfahren<br> § &nbsp;&nbsp; 412 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Neues Gutachten<br> § &nbsp;&nbsp; 413 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Sachverständigenvergütung<br> § &nbsp;&nbsp; 414 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Sachverständige Zeugen<br> :::::: Titel 9. Beweis durch Urkunden § &nbsp;&nbsp; 415 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Beweiskraft öffentliche Urkunden über Erklärungen<br> § &nbsp;&nbsp; 416 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Beweiskraft von Privaturkunden<br> § &nbsp;&nbsp; 417 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Beweiskraft öffentlicher Urkunden über amtliche Anordnung, Verfügung oder Entscheidung<br> § &nbsp;&nbsp; 418 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Beweiskraft öffentlicher Urkunden mit anderem Inhalt<br> § &nbsp;&nbsp; 419 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Beweiskraft mangelbehafteter Urkunden<br> § &nbsp;&nbsp; 420 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vorlegung durch Beweisführer; Beweisantritt<br> § &nbsp;&nbsp; 421 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vorlegung durch den Gegner; Beweisantritt<br> § &nbsp;&nbsp; 422 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vorlegungspflicht des Gegners nach bürgerlichem Recht<br> § &nbsp;&nbsp; 423 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vorlegungspflicht des Gegners bei Bezugnahme<br> § &nbsp;&nbsp; 424 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Antrag bei Vorlegung durch<br> § &nbsp;&nbsp; 425 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Anordnung durch Vorlegung durch Gegner<br> § &nbsp;&nbsp; 426 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vernehmung des Gegners über den Verbleib<br> § &nbsp;&nbsp; 427 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Folgen der Nichtvorlegung durch Gegner<br> § &nbsp;&nbsp; 428 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vorlegung durch Dritte; Beweisantriss<br> § &nbsp;&nbsp; 429 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vorlegungspflicht Dritter § &nbsp;&nbsp; 430 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Antrag bei Vorlegung durch Dritte<br> § &nbsp;&nbsp; 431 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vorlegungsfrist bei Vorlegung durch Dritte<br> § &nbsp;&nbsp; 432 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vorlegung durch Behörden oder Beamte: Beweisantritt<br> § &nbsp;&nbsp; 433 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; (weggefallen)<br> § &nbsp;&nbsp; 434 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vorlegung vor beauftragtem oder ersuchtem Richter<br> § &nbsp;&nbsp; 435 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vorlegung öffentlicher Urkunden in Urschrift oder beglaubigter Abschrift<br> § &nbsp;&nbsp; 436 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Verzicht nach Vorlegung<br> § &nbsp;&nbsp; 437 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Echtheit inländischer öffentlicher Urkunden<br> § &nbsp;&nbsp; 438 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Echtheit ausländischer öffentlicher Urkunden<br> § &nbsp;&nbsp; 439 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Erklärung über Echtheit von Pribaturkunden<br> § &nbsp;&nbsp; 440 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Beweis der Echtheit von Pribaturkunden<br> § &nbsp;&nbsp; 441 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Schriftvergleichung<br> § &nbsp;&nbsp; 442 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Würdigung der Schriftvergleichung<br> § &nbsp;&nbsp; 443 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Verwahrung verdächtiger Urkunden<br> § &nbsp;&nbsp; 444 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Folgen der Bereitung einer Urkunde<br> :::::: Titel 10. Beweis durch Urkunden § &nbsp;&nbsp; 445 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vernehmung des Gegners: Beweisantritt<br> § &nbsp;&nbsp; 446 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Weigerung des Gegners<br> § &nbsp;&nbsp; 447 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vernehmung der Beweispflichtigen Partei auf Antrag<br> § &nbsp;&nbsp; 448 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vernehmung von Amts wegen<br> § &nbsp;&nbsp; 449 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vernehmung von Streitgenossen<br> § &nbsp;&nbsp; 450 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Besweisschluss<br> § &nbsp;&nbsp; 451 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Ausführung der Vernehmung<br> § &nbsp;&nbsp; 452 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Beeidigung der Partei<br> § &nbsp;&nbsp; 453 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Beweiswürdigung bei Parteivernehmung <br> § &nbsp;&nbsp; 454 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Ausbleiben der Partei <br> § &nbsp;&nbsp; 455 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Prozessunfähige <br> §§ &nbsp;456-477 (weggefallen) <br> :::::: Titel 11. Abnahme von Eiden und Bekräftigungen § &nbsp;&nbsp; 478 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Eidesleistung in Person <br> § &nbsp;&nbsp; 479 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Eidesleistung vor beauftragtem oder ersuchtem Richter <br> § &nbsp;&nbsp; 480 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Eidesbelehrung <br> § &nbsp;&nbsp; 481 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Eidesleistung: Eidesformel <br> § &nbsp;&nbsp; 482 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; (weggefallen) <br> § &nbsp;&nbsp; 483 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Eidesleistung sprach- oder hörbehinderter Personen <br> § &nbsp;&nbsp; 484 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Eidesgleiche Bekräftigung <br> :::::: Titel 12. Selbständiges Beweisverfahren § &nbsp;&nbsp; 485 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zulässigkeit <br> § &nbsp;&nbsp; 486 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zuständiges Gericht <br> § &nbsp;&nbsp; 487 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Inhalt des Antrages <br> §§ &nbsp;488,489 (weggefallen) <br> § &nbsp;&nbsp; 490 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Entscheidung über den Antrag <br> § &nbsp;&nbsp; 491 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Ladung des Gegners <br> § &nbsp;&nbsp; 492 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Beweisaufnahme <br> § &nbsp;&nbsp; 493 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Benutzung im Prozess <br> § &nbsp;&nbsp; 494 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Unbekannter Gegner <br> § &nbsp;&nbsp; 494a &emsp;&emsp;&emsp;&emsp; Frist zur Klageerhebung<br> ::::::::: Abschnitt 2. Verfahren vor den Amtsgerichten § &nbsp;&nbsp; 495 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Anzuwendende Vorschriften <br> § &nbsp;&nbsp; 496 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Einrichtung von Schriftsätzen; Erklärungen zu Protokoll <br> § &nbsp;&nbsp; 497 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Ladungen <br> § &nbsp;&nbsp; 498 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zustellung des Protokolls über die Klage <br> § &nbsp;&nbsp; 499 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Belehrungen <br> §§ &nbsp;499a-503 (weggefallen) <br> § &nbsp;&nbsp; 504 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Hinweis bei Unzuständigkeit des Amtsgerichts <br> § &nbsp;&nbsp; 505 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; (weggefallen) <br> § &nbsp;&nbsp; 506 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Nachträgliche sachliche Unzuständigkeit <br> §§ &nbsp;507-509 (weggefallen) <br> § &nbsp;&nbsp; 510 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Erklärung über Urkunden <br> § &nbsp;&nbsp; 510a &emsp;&emsp;&emsp;&emsp; Inhalt des Protokolls <br> § &nbsp;&nbsp; 510b &emsp;&emsp;&emsp;&emsp; Urteil und Vornahme einer Handlung <br> § &nbsp;&nbsp; 510c &emsp;&emsp;&emsp;&emsp; (weggefallen) <br> :::::::'''Buch 3. Rechtsmittel''' :::::::Abschnitt 1. Berufung § &nbsp;&nbsp; 511 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Standhaftigkeit der Berufung <br> § &nbsp;&nbsp; 512 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vorentscheidungen im ersten Rechtszug <br> § &nbsp;&nbsp; 513 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Berufungsgründe <br> § &nbsp;&nbsp; 514 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Versäumnisurteile <br> § &nbsp;&nbsp; 515 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Verzicht auf Berufung <br> § &nbsp;&nbsp; 516 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zurücknahme der Berufung <br> § &nbsp;&nbsp; 517 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Berufungsfrist <br> § &nbsp;&nbsp; 518 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Berufungsfrist bei Urteilsergänzung <br> § &nbsp;&nbsp; 519 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Berufungsschrift <br> § &nbsp;&nbsp; 520 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Berufungsbegründung <br> § &nbsp;&nbsp; 521 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zustellung der Berufungsschrift und -begründung <br> § &nbsp;&nbsp; 522 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zulässigkeitsprüfung; Zurückweisungsbeschluss <br> § &nbsp;&nbsp; 523 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Terminsbestimmung <br> § &nbsp;&nbsp; 524 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Anschlussberufung <br> § &nbsp;&nbsp; 525 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Allgemeine Verfahrensgrundsätze <br> § &nbsp;&nbsp; 526 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Entscheidender Richter <br> § &nbsp;&nbsp; 527 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vorbereitender Einzelrichter <br> § &nbsp;&nbsp; 528 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Bindung an die Berufungsanträge <br> § &nbsp;&nbsp; 529 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Prüfungsumfang des Berufungsgerichts <br> § &nbsp;&nbsp; 530 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Verspätet vorgebrachte Angriffs- und Verteidigungsmittel <br> § &nbsp;&nbsp; 531 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zurückgewiesene und neue Angriffs- und Verteidigungsmittel <br> § &nbsp;&nbsp; 532 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Rügen der Unzulässigkeit der Klage <br> § &nbsp;&nbsp; 533 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Klageänderung ; Aufrechtserklärung; Widerlege <br> § &nbsp;&nbsp; 534 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Verlust des Rügerechts <br> § &nbsp;&nbsp; 535 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Gerichtliches Geständnis <br> § &nbsp;&nbsp; 536 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Parteivernehmung <br> § &nbsp;&nbsp; 537 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vorläufige Vollstreckbarkeit <br> § &nbsp;&nbsp; 538 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zurückweisung <br> § &nbsp;&nbsp; 539 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Versäumnisverfahren <br> § &nbsp;&nbsp; 540 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Inhalt des Berufungsurteils <br> § &nbsp;&nbsp; 541 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Prozessakten <br> :::::::Abschnitt 2. Revision § &nbsp;&nbsp; 542 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Standhaftigkeit der Revision <br> § &nbsp;&nbsp; 543 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zulassungsrevision <br> § &nbsp;&nbsp; 544 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Nichtzulassungsbeschwerde <br> § &nbsp;&nbsp; 545 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Revisionsgründe <br> § &nbsp;&nbsp; 546 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Begriff der Rechtsverletzung <br> § &nbsp;&nbsp; 547 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Absolute Revisionsgründe <br> § &nbsp;&nbsp; 548 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Revisionsfrist <br> § &nbsp;&nbsp; 549 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Revisionseinlegung <br> § &nbsp;&nbsp; 550 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zustellung der Revisionsschrift <br> § &nbsp;&nbsp; 551 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Revisionsbegründung <br> § &nbsp;&nbsp; 552 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zulässigkeitsprüfung <br> § &nbsp;&nbsp; 552a &emsp;&emsp;&emsp;&emsp; Zurückweisungsbeschluß <br> § &nbsp;&nbsp; 553 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Terminbestimmung: Einlassungsfrist <br> § &nbsp;&nbsp; 554 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Anschlußrevision <br> § &nbsp;&nbsp; 555 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Allgemeine Verfahrensgrundsätze <br> § &nbsp;&nbsp; 556 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Verlust des Rügerechts <br> § &nbsp;&nbsp; 557 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Umfang der Revisionsprüfung <br> § &nbsp;&nbsp; 558 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vorläufige Vollstreckbarkeit <br> § &nbsp;&nbsp; 559 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Beschränkte Nachprüfung tatsächlicher Feststellungen <br> § &nbsp;&nbsp; 560 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Nicht reversible Gesetze <br> § &nbsp;&nbsp; 561 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Revisionszurückweisung <br> § &nbsp;&nbsp; 562 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Aufhebung des angefochtenen Urteils <br> § &nbsp;&nbsp; 563 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zurückverweisung; eigene Sachentscheidung<br> § &nbsp;&nbsp; 564 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Keine Begründung der Entscheidung bei Rügen von Verfahrensmängeln <br> § &nbsp;&nbsp; 565 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Anzuwendende Vorschriften des Berufungsverfahrens <br> § &nbsp;&nbsp; 566 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Sprungrevision <br> ::::::::: Abschnitt 3. Beschwerde :::::::: Titel 1. Sofortige Beschwerde § &nbsp;&nbsp; 567 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Sofortige Beschwerde; Anschlussbeschwerde <br> § &nbsp;&nbsp; 568 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Originärer Einzelrichter <br> § &nbsp;&nbsp; 569 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Frist und Form <br> § &nbsp;&nbsp; 570 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Aufschiebende Wirkung; einstweilige Anordnungen <br> § &nbsp;&nbsp; 571 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Begründung, Präklusion, Ausnahmen vom Anwaltszwang <br> § &nbsp;&nbsp; 572 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Gang des Beschwerdeverfahrens <br> § &nbsp;&nbsp; 573 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Erinnerung <br> :::::::: Titel 2. Rechtsbeschwerde § &nbsp;&nbsp; 574 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Rechtsbeschwerde; Anschlussbeschwerde <br> § &nbsp;&nbsp; 575 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Frist, Form und Begründung der Rechtsbeschwerde <br> § &nbsp;&nbsp; 576 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Gründe der Rechtsbeschwerde <br> § &nbsp;&nbsp; 577 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Prüfung und Entscheidung der Rechtsbeschwerde <br> :::::::'''Buch 4. Wiederaufnahme des Verfahrens''' § &nbsp;&nbsp; 578 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Arten der Wiederaufnahme <br> § &nbsp;&nbsp; 579 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Nichtigkeitsklage <br> § &nbsp;&nbsp; 580 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Restitutionsklage <br> § &nbsp;&nbsp; 581 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Besondere Voraussetzungen der Restitutionsklage <br> § &nbsp;&nbsp; 582 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Hilfsnatur der Restitutionsklage <br> § &nbsp;&nbsp; 583 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vorentscheidungen <br> § &nbsp;&nbsp; 584 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Ausschließliche Zuständigkeit für Nichtigkeit- und Restitutionsklagen <br> § &nbsp;&nbsp; 585 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Allgemeine Verfahrensgrundsätze <br> § &nbsp;&nbsp; 586 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Klagefrist <br> § &nbsp;&nbsp; 587 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Klageschrift <br> § &nbsp;&nbsp; 588 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Inhalt der Klageschrift <br> § &nbsp;&nbsp; 589 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zulässigkeitsprüfung <br> § &nbsp;&nbsp; 590 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Neue Verhandlung <br> § &nbsp;&nbsp; 591 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Rechtsmittel <br> :::::::'''Buch 5. Urkunden und Wechselprozess''' § &nbsp;&nbsp; 592 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zulässigkeit <br> § &nbsp;&nbsp; 593 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Klageinhalt; Urkunden <br> § &nbsp;&nbsp; 594 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; (weggefallen) <br> § &nbsp;&nbsp; 595 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Keine Widerklage; Beweismittel <br> § &nbsp;&nbsp; 596 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Abstehen vom Urkundenprozess <br> § &nbsp;&nbsp; 597 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Klageabweisung <br> § &nbsp;&nbsp; 598 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zurückweisung von Einwendungen <br> § &nbsp;&nbsp; 599 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vorbehaltsurteil <br> § &nbsp;&nbsp; 600 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Nachverfahren <br> § &nbsp;&nbsp; 601 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; (weggefallen) <br> § &nbsp;&nbsp; 602 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Wechselprozess <br> § &nbsp;&nbsp; 603 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Gerichtsstand <br> § &nbsp;&nbsp; 604 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Klageinhalt; Ladungsfrist <br> § &nbsp;&nbsp; 605 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Beweisvorschriften <br> § &nbsp;&nbsp; 605a &emsp;&emsp;&emsp;&emsp; Scheckprozess <br> :::::::'''Buch 6. Musterfeststellungsverfahren''' § &nbsp;&nbsp; 606 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Musterfeststellungsklage <br> § &nbsp;&nbsp; 607 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Bekanntmachung der Musterfeststellungsklage <br> § &nbsp;&nbsp; 608 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Anmeldung von Ansprüchen oder Rechtsverhältnissen <br> § &nbsp;&nbsp; 609 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Klageregister; Verordnungsermächtigung <br> § &nbsp;&nbsp; 610 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Besonderheiten der Musterfeststellungsklage <br> § &nbsp;&nbsp; 611 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vergleich <br> § &nbsp;&nbsp; 612 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Bekanntmachungen zum Musterfeststellungsurteil <br> § &nbsp;&nbsp; 613 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Bindungswirkung des Musterfeststellungsurteils; Aussetzung <br> § &nbsp;&nbsp; 614 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Rechtsmittel <br> §§ &nbsp;615-687 (weggefallen) <br> :::::::'''Buch 7. Mahnverfahren''' § &nbsp;&nbsp; 688 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zulässigkeit <br> § &nbsp;&nbsp; 689 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zuständigkeit; maschinelle Bearbeitung <br> § &nbsp;&nbsp; 690 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Mahnantrag <br> § &nbsp;&nbsp; 691 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zurückweisung des Mahnantrags <br> § &nbsp;&nbsp; 692 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Mahnbescheid <br> § &nbsp;&nbsp; 693 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zurückstellung des Mahnbescheids <br> § &nbsp;&nbsp; 694 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Widerspruch gegen den Mahnbescheid <br> § &nbsp;&nbsp; 695 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Mitteilung des Widerspruchs; Abschriften <br> § &nbsp;&nbsp; 696 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Verfahren nach Widerspruch <br> § &nbsp;&nbsp; 697 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Einleitung des Streitverfahrens <br> § &nbsp;&nbsp; 698 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Abgabe des Vefahrens am selben Gericht <br> § &nbsp;&nbsp; 699 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vollstreckungsbescheid <br> § &nbsp;&nbsp; 700 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Einspruch gegen den Vollstreckungsbescheid <br> § &nbsp;&nbsp; 701 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Wegfall der Wirkung des Mahnbescheids <br> § &nbsp;&nbsp; 702 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Form von Anträgen und Erkläriungen <br> § &nbsp;&nbsp; 703 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Kein Nachweis der Vollmacht <br> § &nbsp;&nbsp; 703a &emsp;&emsp;&emsp;&emsp; Urkunden Wechsel- und Scheckverfahren <br> § &nbsp;&nbsp; 703b &emsp;&emsp;&emsp;&emsp; Sonderregelungen für maschinelle Bearbeitung <br> § &nbsp;&nbsp; 703c &emsp;&emsp;&emsp;&emsp; Formulare; Einführung der maschinellen Bearbeitung <br> § &nbsp;&nbsp; 703d &emsp;&emsp;&emsp;&emsp; Formulare; Antragsgegner ohne allgemeinen inländischen Gerichtsstand <br> :::::::'''Buch 8. Zwangsvollstreckung''' ::::::::: Abschnitt 1. Allgemeine Vorschriften § &nbsp;&nbsp; 704 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vollstreckbare Endurteile <br> § &nbsp;&nbsp; 705 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Formelle Rechtskraft <br> § &nbsp;&nbsp; 706 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Rechtskraft- und Notfristzeugnis <br> § &nbsp;&nbsp; 707 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Einstweilige Einstellung der Zwangsvollstreckung <br> § &nbsp;&nbsp; 708 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vorläufige Vollstreckbarkeit ohne Sicherheitsleistung <br> § &nbsp;&nbsp; 709 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vorläufige Vollstreckbarkeit gegen Sicherheitsleistung <br> § &nbsp;&nbsp; 710 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Ausnahmen von der Sicherheitsleistung des Gläubigers <br> § &nbsp;&nbsp; 711 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Abwendungsbefugnis <br> § &nbsp;&nbsp; 712 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Schutzantrag des Schuldners <br> § &nbsp;&nbsp; 713 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Unterbleiben von Schuldnerschutzanordnungen <br> § &nbsp;&nbsp; 714 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Antrag zur vorläufigen Vollstreckbarkeit <br> § &nbsp;&nbsp; 715 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Rückgabe der Sicherheits <br> § &nbsp;&nbsp; 716 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Ergänzung des Urteils <br> § &nbsp;&nbsp; 717 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Wirkungen eines aufhebenden oder abändernden Urteils <br> § &nbsp;&nbsp; 718 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vorentscheidung über vorläufige Vollstreckbarkeit <br> § &nbsp;&nbsp; 719 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Einstweilig Einstellung bei Rechtsmittel und Einspruch <br> § &nbsp;&nbsp; 720 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Hinterlegung bei Abwendung der Vollstreckung <br> § &nbsp;&nbsp; 720a &emsp;&emsp;&emsp;&emsp; Sicherungsvollstreckung <br> § &nbsp;&nbsp; 721 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Räumungsfrist <br> § &nbsp;&nbsp; 722 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vollstreckbarkeit ausländischer Urteile <br> § &nbsp;&nbsp; 723 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vollstreckungsurteil <br> § &nbsp;&nbsp; 724 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vollstreckbare Ausfertigung <br> § &nbsp;&nbsp; 725 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vollstreckungsklausel <br> § &nbsp;&nbsp; 726 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vollstreckbare Ausfertigung bei bedingten Leistungen <br> § &nbsp;&nbsp; 727 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vollstreckbare Ausfertigung für und gegen Rechtsnachfolger <br> § &nbsp;&nbsp; 728 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vollstreckbare Ausfertigung bei Nacherbe und Testamentsvollstrecker <br> § &nbsp;&nbsp; 729 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vollstreckbare Ausfertigung gegen Vermögens- und Firmenübernehmer <br> § &nbsp;&nbsp; 730 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Anhörung des Schuldners <br> § &nbsp;&nbsp; 731 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Klage auf Erteilung der Vollstreckungsklausel <br> § &nbsp;&nbsp; 732 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Erinnerung gegen Erteilung der Vollstreckungsklausel <br> § &nbsp;&nbsp; 733 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Weitere vollstreckbare Ausfertigung <br> § &nbsp;&nbsp; 734 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vermerk über Ausfertigungserteilung auf der Urteilsschrift <br> § &nbsp;&nbsp; 735 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Hinterlegung bei Abwendung der Vollstreckung <br> § &nbsp;&nbsp; 736 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zwangsvollstreckung gegen BGB-Gesellschaft <br> § &nbsp;&nbsp; 737 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zwangsvollstreckung bei Vermögens- oder Erbschaftsnießbrauch <br> § &nbsp;&nbsp; 738 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vollstreckbare Ausfertigung gegen Nießbraucher <br> § &nbsp;&nbsp; 739 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Gewahrsamsvermutung bei Zwangsvollstreckung gegen Ehepartner und Lebensgatten <br> § &nbsp;&nbsp; 740 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zwangsvollstreckung in das Gesamtgut <br> § &nbsp;&nbsp; 741 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zwangsvollstreckung in das Gesamtgut bei Erwerbsgeschäft <br> § &nbsp;&nbsp; 742 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vollstreckbare Ausfertigung bei Gütergemeinschaft während des Rechtsstreits <br> § &nbsp;&nbsp; 743 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Beendete Gütergemeinschaft <br> § &nbsp;&nbsp; 744 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vollstreckbare Ausfertigung bei beendeter Gütergemeinschaft <br> § &nbsp;&nbsp; 744a &emsp;&emsp;&emsp;&emsp; Zwangsvollstreckung bei Eigentums und Vermögensgemeinschaft <br> § &nbsp;&nbsp; 745 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zwangsvollstreckung bei fortgesetzter Gütergemeinschaft <br> § &nbsp;&nbsp; 746 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; (weggefallen) <br> § &nbsp;&nbsp; 747 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zwangsvollstreckung in ungeteilten Nachlass <br> § &nbsp;&nbsp; 748 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zwangsvollstreckung bei Testamentsvollstrecker <br> § &nbsp;&nbsp; 749 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vollstreckbare Ausfertigung für und gegen Testamentsvollstrecker <br> § &nbsp;&nbsp; 750 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Voraussetzunge der Zwangsvollstreckung <br> § &nbsp;&nbsp; 751 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Bedingungen für Vollstreckungsbeginn <br> § &nbsp;&nbsp; 752 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Sicherheitsleistung bei Teilvollstreckung <br> § &nbsp;&nbsp; 753 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vollstreckung durch Gerichtsvollzieher; Verordnungsermächtigung <br> § &nbsp;&nbsp; 753a &emsp;&emsp;&emsp;&emsp; Vollstreckungsnachweis <br> § &nbsp;&nbsp; 754 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vollstreckungsauftrag und vollstreckbare Ausfertigung <br> § &nbsp;&nbsp; 754a &emsp;&emsp;&emsp;&emsp; Vereinfachter Vollstreckungsauftrag bei Vollstreckungsbescheiden <br> § &nbsp;&nbsp; 755 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Ermittlung des Aufenthaltsorts des Schuldners <br> § &nbsp;&nbsp; 756 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zwangsvollstreckung bei Leistung Zug um Zug <br> § &nbsp;&nbsp; 757 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Übergabe des Titels und Quittung <br> '''''[ab 1.1.2022:]''''' <br> § &nbsp;&nbsp; 757a &emsp;&emsp;&emsp;&emsp; Auskunft- und Unterstützungsersuchen <br> § &nbsp;&nbsp; 758 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Durchsuchung; Gewaltanwendung <br> § &nbsp;&nbsp; 759 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zuziehung von Zeugen <br> § &nbsp;&nbsp; 760 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Akteneinsicht; Aktenabschrift <br> § &nbsp;&nbsp; 761 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; (weggefallen) <br> § &nbsp;&nbsp; 762 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Protokoll über Vollstreckungshandlungen <br> § &nbsp;&nbsp; 763 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Aufforderungen und Mitteilungen <br> § &nbsp;&nbsp; 764 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vollstreckungsgericht <br> § &nbsp;&nbsp; 765 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vollstreckungsgerichtliche Anordnungen bei Leistung Zug um Zug <br> § &nbsp;&nbsp; 765a &emsp;&emsp;&emsp;&emsp; Vollstreckungsschutz <br> § &nbsp;&nbsp; 766 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Erinnerung gegen Art und Weise der Zwangsvollstreckung <br> § &nbsp;&nbsp; 767 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vollstreckungsabwehrklage <br> § &nbsp;&nbsp; 768 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Klage gegen Vollstreckungsklausel <br> § &nbsp;&nbsp; 769 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Einstweilige Anordnungen <br> § &nbsp;&nbsp; 770 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Einstweilige Anordnungen im Urteil <br> § &nbsp;&nbsp; 771 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Drittwiderspruchsklage <br> § &nbsp;&nbsp; 772 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Drittwiderspruchsklage bei Veräußerungsverbot <br> § &nbsp;&nbsp; 773 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Drittwiderspruchsklage des Nacherben <br> § &nbsp;&nbsp; 774 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Drittwiderspruchsklage des Ehegatten oder Lebenspartners <br> § &nbsp;&nbsp; 775 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Einstellung oder Beschränkung der Zwangsvollstreckung <br> § &nbsp;&nbsp; 776 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Aufhebung von Vollstreckungsmaßregeln <br> § &nbsp;&nbsp; 777 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Erinnerung bei genügender Sicherung des Gläubigers<br> § &nbsp;&nbsp; 778 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zwangsvollstreckung vor Erbschaftsannahme <br> § &nbsp;&nbsp; 779 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Fortsetzung der Zwangsvollstreckung nach dem Tod des Schuldners <br> § &nbsp;&nbsp; 780 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vorbehalt der beschränkten Erbenhaftung <br> § &nbsp;&nbsp; 781 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Beschränkte Erbenhaftung in der Zwangsvollstreckung <br> § &nbsp;&nbsp; 782 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Einreden des Erben gegen Nachlassgläubiger <br> § &nbsp;&nbsp; 783 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Einreden des Erben gegen persönliche Gläubiger <br> § &nbsp;&nbsp; 784 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zwangsvollstreckung bei Nachlassverwaltung und Insolvenzverfahren <br> § &nbsp;&nbsp; 785 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vollstreckungsabwehrklage des Erben <br> § &nbsp;&nbsp; 786 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vollstreckungsabwehrklage bei beschränkter Haftung <br> § &nbsp;&nbsp; 786a &emsp;&emsp;&emsp;&emsp; See- und binnenschifffahrtsrechtliche Haftungsbeschränkung <br> § &nbsp;&nbsp; 787 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zwangsvollstreckung bei herrenlosem Grundstück oder Schiff <br> § &nbsp;&nbsp; 788 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Kosten der Zwangsvollstreckung <br> § &nbsp;&nbsp; 789 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Einschreiten von Behörden <br> § &nbsp;&nbsp; 790 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; (weggefallen) <br> § &nbsp;&nbsp; 791 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; (weggefallen) <br> § &nbsp;&nbsp; 792 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Erteilung von Urkunden an Gläubiger <br> § &nbsp;&nbsp; 793 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Sofortige Beschwerde <br> § &nbsp;&nbsp; 794 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Weitere Vollstreckungstitel <br> § &nbsp;&nbsp; 794a &emsp;&emsp;&emsp;&emsp; Zwangsvollstreckung aus Räumungsverkauf <br> § &nbsp;&nbsp; 795 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Anwendung der allgemeinen Vorschriften auf die weiteren Vollstreckungstitel<br> § &nbsp;&nbsp; 795a &emsp;&emsp;&emsp;&emsp; Zwangsvollstreckung aus Kostenfestsetzungsbeschluss <br> § &nbsp;&nbsp; 795b &emsp;&emsp;&emsp;&emsp; Vollstreckbarerklärung des gerichtlichen Vergleichs <br> § &nbsp;&nbsp; 796 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zwangsvollstreckung aus Vollstreckungsbescheiden<br> § &nbsp;&nbsp; 796a &emsp;&emsp;&emsp;&emsp; Voraussetzungen für die Vollstreckbarerklärung des Anwaltsvergleichs <br> § &nbsp;&nbsp; 797 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Verfahren bei vollsteckbaren Urkunden<br> § &nbsp;&nbsp; 798 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Wartefrist <br> § &nbsp;&nbsp; 798a &emsp;&emsp;&emsp;&emsp; (weggefallen) <br> § &nbsp;&nbsp; 799 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vollstreckbare Urkunde bei Rechtsnachfolge <br> § &nbsp;&nbsp; 799a &emsp;&emsp;&emsp;&emsp; Schadensersatzpflicht bei der Vollstrecking aus Urkunden durch andere Gläubiger <br> § &nbsp;&nbsp; 800 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vollstreckbare Urkunde gegen den jeweiligen Grundstückseigentümer <br> § &nbsp;&nbsp; 800a &emsp;&emsp;&emsp;&emsp; Vollstreckbare Urkunde bei Schiffshypothek <br> § &nbsp;&nbsp; 801 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Landesrechtliche Vollstreckungstitel <br> § &nbsp;&nbsp; 802 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Auschließlichkeit der Gerichtsstände <br> ::::::::: Abschnitt 2. Zwangsvollstreckung wegen Geldforderungen :::::::::::::Titel 1. Allgemeine Vorschriften § &nbsp;&nbsp; 802a &emsp;&emsp;&emsp;&emsp; Grundsätze der Vollstreckung; Regelbefugnisse des Gerichtsvollziehers <br> § &nbsp;&nbsp; 802b &emsp;&emsp;&emsp;&emsp; Gütliche Erledigung; Vollstreckungsaufschub bei Zahlungsvereinbarung <br> § &nbsp;&nbsp; 802c &emsp;&emsp;&emsp;&emsp; Vermögensauskunft des Schuldners <br> '''''[bis 31.12.2021:]''''' <br> § &nbsp;&nbsp; 802d &emsp;&emsp;&emsp;&emsp; Erneute Vermögensauskunft <br> '''''[ab 1.1.2022:]''''' <br> § &nbsp;&nbsp; 802e &emsp;&emsp;&emsp;&emsp; Zuständigkeit <br> § &nbsp;&nbsp; 802f &emsp;&emsp;&emsp;&emsp; Verfahren zur Abnahme der Vermögensauskunft <br> § &nbsp;&nbsp; 802g &emsp;&emsp;&emsp;&emsp; Erzwingungshaft <br> § &nbsp;&nbsp; 802h &emsp;&emsp;&emsp;&emsp; Unzulässigkeit der Haftvollstreckung <br> § &nbsp;&nbsp; 802i &emsp;&emsp;&emsp;&emsp; Vermögensauskunft des verhafteten Schuldners <br> § &nbsp;&nbsp; 802j &emsp;&emsp;&emsp;&emsp; Dauer der Haft; erneute Haft <br> § &nbsp;&nbsp; 802k &emsp;&emsp;&emsp;&emsp; Zentrale Verwaltung der Vermögensverhzeichnisse <br> § &nbsp;&nbsp; 802l &emsp;&emsp;&emsp;&emsp; Auskunftsrechte des Gerichtsvollziehers <br> :::::::::::::Titel 2. Zwangsvollstreckung in das bewegliche Vermögen :::::::::::::::::Untertitel 1. Allgemeine Vorschriften § &nbsp;&nbsp; 803 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Pfändung <br> § &nbsp;&nbsp; 804 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Pfändungspfandrecht <br> § &nbsp;&nbsp; 805 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Klage auf Vorzugsweise Befriedigung <br> § &nbsp;&nbsp; 806 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Keine Gewährleistung der Pfandveräusserung <br> § &nbsp;&nbsp; 806a &emsp;&emsp;&emsp;&emsp; Mitteilungen und Befragung durch den Gerichtsvollzieher <br> § &nbsp;&nbsp; 807 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Abnahme der Vermögensauskunft nach Pfandversuch <br> :::::::::::::Untertitel 2. Zwangsvollstreckung in körperliche Sachen § &nbsp;&nbsp; 808 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Pfändung beim Schuldner <br> § &nbsp;&nbsp; 809 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Pfändung beim Gläubiger oder bei Dritten <br> § &nbsp;&nbsp; 810 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Pfändung ungetrennter Früchte <br> '''''[ab 31.12.2021:]''''' <br> § &nbsp;&nbsp; 811 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Unpfändbare Sachen <br> '''''[ab 1.1.2022:]''''' <br> § &nbsp;&nbsp; 811 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; ''Unpfändbare Sachen und Tiere ''<br> § &nbsp;&nbsp; 811a &emsp;&emsp;&emsp;&emsp; Austauschpfändung<br> § &nbsp;&nbsp; 811b &emsp;&emsp;&emsp;&emsp; Vorläufige Austauschpfändung<br> '''''[ab 31.12.2021:]''''' <br> § &nbsp;&nbsp; 811c &emsp;&emsp;&emsp;&emsp; Unpfändbarkeit von Haustieren<br> § &nbsp;&nbsp; 811d &emsp;&emsp;&emsp;&emsp; Vorwegpfändung<br> § &nbsp;&nbsp; 812 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Pfändung von Hausrat<br> § &nbsp;&nbsp; 813 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Schätzung<br> § &nbsp;&nbsp; 814 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Öffentliche Versteigerung<br> § &nbsp;&nbsp; 815 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Gepfändetes Geld<br> § &nbsp;&nbsp; 816 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zeit und Ort der Versteigerung<br> § &nbsp;&nbsp; 817 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zuschlag und Ablieferung<br> § &nbsp;&nbsp; 817a &emsp;&emsp;&emsp;&emsp; Mindestgebot<br> § &nbsp;&nbsp; 818 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Einstellung der Versteigerungt<br> § &nbsp;&nbsp; 819 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Wirkung des Erlösempfängers<br> § &nbsp;&nbsp; 820 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; (weggefallen)<br> § &nbsp;&nbsp; 821 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Verwertung von Werkpapieren<br> § &nbsp;&nbsp; 822 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Umschreibung von Namenspapieren<br> § &nbsp;&nbsp; 823 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Außer Kurs gesetzte Inhaberpapiere<br> § &nbsp;&nbsp; 824 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Pfändung von Hausrat<br> § &nbsp;&nbsp; 825 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Andere Verwertungsart<br> § &nbsp;&nbsp; 826 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Anschlussprüfung<br> § &nbsp;&nbsp; 827 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Verfahren bei mehrfacher Pfändung<br> :Untertitel 3. Zwangsvollstreckung in Forderungen und anderen Vermögensrechte § &nbsp;&nbsp; 828 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zuständigkeit des Vollstreckungsgerichts<br> § &nbsp;&nbsp; 829 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Pfändung einer Geldforderung<br> § &nbsp;&nbsp; 830 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Pfändung einer Hypothekenforderung<br> § &nbsp;&nbsp; 831 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Pfändung indossabler Papiere<br> § &nbsp;&nbsp; 832 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Pfändungsumfang bei fortlaufenden Bezügen<br> § &nbsp;&nbsp; 833 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Pfändungsumfang bei Arbeits- oder Diensteinkommen<br> § &nbsp;&nbsp; 833a &emsp;&emsp;&emsp;&emsp; Pfändungsumfang bei Kontoguthaben<br> § &nbsp;&nbsp; 834 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Keine Anhörung des Schuldners<br> § &nbsp;&nbsp; 835 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Überweisung einer Geldforderung<br> § &nbsp;&nbsp; 836 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Wirkung der Überweisung<br> § &nbsp;&nbsp; 837 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Überweisung einer Hypothekenforderung<br> § &nbsp;&nbsp; 837a &emsp;&emsp;&emsp;&emsp; Überweisung einer Schiffshypothekenforderung<br> § &nbsp;&nbsp; 838 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Einrede des Schuldners bei Faustpfand<br> § &nbsp;&nbsp; 839 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Überweisung bei Anwendungsbefugnis<br> § &nbsp;&nbsp; 840 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Erklärungspflicht des Drittschuldners<br> § &nbsp;&nbsp; 841 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Pflicht zur Streitverkündungs<br> § &nbsp;&nbsp; 842 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Schadensersatz bei verzögerter Beitreibung<br> § &nbsp;&nbsp; 843 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Verzicht des Pfandgläubigers<br> § &nbsp;&nbsp; 844 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Andere Verwendungen<br> § &nbsp;&nbsp; 845 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vorpfändung<br> § &nbsp;&nbsp; 846 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zwangsvollstreckung in Herausgabeansprüche<br> § &nbsp;&nbsp; 847 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Herausgabeanspruch auf eine bewegliche Sache<br> § &nbsp;&nbsp; 848 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Herausgabeanspruch auf eine unbewegliche Sache<br> § &nbsp;&nbsp; 849 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Keine Überweisung an Zahlungs statt<br> § &nbsp;&nbsp; 850 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Pfändungsschutz für Arbeitseinkommen<br> § &nbsp;&nbsp; 850a &emsp;&emsp;&emsp;&emsp; Unpfändbare Bezüge<br> § &nbsp;&nbsp; 850b &emsp;&emsp;&emsp;&emsp; Bedingt pfändbare Bezüge<br> § &nbsp;&nbsp; 850c &emsp;&emsp;&emsp;&emsp; Pfändungsgrenzen für Arbeitseinkommen<br> § &nbsp;&nbsp; 850d &emsp;&emsp;&emsp;&emsp; Pfändbarkeit bei Unterhaltsansprüchen<br> § &nbsp;&nbsp; 850e &emsp;&emsp;&emsp;&emsp; Berechnung des pfändbaren Arbeitseinkommen<br> § &nbsp;&nbsp; 850f &emsp;&emsp;&emsp;&emsp;&emsp; Änderung des unpfändbare Betrages<br> § &nbsp;&nbsp; 850g &emsp;&emsp;&emsp;&emsp; Änderung der Unpfändbarkeitsvoraussetzungen<br> § &nbsp;&nbsp; 850h &emsp;&emsp;&emsp;&emsp; Verschleiertes Arbeitseinkommen<br> § &nbsp;&nbsp; 850i &emsp;&emsp;&emsp;&emsp;&emsp; Pfändungsschutz für sonstige Einkünfte<br> '''''[ab 30.11.2021:]''''' <br> § &nbsp;&nbsp; 850k &emsp;&emsp;&emsp;&emsp;&emsp; Pfändungsschutzkonto<br> § &nbsp;&nbsp; 850l &emsp;&emsp;&emsp;&emsp;&emsp; Anordnung der Unpfändbarkeit von Kontoguthaben auf dem Pfändungsschutzkonto<br> '''''[ab 01.12.2021:]''''' <br> § &nbsp;&nbsp; ''850k'' &emsp;&emsp;&emsp;&emsp;&emsp; ''Einrichtung und Beendigung des Pfandschutzkontos''<br> § &nbsp;&nbsp; ''850l'' &emsp;&emsp;&emsp;&emsp;&emsp; ''Pfändung des Gemeinschaftskontos''<br> § &nbsp;&nbsp; 851 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Nicht übertragbare Forderungen<br> § &nbsp;&nbsp; 851a &emsp;&emsp;&emsp;&emsp;&emsp; Pfändungsschutz für Landwirte<br> § &nbsp;&nbsp; 851b &emsp;&emsp;&emsp;&emsp;&emsp; Pfändungsschutz bei Miet- und Pachtzinsen<br> § &nbsp;&nbsp; 851c &emsp;&emsp;&emsp;&emsp;&emsp; Pfändungsschutz bei Altersrenten<br> § &nbsp;&nbsp; 851d &emsp;&emsp;&emsp;&emsp;&emsp; Pfändungsschutz bei steuerlich gefördertem Altersvorsorgevermögen<br> § &nbsp;&nbsp; 852 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Beschränkt pfändbare Forderungen<br> § &nbsp;&nbsp; 853 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Mehrfache Pfändung einer Geldforderung<br> § &nbsp;&nbsp; 854 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Mehrfache Pfändung eines Anspruchs auf bewegliche Sachen<br> § &nbsp;&nbsp; 855 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Mehrfache Pfändung eines Anspruchs auf unbewegliche Sachen<br> § &nbsp;&nbsp; 855a &emsp;&emsp;&emsp;&emsp; Mehrfache Pfändung eines Anspruchs auf ein Schiff<br> § &nbsp;&nbsp; 856 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Klage bei mehrfacher Pfändung<br> § &nbsp;&nbsp; 857 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zwangsvollstreckung in andere Vermögensrechte<br> § &nbsp;&nbsp; 858 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zwangsvollstreckung in Schiffspart<br> § &nbsp;&nbsp; 859 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Pfändung von Gesamthandanteilen<br> § &nbsp;&nbsp; 860 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Pfändung von Gesamtgutanteilen<br> §§ &nbsp;&nbsp; 861, 862 (weggefallen)<br> § &nbsp;&nbsp; 863 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Pfändungsbeschränkungen bei Erbschaftsnutzungen<br> :::::::::::::Titel 3. Zwangsvollstreckung in das unbewegliche Vermögen<br> § &nbsp;&nbsp; 864 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Gegenstand der Immobiliarvollstreckung<br> § &nbsp;&nbsp; 865 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Verhältnis zur Mobiliarvollstreckung<br> § &nbsp;&nbsp; 866 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Arten der Vollstreckung<br> § &nbsp;&nbsp; 867 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zwangshypothek<br> § &nbsp;&nbsp; 868 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Erwerb der Zwangshypothek durch den Eigentümer<br> § &nbsp;&nbsp; 869 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Erwerb der Zwangsversteigerung und Zwangsverwaltung<br> § &nbsp;&nbsp; 870 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Grundstücksgleiche Rechte<br> § &nbsp;&nbsp; 870a &emsp;&emsp;&emsp;&emsp; Zwangsvollstreckung in ein Schiff oder Schiffsbauwerk<br> § &nbsp;&nbsp; 871 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Landesrechtlicher Vorbehalt bei Eisenbahnen<br> :::::::::::::Titel 4. Verteilungsverfahren § &nbsp;&nbsp; 872 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Voraussetzungen<br> § &nbsp;&nbsp; 873 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Aufforderung des Verteilungsgerichts<br> § &nbsp;&nbsp; 874 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Teilungsplan<br> § &nbsp;&nbsp; 875 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Terminsbestimmung<br> § &nbsp;&nbsp; 876 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Termin zur Erklärung und Ausführung<br> § &nbsp;&nbsp; 877 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Säumnisfolgen<br> § &nbsp;&nbsp; 878 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Widerspruchsklage<br> § &nbsp;&nbsp; 879 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zuständigkeit für die Widerspruchsklage<br> § &nbsp;&nbsp; 880 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Inhalt des Urteils<br> § &nbsp;&nbsp; 881 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Versäumnisurteil<br> § &nbsp;&nbsp; 882 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Verfahren nach dem Urteil<br> ::::::Titel 5. ''[bis 30.11.2021: Zwangsvollstreckung gegen juristische Personen des öffentlichen Rechts''']<br> :::::[ab 1.12.20211: Zwangsvollstreckung in Sachen, die der Erfüllung öffentlicher Aufgaben dienen] § &nbsp;&nbsp; 882a &emsp;&emsp;&emsp;&emsp;&emsp; Zwangsvollstreckung wegen einer Geldforderung<br> :::::::::::::Titel 6. Schuldnerverzeichnbis § &nbsp;&nbsp; 882b &emsp;&emsp;&emsp;&emsp;&emsp; Inhalt des Schuldnerverzeichnisses<br> § &nbsp;&nbsp; 882c &emsp;&emsp;&emsp;&emsp;&emsp; Eintragungsanordnung<br> § &nbsp;&nbsp; 882d &emsp;&emsp;&emsp;&emsp;&emsp; Vollziehung der Eintragungsanordnung<br> § &nbsp;&nbsp; 882e &emsp;&emsp;&emsp;&emsp;&emsp; Löschung<br> § &nbsp;&nbsp; 882f &emsp;&emsp;&emsp;&emsp;&emsp; Einsicht in das Schuldnerverzeichnis<br> § &nbsp;&nbsp; 882g &emsp;&emsp;&emsp;&emsp;&emsp; Erteilung von Abdrucken<br> § &nbsp;&nbsp; 882h &emsp;&emsp;&emsp;&emsp;&emsp; Zuständigkeit; Ausgestaltung des Schuldnerverzeichnisses<br> § &nbsp;&nbsp; 882i &emsp;&emsp;&emsp;&emsp;&emsp; Rechte der Betroffenen<br> Abschnitt 3. Zwangsvollstreckung zur Erwirkung der Herausgabe von Sachen und zur Erwirkung von<br> ::::::::::::Handlungen oder Unterlassungen § &nbsp;&nbsp; 883 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Herausgabe bestimmter beweglicher Sachen<br> § &nbsp;&nbsp; 884 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Leistung einer bestimmten Menge vertretbarer Sachen<br> § &nbsp;&nbsp; 885 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Herausgabe von Grundstücken oder Schiffen<br> § &nbsp;&nbsp; 886 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Herausgabe bei Gewahrsam eines Dritten<br> § &nbsp;&nbsp; 887 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vertretbare Handlungen<br> § &nbsp;&nbsp; 888 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Nicht vertretbare Handlungen<br> § &nbsp;&nbsp; 888a &emsp;&emsp;&emsp;&emsp; Keine Handlungsvollstreckung bei Entschädigungspflicht<br> § &nbsp;&nbsp; 889 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Eidesstattliche Versicherung nach bürgerlichem Recht<br> § &nbsp;&nbsp; 890 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Erzwingung von Unterlassungen und Duldungen<br> § &nbsp;&nbsp; 891 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Verfahren; Anhörung des Schuldners; Kostenentscheidung<br> § &nbsp;&nbsp; 892 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Widerstand des Schuldners<br> § &nbsp;&nbsp; 893 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Klage auf Leistung des Interesses<br> § &nbsp;&nbsp; 894 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Fiktion der Abgabe einer Willenserklärung<br> § &nbsp;&nbsp; 895 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Willenserklärung zwecks Eintragung bei vorläufig vollstreckbarem Urteil<br> § &nbsp;&nbsp; 896 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Erteilung von Urkunden an Gläubiger<br> § &nbsp;&nbsp; 897 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Übereignung; Verschiffung von Grundpfandrechten<br> § &nbsp;&nbsp; 898 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Gutgläubiger Erwerb<br> '''''[bis 30.11.2021:]''''' <br> §§ 899 - 915h (aufgehoben) '''''[ab 1.12.2021:]''''' <br> ::::::::: Abschnitt 4. Wirkungen des Pfändungsschutzkontos § &nbsp;&nbsp; 899 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Pfändungsfreier Betrag; Übertragung<br> § &nbsp;&nbsp; 900 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Moratorium bei Überweisung an den Gläubiger<br> § &nbsp;&nbsp; 901 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Verbot der Aufrechnung und Verrechnung<br> § &nbsp;&nbsp; 902 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Erhöhungsbeträge<br> § &nbsp;&nbsp; 903 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Nachweise über Erhöhungsbeträge<br> § &nbsp;&nbsp; 904 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Nachzahlung von Leistungen<br> § &nbsp;&nbsp; 905 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Festsetzung der Erhöhungsbeträge durch das Vollstreckungsgericht<br> § &nbsp;&nbsp; 906 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Festsetzung eines abweichenden pfändungsfreien Betrages durch das Vollstreckungsgericht<br> § &nbsp;&nbsp; 907 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Festsetzung der Unpfändbarkeit von Kontoguthaben auf dem Pfändungskonto<br> § &nbsp;&nbsp; 908 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Aufgaben des Kreditinstituts<br> § &nbsp;&nbsp; 909 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Datenweitergabe; Löschungspflicht<br> § &nbsp;&nbsp; 910 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Verwaltungsvollsteckung<br> §.&nbsp;&nbsp; 911 bis 915h (weggefallen)<br> ::::::::: Abschnitt 5. Arrest und einstweilige Verfügung<br> § &nbsp;&nbsp; 916 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Arrestanspruch<br> § &nbsp;&nbsp; 917 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Arrestgrund bei dinglichem Arrest<br> § &nbsp;&nbsp; 918 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Arrestgrund bei persönlichem Arrest<br> § &nbsp;&nbsp; 919 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Arrestgericht<br> § &nbsp;&nbsp; 920 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Arrestgesuch<br> § &nbsp;&nbsp; 921 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Entscheidung über das Arrestgesuch<br> § &nbsp;&nbsp; 922 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Arresturteil und Arrestbeschluss<br> § &nbsp;&nbsp; 923 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Anwendungsbefugnis<br> § &nbsp;&nbsp; 924 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Widerspruch<br> § &nbsp;&nbsp; 925 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Entscheidung nach Widerspruch<br> § &nbsp;&nbsp; 926 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Anordnung der Klageerhebung<br> § &nbsp;&nbsp; 927 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Aufhebung wegen veränderter Umstände<br> § &nbsp;&nbsp; 928 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vollziehung des Arrestes<br> § &nbsp;&nbsp; 929 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vollstrechungsklausel; Vollziehungsfrist<br> § &nbsp;&nbsp; 930 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vollziehung in bewegliches Vermögen und Forderungen<br> § &nbsp;&nbsp; 931 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vollziehung in eingetragenes Schiff oder Schiffsbauwerk<br> § &nbsp;&nbsp; 932 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Arresthypothek<br> § &nbsp;&nbsp; 933 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vollziehung des persönlichen Arrestes<br> § &nbsp;&nbsp; 934 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Aufhebung der Arrestvollziehung<br> § &nbsp;&nbsp; 935 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Einstweilige Verfügung bezüglich Streitgegenstand<br> § &nbsp;&nbsp; 936 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Anwendung der Arrestvorschriften<br> § &nbsp;&nbsp; 937 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zuständiges Gericht<br> § &nbsp;&nbsp; 938 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Inhalt der Einstweiligen Verfügung<br> § &nbsp;&nbsp; 939 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Aufhebung gegen Sicherheitsleistung<br> § &nbsp;&nbsp; 940 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Einstweilige Verfügung zur Regelung eines weiteren Zustandes<br> § &nbsp;&nbsp; 940a &emsp;&emsp;&emsp;&emsp; Räumung von Wohnraum<br> § &nbsp;&nbsp; 941 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Ersuchen um Eintragungen ins Grundbuch usw.<br> § &nbsp;&nbsp; 942 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zuständigkeit des Amtsgerichts der belegenen Sache<br> § &nbsp;&nbsp; 943 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Gericht der Hauptsache<br> § &nbsp;&nbsp; 944 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Entscheidung des Vorsitzenden bei Dringlichkeit<br> § &nbsp;&nbsp; 945 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Schadensersatzprlicht<br> § &nbsp;&nbsp; 945a &emsp;&emsp;&emsp;&emsp; Einreichung von Schutzvorschriften<br> § &nbsp;&nbsp; 945b &emsp;&emsp;&emsp;&emsp; Verordnungsermächtigung<br> ::::::::: Abschnitt 6. Grenzüberschreitende vorläufige Kontenpfändung<br> ::::::::: Titel 1. Erlass des Beschlusses zur vorläufigen Kontenpfändung<br> § &nbsp;&nbsp; 946 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Zuständigkeit<br> § &nbsp;&nbsp; 947 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Verfahren<br> § &nbsp;&nbsp; 948 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Ersuchen um Einholen von Konteninformationen<br> § &nbsp;&nbsp; 949 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Nicht rechtzeitige Einleitung des Hauptverfahrens<br> ::::::::: Titel 2. Vollziehung des Beschlusses zur vorläufigen Kontenpfändung<br> § &nbsp;&nbsp; 950 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Anwendbare Vorschriften<br> § &nbsp;&nbsp; 951 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vollziehung von im Inland erlassenen Beschlüssen<br> § &nbsp;&nbsp; 952 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Vollziehung von einem anderen Mitgliedstaat erlassenen Beschlüssen<br> ::::::::: Titel 3. Rechtsbehelfe § &nbsp;&nbsp; 953 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Rechtsbehelfe des Gläubigers<br> § &nbsp;&nbsp; 954 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Rechtsbehelfe nach den Artikeln 33 bis 35 der Verordnung (EU) Nr. 655/2014<br> § &nbsp;&nbsp; 955 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Sicherheitsleistung nach Artikel 38 der Verordnung (EU) Nr. 655/2014<br> § &nbsp;&nbsp; 956 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Rechtsmittel gegen die Entscheidungen nach § 954 Absatz 1 bis 3 und § 955<br> § &nbsp;&nbsp; 957 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Ausschluss der Rechtsbeschwerde<br> ::::::::: Titel 4. Schadensersatz, Verordnungsermächtigung § &nbsp;&nbsp; 958 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Schadensersatz<br> § &nbsp;&nbsp; 959 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Verordnungsermächtigung<br> :::::::::::: '''Buch 9.''' (weggefallen) §§ &nbsp;&nbsp; 960 - 1024 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; (aufgehoben)<br> ::::::::: '''Buch 10. Schiedsrichterliches Verfahren ''' :::::::::: Abschnitt 1. Allgemeine Vorschriften § &nbsp;&nbsp; 1025 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Anwendungsbereich<br> § &nbsp;&nbsp; 1026 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Umfang gerichtlicher Tätigkeit<br> § &nbsp;&nbsp; 1027 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Verlust des Rügerechts<br> § &nbsp;&nbsp; 1028 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Empfang schriftlicher Mitteilungen bei unbekanntem Aufenthalt<br> :::::::::: Abschnitt 2. Schiedsvereinbarung § &nbsp;&nbsp; 1029 &emsp;&emsp;&emsp;&emsp;&emsp;&emsp; Begriffsbestimmung<br> = § 1 (ZPO) Sachliche Zuständigkeit. = Die sachliche Zuständigkeit der Gerichte wird durch das Gesetz über die Gerichtsverfassung 2) bestimmt. '''(Quellinfo = Buch "ZPO" S. 22 ff.)''' = § 2 (ZPO) Bedeutung des Wertes. = Kommt es nach den Vorschriften dieses Gesetztes oder des Gerichtsverfassungsgesetzes 2) auf den Wert des Streitgegenstandes des Beschwerdegegenstandes, der Beschwerde oder der Verurteilung an, so gelten die nachfolgenden Vorschriften. '''(Quellinfo = Buch "ZPO" S. 22 ff.)''' = § 3 (ZPO) Wertfestsetzung nach freiem Ermessen. = Der Wert wird von dem Gericht nach freiem Ermessen festgesetzt; es kann eine beantragte Beweisaufnahme sowie von Amts wegen die Einnahme des Augenscheins und die Begutachtung durch Sachverständige anordnen. '''(Quellinfo = Buch "ZPO" S. 22 ff.)''' = § 4 (ZPO) Wertberechnung: Nebenforderungen. = (1) Für die Wertberechnung 3) ist der Zeitpunkt der Einreichung der Klage, in der Rechtsmittelinstanz der Zeitpunkt der Einlegung des Rechtsmittels, bei der Verurteilung der Zeitpunkt des Schlusses der mündlichen Verhandlung, auf die das Urteil ergeht, entscheidend; Früchte, Nutzungen, Zinsen und Kosten bleiben unberücksichtigt, wenn sie als Nebenforderungen geltend gemacht werden. (2) Bei Ansprüchen aus Wechseln im Sinne des Wechselgesetzes sind Zinsen, Kosten und Provision, die außer der Wechselsumme gefordert werden, als Nebenforderungen anzusehen. '''(Quellinfo = Buch "ZPO" S. 22 ff.)''' = § 5 (ZPO) Mehrere Ansprüche. = Mehrere in einer Klage geltend gemachte Ansprüche werden zusammengerechnet; dies gilt nicht für den Gegenstand der Klage und der Widerklage. '''(Quellinfo = Buch "ZPO" S. 22 ff.)''' = § 6 (ZPO) Besitz; Sicherstellung; Pfandrecht. = <sup>1</sup> Der Wert wird bestimmt; durch den Wert einer Sache; wenn es auf deren Besitz und durch den Betrag einer Forderung, wenn es auf deren Sicherstellung oder ein Pfandrecht ankommt.<sup>2</sup> Hat der Gegenstand des Pfandrechts einen geringeren Wert, so ist dieser maßgebend. '''(Quellinfo = Buch "ZPO" S. 22 ff.)''' = § 7 (ZPO) Grunddienstbarkeit. = Der Wert einer Grunddienstbarkeit wird durch den Wert, den sie für das herrschende Grundstück hat, und wenn der Betrag, um den sich der Wert des dienenden Grundstücks durch die Dienstbarkeit mindert, größer ist, durch diesen Betrag bestimmt. '''(Quellinfo = Buch "ZPO" S. 22 ff.)''' = § 8 (ZPO) <sup> 1) </sup> Pacht- oder Mietverhältnis. = Ist das Bestehen oder die Dauer eines Pacht- oder Mietverhältnisses streitig, so ist der Betrag der auf die gesamte streitige Zeit entfallenden Pacht oder Miete und, wenn der 25fache Betrag des einjährigen Entgelts geringer ist, dieser Betrag für die Wertberechnung entscheidend. '''(Quellinfo = Buch "ZPO" S. 23 ff.)''' = § 9 (ZPO) <sup> 2) </sup> Wiederkehrende Nutzungen oder Leistungen. = 1 Der Wert des Rechts auf wiederkehrende Nutzungen oder Leistungen wird nach dem dreieinhalbfachen Wert des einjährigen Bezuges berechnet. 2 Bei bestimmter Dauer des Bezugsrechts ist der Gesamtbetrag der künftigen Bezüge maßgebend, wenn er der geringere ist. '''(Quellinfo = Buch "ZPO" S. 23 ff.)''' = § 10 (ZPO) (weggefallen) = '''(Quellinfo = Buch "ZPO" S. 23 ff.)''' = § 11 (ZPO) Bindende Entscheidung über Unzuständigkeit = Ist die Unzuständigkeit eines Gerichts auf Grund der Vorschriften über die sachliche Zuständigkeit der Gerichte rechtskräftig ausgesprochen, so ist diese Entscheidung für das Gericht bindend, bei dem die Sache später anhängig wird. '''(Quellinfo = Buch "ZPO" S. 23 ff.)''' :::'''Titel 2. Gerichtsstand''' = § 12³) (ZPO) Allgemeiner Gerichtsstand; Begriff. = Das Gericht, bei dem eine Person ihren allgemeinen Gerichtsstand hat, ist für alle gegen sie zu erhebenden Klagen zuständig, sofern nicht für eine klage ein ausschließlicher Gerichtsstand begründet ist. '''(Quellinfo = Buch "ZPO" S. 23 ff.)''' = § 13) (ZPO) Allgemeiner Gerichtsstand des Wohnsitzes. = Der allgemeine Gerichtsstand einer Person wird durch den Wohnsitz bestimmt '''(Quellinfo = Buch "ZPO" S. 23 ff.)''' = § 14) (ZPO) (weggefallen) = '''(Quellinfo = Buch "ZPO" S. 23 ff.)''' = § 15 (ZPO) Allgemeiner Gerichtsstand für exterritoriale Deutsche = (1)<sup>1</sup> Deutsche, die das Recht der Exterritorialität genießen, sowie die im Ausland beschäftigten deutschen Angehörigen des öffentlichen Diensts behalten den Gerichtsstand ihres letzten inländischen Wohnsitzes. <sup>2</sup> Wenn sie einen solchen Wohnsitz nicht hatten, habe sie ihren allgemeinen Gerichtsstand beim Amtsgericht Schöneberg in Berlin. (2) Auf Honorarkonsuln ist diese Vorschrift nicht anzuwenden. '''(Quellinfo = Buch "ZPO" S. 23 ff.)''' = § 16 (ZPO) Allgemeiner Gerichtsstand wohnsitzloser Personen = Der allgemeine Gerichtstand einer Person, die keinen Wohnsitz hat, wird durch den Aufenthaltsort im Inland und, wenn ein solcher nicht bekannt ist, durch den letzten Wohnsitz bestimmt. '''(Quellinfo = Buch "ZPO" S. 23 ff.)''' = § 17 (ZPO) Allgemeiner Gerichtsstand juristischer Personen = (1) <sup> 1 </sup> Der allgemeine Gerichtsstand der Gemeinden, der Korporationen sowie derjenigen Gesellschaften, Genossenschaften oder anderen Vereine und derjenigen Stiftungen, Anstalten und Vermögensmassen, die als solche verklagt werden können, wird durch ihren Sitz bestimmt. <sup> 2 </sup> Als Sitz gilt, wenn sich nichts anderes ergibt, der Ort, wo die Verwaltung geführt wird. (2) Gewerkschaften haben den allgemeinen Gerichtstand bei dem Gericht, in dessen Bezirk das Bergwerk liegt, Behörden, wenn sie als solche verklagt werden können, bei dem Gericht ihres Amtssitzes. (3) Neben dem durch die Vorschriften dieses Paragraphen bestimmten Gerichtsstand ist ein durch Statut oder in anderer Weise besonders geregelter Gerichtsstand zulässig. '''(Quellinfo = Buch "ZPO" S. 24 ff.)''' = § 18 Allgemeiner Gerichtsstand des Fiskus = Der allgemeine Gerichtsstand des Fiskus wird durch den Sitz der Behörde bestimmt, die berufen ist, den Fiskus in dem Rechtsstreit zu vertreten. '''(Quellinfo = Buch "ZPO" S. 24 ff.)''' = § 19 Mehrere Gerichtsbezirke am Behördensitz = Ist der Ort, an dem eine Behörde ihren Sitz hat, in mehrere Gerichtsbezirke geteilt, so wird der Bezirk der im Sinne der §§ 17, 18 als Sitz der Behörde gilt, für die Bundesbehörden von dem Bundesministerium der Justiz und für Verbraucherschutz, im Übrigen von der Landesjustizverwaltung durch allgemeine Anordnung bestimmt. '''(Quellinfo = Buch "ZPO" S. 24 ff.)''' = § 19 <sub> a </sub> Allgemeiner Gerichtsstand des Insolvenzverwalters. = Der allgemeine Gerichtsstand eines Isolvenzverwalters für Klagen, die sich auf die Insolvenzmasse beziehen, wird durch den Sitz des Insolvenzgerichts bestimmt. '''(Quellinfo = Buch "ZPO" S. 24 ff.)''' = § 19 <sub> b </sub> Allgemeiner Gerichtsstand bei restrukturierungsbezogene Klagen; Verordnungsermächtigung. = (1) Für Klagen, die sich auf Restrukturierungssachen nach dem Unternehmensstabilisierungs- und -retrukturierungsgesetz beziehen, ist ausschließlich das Gericht zuständig, in dessen Bezirk das für die Restrukturierungssache zuständige Restrukturierungsgericht seinen Sitz hat. <div style="text-indent: 38px;"> (2) <sup> 1 </sup>Die Landesregierungen werden ermächtigt, durch Rechtsverordnung die in Absatz 1 genannten Klagen einem Landgericht für die Bezirke mehrerer Oberlandesgerichte zuzuweisen, sofern dies der sachlichen Förderung oder schnelleren Erledigung der Verfahren dienlich ist. <sup>2</sup>Die Landesregierungen können die Ermächtigung durch Rechtsverordnung auf die Landesjustizverwaltungen übertragen. '''(Quellinfo = Buch "ZPO" S. 24 ff.)'''</div> = § 20 Besonderer Gerichtsstand des Aufenthaltsorts. = Wenn Personen an einem Ort unter Verhältnissen, die ihrer Natur nach auf einen Aufenthalt von längerer Dauer hinweisen, insbesondere als Hausgehilfen, Arbeiter, Gewerbehilfen, Studierende, Schüler oder Lehrlinge sich aufhalten, so ist das Gericht des Aufenthaltsortes für alle Klagen zuständig, die gegen dieser Personen wegen vermögensrechtlicher Ansprüche erhoben werden. '''(Quellinfo = Buch "ZPO" S. 24 ff.)''' = § 21 Besonderer Gerichtsstand der Niederlassung. = (1) hat jemand zum Betrieb einer Fabrik, einer Handlung oder eines anderen Gewerbes eine Niederlassung, von der aus unmittelbar Geschäfte geschlossen werden, so können gegen ihn alle Klagen, die auf den Geschäftsbetrieb der Niederlassung Bezug haben, bei dem Gericht des Ortes erhoben werden, wo die Niederlassung sich befindet. '''(Quellinfo = Buch "ZPO" S. 24 ff.)''' = § 22 Besonderer Gerichtsstand der Mitgliedschaft. = Das Gericht, bei dem Gemeinden, Korporationen, Gesellschaften, Genossenschaften oder andere Vereine den allgemeinen Gerichtsstand haben, ist für die Klagen zuständig, die von ihnen oder von dem Insolvenzverwalter gegen die Mitglieder als solche oder von den Mitgliedern in dieser Eigenschaft gegeneinander erhoben werden. '''(Quellinfo = Buch "ZPO" S. 25 ff.)''' = § 23<sup>1)</sup>Besonderer Gerichtsstand des Vermögens und des Gegenstands. = <sup>1</sup> Für Klagen wegen vermögensrechtlicher Ansprüche gegen eine Person, die im Inland keinen Wohnsitz hat, ist das Gericht zuständig, in dessen Bezirk sich Vermögen derselben oder der mit der Klage in Anspruch genommene Gegenstand befindet. <sup>2</sup> Bei Forderungen gilt als der Ort, wo das Vermögen sich befindet, der Wohnsitz des Schuldners und, wenn für die Forderungen eine Sache zur Sicherheit haftet, auch der Ort, wo die Sache sich befindet. '''(Quellinfo = Buch "ZPO" S. 25 ff.)''' = § 23a (aufgehoben) = = § 24 Ausschließlicher dinglicher Gerichtsstand. = (1) Für Klagen, durch die das Eigentum, eine dingliche Belastung oder die Freiheit von einer solchen geltend gemacht wird, für Grenzscheidungs-, Teilung- und Besitzklagen ist, sofern es sich um unbewegliche Sachen handelt, das Gericht ausschließlich zuständig, in dessen Bezirk die Sache belegen ist. (2) Bei den eine Grunddienstbarkeit, eine Reallast oder ein Vorkaufsrecht betreffenden Klagen ist die Lage des dienenden oder belasteten Grundstücks entscheidend. '''(Quellinfo = Buch "ZPO" S. 25 ff.)''' = § 25 Dinglicher Gerichtsstand des Sachzusammenhanges. = In dem dinglichen Gerichtsstand kann mit der Klage aus einer Hypothek, Grundschuld oder Rentenschuld die Schuldklage, mit der Klage auf Umschreibung oder Löschung einer Hypothek, Grundschuld oder Rentenschuld die Klage auf Befreiung von der persönlichen Verbindlichkekt mit der Klage auf Anerkennung einer Reallast die Klage auf rückständige Leistungen erhoben werden, wenn die verbundenen Klagen gegen denselben Beklagten gerichtet sind. '''(Quellinfo = Buch "ZPO" S. 25 ff.)''' = § 26 Dinglicher Gerichtsstand für persönliche Klagen. = In dem dinglichen Gerichtsstand können persönliche Klagen, die gegen die Eigentümer oder Besitzer einer unbeweglichen Sache als solche gerichtet werden, sowie Klagen wegen Beschädigung eines Grundstücks oder hinsichtlich der Entschädigung wegen Enteignung eines Grundstücks erhoben werden. '''(Quellinfo = Buch "ZPO" S. 25 ff.)''' = § 27 Besonderer Gerichtsstand der Erbschaft. = (1) Kagen, welche die Feststellung des Erbrechts, Ansprüche des Erben gegen einen Erbschaftsbesitzer, Anprüche aus Vermächtnissen oder sonstigen Verfügungen von Todes wegen, Pflichtteilsansprüche oder die Teilung der Erbschaft zum Gegenstand haben, können vor dem Gericht erhoben werden, bei dem er Erblasser zur zeit seines Todes den allgemeinen Gerichtsstand gehabt hat. (2) Ist der Erblasser ein Deutscher und hatte er zur Zeit seines Todes im Inland keinen allgemeinen Gerichtsstand, so können die im Absatz 1 bezeichneten Klagen vor dem Gericht erhoben werden, in dessen Bezirk der Erblasser seinen letzten inländischen Wohnsitz hatte, wenn er einen solchen Wohnsitz nicht hatte, so gilt die Vorschrift des § 15 Abs., 1 Satz 2 entsprechend. '''(Quellinfo = Buch "ZPO" S. 26 ff.)''' = § 28 Erweiterter Gerichtsstand der Erbschaft. = In dem Gerichtsstand der Erbschaft können auch Klagen wegen anderer Nachlassverbindlichkeiten erhoben werden, solange sich der Nachlass noch ganz oder teilweise im Bezirk des Gerichts befindet oder die vorhandenen mehreren Erben noch als Gesamtschuldner haften. '''(Quellinfo = Buch "ZPO" S. 26 ff.)''' = § 29 Besonderer Gerichtsstand des Erfüllungsorts. = (1) Für Streitigkeiten aus einem Ertragsverhältnis und über deren Betehen ist das Gericht des Ortes zuständig, an dem die streitige Verpflichtung zu erfüllen ist. (2) Eine Vereinbarung über den Erfüllungsort begründet die Zuständigkeit nur, wenn die Vertragsparteien Kaufleute, juristische Personen des öffentlichen Rechts oder öffentlich-rechtliche Sondervermögen sind. '''(Quellinfo = Buch "ZPO" S. 26 ff.)''' = § 29a Ausschließlicher Gerichtstand bei Miet- oder Pachträumen. = (1) Für Streitigkeiten über Ansprüche aus Miet- oder Pachtverhältnissen über Räume oder über dessen Bestehen solcher Verhältnisse ist das Gericht ausschließlich zuständig, in dessen Bezirk sich die Räume befinden. (2) Absatz 1 ist nicht anzuwenden, wenn es sich um Wohnraum der in § 549 Abs. 2 Nr. 1 bis 3 des Bürgerlichen Gesetzbuchs genannten Art handelt. '''(Quellinfo = Buch "ZPO" S. 26 ff.)''' = § 29b (aufgehoben) = = § 29c Besonderer Gerichtsstand für Haustürgeschäfte. = (1)<sup>1</sup>Für Klagen aus außerhalb von Geschäftsräumen geschlossenen Verträgen (§312b des Bürgerlichen Gesetzbuchs) ist das Gericht zuständig, in dessen Bezirk der Verbraucher zur Zeit der Klageerhebung seinen Wohnsitz, in Ermangelung eines solchen seinen gewöhnlichen Aufenthalt hat. <sup>2</sup> Für Klagen gegen den Verbraucher ist dieses Gericht ausschließlich zuständig. (2) Verbraucher ist jede natürliche Person, die bei dem Erwerb des Anspruchs oder der Begründung des Rechtsverhältnisses nicht überwiegend im Rahmen ihrer gewerblichen oder selbständigen beruflichen Tätigkeit handelt. (3) § 33 Abs. 2 findet auf Widerklagen der anderen Vertragspartei keine Anwendung. (4) Eine von Absatz 1 abweichende Vereinbarung ist zulässig für den Fall, dass der Verbraucher nach Vertragsschluss seinen Wohnsitz oder gewöhnlicher Aufenthalt im Zeitpunkt der Klageerhebung nicht bekannt ist. '''(Quellinfo = Buch "ZPO" S. 26 ff.)''' = § 30 Gerichtsstand bei Beförderungen. = (1)<sup>1</sup>Für Rechtsstreitigkeiten aus einer Güterbeförderung ist auch das Gericht zuständig, in dessen Bezirk der Ort der Übernahme des Gutes oder der für die Ablieferung des Gutes vorgegebene Ort liegt. <sup>2</sup>Eine Klage gegen den ausführenden Frachtführer oder ausführenden Verfrachter kann auch in dem Gerichtstand des Frachtführers oder Verfrachtete erhoben werden. <sup>3</sup> Eine Klage gegen den Frachtführer oder ausführenden Verfrachter kann auch in dem Gerichtsstand des ausführenden Frachtführers oder ausführenden Verfrachtete erhoben werden. (2)<sup>1</sup> Für Rechtsstreitigkeiten wegen einer Beförderung von Fahrgästen und ihrem Gepäck auf Schiffen ist auch das Gericht zuständig, in dessen Bezirk sich der im Beförderungsvertrag bestimmte Abgangs- oder Bestimmungsort befindet. <sup>2</sup>Eine von Satz 1 abweichende Vereinbarung ist unwirksam, wenn sie vor Eintritt des Ereignisses getroffen wird, das den Tod oder die Körperverletzung des Fahrgasts oder den Verlust, die Beschädigung oder die verspätete Aushändigung des Gepäcks verursacht hat.'''(Quellinfo = Buch "ZPO" S. 26 ff.)''' = § 30a Gerichtsstand bei Bergungsansprüchen. = Für Klagen wegen Ansprüchen aus Bergung von Schiffen oder sonstigen Vermögensgegenständen in einem Gewässer gegen eine Person, die im Inland keinen Gerichtsstand hat, ist das Gericht zuständig, bei dem der Kläger im Inland seinen allgemeinen Gerichtstand hat. '''(Quellinfo = Buch "ZPO" S. 27 ff.)''' = § 31 Besonderer Gerichtstand der Vermögensverwaltung. = Für Klagen, die aus einer Vermögensverwaltung von dem Geschäftsherrn gegen den Verwalter oder von dem Verwalter gegen den Geschätsherrn erhoben werden, ist das Gericht des Ortes zuständig, wo die Verwaltung geführt ist. '''(Quellinfo = Buch "ZPO" S. 276 ff.)''' = § 32 Besonderer Gerichtsstand der unerlaubten Handlung. = Für Klagen aus unerlaubten Handlungen ist das Gericht zuständig, in dessen Bezirk die Handlung begangen ist. '''(Quellinfo = Buch "ZPO" S. 27 ff.)''' = § 32a Ausschließlicher Gerichtsstand der Umwelteinwirkung. = <sup>1</sup>Für Klagen gegen den Inhaber einer im Anhang 1 des Umwelthaftungsgesetzes genannten Anlage, mit denen der Ersatz eines durch eine Umwelteinwirkungverursachten Schadens geltend gemacht wird, ist das Gericht ausschließlich zuständig, in dessen Bezirk die Umwelteinwirkung von der Anlage ausgegangen ist. <sup>2</sup>Dies gilt nicht, wenn die Anlage im Ausland belegen ist. = § 32b<sup>1)</sup> Ausschließlicher Gerichtsstand bei falschen, irreführenden oder unterlassenen öffentlichen Kapitalmarktinformationen. = (1) Für Klagen, in denen 1. ein Schadensersatzanspruch wegen falscher, irreführender oder unterlassener öffentlicher Kapitalmarktinformation, 2. ein Schadensersatzanpruch wegen Verwendung einer falschen oder irreführenden öffentlichen Kapitalmarktinformation oder wegen Unterlassung der gebotenen Aufklärung darüber das eine öffentliche Kapitalmarktinformation falsch oder irreführend ist, oder 3. ein Erfüllunganspruch aus Vertrag, der auf einem Angebot nach dem Wertpapiererwerbs- und Übernahmegesetz beruht, geltend gemacht wird, ist das Gericht ausschließlich am Sitz des betroffenen Emittenten, des betroffenen Anbieters von sonstigen Vermögensanlagen oder der Zielgesellschaft zuständig, wenn sich dieser Sitz im Inland befindend und die Klage zumindest auch gegen den Emittenten, den Anbieter oder die Zielgesellschaft gerichtet wird. (2)<sup>1</sup> Die Landesregierungen werden ermächtigt, durch Rechtsverordnung, die im Absatz 1 genannten Klagen einem Landgericht für die Bezirke mehrerer Landgerichte zuzuweisen, sofern dies der sachlichen Forderung oder schnelleren Erledigung der Verfahren dienlich ist. <sup>2</sup>Die Landesregierungen können diese Ermächtigung auf die Landesjustizverwaltungen übertragen. : <sup>1)</sup> Beachte hierzu Übergangsvorschrift in § 31 EGZPO (Nr. 1a). = § 32c Ausschließlicher Gerichtsstand bei Musterfeststellungsverfahren. = Für Klagen in Musterfeststellungsverfahren nach Buch 6 ist das Gericht des allgemeinen Gerichtsstands des Beklagten ausschließlich zuständig, sofern sich dieser im Inland befindet. '''(Quellinfo = Buch "ZPO" S. 28 ff.)''' = § 33 Besonderer Gerichtsstand der Widerklage. = (1) Bei dem Gericht der Klage kann eine Widerklage erhoben werden, wenn der Gegenanspruch mit dem in der Klage geltend gemachten Anspruch oder mit den gegen ihn vorgebrachten Verteidigungsmitteln in Zusammenhang steht. (2) Dies gilt nicht, wenn für eine Klage wegen des Gegenanspruchs die Vereinbarung der Zuständigkeit des Gerichts nach § 40 Abs. 2 unzulässig ist. '''(Quellinfo = Buch "ZPO" S. 28 ff.)''' = § 34 Besonderer Gerichtsstand des Hauptprozesses. = Für Klagen der Prozessbevollmächtigten, der Beistände, der Zustellungsbevollmächtigten und der Gerichtsvollzieher wegen Gebühren und Auslagen ist das Gericht des Hauptrozesses zuständig. '''(Quellinfo = Buch "ZPO" S. 28 ff.)''' = § 35 Wahl unter mehreren Gerichtsständen. = Unter mehreren zuständigen Gerichten hat der Kläger die Wahl. '''(Quellinfo = Buch "ZPO" S. 28 ff.)''' = § 35a (aufgehoben) = = § 36 Gerichtliche Bestimmung der Zuständigkeit.= (1) Das zuständige Gericht wird durch das im Rechtszug zunächst höhere Gericht bestimmt:1. wenn das an sich zuständige Gericht in einem Einzelnen Fall an der Ausübung des Richteramtes rechtlich oder tatsächlich verhindert ist; 2. wenn es mit Rücksicht auf die Grenzen verschiedener Gerichtsbezirke ungewiss ist, welches Gericht für den Rechtsstreit zuständig sei; 3. wenn mehrere Personen, die bei verschiedenen Gerichten ihren allgemeinen Gerichtsstand haben als Streitgenossen im allgemeinen Gerichtstand verklagt werden sollen und für den Rechtsstreit ein gemeinschaftlicher besonderer Gerichtstand nicht begründet ist; 4. wenn die Klage in den dinglichen Gerichtsstand erhoben werden soll und die Sache in den Bezirken verschiedener Gerichte belegen ist; 5. wenn in einem Rechtsstreit verschiedene Gerichte sich rechtskräftig für zuständig erklärt haben; 6. wenn verschiedene Gerichte, von denen eines für den Rechtsstreit zuständig ist, sich rechtskräftig für unzuständig erklärt haben, (2) Ist das zunächst höhere gemeinschaftliche Gericht der Bundesgerichtshof, so wird das zuständige Gericht durch das Oberlandesgericht bestimmt, zu dessen Bezirk das zuerst mit der Sache befasste Gericht gehört. '''(Quellinfo = Buch "ZPO" S. 28 ff.)''' = § 37 Verfahren bei gerichtlicher Bestimmung. = (1) Die Entscheidung über das Gesuch um Bestimmung des zuständigen Gerichts ergeht durch Beschluss. (2) Der Beschluss, der das zuständige Gericht bestimmt, ist nicht anfechtbar. '''(Quellinfo = Buch "ZPO" S. 29 ff.)''' :::'''Titel 3. Vereinbarung über die Zuständigkeit des Gerichts''' = § 38 Zugelassene Gerichtsstandsvereinbarung = (1) Ein an sich unzuständiges Gericht des ersten Rechtszuges wird durch ausdrückliche oder stillschweigende Vereinbarung der Parteien zuständig, wenn die Vertragsparteien Kaufleute, juristische Personen des öffentlichen Rechts oder öffentlich-rechtliche Sondervermögen sind. (2)<sup>1)</sup>&nbsp;<sup>1</sup> Die Zuständigkeit eines Gerichts des ersten Rechtszuges kann ferner vereinbart werden, wenn mindestens eine der Vertragsparteien keinen allgemeinen Gerichtsstand in Inland hat. <sup>2</sup> Die Vereinbarung muss schriftlich abschlossen oder, falls sie mündlich getroffen wird, schriftlich bestätigt werden.<sup>3</sup>Hat eine der Parteien einen inländischen allgemeinen Gerichtsstand, so kann für das Inland nur ein Gericht gewählt werden, bei dem diese Partei ihren allgemeinen Gerichtstand hat oder ein besonderer Gerichtstand begründet ist.(3) Im Übrigen ist eine Gerichtsstandsvereinbarung nur zulässig, wenn sie ausdrücklich und schriftlich 1. nach dem Entstehen der Streitigkeit oder 2. für den Fall geschlossen wird, das die im Klageweg in Anspruch zu nehmende Partei nach Vertragsschluss ihren Wohnsitz oder gewöhnlichen Aufenthaltsort aus dem Geltungsbereich dieses Gesetztes verlegt oder ihr Wohnsitz oder gewöhnlicher Aufenthalt im Zeitpunkt der Klageerhebung nicht bekannt ist. '''(Quellinfo = Buch "ZPO" S. 29 ff.)''' = § 39 Zuständigkeit infolge rügeloser Verhandlung. = <sup>1</sup>Die Zuständigkeit eines Gericht des ersten Rechtszuges wird ferner dadurch begründet, dass der Beklagte, ohne die Unzuständigkeit geltend zu machen, zur Hauptsache mündlich verhandelt. <sup>2</sup>Dies gilt nicht, wenn die Belehrung nach § 504 unterblieben ist. '''(Quellinfo = Buch "ZPO" S. 29 ff.)''' = § 40 Unwirksame und unzulässige Gerichtsstandsvereinbarung. = (1) Die Vereinbarung hat keine rechtliche Wirkung, wenn sie nicht auf ein bestimmtes Rechtsverhältnis und die aus ihm entspringenden Rechtsstreitigkeiten sich bezieht. (2) Eine Vereinbarung is unzulässig, wenn 1. der Rechtsstreit nichtvermögensrechtliche Ansprüche betrifft, die den Amtsgerichten ohne Rücksicht auf den Wert des Streitgegenstandes zugewiesen sind, oder 2. für de Klage ein ausschließlicher Gerichtsstand begründet ist. <sup>2</sup> In diesen Fällen wird die Zuständigkeit eines Gerichts auch nicht durch rügeloses Verhandeln zur Hauptsache begründet. '''(Quellinfo = Buch "ZPO" S. 29 ff.)''' :::'''Titel 4. Ausschließung und Ablehnung der Gerichtspersonen''' = § 41 Ausschluss von der Ausübung des Richteramtes. = Ein Richter ist von der Ausübung des Richteramtes kraft Gesetzes ausgeschlossen; 1. in Sachen, in denen er selbst Partei ist oder bei denen er zu einer Partei in dem Verhältnis eines Mitberechtigten, Mitverpflichteten oder Regresspflichtigen steht;2. in Sachen eines Ehegatten, auch wenn die Ehe nicht mehr besteht; 2a. in Sachen seines Lebenspartners, auch wenn die Lebenspartnerschaft nicht mehr besteht. 3. in Sachen einer Person, mit der er in gerader Linie verwandt oder verschwägert, in der Seitenlinie bis zum dritten Grad verwandt oder bis zum zweiten Grad verschwägert ist oder war; 4. in Sachen, in denen er als Prozessbevollmächtigter oder Beistand einer Partei bestellt oder als gesetzlicher Vertreter einer Partei aufzutreten berechtigt ist oder gewesen ist; 5. in Sachen, in denen er als Zeuge oder Sachverständiger vernommen ist; 6. in Sachen, in denen er in einem früheren Rechtszug oder im schiedsrichterlichen Verfahren bei dem Erlass der angefochtenen Entscheidung mitgewirkt hat, sofern er sich nicht um die Tätigkeit eines beauftragten oder ersuchten Richters handelt; 7. in Sachen wegen überlanger Gerichtsverfahren, wenn er in dem beanstandeten Verfahren in einem Rechtszug mitgewirkt hat, auf dessen Dauer der Entschädigungsanspruch gestützt wird; 8. in Sachen, in denen er an einem Meditationsverfahren oder einem anderen Verfahren der außergerichtlichen Konlikbeilegung mitgewirkt hat. = § 42 Ablehnung eines Richters. = (1) Ein Richter kann sowohl in den Fällen, in denen er von der Ausübung des Richteramts kraft Gesetzes ausgeschlossen ist, als auch wegen Besorgnis der Befangenheit abgelehnt werden. (2) Wegen Besorgnis der Befangenheit findet die Ablehnung statt, wenn ein Grund vorliegt, der geeignet ist, Misstrauen gegen die Un parteilichkeit eines Richters zu rechtfertigen. (3) Das Ablehnungsrecht steht in jedem Fall beiden Parteien zu. '''(Quellinfo = Buch "ZPO" S. 29 ff.)''' = § 43 Verlust des Ablehnungsrechts. = Eine Partei kann einen Richter wegen Besorgnis der Befangenheit nicht mehr ablehnen, wenn sie sich bei ihm, ohne den ihr bekannten Ablehnungsgrund geltend zu machen, in eine Verhandlung eingelassen oder Anträge gestellt hat. '''(Quellinfo = Buch "ZPO" S. 31 ff.)''' = § 44 Ablehnungsgesuch. = (1) Das Ablehnungsgesuch ist bei dem Gericht, dem der Richter angehört, anzubringen; es kann vor der Geschäftsstelle zu Protokoll erklärt werden. (2)<sup>1</sup>Der Ablehnungsgrund ist glaubhaft zu machen, zur Versicherung an Eides statt darf die Partei nicht zugelassen werden. <sup>2</sup>Zur Glaubhaftmachung kann auf das Zeugnis des abgelehnten Richters Bezug genommen werden. (3) Der abgelehnte Richter hat sich über den Ablehnungsgrund dienstlich zu äußern. (4)<sup>1</sup>Wird ein Richter, bei dem die Partei sich in eine Verhandlung eingelassen oder Anträge gestellt hat, wegen Besorgnis der Befangenheit abgelehnt, so ist glaubhaft zu machen, dass der Ablehnungsgrund erst später entstanden oder der Partei bekannt geworden sei.<sup>2</sup>Das Ablehnungsgesuch ist unverzüglich anzubringen. '''(Quellinfo = Buch "ZPO" S. 31 ff.)''' = § 45 Entscheidung über das Ablehnungsgesuch. = (1)Über das Ablehnungsgesuch entscheidet das Gericht, dem der Abgelehnte angehört, ohne dessen Mitwirkung. (2)<sup>1</sup>Wird ein Richter beim Amtsgericht abgelehnt, so entscheidet ein anderer Richter des Amtsgerichts über das Gesuch.<sup>2</sup>Einer Entscheidung bedarf es nicht, wenn der abgelehnte Richter das Ablehnungsgesuch für begründet hält. (3)Wird das zur Entscheidung berufene Gericht durch Ausscheiden des abgelehnten Mitglieds beschlussunfähig, so entscheidet das im Rechtszug zunächst höhere Gericht. '''(Quellinfo = Buch "ZPO" S. 31 ff.)''' = § 46 Entscheidung und Rechtsmittel. = (1)Die Entscheidung über das Ablehnungsgesuch ergeht durch Beschluss. (2)Gegen den Beschluss, durch den das Gesuch für begründet erklärt wird findet kein Rechtsmittel, gegen den Beschluss, durch den das Gesuch für unbegründet erklärt wird, findet sofortige Beschwerde statt. '''(Quellinfo = Buch "ZPO" S. 31 ff.)''' = § 47 Unaufschiebbare Amtshandlungen. = (1) Ein abgelehnter Richter hat vor Erledigung des Ablehnungsgesuchs nur solche Handlungen vorzunehmen, die keinen Aufschub gestatten. (2)<sup>1</sup>Wird ein Richter während der Verhandlung abgelehnt und würde die Entscheidung über die Ablehnung eine Vertagung der Verhandlung erfordern, so kann der Termin unter Mitwirkung des abgelehnten Richters fortgesetzt werden.<sup>2</sup>Wird die Ablehnung für begründet erklärt, so ist der nach Anbringung des Ablehnungsgesuchs liegende Teil der Verhandlung zu wiederholen. '''(Quellinfo = Buch "ZPO" S. 31 ff.)''' = § 48 Selbstablehnung: Ablehnung von Amts wegen. = Das für die Erledigung eines Ablehnungsgesuchs zuständige Gericht hat auch dann zu entscheiden, wenn ein solches Gesuch nicht angebracht ist, ein Richter aber von einem Verhältnis Anzeige macht, das eine Ablehnung rechtfertigen könnte, oder wenn aus anderer Veranlassung Zweifel darüber entstehen, ob ein Richter kraft Gesetzes ausgeschlossen sei. '''(Quellinfo = Buch "ZPO" S. 31 ff.)''' = § 49 Urkundsbeamte. = Die Vorschriften dieses Titels sind auf den Urkundsbeamten der Geschäftsstelle entsprechend anzuwenden; die Entscheidung ergeht durch das Gericht, bei dem er angestellt ist. :::::::'''Abschnitt 2 Parteien''' ::::'''Titel 1. Parteifähigkeit: Prozessfähigkeit''' = § 50 Parteifähigkeit. = (1) Parteifähig ist, wer rechtsfähig ist. (2) Ein Verein, der nicht rechtsfähig ist, kann klagen und verklagt werden; in dem Rechtsstreit hat der Verein die Stellung eines rechtsfähigen Vereins. = § 51 Prozessfähigkeit; gesetzliche Vertretung; Prozessführung. = (1) Die Fähigkeit einer Partei, vor Gericht zu stehen, die Vertretung nicht prozessfähiger Parteien durch andere Personen (gesetzliche Vertreter) und die Notwendigkeit einer besonderen Ermächtigung zur Prozessführung bestimmt sich nach den Vorschriften des bürgerlichen Rechts, soweit nicht die nachfolgenden Paragraphen abweichende Vorschriften enthalten. (2) Das Verschulden eines gesetzlichen Vertreters steht dem Verschulden der Partei gleich. (3) Hat eine nicht prozessfähige Partei, die eine volljährige natürliche Person ist, wirksam eine andere natürliche Person schriftlich mit ihrer gerichtlichen Vertretung bevollmächtigt, so steht diese Person einem gesetzlichen Vertreter gleich, wenn die Bevollmächtigung geeignet ist, gemäß '''''[''bis 31.12.2022:'''§ 1896 Abs. 2 Satz 2 des Bürgerlichen Gesetzbuchs'']''''' [ab 1.1.2023:''' ''§ 1814 Absatz 3 Satz 2 Nummer 1 des Bürgerlichen Gesetzbuchs''']''''' die Erforderlichkeit einer Betreuung entfallen zu lassen. = § 52 Umfang der Prozessfähigkeit. = (1)<sup>1</sup> Eine Person ist insoweit prozessfähig, als sie sich durch Verträge verpflichten kann = § 53 Prozessfähigkeit bei Betreuung oder Pflegschaft. = ''[§ 53 bis 31.12.2022:]'' Wird in einem Rechtsstreit eine prozessfähige Person durch einen Betreuer oder Pfleger vertreten, so steht sie für den Rechtsstreit einer nicht prozessfähigen Person gleich. = § 53 Prozessfähigkeit bei rechtlicher Betreuung. = ''[§ 53 ab 1.1.2023:]'' (2) Bei Personen, für die ein Betreuer bestellt ist, richtet sich die Prozessfähigkeit nach den allgemeinen Vorschriften.(2)<sup>1</sup>Wird ein Betreuer in einem Rechtsstreit durch einen Betreuer vertreten, kann der Betreuer in jeder Lage des Verfahrens gegenüber dem Prozessgericht schriftlich oder zu Protokoll der Geschäftsstelle erklären, dass der Rechtsstreit fortan ausschließlich durch ihn geführt wird (Ausschließlichkeitserklärung).<sup>2</sup>Mit Eingang der Ausschließlichkeitserklärung steht der Betreute für den weiteren Rechtsstreit einer nicht prozessfähigen Person gleich.<sup>3</sup>Der Betreuer kann die Ausschließlichkeitserklärung jederzeit mit Wirkung für die Zukunft zurücknehmen. = § 53a = (aufgehoben) = § 54 Besondere Ermächtigung zu Prozesshandlungen. = Einzelne Prozesshandlungen, zu denen nach den Vorschriften des bürgerlichen Rechts eine besondere Ermächtigung erforderlich ist, sind ohne sie gültig, wenn die Ermächtigung zur Prozessführung im Allgemeinen erteilt oder die Prozessführung auch ohne eine solche Ermächtigung im Allgemeinen statthaft ist. '''(Quellinfo = Buch "ZPO" S. 32 ff.)''' = § 55 Prozessfähigkeit von Ausländern. = Ein Ausländer, dem nach dem Recht seines Landes die Prozessfähigkeit mangelt, gilt als prozessfähig, wenn ihm nach dem Recht des Prozessgerichts die Prozessfähigkeit zusteht. '''(Quellinfo = Buch "ZPO" S. 33 ff.)''' = § 56 Prüfung von Amts wegen. = (1) Das Gericht hat den Mangel der Parteifähigkeit, der Prozessfähigkeit, der Legitimation eines gesetzlchen Vetreters und der erforderlichen Ermächtigung zur Prozessführung von Amts wegen zu berücksichtigen. '''(Quellinfo = Buch "ZPO" S. 33 ff.)''' = § 57 Prozesspfleger. = (1) Soll eine nicht prozessfähige Partei verklagt werden, die ohne gesetzlichen Vertreter ist, so hat ihr der Vorsitzende des Prozess-Eintritt des gesetzten Vertreters einen besonderen Vertreter zu bestellen. '''(Quellinfo = Buch "ZPO" S. 33 ff.)''' = § 58 Prozesspfleger bei herrenlosem Grundstück oder Schiff. = (1) Soll ein Recht an einem Grundstück, das von dem bisherigen Eigentümer nach § 928 des Bürgerlichen Gesetzbuchs aufgegeben und von dem Aneignungsberechtigten noch nicht erworben worden ist,im Wege der Klage geltend gemacht werden, so hat der Vorsitzende des Prozessgerichts auf Antrag einen Vertreter zu bestellen, dem bis zur Eintragung eines neuen Eigentümers die Wahrnehmung, der sich aus dem Eigentum ergebenden Rechte und Verpflichtungen im Rechtsstreit obliegt. (2) Absatz 1 gilt entsprechend, wenn im Wege der Klage ein Recht an einem eingetragenen Schiff oder Schiffsbauwerk geltend gemacht werden soll, da von dem bisherigen Eigentümer nach § 7 des Gesetztes über Rechte an eingetragenen Schiffen und Schiffsbauwwerken vom 15. November 1940 (RGB1. IS. 1499) aufgegeben und von Aneignungsberechtigten noch nicht erworben worden ist. '''(Quellinfo = Buch "ZPO" S. 33 ff.)''' :::'''Titel 2. Streitgenossenschaft''' = § 59 Streitgenossenschaft bei Rechtsgemeinschaft oder Identität des Grundes. = Mehrere Personen können als Streitgenossen gemeinschaftlich klagen oder verklagt werden, wenn Sie hinsichtlich des Streitgegenstandes in Rechtsgemeinschaft stehen oder wenn sie aus demselben tatsächlichen und rechtlichen Grund berechtigt oder verpflichtet sind. = § 60 Streitgenossenschaft bei Gleichartigkeit der Ansprüche. = Mehrere Personen können auch dann als Streitgenossen gemeinschaftlich klagen oder verklagt werden, wenn gleichartige und auf einem im Wesentlichen gleichartigen tatsächlichen und rechtlichen Grund beruhende Ansprüche oder Verpflichtungen. den Gegenstand des Rechtsstreits bilden. '''(Quellinfo = Buch "ZPO" S. 34 ff.)''' = § 61 Wirkung der Streitgenossenschaft. = Streitgenossen stehen, soweit nicht aus den Vorschriften des bürgerlichen Rechts oder dieses Gesetzes sich ein anderes egibt, dem Gegner dergestallt als Einzelne <sup>1)</sup> gegenüber, dass die Handlungen des einen Streitgenossen dem anderen weder zum Vorteil noch zum Nachteil gereichen. '''(Quellinfo = Buch "ZPO" S. 34 ff.)''' = § 62 Notwendige Streitgenossenschaft. = (1) Kann das streitige Rechtsverhäntlnis allen Streigenossen gegenüber nur einheitlich festgestellt werden oder werden, wenn ein Termin oder eine Frist nur von einzelnen Streitgenosen versäumt wird, die säumigen Steitgenossen als durch die nicht säumigen vertreten angesehen. (2) Die säumigen Streitgenossen ind auch in dem späteren Verfahren zuzuziehen. '''(Quellinfo = Buch "ZPO" S. 34 ff.)''' = § 63 Prozessbetrieb; Ladungen. = Das Recht zur Betreibung des Prozesses steht jedem Streitgenossen zu; zu allen Terminen sind sämtliche Streitgenossen zu laden: '''(Quellinfo = Buch "ZPO" S. 34 ff.)''' :::'''Titel 3. Beteiligung Dritter am Rechtsstreit''' = § 64 Hauptintervention. = Wer die Sache oder das Recht, worüber zwischen anderen Personen ein Rechtsstreit anhängig geworden ist, ganz oder teilweise für sich in Anspruch nimmt, ist bis zur rechtskräftigen Entscheidung dieses Rechtsstreits berechtigt, seinen Anspruch durch eine gegen beide Parteien gerichtete Klage bei dem Gericht geltend zu machen, vor dem der Rechtsstreit im ersten Rechtszug anhängig wurde. '''(Quellinfo = Buch "ZPO" S. 34 ff.)''' = § 65 Aussetzung des Hauptprozesses. = Der Hauptprozess kann auf Antrag einer Partei bis zur rechtskräfigten Entscheidung über die Hauptintervention ausgesetzt werden. '''(Quellinfo = Buch "ZPO" S. 34 ff.)''' = § 66 Nebenintervention. = (1) Wer ein rechtliches Interesse daran hat, dass in einem zwischen anderen Personen anhängigen Rechtsstreit die eine Partei obsiege, kann dieser Partei zum Zwecke ihrer Unterstützung beitreten. (2) Die Nebenintervention kann in jeder Lage des Rechtsstreits bis zur rechtskräftigen Entscheidung auch in Verbindung mit der Einlegung eines Rechtsmittels, erfolgen. '''(Quellinfo = Buch "ZPO" S. 34 ff.)''' = § 67 Rechtsstellung des Nebenintervenienten. = <sup>1</sup>Der Nebenintervenient muss den Rechtsstreit in der Lage annehmen, in der er sich zur Zeit seinss Beitritts befindet; er ist berechtigt, Angriffs- und Verteidigungsmittel geltend zu machen und alle Prozeesshanduungen wirksam vorzunehmen, insoweit nicht seine Erklärungen und Handlungen mit Erklärungen und Handlungen der Hauptpartei in Widerspruch stehen. <sup>2</sup>Für ihn gelten die §§ 141 und 278 Absatz 3 entsprechend. = § 68 Wirkung der Nebenintervention. = Der Nebenintervenient wird im Verhältnis zu der Hauptpartpartei mit der Behauptung nicht gehört, dass der Rechtsstreit, wie er dem Richter vorgelegt habe, unrichtig entscheiden sei; er wird mit der Behauptung, das die Hauptpartei den Rechtsstreit mangelhaft geführt habe, nur insoweit gehört, als er durchh die Lage des Rechtsstreits zur Zeit seines Beitritts oder durch Erklärungen und Handlungen der Hauptpartei verhindert worden ist, Angriffs- oder Verteidigungsmittel geltend zu machen, oder als Angriffs- oder Verteidigungsmittel, die ihm unbekannt waren, von der Hauptpartei absichtlich oder durch grobes Verschulden nicht geltend gemacht sind. = § 69 Streitgenössische Nebenintervention. = Insofern nach den Vorschriften des bürgerliches Rechts die Rechtskraft der in dem Hauptprozess erlassenen Entscheidung auf das Rechtsverhältnis des Nebenintervenienten zu dem Gegner von Wirksamkeit ist, gilt der Nebenintervenient im Sinne des § 61 als Streitgenosse de Hauptpartei. = § 70 Beitritt des Nebenintervenienten. = (1) <sup>1</sup> Der Beitritt des Nebenintervenienten erfolgt durch Einreichung eines Schriftsatzes bei dem Prozessgericht und, wenn er mit der Einlegung eines Rechtsmitels verbunden wird, durch Einreichung eines Schriftsatzes bei dem Rechtsmittelgericht. <sup>2</sup> Der Schriftsatz ist beiden Parteien zuzustellen und muss enthalten:<br> 1. die Bezeichnung der Parteien und des Rechtssteireits; <br> 2. die bestimmte Angabe des Interesses, das der Nebenintervenient hat; <br>3. die Erklärung des Beitritts. :(2) Außerdem gelten die allgemeinen Vorschriften über die vorbereitenden Schriftsätze. ''(Quellinfo = Buch "ZPO" S. 35 ff.)''' = § 71 Zwischenstreit über Nebenintervention. = (1)<sup>1</sup> Über den Antrag auf Zurückweisung einer Nebenintervention wird nach mündlicher Verhandlung unter den Parteien und dem Nebenintervenienten entschieden.<sup>2</sup> Der Nebenintervenient ist zuzulassen, wenn er sei Interesse glaubhaft macht.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(2) Gegen das Zwischenurteil findet sofortige Beschwerde statt.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(3) Solange nicht die Unzulässigkeit der Intervention rechtskräftig ausgesprochen ist, wird der Intervenient im Hauptverfahren zugezogen. ''(Quellinfo = Buch "ZPO" S. 35 ff.)''' = § 72 Zulässigkeit der Streitverkündigung. = (1) Eine Partei, die für den Fall des ihr ungünstigen Ausganges des Rechtsstreits einen Anspruch auf Gewährleistung oder Schadloshaltung gegen einen Dritten erheben zu können glaubt oder den Anspruch eines Dritten besorgt, kann bis zur rechtskräftigen Entscheidung des Rechtsstreits dem Dritten gerichtlich den Streit verkünden.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(2)<sup>1</sup> Das Gericht und ein vom Gericht ernannter Sachverständiger sind nicht Dritter im Sinne dieser Vorschrift.&nbsp;<sup>2</sup>§73 Satz 2 ist nicht anzuwenden.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(3)&nbsp;&nbsp;&nbsp;Der Dritte ist zu einer weiteren Streitverkündung berechtigt. '''(Quellinfo = Buch "ZPO" S. 35 ff.)''' = § 73 Form der Streitverkündigung. = &nbsp;<sup>1</sup>Zum Zwecke der Streitverkündung hat die Partei einen Schriftsatz einzureichen, in dem der Grund der Streitverkündung und die Lage des Rechtsstreits anzugeben ist.&nbsp;<sup>2</sup>Der Schriftsatz ist dem Dritten zuzustellen und dem Gegner des Streitverkünders in Abschrift mitzuteilen.&nbsp;<sup>3</sup>Die Streitverkündung wird erst mit der Zustellung an den Dritten wirksam.'''(Quellinfo = Buch "ZPO" S. 35 ff.)''' = § 74 Wirkung der Streitverkündigung. = (1) Wenn der Dritte dem Streitverkünder beitritt, so bestimmt sich sein Verhältnis zu den Parteien nach den Grundsätzen über die Nebenintervention. <br> (2) Lehnt der Dritte den Beitritt ab oder erklärt er sich nicht, so wird der Rechtsstreit ohne Rücksicht auf ihn fortgesetzt. <br> (3) In allen Fällen dieses Paragraphen sind gegen den Dritten die Vorschriften des § 68 mit der Abweichung anzuwenden, dass statt der Zeit des Beitritts die Zeit entscheidet, zu welcher der Beitritt infolge der Streitverkündung möglich war. '''(Quellinfo = Buch "ZPO" S. 36 ff.)''' = § 75 Gläubigerstreit. = <sup>1</sup>Wird von dem verklagten Schuldner einem Dritten, der die geltend gemachte Forderung für sich in Anspruch nimmt, der Streit verkündet und tritt der Dritte in den Streit ein, so ist der Beklagte, wenn er den Betrag der Forderung zugunsten der streitenden Gläubiger unter Verzicht auf das Recht zur Rücknahme hinterlegt, auf seinen Antrag aus dem Rechtsstreit unter Verurteilung in die durch seinen unbegründeten Widerspruch veranlassten Kosten zu entlassen und der Rechtsstreit über die Berechtigung an der Forderung zwischen den streitenden Gläubigern allein fortzusetzen.<sup>2</sup>Dem Obsiegenden ist der hinterlegte Betrag zuzusprechen und der Unterliegende auch zur Erstattung der dem Beklagten entstandenen, nicht durch dessen unbegründeten Widerspruch veranlassten Kosten, einschließlich der Kosten der Hinterlegung zu verurteilen. = § 76 Urheberbenennung bei Besitz. = (1)<sup>1</sup>Wer als Besitzer einer Sache verklagt ist, die er auf Grund eines Rechtsverhältnisse der im § 868 des Bürgerlichen Gesetzbuchs bezeichneten Art zu besitzen behauptet, kann vor der Verhandlung zur Hauptsache unter Einreichung eines Schriftsatzes, in dem er den mittelbaren Besitzer benennt, und einer Streiverkündigungsschrift die Ladung des mittelbaren Besitzers zur Erklärung beantragen.<sup>2</sup> Bis zu dieser Erklärung oder bis zum Schluss des Termins, in dem sich der Benannte zu erklären hat, kann der Beklagte die Verhandlung zur Hauptsache verweigern. <br> (2) Bestreitet der Benannte die Behauptung des Beklagten oder erklärt er sich nicht, so ist der Beklagte berechtigt, dem Klageantrage zu genügen. <br> (3)<sup>1</sup>Wird die Behauptung des Beklagten von dem Benannten als richtig anerkannt, so ist dieser berechtigt, mit Zustimmung des Beklagten an dessen Stelle zu übernehmen.<sup>2</sup>Die Zustimmung des Klägers ist nur insoweit erforderlich, als er Ansprüche geltend macht, die unabhängig davon sind, dass der Beklagte auf Grund eines Rechtsverhältnisses der im Absatz 1 bezeichneten Art besitzt.<br>(4)<sup>1</sup>Hat der Benannte den Prozess übernommen, so ist der Beklagte auf seinen Antrag von der Klage zu entbinden.<sup>2</sup>Die Entscheidung ist in Ansehung der Sache selbst auch gegen den Beklagten wirksam und vollstreckbar. = § 77 Urheberbenennung bei Eingentumsbeeinträchtigung. = Ist von dem Eigentümer einer Sache oder von demjenigen, dem ein Recht an einer Sache zusteht, wegen einer Beeinträchtigung des Eigentums oder seines Rechts Klage auf Beseitigung der Beeinträchtigung oder auf Unterlassung weiter Beeinträchtigungen erhoben, so sind die Vorschriften des § 76 entsprechend an eines Dritten vorgenommen zu haben behauptet. = § 78 Anwaltsprozess. = = § 78a = (weggefallen) = § 78b Notanwalt. = (1) Insoweit eine Vertretung durch Anwälte geboten ist, hat das Prozessgericht einer Partei auf ihren Antrag durch Beschluss für den Rechtszug einen Rechtsanwalt zur Wahrnehmung ihrer Rechte beizuordnen, wenn sie einen zu ihrer Vertretung bereiten Rechtsanwalt nicht findet und die Rechtsverfolgung oder Rechtsverteidigung nicht mutwillig oder aussichtslos erscheint. (2) Gegen den Beschluss, durch den die Beiordnung eines Rechtsanwalts abgelehnt wird, findet die sofortige Beschwerde statt. = § 78c Auswahl des Rechtsanwalts. = = § 79 Parteiprozess. = = § 80 Prozessvollmacht. = <sup>1</sup>Die Vollmacht ist schriftlich zu den Gerichtsakten einzureichen. <sup>2</sup>Sie kann nachgereicht werden; hierfür kann das Gericht eine Frist bestimmen. = § 81 Umfang der Prozessvollmacht. = = § 82 Geltung für Nebenverfahren. = Die Vollmacht für den Hauptprozess umfasst die Vollmacht für das eine Hautintervention, einen Arrest oder eine einstweilige Verfügung betreffende Verfahren. '''(Quellinfo = Buch "ZPO" S. 39 ff.)''' = § 83 Beschränkung der Prozessvollmacht. = = § 84 Mehrere Prozessbevollmächtigte. = <sup>1</sup>Mehrere Bevollmächtigte sind berechtigt, sowohl gemeinschaftlich als einzeln die Partei zu vertreten. <sup>2</sup>Eine abweichende Bestimmung der Vollmacht hat dem Gegner gegenüber keine rechtliche Wirkung = § 85 Wirkung der Prozessvollmacht. = = § 86 Fortbestand der Prozessvollmacht. = = § 87 Erlöschen der Vollmacht. = = § 88 Mangel der Vollmacht. = = § 89 Vollmachtloser Vertreter. = = § 90 Beistand. = ::::::::::::: '''Titel 5 Prozesskosten''' = § 91 Grundsatz und Umfang der Kostenpflicht. = = § 91a Kosten bei Erledigung der Hauptsache. = = § 92 Kosten bei teilweisem Obsiegen. = = § 93 Kosten bei sofortigem Anerkenntnis. = = § 93a = (aufgehoben) = § 93b Kosten bei Räumungsklagen. = = § 93c, 93d = = § 94 Kosten bei übergegangenem Anspruch. = = § 95 Kosten bei Säumnis oder Verschulden. = = § 96 Kosten erfolgloser Angriff- oder Verteidigungsmittel. = = § 97 Rechtsmittelkosten. = = § 98 Vergleichtskosten. = = § 99 Anfechtung von Kostenentscheidungen. = = § 100 Kosten bei Streitgenossen. = = § 101 Kosten einer Nebenintervention. = = § 102 = (weggefallen) = § 103 Kostenfestsetzungsgrundlage: Kostenfestsetzungsantrag. = = § 104 Kostenfestsetzungsverfahren = = § 105 Vereinfachter Kostenfestsetzungsbeschluss. = = § 106 Verteilung nach Quoten. = = § 107 Änderung nach Streitwertfestsetzung. = (1)<sup>1</sup> Ergeht nach der Kostenfestsezung eine Entscheidung, durch die der Wert des Streitgegenstandes festgesetzt wird, so ist, falls diese Entscheidung von der Wertberechnung abweicht, die der Kostenfestsetzung zugrunde liegt, auf Antrag die Kostengestsetzung entsprechend abzuändern.<sup>2</sup>Über den Antrag entscheidet das Gericht des ersten Rechtszuges. (2) <sup>1</sup> Der Antrag ist binnen der Frist von einem Monat bei der Geschäftsstelle anzubringen. <sup>2</sup>Die Frist beginnt mit der Zustellung und wenn es einer solchen nicht bedarf, mit der Verkündung des den Wert des Streitgegenstandes festsetzenden Beschlusses. (3) Die Vorschriften des § 104 Abs. 3 sind anzuwenden.'''(Quellinfo = Buch "ZPO" S. 45 ff.)''' = § 108 Art und Höhe der Sicherheit. = = § 109 Rückgabe der Sicherheit. = = § 110<sup>1)</sup> Prozesskostensiocherheit. = = § 113 Fristbestimmung für Prouesskostensicherheit. = (1) <sup>1</sup>Das Gericht hat dem Kläger bei Anordnung der Sicherheitsleistung eine Frist zu bestimmen, binnen der die Sicherheit zu leisten ist. <sup>2</sup>Nach Ablauf der Frist ist auf Antrag des Beklagten, wenn die Sicherheit bis zur Entscheidung nicht geleistet ist. die Klage für zurückgenommen zu erklären oder, wenn über ein Rechtsmittel des Klägers zu verhandeln ist, dieses zu verwerfen. = § 115 Einsatz von Einkommen und Vermögen. = (1) <sup>1</sup>Die Partei hat ihr Einkommen einzusetzen. <sup>2</sup>Zum Einkommen gehören alle Einkünfte in Geld oder Geldwert. <sup>3</sup>Von ihm sin abzusetzen: 1. a) die in §82 Abs. 2 des Zwölften Buches Sozialgesetzbuch<sup>2)</sup>bezeichneten Beträge: '''(Quellinfo = Buch "ZPO" S. 46 ff.)''' = = <sup>1</sup>Vgl. Art. 220 bis 24 Haager Übereinkommen über den Zivilprozess v. 1.3.1954 (BGB1. 1958 II S 576, 577). Siehe ferner § 11 G über die Rechtsstellung heimatloser Ausländer im Bundesgebiet v. 25.4.1951 (BGB1 I.S. 269), zuletzt geänd. durch G v. 30.7.2004 (BGB1. I S. 1950) und für Mitglieder der in der Bundesrepublik stationierten ausländischen Truppen. vgl. Art. 31 Zusatzabkommen zum NATO-Truppenstatut v. 3.8.1959 (BGB1. 1961 II S. 1218), zuletzt geändert. durch Abk. v. 28.9.1994 (BGB1. II S. 2598). <sup>2</sup>§ 82 Abs. 2 und 3 des Zwölften Buches Sozialgesetzbuch v. 27.12.2003 (BGB1, I S. 3022, 3023),"(2)<sup>1</sup>Von dem Einkommen sind abzusetzen <br> 1. auf die Einkommen entrichtete Steuern. <br> 2. Pflichtbeiträge zur Sozialversicherung einschließlich der Beiträge zur Arbeitsförderung. →</br> (Fortsetzung der Anm. von voriger Seite)<br> 3. Beiträge zu öffentlichen oder privaten Versicherungen oder ähnlichen Einrichtungen, soweit diese Beiträge gesetzlich vorgeschrieben oder nach #grund und Höhe angemessen sind, sowie geförderte Altersvorsorgeverträge nach § 82 des Einkommensteuergesetzes, soweit sie den Mindeststeigenbetrag nach § 86 des Einkommensteuergesetzes nicht überschreiten, und <br>4. die mit der Erzielen des Einkommens verbundenen notwendigen Ausgaben.<br><sup>2</sup>Erhält eine leistungsberechtigte Person aus einer Tätigkeit Bezüge oder Einnahmen, die nach § 3 Nummer 12,26, 26a oder 26b des Einkommensteuergesetzes steuerfrei sind oder die als Taschengeld Jugendfreiwilligendienstegesetzes gezahlt werden, ist abweichend von Satz 1 Nummer 2 bis 4 und den Absätzen 3 und 6 ein Betrag von bis zu 250 Euro monatlich nicht als Einkommen zu berücksichtigen.<br><sup>3></sup>Soweit ein Betrag nach Satz 2 in Anspruch genommen wird, gelten die Beträge nach Absatz 3 Satz 1 zweiter Halbsatz und nach Absatz 6 Satz 1 zweiter Halbsatz insoweit als ausgeschöpft. <br>(3)<sup>1</sup>Bei der Hilfe zum Lebensunterhalt und Grundsicherung im Alter und bei Erwerbsminderung ist ferner ein Betrag in Höhe von 30 vom Hundert des Einkommens aus selbständiger und nichtselbständiger Tätigkeit der Leistungsberechtigten abzusetzen, höchstens jedoch 50 vom Hundert der Regelbedarfsstufe 1 nach der Anlage zu § 28. <sup>2</sup>Abweichend von Satz 1 ist bei einer Beschäftigung in einer Werkstatt für behinderte Menschen oder bei einem anderen Leistungsanbieter nach § 60 des Neunten Buches v. 23.12.2016 (BGB1. I S. 3234), zuletzt geändert. durch G. v 16.6.2021 (BGB1. I S. 1810) von dem Entgelt ein Achtel der Regelbedarfsstufe 1 nach der Anlage zu § 28 zuzüglich 50 vom Hundert des diesen Betrag übersteigenden Entgelts abzusetzen. <sup>3</sup>Im Übrigen kann in begründeten Fällen ein anderer als in Satz 1 festgelegter Betrag vom Einkommen abgesetzt werden." Abschnitt 2. Parteien <br><br> b) bei Parteien, die ein Einkommen aus Erwerbstätigkeit erzielen, ein Betrag in Höhe von 50 vom Hundert des Regelsatzes für den alleinstehenden oder alleinerziehenden Leistungsberechtigten vom Bund gemäß der Regelbedarfsstufe 1 nach der Anlage zu § 28 des Zwölften Buches Sozialgesetzbuch festgesetzt oder fortgeschrieben worden ist.<br> 2 a.) für die Partei und ihren Ehegatten oder ihren Lebenspartner jeweils ein Betrag in Höhe des um 10 vom Hundert erhöhten Regelsatzes, der für den alleinstehenden oder Alleinerziehenden Leistungsberechtigten vom Bund gemäß der Regelbedarsstufe 1 nach der Anlage zu § 28 des Zwölften Buches Sozialgesetzbuch festgesetzt oder fortgeschrieben worden ist;<br> b) bei weiteren Unterhaltsleistungen auf Grund gesetzlicher Unterhaltspflicht für jede unterhaltsberechtigte Person jeweils ein Betrag in Höhe des um 10 vom Hundert erhöhten Regelsatzes, der für eine Person ihres Alters vom Bund gemäß den Regelbedarfsstufen 3 bis 6 nach der Anlage zu § 28 des Zwölften Buches Sozialgesetzbuch festgesetzt oder fortgeschrieben worden ist;<br> 3. die Kosten der Unterkunft und Heizung, soweit sie nicht in einem auffälligen Missverhältnis zu den Lebensverhältnissen der Partei stehen;<br> 4. Mehrbedarfe nach § 21 des Zweiten Buches Sozialgesetzbuch und nach § 30 des Zwölften Buches Sozialgesetzbuch; <br> 5. weitere Beträg, soweit dies mit Rücksicht auf besondere Belastungen angemessen ist; § 1610a dass Bürgerlichen Gesetzbuchs gilt entsprechend.<br></br> <sup>4</sup>Maßgeblich sind die Beträge, die zum Zeitpunkt der Bewilligung der Prozesskostenhilfe gelten.<aup>5</sup>Soweit am Wohnsitz der Partei aufgrund einer Neufestsetzung oder jeder Fortschreibung nach § 20 Absatz 2 bis 4 des Zwölften Buches Sozialgesetzbuch höhere Regelsätze gelten, sind diese heranzuziehen. <sup>6</sup>Das Bundesministerium der Justiz und für Verberbraucherschutz gibt bei jeder Neufestsetzung oder jeder Fortschreibung die maßgebenden Beträge nach Satz 3 Nummer 1 Buchstabe b und Nummer 2 und nach Satz 5 im Bundesgesetzblatt bekannt. <sup>'''1)'''</sup>&emsp;<sup>7</sup>Diese Beträge sind, soweit sie nicht volle Euro ergeben, bis zu 0,49 Euro abzurunden und von 0,50 Euro an aufzurunden. <sup>8</sup>Die Unterhaltsfreibeträge nach Satz 3 Nr. 2 vermindern sich um eigenes Einkommen der Unterhaltsberechtigten Person.<sup>9</sup>Wird eine Geldrente gezahlt, so ist sie anstelle des Freibetrages abzusetzen, soweit dies angemessen ist. (2)<sup>1</sup>Von dem nach Abzügen verbleibenden Teil des monatlichen Einkommens (einzusetzendes Einkommen) sind Monatsraten in Höhe der Hälfte des einzusetzenden Einkommens festzusetzen; die Monatsraten sind auf volle Euro abzurunden. <sup>2</sup>Beträgt die Höhe einer Monatsrate weniger als 10 Euro, ist von der Festsetzung der Monatsraten abzusehen.<sup>3</sup>Bei einem einzusetzenden Einkommen von mehr als 600 Euro beträgt die Monatsrate 300 Euro zuzüglich des Teils des einzusetzenden Einkommens, der 600 Euro übersteigt.<sup>4</sup>Unabhängig von der Zahl der Rechtszüge sind höchstens 48 Monatsraten aufzubringen. (3)<sup>1</sup>Die Partei hat ihr Vermögen einzusetzen, soweit dies zumutbar ist. <sup>2</sup>§9 des Zwölften Buches Sozialgesetzbuch gilt entsprechend.(4) Prozesskostenhilfe wird nicht bewilligt, wenn die Kosten der Prozessführung der Partei vier Monatsraten und die aus dem Vermögen aufzubringenden Teilbeträge voraussichtlich nicht übersteigen. = = {| class="wikitable" style="text-align: center; color: black;" | |Freibetrag <br> Bund <br></br> |Freibetrag in <br>den Land-<br>kreisen Fürs-<br>tenfeldbruck<br>und<br>Starn-<br>berg</br> |Freibetrag im <br>Landkreis<br>München<br> |Freibetrag in <br>der Landes-<br>hauptstadt<br>München<br> |- |Parteien, die ein Einkommen aus Er-<br> werbtätigkeit erzielen (§ 115 Absatz 1 <br> Satz 3 Nummer 1 Buchstabe b der <br> Zivilprozessordnung) |223 Euro |235 Euro |235 Euro |234 Euro |- |Partei, Ehegatte oder Lebenspartner<br> (§ 115 Absatz 1 Satz 3 Nummer 2 <br> Buchstabe a der Zivilprozessverordnung) </br> |491 Euro |516 Euro |517 Euro |515 Euro |- |Freibetrag der unterhaltsberechtigte Er-<br> wachsene (§ 115 Absatz 1 Satz 3 Num- <br> mer 2 Buchstabe b der Zivilprozessord-<br> nungRegelbedarfsstufe 3) </br> |393 Euro |414 Euro |414 Euro |411 Euro |- |Freibetrag für unterhaltsberechtigte Ju- <br> endliche vom Beginn des 15. bis zur <br> Vollendung des 18. Lebensjahres (§ 115 <br> Absatz 1 Satz 3 Nummer 2 Buchstabe <br> b der Zivilprozessordnung Regelte- <br> darfstufe 4) </br> |410 Euro |430 Euro |432 Euro |429 Euro |- |Freibetrag für unterhaltsberechtigte <br> Kinder vom Beginn des siebten bis zur <br> Vollendung des 14. Lebensjahres (§ 115 <br> Absatz 1 Satz 3 Nummer 2 Buchstabe<br> b der Zivilprozessordnung Regel- <br> darfstufe 5) </br> |340 Euro |353 Euro |359 Euro |353 Euro |- |Freibetrag für unterhaltsberechtigte <br> Kinder bis zur Vollendung des sechsten <br> Lebensjahres (§ 115 Absatz 1 Satz 3<br>Nummer 2 Buchstabe b der Zivilpro- <br> zessordnung Regelbedarfsstufe 6) </br> |311 Euro |325 Euro |328 Euro |323 Euro" |- |} = § 116 Partei kraft Amtes: juristische Person; parteifähige Vereinigung. = <sup>1</sup> Prozesskostenhilfe erhalten auf Antrag 1. eine Partei kraft Amtes, wenn die Kosten aus der verwalteten Vermögensmasse nicht aufgebracht werden können und den am Gegenstand des Rechtsstreite wirtschaftlich Beteiligten nicht zuzumuten ist, die Kosten aufzubringen; 2. eine juristische Person oder parteifähige Vereinigung, die im Inland, in einem anderen Mitgliedstaat der Europäischen Union oder einem anderen Vertragsstaates des Abkommens über den Europäischen Wirtschaftsraum gegründet und dort ansässig ist, wenn die Kosten weder von ihr noch von den am Gegenstand des Rechtsstreits wirtschaftlich Beteiligten aufgebracht werden können und wenn die Unterlassung der Rechtsverfolgung oder Rechtsverteidigung allgemeinen Interessen zuwiderlaufen würde. <sup>2</sup>§ 114 Absatz 1 Satz 1 letzter Halbsatz und Absatz 2 ist anzuwenden. <sup>3</sup> Können die Kosten nur zum Teil oder nur in Teilbeträgen aufgebracht werden, so sind die entsprechenden Beträge zu zahlen. = § 117 Antrag. = (1)<sup>1</sup>Der Antrag auf Bewilligung der Prozesskostenhilfe ist bei dem Prozessgericht zu stellen; er kann vor der Geschäftsstelle zu Protokoll erklärt werden. <sup>2</sup>In dem Antrag ist das Streitverhältnis unter Angabe der Beweismittel darzustellen. <sup>3</sup>Der Antrag auf Bewilligung von Prozesskostenhilfe für die Zwangsvollstreckung ist bei dem für die Zwangsvollstreckung zuständigen Gericht zu stellen.<br>(2)<sup>1</sup>Dem Antrag sind eine Erklärung der Partei über ihre persönlichen und wirtschaftlichen Verhältnisse (Familienverhältnisse, Beruf , Vermögen , Einkommen und Lasten) sowie entsprechende Belege beizufügen. <sup>2</sup>Die Erklärung und die Belege dürfen dem Gegner nur it Zustimmung der Partei zugänglich gemacht werden<sup>1)</sup>es sei denn, der Gegner hat gegen den Antragsteller nach den Vorschriften des bürgerlichen Rechts einen Anspruch auf Auskunft über Einkünfte und Vermögen des Antragstellers.<sup>3</sup>Dem Antragsteller ist vor der Übermittlung seiner Erklärung an den Gegner Gelegenheit zur Stellungnahme zu geben.<sup>4</sup>Er ist über die Übermittlung seiner Erklärung zu unterrichten.<br>(3)<sup>1</sup>Das Bundesministerium der Justiz und für Verbraucherschutz wird ermächtigt, zur Vereinfachung und Vereinheitlichung des Verfahrens durch Rechtsverordnung <sup>2)</sup>mit Zustimmung des BundesratesFormulare für die Erklärung einzuführen.<sup>2</sup>die Formulare enthalten nach § 120a Absatz 2 Satz 4 erforderliche Belehrung.<br>(4)Soweit Formulare für die Erklärung eingeführt sind, muss sich die Partei ihrer bedienen.</br> <sup>1)</sup>Zeichensetzung amtlich.<br> <sup>2)</sup>Siehe die Prozesskostenhilfeformularverordnung - PKHFV v. 6.1.2014 (BGB1. I S. 34).</br> = § 118 Bewilligungsverfahren. = ::Text folgt noch. = § 123 Kostenerstattung. = Die Bewilligung der Prozesskostenhilfe hat auf die Verpflichtung, die dem Gegner entstandenen Kosten zur erstatten, keinen Einfluß. = § 125 Einziehung der Kosten. = (1) Die Gerichtskosten und die Gerichtsvollzieherkosten können von dem Gegner erst eingezogen werden, wenn er rechtskräftig in die Prozesskosten verurteilt ist. (2) Die Gerichtskosten, vo deren Zahlung der Gegner einstweilen befreit ist, sind von ihm einzuziehen, soweit er rechtskräftig in die Prozesskosten verurteilt oder der Rechtsstreit ohne Urteil über die Kosten beendet ist. = § 140 Beanstanstandung von Prozessleitung oder Fragen. = Wird eine auf die Sachleitung bezügliche Anordnung des Vorsitzenden oder eine von dem Vorsitzenden oder einem Gerichtsmitglied gestellte Frage von einer bei der Verhandlung beteiligten Person als unzulässig beanstandet, so entscheidet das Gericht = § 141 Anordnung des persönlichen Erscheinens. = (1) <sup>1</sup>Das Gericht soll das persönliche Erscheinen beider Parteien anordnen, wenn dies zur Aufklärung des Sachverhalts geboten erscheint. <sup>2</sup>Ist einer Partei wegen großer Entfernung oder aus sonstigem wichtigen Grund die persönliche Wahrnehmung des Termins nicht zuzumuten, so sieht das Gericht von der Anordnung ihres Erscheinens ab. (2)<sup>1</sup>Wird das Erscheinen angeordnet, so ist die Partei von Amts wegen zu laden. <sup>2</sup>Die Ladung ist der Partei selbst mitzuteilen, auch wenn sie einen Prozessbevollmächtigte bestellt hat; der Zustellung bedarf die Ladung nicht.(3)<sup>1</sup>Bleibt die Partei im Termin aus, so kann gegen sie Ordnungsgeld wie gegen einen im Vernehmungstermin nicht erschienen Zeugen festgesetzt werden. <sup>2</sup>Dies gilt nicht, wenn die Partei zur Verhandlung einen Vertreter entsendet, der zur Aufklärung des Tatbestandes in der Lage und zur Abgabe der gebotenen Erklärungen, insbesondere zu einem Vergleichsabschluss ermächtigt ist. <sup>3</sup>Die Partei ist auf die Folgen ihres Ausbleibens in der Ladung hinzuweisen = § 184 Zustellungsbevollmächtigter; Zustellung durch Aufgabe zur Post. = ::Text folgt noch! = § 185 Öffentliche Zustellung. = Die Zustellung kann durch öffentliche Bekanntmachung (öffentliche Zustellung) erfolgen, wenn <br>1. der Aufenthaltsort einer Person unbekannt und eine Zustellung an einen Vertreter oder Zustellungsbevollmächtigten nicht möglich ist,</br> 2. bei juristischen Personen, die zur Anmeldung einer inländischen Geschäftsanschrift zum Handelsregister verpflichtet sind, eine Zustellung weder unter der eingetragenen Anschrift noch unter einer im Handelsregister eingetragenen Anschrift einer für Zustellungen empfangsberichtigten Person oder einer hohen Ermittlungen bekannten anderen inländischen Anschrift möglich ist. <br>3. eine Zustellung im Ausland nicht möglich ist oder keinen Erfolg verspricht oder </br>4. die Zustellung nicht erfolgen kann, weil der Ort der Zustellung die Wohnung einer Person ist, die nach den §§ 18 bis 20 des Gerichtsverfassungsgesetzes <sup>2)</sup> der Gerichtsbarkeit nicht unterliegt. = § 186 Bewilligung und Ausführung der öffentlichen Zustellung. = (1)<sup>1</sup>Über die Bewilligung der öffentlichen Zustellung entscheidet das Prozessgericht. <sup>2</sup> Die Entscheidung kann ohne mündliche Verhandlung ergehen.<br>(2)<sup>1</sup> Die öffentlichen Zustellung erfolgt durch Aushang einer Benachrichtigung an der Gerichtstafel oder durch Einstellung in ein elektronisches Informationssystem, das im Gericht öffentlich zugänglich ist <sup>2</sup> Die Benachrichtigung kann zusätzlich in einem von dem Gericht für Bekanntmachungen bestimmten elektronischen Informations- und Kommunikationssystem veröffentlicht werden. <sup>3</sup> Die Benachrichtigung muss erkennen lassen<br>1.die Person für die zugestellt wird.</br>3. das Datum, das Aktenzeichen des Schriftstücks und die Bezeichnung des Prozessgegenstandes sowie <br>4. die Stelle, wo das Schriftstück eingesehen werden kann.</br><sup>4</sup>Die Benachrichtigung muss den Hinweis enthalten, dass ein Schriftstück öffentlich zugestellt wird und Fristen in Gang gesetzt werden können, nach deren Ablauf Rechtsverluste drohen können. <sup>5</sup> Bei der Zustellung einer Ladung muss die Benachrichtigung den Hinweis enthalten, dass das Schrifstück eine Ladung zu einem Termin enthält, dessen Versäumung Rechtsnachteile zur Folgen haben kann.<br>(3)In den Akten ist zu vermerken, wann die Benachrichtigung ausgehängt und wann sie abgenommen wurde. = § 307 Anerkenntnis. = <sup>1</sup>Erkennt eine Partei den gegen sie geltend gemachten Anspruch ganz oder zum Teil an, so ist sie dem Anerkenntnis gemäß zu verurteilen.<sup>2</sup>Einer mündlichen Verhandlung bedarf es insoweit nicht. = § 309 Erkennende Richter. = Das Urteil kann nur von denjenigen Richtern gefällt werden, welche der dem Urteil zugrunde liegenden Verhandlungen beigewohnt haben. = § 589 (ZPO) Zulässigkeitsprüfung = = § 590 (ZPO) Neue Verhandlung = = § 591 (ZPO) Rechtsmittel = :'''Buch 5. Urkunden- und Wechselprozess''' = § 592 (ZPO) Zulässigkeit. = 1 Ein Anspruch, welcher die Zahlung einer bestimmten Geldsumme oder die Leistung einer bestimmten Menge anderer vertretbarer Sachen oder Wertpapiere zum Gegenstand hat, kann im Urkundenprozess geltend gemacht werden, wenn die sämtlichen zur Begründung des Anspruchs erfolgreichen Tatsachen durch Urkunden bewiesen werden können. 2 Als ein Anspruch, welcher die Zahlung einer Geldsumme zum Gegenstand hat, gilt auch der Anspruch aus einer Hypothek, einer Grundschuld, einer Rentenschuld oder einer Schiffshypothek. '''(Quellinfo = Buch "ZPO" S. 155 ff.)''' = § 593 (ZPO) Klageinhalt: Urkunden. = (1) Die Klage muss die Erklärung enthalten, dass im Urkundenprozess geklagt werde. (2) 1 Die Urkunden müssen in Abschrift der Klage oder einem vorbereitenden Schriftsatz beigefügt werden. 2 Im letzteren Fall muss zwischen der Zustellung des Schriftsätze und dem Termin zur mündlichen Verhandlung ein der Einlassungfrist gleicher Zeitraum liegen. '''(Quellinfo = Buch "ZPO" S. 155 ff.)''' = § 594 (ZPO) (weggefallen) = '''(Quellinfo = Buch "ZPO" S. 156 ff.)''' = § 595 (ZPO) Keine Widerklage; Beweismittel. = (1) Widerklangen sind nicht statthaft. (2) Als Beweismittel sind bezüglich der Echtheit oder Unechtheit einer Urkunde sowie bezüglich anderer als der im § 592 erwähnten Tatsachen nur Urkunden und Antrag auf Parteivernehmung zulässig. (3) Der Urkundenbeweis kann nur durch Vorlegung der Urkunden angetreten werdenden. '''(Quellinfo = Buch "ZPO" S. 156 ff.)''' = § 596 (ZPO) Abstehen vom Urkundenprozess. = Der Kläger kann, ohne dass es der Einwilligiung des Beklagten bedarf, bis zum Schluss der mündlichen Verhandlung von dem Urkundenprozess in der Weise abstehen, dass der Rechtsstreit im ordentlichen Verfahren anhängig bleibt. '''(Quellinfo = Buch "ZPO" S. 156 ff.)''' = § 597 (ZPO) Klageabweisung = (1) Insoweit der in der Klage geltend gemachte Anspruch an sich oder infolge einer Einrede des Beklagten als unbegründet sich darstellt, ist der Kläger mit dem Anspruch abzuweisen. (2) Ist der Urkundenprozess unstatthaft, ist insbesondere ein dem Kläger obliegender Beweis nicht mit den im Urkundenprozess zulässigen Beweismitteln angetreten oder mit solchen Beweismitteln nicht vollständig geführt, so wird die Klage als in der gewählten Prozessart unstatthaft abgewiesen, selbst wenn in dem Termin zur mündlichen Verhandlung der Beklagte nicht erschienen ist oder der Klage nur auf Grund von Einwendungen widersprochen hat, die rechtlich unbegründet oder im Urkundenprozess unstatthaft sind. '''(Quellinfo = Buch "ZPO" S. 157 ff.)''' = § 598 (ZPO) Zurückweisung von Einwendungen = Einwendungen des Beklagten sind, wenn der dem Beklagten obliegende Beweis nicht mit den im Urkundenprozess zulässigen Beweismitteln angetreten oder mit solchen Beweismitteln nicht vollständig geführt ist, als im Urkundenprozess unstatthaft zurückzuweisen. '''(Quellinfo = Buch "ZPO" S. 157 ff.)''' = § 599 (ZPO) Vorbehaltsurteil = (2) Dem Beklagten, welcher dem geltend gemachten Anspruch widersprochen hat, ist in allen Fällen, in denen er verurteilt wird, die Ausführung seiner Rechte vorzubehalten. (2) Enthält das Urteil keinen Vorbehalt so kann die Ergnuzugn des Urteils nach der Vorschrift des § 321 beantragt werden. (3) Das Urteil, das unter Vorbehalt der Rechte ergeht, ist für die Rechtsmittel und die Zwangsvollstreckung als Endurteil anzusehen. '''(Quellinfo = Buch "ZPO" S. 157 ff.)''' = § 600 (ZPO) Nachverfahren. = (1) Wird dem Beklagten die Ausführung seiner Rechte vorbehalten, so bleibt der Rechtsstreit im ordentlichen Verfahren anhängig. (2) Soweit sich in diesem Verfahren ergibt, dass der Anspruch des Klägers unbegründet war, gelten die Vorschriften des § 302 Abs. 4 Satz 2 bis 4. (3) Erscheint in diesem Verfahren eine Partei nicht, so sind die Vorschriften über das Versäumnisurteil entsprechend anzuwenden. '''(Quellinfo = Buch "ZPO" S. 156 ff.)''' = § 601 (ZPO) (weggefallen) = '''(Quellinfo = Buch "ZPO" S. 157 ff.)''' = § 602 (ZPO) Wechselprozess. = Werden im Urkundenprozess Ansprüche aus Wechseln im Sinne des Wechselgesetztes geltend gemacht (Wechselprozess), so sind die nachfolgenden besonderen Vorschriften anzuwenden. '''(Quellinfo = Buch "ZPO" S. 157 ff.)''' ::::: '''Buch 6. 1) (aufgehoben)''' ::::: '''§§ 606-687 1) (ZPO) (aufgehoben)''' ::::: '''(Quellinfo = Buch "ZPO" S. 157 ff.)''' = § 603 (ZPO) Gerichtsstand. = (1) Wechselklagen können sowohl bei dem Gericht des Zahlungsortes als bei dem Gericht angestellt werden, bei dem der Beklagte seinen allgemeinen Gerichtstand hat. (2) Wenn mehrere Wechselverpflichtete gemeinschaftlich verklagt werden, so ist außer dem Gericht des Zahlungsortes das Gericht zuständig, bei dem einer der Beklagten seinen allgemeinen Gerichtstand hat. '''(Quellinfo = Buch "ZPO" S. 17 ff.)''' = § 604 (ZPO) Klageinhalt: Ladungsfrist. = (1) Die Klage muss die Erklärung enthalten, dass im Wechselprozess geklagt werde. (2) <sup>1</sup> Die Ladungsfrist beträgt mindestens 24 Stunden , wenn die Ladung an dem Ort, der Sitz des Prozessgerichts ist, zugestellt wird. <sup>2</sup> In Anwaltsprozessen beträgt sie mindestens drei Tage, wenn die Ladung an einem anderen Ort zugestellt wird, der im Bezirk des Prozessgerichts liegt oder von dem ein Teil zu dessen Bezirk gehört. (3) In den höheren Instanzen beträgt die Ladungsfrist mindestens 24 Stunden, wenn die Zustellung der Berufungs- oder Revisionsschrift oder der Ladung an dem Ort erfolgt, der Sitz des höheren Gerichts ist; mindestens drei Tage, wenn die Zustellung an einem anderen Ort erfolgt, der ganz oder zum Teil in dem Landgerichtsbezirk liegt, in dem das höhere Gericht seinen Sitz hat, mindestens eine Woche, wenn die Zustellung sonst im Inland erfolgt. '''(Quellinfo = Buch "ZPO" S. 157 ff.)''' = § 605 (ZPO) Beweisvorschriften. = (1) Soweit es zur Erhaltung des wechselmäßigen Anspruch der rechtzeitigen Protesterhebung nicht bedarf, ist als Beweismittel bezüglich der Verlegung des Wechsels der Antrag auf Parteivernehmung zulässig. (2) Zur Berücksichtigung der Nebenforderung genügt, dass sie glaubhaft gemacht ist. '''(Quellinfo = Buch "ZPO" S. 158 ff.)''' = § 605a (ZPO) Scheckprozess = Werden im Urkundenprozess Ansprüche aus Schecks im Sinne des Scheckgesetzes geltend gemacht (Scheckprozess), so sind die §§ 602 bis 605 entsprechend anzuwenden. '''(Quellinfo = Buch "ZPO" S. 158 ff.)''' ::::: '''Buch 6.''' 1) (aufgehoben) = §§ 606-687 1) (ZPO) (aufgehoben) = ::::: '''Buch 7. Mahnverfahren''' = § 688 (ZPO) Zulässigkeit. = (1) Wegen eines Anspruchs, der die Zahlung einer bestimmten Geldsumme in Euro zum Gegenstand hat, ist auf Antrag des Antragstellers ein Mahnbescheid zu erlassen. (2) Das Mahnverfahren findet nicht statt: <sup>1.</sup> für Ansprüche eines Unternehmers aus einem Vertrag gemäß den §§ 491 bis 508 des Bürgerlichen Gesetzbuchs, wenn der gemäß § 492 Abs. 2 des Gesetzbuchs anzugebende effektive Jahreszins den bei Vertragsschluss geltenden '''Basiszinssatz nach § 247''' des Bürgerlichen Gesetzbuchs um mehr als zwölf Prozentpunkt übersteigt; 2. wenn die Geltendmachung des Anspruch von einer noch nicht erbrachten Gegenleistung abhängig ist; 3. wenn die Zustellung des Mahnbescheids durch öffentliche Bekanntmachung erfolgen müsste. (3) Müsste der Mahnbescheid im Ausland zugestellt werden, findet das Mahnverfahren nur statt, soweit das Anerkennungs- und Vollstreckungsausführungsgesetz vom 19. Februar 2001 (BGB1. I S. 288) dies vorsieht. (4) 1 Die Vorschriften der Verordnung (EG) Nr. 1896/2006 des Europäischen Parlaments und des Rates vom 12. Dezember 2006 zur Einführung eines Europäischen Mahnverfahrens bleiben unberührt. 2 Für die Durchführung gelten die §§1087 bis 1096 '''(Quellinfo = Buch "ZPO" S. 157 ff.)''' : '''§ 247 (BGB) 1)2) Basiszinssatz.'''(1) 1 Der Basiszinssatz beträgt 3,62 Prozent3). 2 Er verändert sich zum 1.Januar und 1. Juli eines jeden Jahres um die Prozentpunkte, um welche die Bezugsgröße seit der letzten Veränderung des Basiszinssatzes gestiegen oder gefallen ist. 3 Bezugsgröße ist der Zinssatz für die jüngste Hauptrefinanzierungsoperation der Europäischen Zentralbank vor dem ersten Kalendertag des betreffenden Halbjahrs. '''(Quellinfo = Buch "BGB" S. 47 ff.)''' : 1) Amtl. Anm.L Diese Vorschrift dient der Umsetzung von Artikel 3 der Richtlinie 2000/35/EG des Europäischen Parlaments und des Rates vom 29. Juni 2000 zur Bekämpfung von Zahlungsverzug im Geschäftsverkehr (AB1. EG Nr. L 200 S. 35). Punkte 1-2)='''(Quellinfo = Buch "BGB S. 47 ff.)''' : 2) Beachte hierzu Übergangsvorschrift in Art. 229 § 7 EGBGB (Nr. 2). : - ab 1.1.2002 '''2,57%''' (Bek. v. 28.12.2001, BAnz. 2002 Nr. 3 S. 98); : - ab 1.7.2002 '''2,47%''' (Bek. v. 25.06.2002, BAnz. Nr. 118 S. 14538); : - ab 1.1.2003 '''1,97%''' (Bek. v. 30.12.2002, BAnz. 2003 Nr.2. S. 76); : - ab 1.7.2003 '''1,22%''' (Bek. v. 24.06.2003, BAnz. Nr. 117 S. 13744); : - ab 1.1.2004 '''1,14%''' (Bek. v. 30.12.2003, BAnz. Nr. 2 S. 69); : - ab 1.7.2004 '''1,13%''' (Bek. v. 29.06.2004, BAnz. Nr. 122 S. 14246); : - ab 1.1.2005 '''1,21%''' (Bek. v. 30.12.2004, BAnz. Nr. 1 S. 6); : - ab 1.7.2005 '''1,17%''' (Bek. v. 28.06.2005, BAnz. Nr. 122 S. 10041); : - ab 1.1.2006 '''1,37%''' (Bek. v. 29.12.2005, BAnz. Nr. 1 S. 2); : - ab 1.7.2006 '''1,95%''' (Bek. v. 27.06.2006, BAnz. Nr. 191 S. 4754); : - ab 1.1.2007 '''2,70%''' (Bek. v. 28.12.2006, BAnz. Nr. 245 S. 7463); : - ab 1.7.2007 '''3,19%'''(Bek. v. 28.06.2007, BAnz. Nr. 117 S. 6530); : - ab 1.1.2008 '''3,32%''' (Bek. v. 28.12.2007, BAnz. Nr. 242 S. 8415); : - ab 1.7.2008 '''3,19%''' (Bek. v. 24.06.2008, BAnz. 94 Nr. 1 S. 2232); : - ab 1.1.2009 '''1,62%''' (Bek. v. 30.12.2008, BAnz. 2009 Nr. 1 S. 6); : - ab 1.7.2009 '''0,12%''' (Bek. v. 30.06.2009, BAnz. Nr. 95 S. 2302); : - ab 1.1.2010 '''0,12%''' (Bek. v. 29.12.2009, BAnz. Nr. 198 S. 4582); : - ab 1.7.2010 '''0,12%''' (Bek. v. 29.06.2010, BAnz.Nr. 96 S. 2264); : - ab 1.1.2011 '''0,12%''' (Bek. v. 28.12.2010, BAnz. Nr. 199 S. 4388); : - ab 1.7.2011 '''0,37%''' (Bek. v. 30.06.2011, BAnz. Nr. 96 S. 2314); : - ab 1.1.2012 '''0,12%''' (Bek. v. 27.12.2011, BAnz. Nr. 197 S. 4659); : - ab 1.7.2012 '''0,12%''' (Bek. v. 26.06.2012, BAnz. AT 28.06.2012 B3); : - ab 1.1.2013 '''-0,13%''' (Bek. v. 28.12.2012, BAnz. AT 31.12.2012 B8); : - ab 1.7.2013 '''-0,38%''' (Bek. v. 25.06.2013, BAnz. AT 27.06.2013 B4); : - ab 1.1.2014 '''-0,63%''' (Bek. v. 30.12.2013, BAnz. AT 31.12.2013 B7); : - ab 1.7.2014 '''-0,73%''' (Bek. v. 24.06.2014, BAnz. AT 26.06.2014 B5); : - ab 1.1.2015 '''-0,83%''' (Bek. v. 30.12.2014, BAnz. AT 31.12.2014 B12); : - ab 1.7.2015 '''-0,83%''' (Bek. v. 30.06.2015, BAnz. AT 01.07.2015 B6); : - ab 1.1.2016 '''-0,83%''' (Bek. v. 29.12.2015, BAnz. AT 30.12.2015 B8); : - ab 1.7.2016 '''-0,88%''' (Bek. v. 28.06.2016, BAnz. AT 29.06.2016 B4); : - ab 1.1.2017 '''-0,88%''' (Bek. v. 27.12.2016, BAnz. AT 29.12.2016 B11); '''(Quellinfo der aufgeführten Angaben zu den entsprechenden Basiszinssätzen = Buch "BGB" S. 48 ff.)''' (2) Die Deutsche Bundesbank gibt den geltenden Basiszinssatz unverzüglich nach den in Absatz 1 Satz 2 genannten Zeitpunkten im Bundesanzeiger bekannt. '''(Quellinfo = Buch "BGB" S. 48 ff.)''' = § 689 (ZPO) Zuständigkeit; maschinelle Bearbeitung. = (1) 1 Das Mahnverfahren wird von den Amtsgerichten durchgeführt. 2) 2 Eine maschinelle Bearbeitung ist zulässig. 3 Bei dieser Bearbeitung sollen Eingänge spätestens an dem Arbeitstag erledigt sein, der dem Tag des Eingangs folgt. 3 Die Akten können elektronisch geführt werden (§298 a9) (2) 1 Ausschließlich zuständig ist das Amtsgericht, bei dem der Antragsteller seinen allgemeinen Gerichtsstand hat. 2 Hat der Antragsteller im Inland keinen allgemeinen Gerichtsstand, sonst das Amtsgericht Wedding in Berlin ausschlie´loch zuständig. 3. Sätze 1 und 2 gelten auch, soweit in anderen Vorschriften eine andere ausschließliche Zuständigkeit bestimmt ist. (3) 1) 1 Die Landesregierungen wären ermächtigt, durch Rechtsverordnung Mahnverfahren einem Amtsgericht für die Bezirke mehrerer Amtsgerichte zuzuweisen, wenn dies ihrer schnelleren und rationelleren Erledigung dient. 2 Die Zuweisung kann auf Mahnverfahren beschränkt werden, die maschinell bearbeitet werden. 3 Die Landesregierungen können die Ermächtigung durch Rechtsverordnung auf die Landesjustizverwaltungen übertragen. 4 Mehrere Länder können die Zuständigkeit eines Amtsgerichts über die Landesgrenzen hinaus vereinbaren. '''(Quellinfo = Buch "ZPO" S. 158 ff.)''' = § 690 (ZPO) Mahnantrag. = (1) Der Antrag muss auf den Erlass eines Mahnbescheids gerichtet sein und enthalten: 1. die Bezeichnung der Parteien, ihrer gesetzlichen Vertreter und der Prozessbevollmächtigten; 2. die Bezeichnung des Gerichts, bei dem der Antrag gestellt wird; 3. die Bezeichnung des Anspruchs unter bestimmter Angabe der verlangten Leistung; Haupt - und Nebenforderungen sind gesondert und einzeln zu bezeichnen. Ansprüche aus Verträgen gemäß den '''§§ 491 bis 508 des Bürgerlichen Gesetzbuchs'''; auch unter Angabe des Datums des Vertragsabschlusses und des gemäß '''§ 492 Abs. 2 des Bürgerlichen Gesetzbuchs''' anzugebenden effektiven Jahreszinses; 4. die Erklärung, dass der Anspruch nicht von einer Gegenleistung abhängt oder dass die Gegenleistung erbracht ist; 5. die Bezeichnung des Gerichts, das für ein streitiges Verfahren zuständig ist. (2) Der Antrag bedarf der handschriftlichen Unterzeichnung. (3) 1 Der Antrag kann in einer nur maschinell lesbaren Form vermittelt werden, wenn diese dem Gericht für seine maschinelle Bearbeitung geeignet erscheint. 2 Wird der Antrag von einem Rechtsanwalt oder einer registrierten Person nach § 10 Abs. 1 Satz 1 Nr. 1 des Rechtsdienstleistungegesetztes gestellt, ist nur diese Form der Antragstellung zulässig. '''[Satz 3 ab 1. 1. 2018:]''' 3 Der Antrag kann unter Nutzung des elektronischen Identitätsnachweises nach § 18 des Personalausweisgesetztes oder § 78 Absatz 5 des Aufenthaltsgesetztes gestellt werden. 3 '''[Satz 3 bis 31. 12. 2017, Satz 4 ab 1. 1. 2018 :] Der handschriftlichen Unterzeichnung bedarf es nicht, wenn in anderer Weise gewährleistet ist, dass der Antrag nicht ohne den Willen des Antragstellers übermittelt wird. (Quellinfo = Buch "ZPO" S. 158 ff.)''' :Kapitel 2 Besondere Vorschriften für Verbraucherdarlehensverträge (BGB) : '''§ 491 1) 2) Verbraucherdarlehensvertrag.''' : (1) 1 Die Vorschriften dieses Kapitels gelten für Verbraucherdarlehensverträge, soweit nichts anderes bestimmt ist. 2 Verbraucherdarlehensverträge sind Allgemein- Verbraucherdarlehensverträge und Immobiliar-Verbraucherdarlehensverträge. (2) 1 Allgemein- Verbraucherdarlehensverträge sind entgeltliche Darlehensverträge zwischen einem Unternehmer als Darlehensgeber und einem Verbraucher als Darlehensnehmer. 2 Keine Allgemein Verbraucherdarlehensverträge sind Verträge, 1 bei denen der Nettodarlehensbetrag (Artikel 247 § 3 Abs 2 des Einführungsgesetzes zum Bürgerlichen Gesetzbuche 1) weniger als 200 Euro beträgt. 2 ei denen sich die Haftung des Darlehensnehmers auf eine dem Darlehensgeber zum Pfand übergebene Sache Beschränkt, 3 .bei denen der Darlehensnehmer das Darlehen binnen drei Monaten zurückzuzahlen hat und nur geringe Kosten vereinbart sind. 4. die von Arbeitgebern mit ihren Arbeitnehmers als Nebenleistung zum Arbeitsvertrag zu einem niedrigeren als dem marktüblichen effektiven Jahreszins (§ 6 der Preisangabenverordnung) abgeschlossen werden und anderen Personen nicht angeboten werden. 5. die nur mit einem begrenzten Personenkreis auf Grund von Rechtsvorschriften in öffentlichem Interesse abgeschlossen werden, wenn im Vertrag für den Darlehensnehmer günstigere als marktübliche Bedingungen und höchstens der marktübliche Sollzinssatz vereinbart sind. 6. bei denen es sich um Immobil- Verbraucherdarlehensverträge gemäß Absatz 3 handelt. : (3) 1 Immobiliar-Verbraucherdarlehendverträge sind entgeltliche Darlehensverträge wischen einem Unternehmer als Darlehensgeber und einem Verbraucher als Darlehensnehmer, die 1. durch ein Grundpfandrecht oder eine Reallast gesichert sind oder 2. für den Erwerb oder die Erhaltung des Eigentumsrechts an Grundstücken, an bestehenden oder zu errichtenden Gebäuden oder für den Erwerb oder die Erhaltung von grundstücksgleichen Rechten bestimmt sind. 2 Keine Immobiliar-Berbraucherdarlehensverträge sind Verträge gemäß Absatz 2 Satz 2 Nummer 4. 3 Auf Immobiliar-Berbruacherdarlehensverträge gemäß Absatz 2 Satz 2 Nummer 4 ist nur '''§ 491 a Absatz 4''' anwendbar. (4) '''§ 358 Abs. 2''' und 4 sowie die '''§§ 491 a bis 495''' und '''505a bis 505 d''' sind nicht auf Darlehensverträge anzuwenden, die in ein nach den Vorschriften der Zivilprozessordnung errichtetes gerichtliches Protokoll aufgenommen oder durch einen gerichtlichen Beschluss über das Zustandekommen und den Inhalt eines zweichen den Parteien geschlossenen Vergleichs festgestellt sind, wenn in das Protokoll oder den Beschluss der Sollzinssatz, die bei Abschluss des Vertrags in Rechnung gestellten Kosten des Darlehens sowie die Voraussetzungen aufgenommen worden sind unter denen der Sollzinssatz oder die Kosten angepasst werden können. '''(Quellinfo = Buch "BGB" S. 117 ff.)''' = § 691 (ZPO) Zurückweisung des Mahnantrags. = (1) 1 Der Antrag wird zurückgewiesen: 1. wenn er den Vorschriften der §§ 688, 689,690, 703 c Abs. 2 nicht entspricht; 2. wenn der Mahnbescheid nur wegen eines Teiles des Anspruchs nicht erlassen werden kann. 2 Vor der Zurückweisung ist der Antragsteller zu hören. (2) Sollte durch die Zustellung des Mahnbescheids eine Frist gewahrt werden oder die Verjährung neu beginnen oder nach § 204 des Bürgerlichen Gesetzbuchs gehemmt werden, so tritt die Wirkung mit der Einreichung oder Anbringung des Antrags auf Erlass des Mahnbescheids ein,wenn innerhalb eines Monats seit der Zustellung der Zurückweisung des Antrags Klage eingereicht und diese demnächst zugestellt wird. (3) 1 Gegen die Zurückweisung findet die sofortige Beschwerde statt, wenn der Antrag in einer nur maschinell lesbaren Form übermittelt und mit der Begründung zurückgewiesen worden ist, dass diese Form dem Gericht für seine maschinelle Bearbeitung nicht geeignet erscheine. 2 Im Übrigen sind Entscheidungen nach Absatz 1 unanfechtbar. '''(Quellinfo = Buch "ZPO" S. 159 ff.)''' = § 692 (ZPO) Mahnbescheid. = (1) Der Mahnbescheid enthält: 1. die in § 690 Abs. 1 Nr . 1 bis 5 bezeichneten Erfordernisse des Antrags; 2. den Hinweis, dass das Gericht nicht geprüft hat. ob dem Antragsteller der geltend gemachte Anspruch zusteht; 3. die Aufforderung innerhalb von zwei Wochen seit der Zustellung des Mahnbescheids, soweit der geltend gemachte Anspruch als begründet angesehen wird, die behauptete Schuld nebst den geforderten Zinsen und der dem Betrag nach bezeichneten Kosten zu begleichen oder dem Gericht mitzuteilen, ob und in welchem Umfang dem geltend gemachten Anspruch widersprochen wird. 4 den Hinweis, dass ein dem Mahnbescheid entsprechender Vollstreckungsbescheid ergehen kann, aus dem der Antragsteller die Zwangsvollstreckung betreiben kann falls der Antragsgegner nicht bis zum Fristablauf Widerspruch mit jenem Formular der beigefügten Art erhoben hat; 5. für den Fall, dass Formulare eingeführt sind, den Hinweis, dass der Wirderspruch mit jenem Formular der beigefügten Art erhoben werden soll, das auch bei jedem Amtsgericht erhältlich ist und ausgefüllt werden kann; 6. für den Fall des Widerspruchs, die Ankündigung, an welches Gericht die Sache abgegeben wird, mit dem Hinweis, dass diesem Gericht die Prüfung seiner Zuständigkeit vorbehalten bleibt. (2) An Stelle einer handschriftlichen Unterzeichnung genügt ein entsprechender Stempelabdruck oder eine elektronische Signatur. '''(Quellinfo = Buch "ZPO" S. 158 ff.)''' = § 693 (ZPO) Zustellung des Mahnbescheids. = (1) Der Mahnbescheid wird dem Antragsgegner zugestellt. (2) Die Geschäftsstelle setzt den Antragsteller on der Zustellung des Mahnbescheids in Kenntnis. '''(Quellinfo = Buch "ZPO" S. 160 ff.)''' = § 694 (ZPO) Widerspruch gegen den Mahnbescheid. = (1) Der Antragsgegner kann gegen den Anspruch oder einen Teil des Anspruchs bei dem Gericht, das den Mahnbescheid erlassen hat, schriftlich Widerspruch erheben, solange der Vollstreckungsbescheid nicht verfügt ist. (2) 1 Ein verspäteter Widerspruch wird als Einspruch behandelt. 2 Dies ist dem Antragsgegner, den den Widerspruch erhoben hat, mitzuteilen. '''(Quellinfo = Buch "ZPO" S. 160 ff.)''' = § 695 (ZPO) Mitteilung des Widerspruchs; Abschriften. = 1 Das Gericht hat den Antragsteller von dem Widerspruch und dem Zeitpunkt seiner Erhebung in Kenntnis zu setzen. 2 Wird das Mahnverfahren nicht maschinell bearbeitet, so soll der Antragsgegner die erforderliche Zahl von Abschriften mit dem Widerspruch einreichen. '''(Quellinfo = Buch "ZPO" S. 160 ff.)''' = § 696 (ZPO) Verfahren nach Widerspruch. = (1) 1 Wird rechtzeitig Widerspruch erhoben und beantragt eine Partei die Durchführung des streitigen Verfahrens, so gibt das Gericht, das den Mahnbescheid erlasen hat, den Rechtsstreit von Amts wegen an das Gericht ab, das in dem Mahnbescheid gemäß § 692 Abs. 1 Nr 1 bezeichnet worden ist, wenn die Parteien übereinstimmend die Abgabe an ein anderes Gericht verlangen, an diese. 2 Der Antrag kann in den Antrag auf Erlass des Mahnbescheids aufgenommen werden. 3 Die Abgabe ist den Parteien mitzuteilen; sie ist nicht anfechtbar. 4 Mit Eingang der Akten bei dem Gericht, an das er abgegeben wird, gilt der Rechtstreit als dort anhängig. 5 § 281 Ab. 2 Satz 1 gilt entsprechend. (2) 1 Ist das Mahnverfahren maschinell bearbeitet worden, so tritt, sofern die Akte nicht elektronisch übermittelt wird, an die Stelle der Akten ein maschinell erstellter Aktenausdruck. 2 Für diesen gelten die Vorschriften über die Beweiskraft öffentlicher Urkunden entsprechend. 3 § 298 findet keine Anwendung. (3) Die Streitsache gilt als mit Zustellung des Mahnbescheid rechtshängig geworden, wenn sie alsbald nach de Erhebung des Widerspruch abgegeben wird. (4) 1 Der Antrag auf Durchführung des streitigen Verfahrens kann bis zum Beginn der mündlichen Verhandlung des Antragsgegners zur Hauptsache zurückgenommen werden. 2 Die Zurücknahme kann vor der Geschäftsstelle nicht rechtshängig geworden anzusehen. (5) Das Gericht, an das der Rechtsstreit abgegeben ist, ist hierzu in seiner Zuständigkeit nicht gebunden. '''(Quellinfo = Buch "ZPO" S. 161 ff.)''' = § 697 (ZPO) Einleitung des Streitverfahrens. = (1) 1 Die Geschäftsstelle des Gerichts an das die Streitsache abgegeben wird, hat dem Antragsteller unverzüglich aufzugeben, seinem Anspruch binnen zwei Wochen in einer der Klageschrift entsprechende Form zu dd. 2 § 270 Satz 2 gilt entsprechend. (2) 1 Bei Eingang der Anspruchsbegründung ist wie nach Eingang einer Klage weiter zu verfahren. 2 Zur schriftlichen Klageerwiderungen Verfahren. nach § 276 kann auch eine mit der Zustellung der Anspruchsbegründung beginnende Frist gesetzt werden. (3) 1 Geht die Anspruchsbegründung nicht rechtzeitig ein,so wird bis zu ihrem Eingang Termin zur mündlichen mündlichen Verhandlung nur auf Antrag des Antragsgegner bestimmt . 2 Mit der Terminbestimmung setzt der Vorsitzende dem Antragsteller Eine Frist zur Begründung des Anspruchs; § 296 Abs. 1, 4 gilt entsprechend. (4) 1 Der Antragsgegner kann den Widerspruch bis zum Beginn seiner mündlichen Verhandlung zur Hauptsache zurücknehmen, jedoch nicht nach erlass eines Versäumnisurteil s gegen ihn. 2 Die Zurücknahme kann zu Protokoll der Geschäftsstelle erklärt werden. (5) 1 Zur Herstellung eines Urteils in abgekürzter Form nach § 313 b Ansatz 2, § 317 Absatz 6 kann der Mahnbecheid an Stelle der Klageschrift benutzt werden . 2 Ist das Mahnverfahren maschinell bearbeitet worden, so tritt an die Stelle der Klageschrift der maschinell erstellte Aktenausdruck. '''(Quellinfo = Buch "ZPO" S. 130 ff.)''' = § 698 (ZPO) Abgabe des Verfahrens am selben Gericht. = Die Vorschriften über die Abgabe des Verfahrens gelten sinngemäß, wenn Mahnverfahren und streitiges Verfahren bei demselben Gericht durchgeführt werden. '''(Quellinfo = Buch "ZPO" S. 130 ff.)''' = § 699 (ZPO) Vollstreckungsbescheid. = (1) 1 Auf der Grundlage des Mahnbescheids erlässt das Gericht auf Antrag einen Vollstreckungsbescheid, wenn der Antragsgegner nicht rechtzeitig Widerspruch erhoben hat. 2 Der Antrag kann nicht vor Ablauf der Widerspruchsfrist gestellt werden; er hat die Erklärung zu enthalten, ob und welche Zahlungen auf den Bescheid geleistet worden sind; '''[bis 31. 12. 2017:''' § 690 Abs. 3 Satz 1 und 3''']''' '''[ab 1. 1. 2018:''' § 690 Abs. 3''']''' gilt entsprechend 3 Ist der Rechtsstreit bereits an ein anderes Gericht abgegeben, so erlässt dieses den Vollstreckungsbescheid. (2) Soweit das Mahnverfahren nicht maschinell bearbeitet wird kann der Vollstreckungsbescheid auf den Mahnbescheid gesetzt werden. (3) 1 In den Vollstreckungsbescheid sind die bisher entstandenen Kosten des Verfahrens aufzunehmen. 2 Der Antragsteller braucht die Kosten nur zu berechnen,, wenn das Mahnverfahren nicht maschinell bearbeitet wird; im Übrigen genügen die zur maschinellen Berechnung erforderlichen Angaben. (4) 1 Der Vollstreckungsbescheid wird dem Antragsgegner von Amts wegen zugestellt, wenn nicht der Antragsteller die Übermittlung an sich zur Zustellung im Parteibetrieb beantragt hat. 2 In diesen Fällen wird der Vollstreckungsbescheid dem Antragsteller zur Zustellung übermittelt; die Geschäftsstelle des Gerichts vermittelt diese Zustellung nicht. 3 Bewilligt das mit dem Mahnverfahren befasste Gericht die öffentliche Zustellung, so wird die Benachrichtigung nach § 186 Abs 2 Satz 2 und an die Gerichtstagel des Gerichts angeheftet oder in das Informationssystem des Gerichts eingestellt, das in dem Mahnbescheid gemäß § 692 Abs 1 Nr. 1 bezeichnet worden ist. (5) Die Belehrung gemäß § 232 ist dem Antragsgegner zusammen mit der Zustellung des Vollsreckungsbescheids schriftlich mitzuteilen. '''(Quellinfo = Buch "ZPO" S. 161 ff.)''' = § 700 (ZPO) Einspruch gegen den Vollstreckungsbescheid. = (1) Der Vollstreckungsbescheid steht einem für vorläufig vollstreckbar erklärten Versäumnisurteil gleich. (2) Die Streitsache gilt als mit der Zustellung des Mahnbescheids rechtshängig geworden. (3) 1 Wird Einspruch eingelegt, so gibt das Gericht, das den Vollstreckungsbescheid erlassen hat, den Rechtsstreit von Amts wegen an das Gericht ab, das in dem Mahnbescheid gemäß § 692 Abs. 1 Nr. 1 bezeichnet worden ist, wenn die Parteien übereinstimmend die Abgabe an ein anderes Gericht verlangen, an dieses. 2. §696 Abs. 1 Satz 3 bis 5, Abs2, 5 § 697 Abs. 1, 4, § 698 gelten entsprechend. 3 § 340 Abs. 3 ist nicht anzuwenden. (4) 1 Bei Eingang Teer Anspruchsbegründung ist wie nach Eingang einer Klage weiter zu verfahren wenn der Einspruch nicht als unzulässig verworfen wird. 2 § 276 Abs. 1 Satz 1 3 , Abs. 2 ist nicht anzuwenden. (5) Geht die Anspruchsbegründung innerhalb der von der Geschäftsstelle gesetzten Frist nicht ein und wird der Einspruch auch nicht als unzulässig verworfen, bestimmt der Vorsitzende unverzüglich Termin; § 697 Abs. 3 Satz 2 gilt entsprechend. (6) Der Einspruch darf nach § 345 nur verworfen werden, soweit der Voraussetzungen des § 331 Abs 1,2 erster Halbsatz fr ein Versäumnisurteil vorliegen, wird der Vollstreckungsbescheid aufgeben. '''(Quellinfo = Buch "ZPO" S. 162 ff.)''' = § 701 (ZPO) Wegfall der Wirkung des Mahnbescheids. = 1 Ist Widerspruch nicht erhoben und beantragt der Antragsteller den Erlass des Vollstreckungsbescheids nicht binnen einer sechsmonatigen Frist, die mit der Zustellung des Mahnbescheids beginnt, so fällt die Wirkung des Mahnbescheids weg. 2 Dasselbe gilt, wenn der Vollstreckungsbescheid rechtzeitig beantragt ist, der Antrag aber zurückgewiesen wird. '''(Quellinfo = Buch "ZPO" S. 163 ff.)''' = § 702 (ZPO) Form von Anträgen und Erklärungen. = (1) 1 Im Mahnverfahren können die Anträge und Erklärungen vor dem Urkundsbeamten der Geschäftsstelle abgegeben werden. 2 Soweit Formulare eingeführt sind, werden diese ausgefüllt; der Urkundsbeamte vermerkt unter Angabe des Gerichts und des Datums, dass er den Antrag oder die Erklärung aufgenommen hat. 3 Auch soweit Formulare nicht eingeführt sind, ist für den Antrag auf Erlass eines Mahnbescheids oder eines Vollsstreckungsbescheids bei dem für das Mahnverfahren zuständigen Gericht die Aufnahme eines Protokolls nicht erforderlich. (2) Der Antrag auf Erlass eines Mahnbesheids oder eines Vollstreckungsbescheids wir dem Antragsgegner nicht mitgeteilt. '''(Quellinfo = Buch "ZPO" S. 163 ff.)''' = § 703 (ZPO) Kein Nachweis der Vollmacht. = 1 Im Mahnverfahren bedarf es des Nachweises einer Vollmacht nicht. 2 Wer als Bevollmächtigter einen Antrag einreicht oder einen Rechtsbehelf einlegt, hat seine ordnungsgemäße Bevollmächtigung zu versichern. '''(Quellinfo = Buch "ZPO" S. 163 ff.)''' = § 703 a (ZPO) Urkunden-, Wechsel- und Scheckmahnverfahren. = (1) Ist der Antrag des Antragstellers auf den Erlass eines Urkunden- Wechsel- oder Scheckmahnbescheids gerichtet, so wird der Mahnbescheid als Urkunden-, Wechsel- oder Scheckmahnbescheid bezeichnet. (2) Für das Urkunden-, Wechsel- und Scheckmahnverfahren gelten folgende besondere Vorschriften: 1. die Bezeichnung als Urkunden-, Wechsel- oder Scheckmahnbescheid hat die Wirkung, dass die Streitsache, wenn rechtzeitig Widerspruch erhoben wird, im Urkunden-, Wechsel- oder Scheckprozess anhängig wird, 2. die Urkunden sollen in dem Antrag auf Erlass des Mahnbescheids und in dem Mahnbescheid bezeichnet werden; ist die Sache an das Streitgericht abzugeben, so müssen die Urkunden in Urschrift oder in Abschrift der Anspruchsbegründung beigefügt werden; 3. im Mahnverfahren ist nicht zu prüfen, ob die gewählte Prozessart statthaft ist. 4. beschränkt sich der Widerspruch auf den Antrag, dem Beklagten die Ausführung seiner Rechte vorzubehalten, so ist der Vollstreckungsbescheid unter diesen Vorbehalt zu erlassen. Auf das weitere Verfahren ist die Vorschrift des § 600 entsprechend anzuwenden. '''(Quellinfo = Buch "ZPO" S. 163 ff.)''' = § 703 b (ZPO) Sonderregelungen für maschinelle Bearbeitung. = (1) Bei maschineller Bearbeitung werden Beschlüsse, Verfügungen, Ausfertigungen und Vollstreckungsklauseln mit dem Gerichtssiegel versehen; einer Unterschrift bedarf es nicht. (2) Das Bundesministerium der Justiz und für Verbraucherschutz wird ermächtigt, durch Rechtsverordnung mit Zustimmung des Bundesrates den Verfahrensablauf zu regeln, soweit dies für eine einheitliche maschinelle Bearbeitung der Mahnverfahren erforderlich ist (Verfahrensablaufplan) '''(Quellinfo = Buch "ZPO" S. 163 ff.)''' = § 703 c (ZPO) Formulare; Einführung der maschinellen Bearbeitung. = (1) 1 Das Bundesministerium der Justiz und für Verbraucherschutz wird ermächtigt, durch Rechtsverordnung 1) mit Zustimmung des Bundesrates zur Vereinfachung des Mahnverfahrens und zum Schutze der in Anspruch genommenen Partei Formulare einzuführen. 2 Für 1. Mahnverfahren bei Gerichten, die die Verfahren maschinell bearbeiten. 2. Mahnverfahren bei Gerichten, die die Verfahren nicht maschinell bearbeiten. 3. Mahnerfahren, in denen der Mahnbescheid im Ausland zuzustellen ist. 4. Mahnverfahren, in denen der Mahnbescheid nach Artikel 32 des Zusatzabkommen zum NATO-Truppenstatut vom 3. August 1959 (BGB1, 1961 II S. 1183, 1218) zuzustellen ist, können unterschiedliche Formulare eingeführt werden. (2) Soweit nach Absatz 1 Formulare für Anträge und Erklärungen der Parteien eingeführt sind, müssen sich die Parteien ihrer bedienen. (3) Die Landesregierungen bestimmen durch Rechtsverordnung den Zeitpunkt, in dem bei einem Amtsgericht maschinelle Bearbeitung der Mahnverfahren eingeführt wird; sie können die Ermächtigung durch Rechtsverordnung auf die Landesjustizverwaltungen übertragen. '''(Quellinfo = Buch "ZPO" S. 164 ff.)''' = § 703 d (ZPO) Antragsgegner ohne allgemeinen inländischen Gerichtsstand. = (1) Hat der Antragsgegner keinen allgemeinen Gerichtsstand im Inland, so gelten die nachfolgenden besonderen Vorschriften. (2) 1 Zuständig für das Mahnverfahren ist das Amtsgericht, das für das streitige Verfahren zuständig sein würde, wenn die Amtsgerichte im ersten Rechtszug sachlich unbeschränkt zuständig wären. 2 § 689 Abs. 2 gilt entsprechend. '''(Quellinfo = Buch "ZPO" S. 164 ff.)''' ::'''Buch 8. Zwangsvollstreckung''' : '''Abschnitt 1. Allgemeine Vorschriften''' = § 704 (ZPO) Vollstreckbare Endurteile. = Die Zwangsvollstreckung findet statt aus Endurteilen, die rechtskräftig oder für vorläufig vollstreckbar erklärt sind. '''(Quellinfo = Buch "ZPO" S. 164 ff.)''' = § 705 (ZPO) Formelle Rechtskraft. = 1 Die Rechtskraft der Urteile tritt vor Ablauf der für die Einlegung des zulässigen Rechtsmittels oder des zulässigen Einspruchs bestimmten Frist nicht ein. 2 Der Einritt der Rechtskraft wird durch rechtzeitige Einlegung des Rechtsmittels oder des Einspruchs gehemmt. '''(Quellinfo = Buch "ZPO" S. 165 ff.)''' = § 706 (ZPO) Rechtskraft- und Notfristzeugnis. = (1) Zeugnisse über die Rechtskraft der Urteile sind auf Grund der Prozessakten von der Geschäftsstelle des Gerichts des ersten Rechtszuges und, solange der Rechtsstreit in einem höheren Rechtszug anhängig ist, von der Geschäftsstelle des Gerichts dieses Rechtszuges zu erteilen. (2) 1 Soweit die Erteilung des Zeugnisses davon abhängt, dass gegen das Urteil ein Rechtsmittel nicht eingelegt ist, holt die Geschäftsstelle des Gerichts des ersten Rechtszuges bei der Geschäftsstelle des für das Rechtsmittel zuständigen Gerichts eine Mitteilung in Textform ein, dass bis zum Ablauf der Notfrist eine Rechtsmittelschrift nicht eingereicht sei. 2 Einer Mitteilung durch die Geschäftsstelle des Revisonsgerichts, dass ein Antrag auf Zulassung der Revision nach § 566 nicht eingereicht sei, bedarf es nicht. '''(Quellinfo = Buch "ZPO" S. 165 ff.)''' = § 707 (ZPO) Einstweilige Einstellung der Zwangsvollstreckung. = (1) 1 Wird die Wiedereinsetzung in den vorigen Stand oder eine Wiederaufnahme des Verfahrens beantragt oder die Rüge nach § 321 a erhoben oder wird der Rechtsstreit nach der Verkündung eines Vorbehaltsurteils fortgesetzt , so kann das Gericht auf Antrag anordnen, dass die Zwangsvollstreckung gegen oder ohne Sicherheitsleistung einstweilen eingestellt werde oder nur gegen Sicherheitsleistung stattfinde und dass die Vollstreckungsmaßregeln gegen Sicherheitsleistung aufzuheben seien. 2 Die Einstellung der Zwangsvollstreckung ohne Sicherheitsleistung ist nur zulässig, wenn glaubhaft gemacht wird, dass der Schuldner zur Sicherheitsleistung nicht in der Lage ist und die Vollstreckung einen nicht zu ersetzenden Nachteil bringen würde. (2) 1 Die Entscheidung ergeht durch Beschluss. 2 Eine Anfechtung des Beschlusses findet nicht statt. '''(Quellinfo = Buch "ZPO" S. 165 ff.)''' = § 708 (ZPO) Vorläufige Vollstreckbarkeit ohne Sicherheitsleistung. = Für vorläufig vollstreckbar ohne Sicherheitsleistung sind zu erklären: 1. Urteile, die auf Grund eines Anerkenntnissen oder eines Verzichts ergehen; 2. Versäumnisurteile und Urteile nach Lage der Akten gegen die säumige Partei gemäß § 331 a; 3. Urteile, durch die gemäß § 341 der Einspruch als unzulässig verworfen wird; 4. Urteile, die im Urkunden-, Wechsel- oder Scheckprozess erlassen werden; 5. Urteile, die ein Vorbehaltsurteil, das im Urkunden-, Wechsel- oder Scheckprozess erlassen wurde, für vorbehaltlos erklären; 6. Urteile, durch die Arreste oder einstweilige Verfügungen abgelehnt oder aufgehoben werden 7. Urteile in Streitigkeiten zwischen dem Vermieter und dem Mieter oder Untermieter von Wohnräumen oder anderen Räumen oder zwischen dem Mieder und dem Untermieter solcher Räume wegen Überlassung, Benutzung oder Räumung, wegen Fortsetzung des Mietverhältnisses über Wohnraum auf Grund der §§ 574 bis 574 b des Bürgerlichen Gesetzbuchs sowie wegen Zurückhaltung der von dem Mieter oder dem Untermieter in die Mieträume eingebrachten Sachen; 8. Urteile, die die Verpflichtung aussprechen, Unterhalt, Renten wegen Entziehung einer Unterhaltsforderung oder Renten wegen einer Verletzung des Körpers oder der Gesundheit zu entrichten soweit sich die Verpflichtung auf die Zeit nach der Klageerhebung und auf das ihr vorausgehende letzte Vierteljahr erzieht; 9. Urteile nach §§ 861, 862 des Bürgerlichen Gesetzbuchs auf Wiedereinräumung des Besitzes oder auf Beseitigung oder Unterlassung einer Besitzstörung; 10. Berufungsurteile in vermögensrechtlichen Streitigkeiten. Wird die Berufung durch Urteil oder Beschluss gemäß § 522 Absatz 2 zurückgewiesen., ist auszusprechen dass das angefochtene Urteil ohne Sicherheitsleistung vorläufig vollstreckbar ist; 11. andere Urteile in vermögensrechtlichen Streitigkeiten, wenn der Gegenstand der Verurteilung in der Hauptsache 1250 Euro nicht übersteigt oder wenn nur die Entscheidung über die Kosten vollstreckbar ist und eine Vollstreckung im Wert von nicht mehr als 1500 Euro ermöglicht. '''(Quellinfo = Buch "ZPO" S. 165 ff.)''' = § 709 (ZPO) Vorläufige Vollstreckbarkeit gegen Sicherheitsleistung. = 1 Andere Urteile sind gegen eine der Höhe nach zu bestimmende Sicherheit für vorläufig vollstreckbar zu erklären. 2 Soweit wegen einer Geldforderung zu vollstrecken ist, genügt es, wenn die Höhe der Sicherheitsleistung in einem bestimmten Verhältnis zur Höhe des jeweils zu vollstreckenden Betrages angegeben wird. 3 Handelt es sich um ein Urteil, das ein Versäumnisurteil aufrechterhält, so ist auszusprechen, dass die Vollstreckung aus dem Versäumnisurteil nur gegen Leistung oder Sicherheit fortgesetzt werden darf. '''(Quellinfo = Buch "ZPO" S. 166 ff.)''' = § 710 (ZPO) Ausnahmen von der Sicherheitsleistung des Gläubigers. = Kann der Gläubiger die Sicherheit nach § 709 nicht oder nur unter erheblichen Schwierigkeiten leisten, so ist das Urteil auf Antrag auch ohne Sicherheitsleistung für vorläufig vollstreckbar zu erklären, wenn die Aussetzung der Vollstreckung dem Gläubiger einen schwer zu ersetzenden oder schwer abzusehenden Nachteil bringen würde oder aus einem sonstigen Grund für den Gläubiger unbillig wäre, insbesondere weil der die Leistung für seine Lebenshaltung oder seine Erwerbstätigkeit dringend benötigt. '''(Quellinfo = Buch "ZPO" S. 166 ff.)''' = § 711 (ZPO) Abwendungsbefugnis. = 1 In den Fällen des § 708 Nr. 4 bis 11 hat das Gericht auszusprechen, dass der Schuldner die Vollstreckung durch Sicherheitsleistung oder Hinterlegung abwenden darf, wenn nicht der Gläubiger vor der Vollstreckung Sicherheit leistet. 2 § 709 Satz 2 gilt entsprechend, für den Schuldner jedoch mit der Maßgabe dass Sicherheit in einem bestimmten Verhältnis zur Höhe des auf Grund des Urteils vollstreckbaren Betrages zu leisten ist. 3 Für den Gläubiger gilt § 710 entsprechend. '''(Quellinfo = Buch "ZPO" S. 166 ff.)''' = § 712 (ZPO) Schutzantrag des Schuldners. = (1) 1 Würde die Vollstreckung dem Schuldner einen nicht zu ersetzenden Nachteil bringen, so hat ihm das Gericht auf Antrag zu gestatten, die Vollstreckung durch Sicherheitsleistung oder Hinterlegung ohne Rücksicht auf eine Sicherheitsleistung des Gläubigers abzuwenden; § 709 Satz 2 gilt in den Fällen des § 709 Satz 1 entsprechend. 2 Ist der Schuldner dazu nicht in der Lage, so ist das Urteil nicht für vorläufig vollstreckbar zu erklären oder die Vollstreckung auf die in § 720a Abs. 1, 2 bezeichneten Maßregeln zu beschränken. (2) 1 Dem Antrag des Schuldners ist nicht zu entsprechen wenn ein überwiegendes Interesse des Gläubigers entgegensteht. 2 In den Fällen des § 708 kann das Gericht anordnen, dass das Urteil nur gegen Sicherheitsleistung vorläufig vollstreckbar ist. '''(Quellinfo = Buch "ZPO" S. 167 ff.)''' = § 713 (ZPO) Unterbleiben von Schuldnerschutzanordnungen. = Die in den §§ 711, 712 zugunsten des Schuldners zugelassenen Anordnungen sollen nicht ergehen, wen die Voraussetzungen, unter denen ein Rechtsmittel gegen das Urteil stattfindet, unzweifelhaft nicht vorliegen. '''(Quellinfo = Buch "ZPO" S. 168 ff.)''' = § 714 (ZPO) Anträge zur vorläufigen Vollstreckbarkeit. = (1) Anträge nach den §§ 710, 711 Satz 3, § 712 sind vor Schluss der mündlichen Verhandlung zu stellen, auf die das Urteil ergeht. (2) Die tatsächlichen Voraussetzungen sind glaubhaft zu machen. '''(Quellinfo = Buch "ZPO" S. 168 ff.)''' = § 715 (ZPO) Rückgabe der Sicherheit. = (1) 1 Das Gericht, das eine Sicherheitsleistung des Gläubigers angeordnet oder zugelassen hat, ordnet auf Antrag die Rückgabe der Sicherheit an, wenn ein Zeugnis über die Rechtskraft des für vorläufig vollstreckbar erklärten Urteils vorgelegt wird. 2 Ist die Sicherheit durch eine Bürgschaft bewirkt worden, so ordnet das Gericht das Erlöschen der Bürgschaft an. (2) § 109 Abs. 3 gilt entsprechend. '''(Quellinfo = Buch "ZPO" S. 168 ff.)''' = § 716 (ZPO) Ergänzung des Urteils. = Ist über die vorläufige Vollstrecktbarkeit nicht entschieden, so sind wegen Ergänzung des Urteils die Vorschriften des § 321 anzuwenden. '''(Quellinfo = Buch "ZPO" S. 168 ff.)''' = § 717 (ZPO) Wirkungen eines aufhebenden oder abändernden Urteils = (1) Die vorläufige Vollstreckbarkeit tritt mit der Verkündung eines Urteils, das die Entscheidung In der Hauptsache oder die Vollsteckbarkeitserklärung aufhebt oder abändert, insoweit außer Kraft, als die Aufhebung oder Abänderung ergeht. (2) 1 Wird ein für vorläufig vollstreckbar erklärtes Urteil aufgehoben oder abgeändert, so ist der Kläger zum Ersatz des Schadens verpflichtet, der dem Beklagten durch die Vollstreckung des Urteils oder durch eine zur Abwendung der Vollstreckung gemachte Leistung entstanden ist. 2 Der Beklagte kann den Anspruch auf Schadensersatz in dem anhängigen Rechtsstreit geltend machen, wird der Anspruch geltend gemacht, so ist er als zur Zeit der Zahlung oder Leistung rechtshängig geworden anzusehen. (3) 1 Die Vorschriften des Absatzes 2 sind auf die im § 708 Nr. 10 bezeichneten Berufungsurteile mit Ausnahme der Versäumnisurteile, nicht anzuwenden. 2 Soweit ein solches Urteil aufgehoben oder abgeändert wird, ist der Kläger auf Antrag des Beklagten zur Erstattung des von diesem auf Grund des Urteils Gezahlten oder Geleisteten zu verurteilen. 3 Die Erstattungspflicht des Klägers bestimmt sich nach den Vorschriften über die Herausgabe einer ungerechtfertigten Bereicherung. 4. Wird der Antrag gestellt, so ist der Anspruch auf Erstattung als zur Zeit der Zahlung oder Leistung rechtshängig geworden anzusehen: die mit der Rechtsabhängigkeit nach den Vorschriften des bürgerlichen Rechts verbundenen Wirkungen treten mit der Zahlung oder Leistung auch dann ein, wenn der Antrag nicht gestellt wird.'''(Quellinfo = Buch "ZPO" S. 168 ff.)''' = § 718 (ZPO) Vorabentscheidung über vorläufige Vollstreckbarkeit = (1) In der Berufungsinstanz ist über die vorläufige Vollstreckbarkeit auf Antrag vorab zu verhandeln und zu entscheiden, (2) Eine Anfechtung der in der Berufungsinstanz über die vorläufige Vollstreckbarkeit erlassenen Entscheidung findet nicht statt. '''(Quellinfo = Buch "ZPO" S. 169 ff.)''' = § 719 (ZPO) Einstweilige Einstellung bei Rechtsmittel und Einspruch. = (1) 1 Wird gegen ein für vorläufig vollstreckbar erklärtes Urteil der Einspruch oder die Berufung eingelegt, so gelten die Vorschriften des § 707 entsprechend. 2 Die Zwangsvollstreckung aus einem Versäumnisurteil darf nur gegen Sicherheitsleistung eingestellt werden, es sei denn, dass das Versäumnisurteil nicht in gesetzlicher Weise ergangen ist oder sie säumige Partei glaubhaft macht, dass ihr Säumnis unverschuldet war. (2) 1 Wird Revision gegen ein für vorläufig vollstreckbar erklärtes Urteil eingelegt, so ordnet das Revisionsgericht auf Antrag an, dass die Zwangsvollstreckung einstweilen eingestellt wird, wenn die Vollstreckung dem Schuldner einen nicht zu ersetzenden Nachteil bringen würde und nicht ein überwiegendes Interesse des Gläubigers entgegensteht. 2 Die Parteien haben die tatsächlichen Voraussetzungen glaubhaft zu machen. (3) Die Entscheidung ergeht per Beschluss. '''(Quellinfo = Buch "ZPO" S. 169 ff.)''' = § 720 (ZPO) Hinterlegung bei Abwendung der Vollstreckung. = Darf der Schuldner nach § 711 Abs. 1 Satz 1 die Vollstreckung durch Sicherheitsleistung oder Hinterlegung abwenden, so ist gepfändetes Geld oder der Erlös gepfändeter Gegenstände zu hinterlegen. = § 721 (ZPO) Räumungsfrist. = .....Text folgt noch! = § 722 (ZPO) Vollstreckbarkeit ausländischer Urteile. = .....Text folgt noch! = § 723 (ZPO) Vollstreckungsurteil. = .....Text folgt noch! = § 724 (ZPO) Vollstreckbare Ausfertigung. = .....Text folgt noch! = § 725 (ZPO) Vollstreckungsklausel. = .....Text folgt noch! = § 726 (ZPO) Vollstreckbare Ausfertigung bei bedingten Leistungen. = .....Text folgt noch! = § 727 (ZPO) Vollstreckbare Ausfertigung für und gegen Rechtsnachfolger. = .....Text folgt noch! = § 728 (ZPO) Vollstreckbare Ausfertigung bei Nacherbe oder Testamentsvollstrecker. = .....Text folgt noch! = § 729 (ZPO) Vollstreckbare Ausfertigung gegen Vermögens- und Firmenübernehmer. = .....Text folgt noch! = § 730 (ZPO) Anhörung des Schuldners. = .....Text folgt noch! = § 731 (ZPO) Klage auf Erteilung der Vollstreckungsklausel. = .....Text folgt noch! = § 755<sup>1)</sup>Ermittlung des Aufenthaltsorts des Schuldners. = (1) <sup>1</sup> Ist der Wohnsitz oder gewöhnliche Aufenhaltsort des Schuldners nicht bekannt, darf der Gerichtsvollzieher auf Grund des Vollstreckungsauftrags und der Übergabe der vollstreckbaren Ausfertigung zur Ermittlung des Aufenthaltsorts des Schuldners bei der Meldebehörde die gegenwärtigen Anschriften sowie Angaben zur Haupt- und Nebenwohnung des Schuldners erheben. <sup>2</sup>Der Gerichtsvollzieher darf auch beauftragt werden, die gegenwärtigen Anschriften, den Ort der Hauptniederlassung oder den Sitz des Schuldners zu erheben. Ort der Hauptniederlassung öden den Sitz des Schuldners zu erheben. <br> 1. durch Einsicht in das Handels-, Genossenschaft-, Partnerschafts-, Unternehmens- oder Vereinsregister oder <br> 2. durch Einholung einer Auskunft bei den nach Landesrecht für die Durchführung der Aufgaben nach § 14 Absatz 1 der Gewerbeordnung zuständigen Behörden. (2)<sup>1</sup>Soweit der Aufenthaltsort des Schuldners nach Absatz 1 nicht zu ermitteln ist, darf der Gerichtsvollzieher <br> 1. zunächst beim Ausländerzentralregisteer die Angaben zur aktenführenden Ausländerbehörde sowie zum Zuzug oder Fortzug des Schuldners und anschließend bei der gemäß der Auskunft aus dem Ausländerzentralregister aktenführenden Ausländerbehörde den Aufenthaltsort des Schuldners. <br> 2. bei den Trägern der gesetzlichen Rentenversicherung '''''[ab 1.1.2022: '' '''''und bei einer berufsständischen Versorgungseinrichtung im Sinne des § 6 Absatz 1 Satz 1 Nummer 1 des Sechsten Buches Sozialgesetzbuch]'' die dort bekannte derzeitige Anschrift, den derzeitigen oder zukünftigen Aufenthaltsort des Schulders sowie''' <br> '''3. bei dem Kraftfahrt-Bundesamt die Halterdaten nach § 33 Abs. 1 Satz 1 Nr. 2 des Straßenverkehrsgesetzes erheben.''' <sup>2</sup>'''Ist der Schuldner Unionsbürger, darf der Gerichtsvollzieher die Daten nach Satz 1 Nummer 1 nur erheben, wenn ihm tatsächliche Anhaltspunkte für die Vermutung der Feststellung des Nichtbestehens oder des Verlusts des Freizügigkeitsrechts vorliegen'''. <sup>3</sup>'''Eine Übermittlungen Daten nach Satz 1 Nummer 1 an den Gerichtsvollzieher ist ausgeschlossen, wenn der Schuldner Unionsbürger ist, für den eine Feststellung des Nichtbestehens oder des Verlusts des Freizügigkeitsrechts nicht vorliegt. '''''[Satz 4 ab 1.1.2022:]''''' <sup>4</sup>Die ''Erhebung nach Satz 1 Nummer 2 bei einer berufsständischen Versorgungseinrichtung darf der Gerichtsvollzieher nurdurchführen, wenn der Gläubiger die berufsständische Versorgungseinrichtung bezeichnet und tatsächliche Anhaltspunkte nennt, die nahelegen, dass der Schuldner Mitglied dieser berufsständischen Versorgungseinrichtung ist.'' <br> (3) Nach Absatz 1 oder Absatz 2 erhobene Daten, die innerhalb der letzten drei Monate bei dem Gerichtsvollzieher eingegangensind, darf dieser auch in einem Zwangsvollstreckungsverfahren eines weiteren Gläubigers gegen denselben Schuldner verarbeiten, wenn die Voraussetzungen für die Datenerhebung auch bei diesem Gläubiger vorliegen. = § 758 (ZPO) Durchsuchung: Gewaltanwendung. = (1) Der Gerichtsvollzieher ist befugt, die Wohnung und die Behältnisse des Schuldners zu durchsuchen, soweit der Zweck der Vollstreckung dies erfordert. (2) Er ist befugt, die verschlossenen Haustüren, Zimmertüren und Behältnisse öffnen zu lassen. (3) Er ist, wenn er Widerstand findet, zur Anwendung von Gewalt befugt und kann zu diesem Zweck die Unterstützung der polizeilichen Vollzugsorgane nachsuchen. '''(Quellinfo = Buch "ZPO" S. 177 ff.)''' = § 758a (ZPO) Richterliche Durchsuchungsanordnung: Vollstreckung zur Unzeit = (1) 1 Die Wohnung des Schuldners darf ohne dessen Einwilligung nur auf Grund einer Anordnung des Richters bei dem Amtsgericht durchsucht werden, in dessen Bezirk die Durchsuchung erfolgen soll. 2 Dies gilt nicht, wenn die Einholung der Anordnung den Erfolg der Durchsuchung gefährden würde. (2) Auf die Vollstreckung eines Titels auf Räumung oder Herausgabe von Räumen und auf die Vollstreckung eines Haftbefehls nach § 802g ist Absatz 1 nicht anzuwenden. (3) 1 Willigt der Schuldner in die Durchsuchung ein oder ist eine Anordnung gegen ihn nach Absatz 1 Satz 1 ergangen oder nach Absatz 1 Satz 2 entbehrlich, so haben Personen die Mitgewahrsam an der Wohnung des Schuldner haben, die Durchsuchung zu dulden. 2 Unbillige Härten gegenüber Mitgewahrsamsinhabern sind zu vermeiden. (4) 1 Der Gerichtsvollzieher nimmt eine Vollstreckungshandlung zur Nachtzeit und an Sonn- und Feiertagen nicht vor, wenn dies für den Schuldner und die Mitgewahrsamtsinhaber eine unbillige Härte darstellt oder der zu erwartende Erfolg in einem Missverhältnis zu dem Eingriff steht, in Wohnungen nur auf Grund einer besondreren Anordnung des Richters bei dem Amtsgericht. 2 Die Nachtzeit umfasst die Stunden von 21 bis 6 Uhr. (5) Die Anordnung nach Absatz 1 ist bei der Zwangsvollstreckung vorzuzeigen. (6) 1 Das Bundesministerium der Justiz und für Verbraucherschutz wird ermächtigt durch Rechtsverordnung mit Zustimmung des Bundesrates Formulare für den Antrag auf Erlass einer richterlichen Durchsungsanordnung nach Absatz 1 einzuführen. 2 Soweit nach Satz 1 Formulare eingeführt sind, muss sich der Antragsteller ihrer bedienen. 3 Für Verfahren bei Gerichten die die Verfahren elektronisch bearbeiten und für Verfahren bei Gerichten, die die Verfahren nichtelektronisch bearbeiten, können unterschiedlichen Formulare eingeführt werden. '''(Quellinfo = Buch "ZPO" S. 177 ff.)''' = § 759 (ZPO) Zuziehung von Zeugen = Wird bei einer Vollstreckungshandlung Widerstand geleistet oder ist bei einer in der Wohnung des Schuldners vorzunehmenden Vollstreckungshandlung weder der Schuldner noch ein erwachsener Familienangehöriger, eine in der Familie beschäftigte Person oder ein erwachsener ständiger Mitbewohner anwesend, so hat der Gerichtsvollzieher zwei erwachsener Personen oder einen Gemeinde- oder Polizeibeamten als Zeugen zuzuziehen. '''(Quellinfo = Buch "ZPO" S. 177 ff.)''' = § 760 (ZPO) Akteneinsicht: Aktenabschrift = 1 Jeder Person, die bei dem Vollstreckungsverfahren beteiligt ist, muss auf Begehren Einsicht der Akten des Gerichtsvollziehers gestattet und Abschrift einzelner Aktenstücke erteilt werden. 2 Werden die Akten des Gerichtsvollziehers elektronisch geführt, erfolgt die Gewährung von Akteneinsicht durch Erteilung von Ausdrucken, durch Übermittlung von elektronischen Dokumenten oder durch Wiedergabe auf einem Bildschirm; dies gilt auch für die nach §§ 885 a Absatz 2 Satz 2 elektronisch gespeicherten Dateien, '''(Quellinfo = Buch "ZPO" S. 178 ff.)''' = § 761 (ZPO) - (weggefallen) = '''(Quellinfo = Buch "ZPO" S. 178 ff.)''' = § 762 (ZPO) Protokoll über Vollstreckungshandlungen = (1) DerGerichtsvollzieher hat über jede Vollstreckungshandlung ein Protokoll aufzunehmen. (2) Das Protokoll muss enthalten: 1. Ort und Zeit der Aufnahmen: 2. den Gegenstand der Vollstreckungshandlung unter kurzer Erwähnung der wesentlichen Vorgänge. 3. die Namen der Personen, mit denen verhandelt ist; 4. die Unterschrift dieser Personen und den Vermerk, dass die Unterzeichnung nach Vorlesung oder Vorlegung zur Durchsicht und nach Genehmigung erfolgt sei: 5. die Unterschrift des Gerichtsvollziehers. (3) Hat einem der unter Nummer 4 bezeichneten Erfordernisse nicht genügt werden können, so ist der Grund anzugeben. '''(Quellinfo = Buch "ZPO" S. 178 ff.)''' = § 763 (ZPO) Aufforderungen und Mitteilungen = (1) 1 Die Aufforderungen und sonstigen Mitteilungen, die zu den Vollstreckungshandlungen gehören, sind von dem Gerichtsvollzieher mündlich zu erlassen und vollständig in das Protokoll aufzunehmen. (2) 1 Kann dies mündlich nicht ausgeführt werden, so hat der Gerichtsvollzieher eine Abschrift des Protokolls zuzustellen oder durch die Post zu übersenden. 2 Es muss im Protokoll vermerkt werden, dass diese Vorschrift befolgt ist. 3 Eine öffentliche Zustellung findet nicht statt. '''(Quellinfo = Buch "ZPO" S. 178 ff.)''' = § 764 (ZPO) Vollstreckungsgericht = (1) Die den Gerichten zugewiesene Anordnung von Vollstreckungshandlungen und Mitwirkung bei solchen gehört zur Zuständigkeit der Amtsgerichte als Vollstreckungsgerichte. (2) Als Vollstreckungsgericht ist, sofern nicht das Gesetz ein anderes Amtsgericht bezeichnet, das Amtsgericht anzusehen, in dessen Bezirk das Vollstreckungsverfahren stattfinden soll oder stattgefunden hat. (3) Die Entscheidungen des Vollstreckungsgerichts ergehen durch Beschluss. '''(Quellinfo = Buch "ZPO" S. 178 ff.)''' = § 765 (ZPO) Vollstreckungsgerichtliche Anordnungen bei Leistung Zug um Zug. = 1 Hängt die Vollstreckung von einer Zug um Zug zu bewirkenden Leistung des Gläubigers an den Schuldner ab, so darf das Vollstreckungsgericht eine Vollstreckungsmaßregel nur anordnen, wenn 1. der Beweis, dass der Schuldner befriedigt oder im Verzug der Annahme ist, durch öffentliche oder öffentlich beglaubigte Urkunden geführt wird und ein Abschrift dieser Urkunden bereits zugestellt ist; der Zustellung bedarf es nicht, wenn bereits der Gerichtsvollzieher die Zwangsvollstreckung nach § 756 Abs. 1 begonnen hatte und der Beweis durch das Protokoll des Gerichtsvollziehers geführt wird; oder 2. der Gerichtsvollzieher eine Vollstreckungsmaßnahme nach § 756 Abs. 2 durchgeführt hat und diese durch das Protokoll des Gerichtsvollziehers nachgewiesen ist. '''(Quellinfo = Buch "ZPO" S. 178 ff.)''' = § 765 a (ZPO) Vollstreckungsschutz. = (1) 1 Auf Antrag des Schuldners kann das Vollstreckungsgericht eine Maßnahme der Zwangsvollstreckung ganz oder teilweise aufheben, untersagen oder einstweilen einstellen, wenn die Maßnahme unter voller Würdigung des Schutzbedürfnisses des Gläubigers eggen ganz besonderer Umstände eine Härte bedeutet, die mit den guten Sitten nicht vereinbar ist. 2 Es ist befugt, die in § 732 Ab. 2 bezeichneten Anordnungen zu erlassen. 3 Betrifft die Maßnahme ein Tier, so hat das Vollstreckungsgericht bei der von ihm vorzunehmenden Abwägung die Verantwortung ges Menschen für das Tier zu berücksichtigen. (2) Eine Maßnahme zur Erwirkung der Herausgabe von Sachen kann der Gerichtsvollzieher bis zur Entscheidung des Vollstreckungsgerichts, jedoch nicht länger als eine Woche aufschieben, wenn ihm die Voraussetzungen des Absatzes 1 Satz 1 glaubhaft gemacht werden und dem Schulter die rechtzeitige Anrufung Tees Vollstreckungsgerichts nicht möglich war. (3) In Räumungssachen ist der Antrag nach Absatz 1 spätestens zwei Wochen vor dem festgesetzten Räumungstermin zu stellen, es sei denn dass die Gründe , auf denen der Antrag beruht, erst nach diesem Zeitpunkt entstanden sind oder der Schuldner ohne sein Verschulden an einer rechtzeitigen Antragstellung gehindert war. (4) Das Vollstreckungsgericht hebt seinen Beschluss auf Antrag auf oder ändert ihn, wenn dies mit Rücksicht auf eine Änderung der Sachlage geboten ist. (5) Die Aufhebung von Vollsrteckungsmaßregeln erfolgt in den Fällen des Absatzes 1 Satz 1 und des Absatzes 4 erst nach Rechtskraft des Beschlusses. '''(Quellinfo = Buch "ZPO" S. 179 ff.)''' = § 766 (ZPO) Erinnerung gegen Art und Weise der Zwangsvollstreckung. = (1) 1 Über Anträge, Einwendungen und Erinnerungen, welche die Art und Weise der Zwangsvollstreckung oder das vom Gerichtsvollzieher bei ihr zu beobachtende Verfahren betreffen, entscheidet das Vollstreckungsgericht. 2 Es ist befugt, die im § 732 Abs. 2 bezeichenden Anordnungen zu erlassen. (2) Dem Vollstreckungsgericht steht auch die Entscheidung zu, wenn ein Gerichtsvollzieher sich weigert, einen Vollstreckungsauftrag zu übernehmen oder eine Vollstreckungshandlung dem Auftrag gemäß auszuführen, oder wenn wegen der von dem Gerichtsvollzieher in Ansatz gebrachten Kosten Erinnerungen erhoben werden. '''(Quellinfo = Buch "ZPO" S. 179 ff.)''' = § 767 (ZPO) Vollstreckungsabwehrklage. = (1) Einwendungen, die den durch das Urteil festgestellten Anspruch selbst betreffen, sind von dem Schuldner im Wege der Klage bei dem Prozessgericht des ersten Rechtszuges geltend zu machen. (2) sie sind nur insoweit zulässig, als die Gründe auf denen sie beruhen, erst nach dem Schluss der mündlichen Verhandlung, in der Einwendungen nach den Vorschriften dieses Gesetzes spätestens hätten geltend gemacht werden müssen, entstanden sind und durch Einspruch nicht mehr geltend gemacht werden können. (3) Der Schuidner muss in der von ihm zu erhebenden Klage alle Einwendungen geltend machen, die er zur Zeit der Erhebung der Klage geltend zu machen imstande war. '''(Quellinfo = Buch "ZPO" S. 180 ff.)''' = § 768 (ZPO) Klage gegen Vollstreckungsklausel. = Die Vorschriften des § 767 Abs. 1, 3 gelten entsprechend, wenn in den Fällen des § 726 Abs. 1, der §§ 727 bis 729, 738. 742, 744, des § 749 der Schuldner den bei der Erteilung der Vollstreckungsklausel als beweisen angenommenen Eintritt der Voraussetzung für die Erteilung der Vollstreckungsklausel bestreitet, unbeschadet der Befugnis des Schuldners, in diesen Fällen Einwendungen gegen die Zulässigkeit der Vollstreckungsklausel nach § 732 zu erheben. '''(Quellinfo = Buch "ZPO" S. 180 ff.)''' = § 769 (ZPO) Einstweilige Anordnungen. = (1) 1 Das Prozessgericht kann auf Antrag anordnen, dass bis zum Erlass des Urteils über die in den §§ 767, 768 bezeichneten Einwendungen die Zwangsvollstreckung gegen oder ohne Sicherheitsleistung eingestellt per nur gegen Sicherheitsleistung fortgesetzt werde und das Vollstreckungsmaßregeln gegen Sicherheitsleistung aufzuheben seien. 2 Es setzt eine Sicherheitsleistung für die Einstellung der Zwangsvollstreckung nicht fest, wenn der Schuldner zur Sicherheitsleistung nicht in der Lage ist und die Rechtsverfolgung durch ihn hinreichende Aussicht auf Erfolg bietet. 3 Die tatsächlichen Behauptungen, die den Antrag begründen, Erfolg bietet. 3 Die tatsächlichen Behauptungen, die den Antrag begründen sind glaubhaft zu machen. (2) 1 In dringenden Fällen kann das Vollstreckungsgericht eine solche Anordnung erlassen, unter Bestimmung einer Frist innerhalb der die Entscheidung des Prozessgerichts beizubringen sei. 2 Nach fruchtlosem Ablauf der Frist wird die Zwangsvollstreckung fortgesetzt. (3) Die Entscheidung über diese Anträge ergeht durch Beschluss. (4) Im Fall der Anhängigkeit einer auf Herabsetzung gerichteten Abänderungsklage gelten die Absätze 1 bis 3 entsprechend. '''(Quellinfo = Buch "ZPO" S. 180 ff.)''' = § 770 (ZPO) Einstweilige Anordnungen im Urteil. = <sup>1</sup>Das Prozessgericht kann in dem Urteil, durch das über die Einwendungen entschieden wird, die in dem vorstehendem Paragraphen bezeichneten Anordnungen erlassen oder die bereits erlassenen Anordnungen aufheben, abändern oder bestätigen. <sup>2</sup> Für die Anfechtungen einer solchen Entscheidung gelten die Vorschriften des § 718 entsprechend. '''(Quellinfo = Buch "ZPO" S. 184 ff.)''' = § 771 (ZPO) Drittwiderspruchsklage. = (1) Behauptet ein Dritter, dass ihm an dem Ggenstnd der Zwangsvollstreckung ein die Veräußerung hinderndes Recht zustehe, so ist der Widerspruch gegen die Zwangsvollstreckung im Wege der Klage bei dem Gericht geltend zu machen, in dessen Bezirk die Zwangsvollstreckung erfolgt. (2) Wird die Klage gegen den gläubiger und den Schuldner gerichtet, so sind diese als Streitgenossen anzusehen. (3)<sup>1</sup> Auf die Einstellung der Zwangsvollstreckung und die Aufhebung der bereits getroffenen Vollstreckungmapregeln sin die Vorschriften der §§ 769, 770 entsprechend anzuwenden. <sup>2</sup> Die Aufhebung einer Vollstreckungsmaßregel ist auch ohne Sicherheitsleistung zulässig. '''(Quellinfo = Buch "ZPO" S. 184 ff.)''' = § 772 (ZPO) Drittwiderspruchsklage bei Veräußerungsverbot. = <sup>1</sup>Solange ein Veräußerungsverbot der in den §§ 135,136 des Bürgerlichen Gesetzbuchs bezeichneten Art besteht, soll der Gegenstand auf den es sich bezieht, wegen eines persönlichen Anspruchs oder auf Grund eines infolge des Verbots unwirksamen Rechts nicht im Wege der Zwangsvollstreckung veräußert oder überwiesen werden. <sup>2</sup>Auf Grund des Veräußerungsverbots kann nach Maßgabe des § 771 Widerspruch erhoben werden. = § 773 (ZPO) Drittwiderspruchsklage des Nacherben. = = § 774 (ZPO) Drittwiderspruchsklage des Ehegatten oder Lebenspartners. = = § 775 (ZPO) Einstellung oder Beschränkung der Zwangsvollstreckung. = = § 776 (ZPO) Aufhebung von Vollstreckungsmaßregeln. = = § 777 (ZPO) Erinnerung bei genügender Sicherung des Gläubigers. = = § 778 (ZPO) Zwangsvollstreckung vor Erbschaftsnahme. = = § 779 (ZPO) Fortsetzung der Zwangsvollstreckung nach dem Tod des Schuldners. = = § 780 (ZPO) Vorbehalt der beschränkten Erbenhaftung. = ::'''Titel 2. Zwangsvollstreckung in das bewegliche Vermögen''' : '''Untertitel 1. Allgemeine Vorschriften''' = § 802 <sup>1</sup>(ZPO) Auskunftsrechte des Gerichtsvollziehers. = = § 803 (ZPO) Pfändung. = (1) 1 Die Zwangsvollstreckung in das bewegliche Vermögen erfolgt durch Pfändung. 2 Sie darf nicht weiter ausgedehnt werden,als es zur Befriedigung des Gläubigers und zur Deckung der Kosten der Zwangsvollstreckung erforderlich ist. (2) Die Pfändung hat zu unterbleiben, wenn sich von der Verwertung der zu pfändenden Gegenstände ein Überschuss über die Kosten der Zwangsvollstreckung nicht erwarten lässt. '''(Quellinfo = Buch "ZPO" S. 200 ff.)''' = § 804 (ZPO) Pfändungsrecht. = (1) Durch die Pfändung erwirbt der Gläubiger ein Pfandrecht an dem gepfändeten Gegenstande. (2) Das Pfandrecht gewährt dem Gläubiger im Verhältnis zu anderen Gläubigern dieselben Rechte wie ein durch Vertrag erworbenes Faustpfandrecht; es geht Pfand- und Vorzugsrechten vor, die für den Fall eines Insolvenzverfahrens den Faustpfandrechten nicht gleichgestellt sind. 1) (3) Das durch eine frühere Pfändung begründete Pfandrecht geht demjenigen vor, das durch eine spätere Pfändung begründet wird. '''(Quellinfo = Buch "ZPO" S. 200 ff.)''' = § 829 a (ZPO) Vereinfachter Vollstreckungsantrag bei Vollstreckungsbescheiden. = Text folgt noch! = § 830 (ZPO) Pfändung einer Hypothekenforderung. = Text folgt noch! = § 830 a (ZPO) Pfändung einer Schiffshypothekenforderung. = Text folgt noch! = § 831 a (ZPO) Pfändung indossabler Papiere. = Text folgt noch! = § 832 (ZPO) Pfändungsumfang bei fortlaufenden Bezügen. = Text folgt noch! = § 833 (ZPO) Pfändungsumfang bei Arbeits- und Diensteinkommen . = Text folgt noch! = § 833 a (ZPO) Pfändungsumfang bei Kontoguthaben. = Text folgt noch! = § 834 (ZPO) Keine Anhörung des Schuldners. = Text folgt noch! = § 835 a (ZPO) Überweisung einer Geldforderung. = Text folgt noch! = § 836 <sup>1</sup> (ZPO) Wirkung der Überweisung. = Text folgt noch! = § 837 (ZPO) Überweisung einer Hypothekenforderung. = Text folgt noch! = § 837 a (ZPO) Überweisung einer Schiffshypothekenforderung. = Text folgt noch! = § 838 (ZPO) Einrede des Schuldners bei Faustpfand. = Text folgt noch! = § 839 (ZPO) Überweisung bei Abwendungsbefugnis. = Text folgt noch! = § 840 (ZPO) Erklärungspflicht des Drittschuldners. = Text folgt noch! = § 841 (ZPO) Pflicht zur Streitverkündung. = Text folgt noch! = § 842 (ZPO) Schadenersatz bei verzögerter Beitreibung. = Text folgt noch! = § 843 (ZPO) Verzicht des Pfandgläubigers. = Text folgt noch! = § 844 (ZPO) Andere Verwertungsart. = Text folgt noch! = § 845 <sup>1</sup> (ZPO) Vorpfändung. = Text folgt noch! = § 846 (ZPO) Zwangsvollstreckung in Herausgabeansprüche. = Text folgt noch! = § 847 (ZPO) Herausgabeanspruch auf eine bewegliche Sache. = Text folgt noch! = § 847 a (ZPO) Herausgabeanspruch auf ein Schiff. = Text folgt noch! = § 848 (ZPO) Herausgabeanspruch auf eine unbewegliche Sache. = Text folgt noch! = § 849 (ZPO) Keine Überweisung an Zahlungs statt. = Text folgt noch! = § 850 (ZPO) Pfändungsschutz für Arbeitseinkommen. = (1) Arbeitseinkommen, das in Geld zahlbar ist, kann nur nach Maßgabe der §§ 850a bis 850i gepfändet werden. (2) Arbeitseinkommen im Sinne dieser Vorschrift sin die Dienst- und Versorgungsbezüge der Beamten, Arbeits- und Dienstlöhne. Ruhegelder und ähnliche nach dem einstweiligen oder dauernden Ausscheiden aus dem Dienst- oder Arbeitsverhältnis gewährte fortlaufende Einkünfte, ferner Hinterblebenenbezüge, soweit sonstige Vergütungen für Dienstleistungen aller Art, die die Erwerbstätigkeit des Schuldners vollständig oder zu einem wesentlichen Teil in Anspruch nehmen. (3) Abeitseinkommen und auchdiefeolgenden Bezüge, soweit sie in Geld zahlbar sind: :: a) Bezüge, die ein Arbeitnehmer zum Ausgleich für Wettbewerbsbeschränkungen fpr die Zeit nach Beendigung eines inestverhältnisses beanspruchen kann: :: b) Renten, die auf Grund von Versicherungsunternehmen oder seiner unterhaltsberechtigten Angehörigen eingegangen sind. (4) Die Pfändung des in Geld zahlbaren Arbeitskommens erfasst alle Vergütungen, die dem Schuldner aus der Arbeits- oder Dienstleistung zustehen, ohne Rücksicht auf ihre Benennung oder Berechnungsart. '''(Quellinfo = Buch "ZPO" S. 216 ff.)''' = § 850 a (ZPO) Unpfändbare Bezüge. = Unpfändbar sind 1. zur Hälfte die für die Leistung von Mehrarbeitsstunden gezahlten Teile des Arbeitsseinkommens; 2. die für die Dauer eines Urlaubs über das Arbeitseinkommen hinaus gewährten Bezüge, Zuwendungen aus Anlass eines besonderen Betriebsereignisses und Treugelder, soweit sie den Rahmen des Üblichen nicht übersteigen; 3. Aufwandsentschädigungen, Auslösungsgelder und sonstige soziale Zulagen für auswärtige Beschäftigungen, das Entgelt für selbstgestelltes Arbeitsmaterial. Gefahrenzulagen, sowie Schmutz und Erschwerniszulagen, soweit diese Bezüge den Rahmen des Üblichen nicht übersteigen; 4. Weihnachtsvergütungen bis zum Betrag der Hälfte des monatlichen Arbeitseinkommens, höchstens aber bis zum Betrag von 500 Euro; 5. Geburtsbeihilfen sowie Beihilfen aus Anlass der Eingehung einer Ehe oder Begründung einer Lebenspartnerschaft, sofern die Vollstreckung wegen anderer als der aus Anlass der Geburt, der Eingebung einer Ehe oder der Begründung einer Lebenspartnerschaft entstandenen Ansprüche betrieben wird; 6. Erziehungsgelder, Studienbeihilfen und ähnliche Bezüge; 7. Sterbe- und Gnadenbezüge aus Arbeits- und Dienstverhältnissen; 8. Blindenzulagen. '''(Quellinfo = Buch "ZPO" S. 217 ff.)''' = § 850 b (ZPO) Bedingt pfändbare Bezüge. = Text folgt noch! = § 850 c<sup>1</sup> (ZPO) Pfändungsgrenzen für Arbeitseinkommen. = Text folgt noch! = § 850 d (ZPO) Pfändbarkeit bei Unterhaltsansprüchen. = Text folgt noch! = § 850 e<sup>1</sup> (ZPO) Berechnung des pfändbaren Arbeitseinkommens. = Text folgt noch! = § 850f (ZPO) Änderung des unpfändbaren Betrages. = Text folgt noch! = § 850g (ZPO) Änderung der Unpfändbarkeitsvoraussetzungen. = Text folgt noch! = § 886 (ZPO) Herausgabe bei Gewahrsam eines Dritten. = Befindet sich eine herauszugebende Sache im Gewahrsam eines Dritten, so ist dem Gläubiger auf dessen Antrag der Anspruch des Schuldners auf Herausgabe der Sache nach den Vorschriften zu überweisen, welche die Pfändung und Überweisung einer Geldforderung betreffen. '''(Quellinfo = Buch "ZPO" S. 242 ff.)''' :::::::'''Abschnitt 6. Schiedsspruch und Beendigung des Verfahrens''' = § 1051 (ZPO) Anwendbares Recht.= (1) <sup>1</sup> Das Schiedsgericht hat die Streitigkeit in Übereinstimmung mit den Rechtsvorschriften zu entscheiden, die von den Parteien als auf den Inhalt des Rechtsstreits anwendbar bezeichnet worden sind. <sup>2</sup> Die Bezeichnung des Rechts oder der Rechtsordnung eines bestimmten Staats ist, sofern die Parteien nicht ausdrücklich etwas anderes vereinbart haben, als unmittelbare Verweisung auf die Sachvorschriften dieses Staates und nicht auf sein Kollisionsrecht zu verstehen. (2) Haben die Parteien die anwendbaren Rechtsvorschriften nicht bestimmt, so hat das Schiedsgericht das Recht des Staates anzuwenden, mit dem der Gegenstand des Verfahrens die engsten Verbindungen aufweist. (3) <sup>1</sup> Das Schiedsgericht hat dann nach Billigkeit zu entscheiden, wenn die Parteien es ausdrücklich dazu ermächtigt haben. <sup>2</sup> Die Ermächtigung kann bis zur Entscheidung des Schiedsgerichts erteilt werden. (4) In allen Fällen hat das Schiedsgericht in Übereinstimmung mit den Bestimmungen des Vertrages zu entscheiden und dabei bestehende Landesbräuche zu berücksichtigen. = § 1052 (ZPO) Entscheidung durch ein Schiedsrichterkollegium.= = § 1053 (ZPO) Vergleich.= = § 1054 (ZPO) Form und Inhalt des Schiedsspruchs.= = § 1055 (ZPO) Wirkungen des Schiedsspruchs.= = § 1056 (ZPO) Beendigung des schiedsrichterlichen Verfahrens.= hljxwe10w5ga9qpe8az09dfmmt0t9ec Gitarre: Lerne CAGED-Stammtöne 0 117512 1090567 1090457 2026-09-08T17:00:34Z Mjchael 2222 /* Töne der C-Dur Tonleiter auf dem Griffbrett */ 1090567 wikitext text/x-wiki {{:Gitarre/ Navi|Sologitarre| {{:Gitarre: Sologitarre/ Navi Improvisation in Dur und Moll}}| img=Guitar 1.svg |bg=#F8f8f8|border=darkorange|color=dark|px=80|navi=Einführung in die Sologitarre}} = Wiederholung der Fingersätze = ; mit Schwerpunkt auf den Stammtönen Diese Wiederholung ist zum einen dafür gedacht, die vorhergehenden Übungen auf jeder Saitenlage zu machen, und auch in jeder Bundlage, gleichgültig ob die Finger eng beieinander oder weit auseinander stehen. Zum andern sind diese als Vorbereitung in die Sologitarre gedacht. Beispielsweise als Auflockerungsübung zwischen den Barré-Akkorden. Besonderen Augenmerk wollen wir hier auf die Notennamen legen. Diese können hier mitgelernt werden. Solltest du meinen, das sei noch nicht für dich dran und kann warten, dann springe zur ersten CAGED-Skala. Du kannst beim Kapitel Longform nochmal hierrauf zurückkommen. * [[Gitarre: CAGED-Skala D-Dur-Form|CAGED-Skala D-Dur-Form]] Lassen wir die [[Gitarre: Aufbau der CAGED-Skalenformen|erste Lektion]] (insbesondere für die Quereinsteiger) noch einmal Revue passieren. Die folgenden Übungen enthalten oft eine Folge von ein- oder zweitaktigen Sequenzen. Eine Sequenz ist ein Motiv, dass sich auf verschiedenen Tonhöhen wiederholt. Auch ohne Notenkenntnisse kannst du den Verlauf und die Wiederholungen der Sequenzen einfacher im Notenbild verfolgen, als in der Tabulatur; insbesondere wenn du dir gleichzeitig die Übung anhörst. Es kommen auch Ausschnitte aus klassischen Stücken, Folksongs, Kinderlieder o.ä. vor. Die einfache Struktur oder der Bekanntheitsgrad der Melodien sollen dir das Üben erleichtern. Die Finger finden so leichter ihre Position, als wenn du erstmal jede einzelne Note aus der Tabulatur entschlüsseln musst. Jede Übung wird auf allen Saitenlagen geübt. Vorher blieben wir in den mittleren Lagen. Jetzt gehen wir auch in die ersten Bünde, wo man die Finger etwas mehr spreizen muss, und in die höheren Lagen, wo es ein wenig eng wird. Die Stücke wiederholen sich in dieser Lektion in der selben Tonart, doch auf verschiedenen Bünden. Du spielst immer die selbe Tonfolge, nur auf verschiedenen Tonhöhen bzw. auf verschiedenen Saitenlagen. Lediglich zwischen der G- und H-Saite musst du dir jedesmal überlegen, wie sich der Lagewechsel auf den Fingersatz auswirkt. Doch der Fingersatz in den anderen höheren Lagen bleibt immer gleich. Wie die Tonfolgen mit dem CAGED-System zusammenhängen, das muss dich nur am Rande interessieren. Es wird in den folgenden Lektionen näher und ausführlicher erleutert. :[[Datei:Scala Griffbrett.svg]] Wir hatten uns bei den vorhergehenden Übungen weitestgehend an den Intervallen (1-j7) und an der Tabulatur orientiert. Diese sind in allen Tonarten gleich. Suche zuerst das Karré! Daran orientierst du dich. :[[Image:Scala Carree.svg]] {{Tipp|Lerne bei der C-Dur-Tonleiter nicht nur die Intervalle <br> 2 - 3 4 - 5<br> 6 - j7 1 - 2<br> sondern benenne auch jede einzelne Note. <br> D - E F - G<br> A - H C - D<br> So bekommst du einen recht einfachen Überblick über das Griffbrett.}} == Töne der C-Dur Tonleiter auf dem Griffbrett == Wir wollen uns in dieser Lektion auf die Töne bzw. die Notennamen konzentrieren. Allerdings sparen wir uns vorerst alle Töne mit Vorzeichen aus. Die [[Gitarre: Aufbau der CAGED-Skalenformen|ersten Übungen zum 1. und 2. Fingersatz]] werden auf die Tonart C-Dur bzw. A-Moll übertragen und wir spiele sie in den hier gezeigten Positionen. Wir fangen mit dem zweiten Fingersatz an, wo wir entweder den Ton C oder den Ton A der C-Dur- bzw. Am-Tonleiter als Orientierung nutzen :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] Du hast vermutlich allerlei Akkordformen des CAGED-System gesehen. <div class="noprint"> ;Animation [[Image:Crd Grundtonschema ani.gif]] </div> <score> << \new ChordNames { \chordmode { c1 c c c c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 e-2 g c'-1 e' > < c-1\5 g-3\4 c'-3\3 e'-4\2 g'-1 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 e-2\5 g-1\4 c'-1\3 e'-1\2 c''-4\1> < c-1\6 g-2\5 c'-3\4 e'-4\3 g'-1\2 c''-1\1> \once \override FretBoard.fret-diagram-details.dot-color = #'white < c'-1\4 g'-2\3 c''-4\2 e''-3\1 > < c'-4\5 e'-3\4 g'-1\3 c''-2\2 e''-1\1 > } >> </score> Wenn du schon Fingerstyle oder Jazz spielst, mögen dir viele der Formen bekannt vorkommen. Doch selbst wenn du bis jetzt nur das [[Gitarre: Rockdiplom|Rockdiplom]] gemacht hast und mit den dort vorkommenden Barré-Akkorden vertraut bist, wirst du sehen, dass die einfachen Barré-Akkorde ausreichen, um sich auf dem Griffbrett zu zurechtzufinden. Die [[Gitarre: C-Dur-Tonleiter Workshop|C-Dur-Tonleiter in den ersten drei Bünden]] setze ich als bekannt voraus und es sollte dir nicht allzu schwer fallen, diese in den 12. Bund zu übertragen. :[[Datei:Scala C-Am.svg|150px]][[Datei:C-Dur_Majorpattern_III.jpg|150px]] C-Dur als Barré im 3. Bund kennst du vom Rockdiplom, und C-Dur im 8. Bund ist auch kein Hexenwerk. Dazwischen liegt nach dem CAGED-System die G-Form, die dir vermutlich noch nicht untergekommen ist (hier mit weißem Fingersatz). Statt uns die Töne von der G-Form abzuleiten, machen wir es uns einfacher und leiten uns die Töne zur Orientierung vom Am im 5. Bund ab. Du erinnerst dich noch an die Dur- und Mollparallelen? (C- \ Am-Tonleiter bzw. G- \ Em-Form). Oder du nutzt die Grundtöne des C-Barré im 8. Bund. <score> << \new ChordNames { \chordmode { c1 c c a:m c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 e-2 g c'-1 e' > < c-1\5 g-3\4 c'-3\3 e'-4\2 g'-1 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 e-2\5 g-1\4 c'-1\3 e'-1\2 c''-4\1> < a,-1\6 e-3\5 a-4\4 c'-1\3 e'-1\2 a'-1\1 > < c-1\6 g-2\5 c'-3\4 e'-4\3 g'-1\2 c''-1\1> < c'-4\5 e'-3\4 g'-1\3 c''-2\2 e''-1\1 > } >> </score> Leite dir also die Grundtöne C und A von den dir bekannten Barré-Akkorden ab und spare dir die ungewöhnlicheren Akkordformen auf, bis sie dir später beim Fingerstyle oder Jazz begegnen. Es macht dabei garnichts aus, wenn du zum Auffinden der Grundtöne und zum Finden des Starttons ein paar Sekunden brauchst. Du wirst sehen, dass die Wiederholungen der bekannten Übungen auf den verschiedenen Bünden und in verschiedenen Oktavebereichen leicht von der Hand gehen. Lediglich beim Lagewechsel zwischen der G- und H-Saite musst du etwas überlegen. <score> << \new ChordNames { \chordmode { c1 c c a c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 c'-1 > < c-1\5 c'-3\3 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 c'-1\3 c''-4\1> < a,-1\6 a-4\4 a'-1\1 > < c-1\6 c'-3\4 c''-1\1> < c'-4\5 c''-2\2 > } >> </score> Diese wenigen"Eckpunkte" reichen aus, um dich grob auf dem Griffbrett zurechtzufinden. Suche sie noch einmal in der Skala und natürlich auch auf deinem Griffbrett. :[[Datei:C-Major-Scale on the fretboard.svg]] == Zweiter Fingersatz == :[[Datei:Scala 6_71-2_34.svg]] Zuerst suchen wir uns in der C-Dur-Tonleiter überall den zweiten Fingersatz heraus. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] Zur leichteren Orientierung wird die Grafik bei jeder neuen Melodie wiederholt. === Rondeau (Auszug) === Die eintaktige Sequenzen wurde aus einem Rondeau von J.S. Bach entnommen, dass beliebig wiederholt werden kann. Der Grundton C, welcher im letzten Takt rot eingefärbt wurde, wird mit dem kleinen Finger gegriffen. Du kannst tatsächlich die Noten nutzen (sofern du es schon kannst) oder aber du orientierst dich an den Notennamen. Am Anfang des Griffbrettes brauchen wir den zweiten Fingersatz nicht vollständig. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #5 % \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> In der A-(Bb-)Form müssen wir den Lagewechsel zwischen der G- und H-Saite beachten. Übrigens werden hier die Töne in der englischen Form angegeben. (Bb-Form und der Ton B statt des deutschen H.) Nur der erste Bund wird bis zur letzten Note in der dritten Lage gespielt. Der Rest bis zur letzten Note in der zweiten Lage. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (A-, Bb-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e-4 d-2 c d e d c b d c b c d c b a c b a b c d b c d-1 } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Statt in der G-Form das C zu suchen, suche lieber das A im 5. Bund (hier grün hervorgehoben). Oder du leitest dir das C vom Barré im 8. Bund ab. Der Startton E ist auf der A Saite im 7. Bund unter dem Ringfinger. Ansonsten stellt der Fingersatz keine Herausforderung mehr dar. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (G-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b \once \override NoteHead #'color = #green a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Der kleine Finger des C-Barré im 8. Bund in der E- bzw. F-Form gibt gleichzeitig das C des zweiten Fingersatz an. Du siehst, dass ab jetzt alles leichter geworden ist, weil sich ansonsten nichts mehr am Fingersatz ändert. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (E- F-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Für den Grundton C müssen wir uns die D-Form gar nicht so genau ins Gedächtnis rufen, wenn uns die C-Form viel vertrauter ist. Diese hohe Lage ist für E-Gitarristen oder Gitarren mit Cutaway gedacht. Auf der Konzertgitarre ist die sehr hohe Lage schlecht zu spielen. Gehe ggf. einen Kompromiss ein, und spiele diese hohe Saitenlage ein paar Bünde tiefer als Übung nur für den Fingersatz aber nicht für die Notennamen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Noten über dem hohen C (der mit zwei Hilfslinien) wird dir seltener begegnen, da in dem Fall bevorzugt die Noten nach unten oktaviert werden. (Beachte die 8 im Notensystem.) Bei den weiteren Übungen werden jedoch die Versionen mit den vielen Hilfslinien angezeigt. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { \ottava #1 e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Mit der C-Form in den ersten drei Bünden im Hinterkopf ist der 12. Bund leicht zu bewältigen. Wieder eine Übung, die weniger für Konzertgitarren geeignet ist. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === "Das häßliche Entlein" oder "Alle meine Entchen"<ref>Anspielung auf ein Märchen der Gebrüder Grimm nebst einem bekannten deutschen Kinderlied.</ref> in A-Moll === Die vorherige Übung war in Dur, und hier verwenden wir ein und den selben Fingersatz in Moll. Wie du siehst und hörst, lässt sich ein Fingersatz oder ein Pattern nicht eindeutig einer einzigen Tonart zuordnen. Der Schlusston oder der Schlussakkord (hier der Ton A bzw. der Akkord Am) bestimmt die Tonart. Der Grundton A ist hier die Sexte (6) des zugrunde liegenden C-Major-Pattern. Es bleibt dir überlassen, ob du zur Orientierung lieber den Grundton A (grün) bestimmst, oder das C aus dem Karré (rot). Wenn in einer Tabulatur über einer Ziffer zwei Notenhälse stehen, so ist das ein Zeichen für eine halbe Note, die zwei Schläge dauert. Da dieses für viele Gitarristen sehr ungewöhnlich aussieht, verzichtet man oft auf Taktstriche in der Tabulatur. In dem Fall lässt sich die Tondauer allein an den Notenwerten ablesen. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-/Am-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #5 % \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Der Lagewechsel zwischen der G- und H-Saite ist hier leicht zu bewältigen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Gm-/Bb-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d-1 e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2-4 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Auch hier ist es wieder einfacher das A (grün) zu suchen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Em-/G-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (E- / F-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Statt lange nach dem Grundton der D-Form zu suchen, erinneren wir uns kurz, wo der Grundton C auf der H- (B-)Saite sein muß (13. Bund). <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> === Die Moldau (Hauptmotiv) === Die Abfolge der Töne der folgenden Übung unterscheidet sich kaum von der vorhergehenden. Doch mit dem anderen Rhythmus haben wir das Hauptmotiv von der Komposition {{Youtube-Suche|Smetana+Die+Moldau|"Die Moldau" von Bedrich Smetana}} (ohne Auftakt und rhythmisch vereinfacht). Auch wenn es hier (wie in der 7. Übung) nur die Molltonleiter rauf und runter geht, merkst du hoffentlich, wieviel der Takt und Rhythmus an der Wirkung ausmacht. Wenn du später mal meinst, deine Improvisationen hören sich langweilig an, dann solltest du dich mehr mit Rhythmus beschäftigen. Dazu kannst du dich auch ein wenig mit Schlagmustern beschäftigen. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Am-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Warum die Form hier Gm-Form genannt wird, das wird dir in den nachfolgenden Lektionen klarer werden. Auf Fingersatzangaben können wir hier verzichten, wenn du vorher "Alle meine Entchen in Am" gespielt hast. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Bb- /Gm-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier bietet sich besonders an, den Am-Barré zur Orientierung zu verwenden. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Em-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Auch hier gibt dir der kleine Finger des Am-Barrés den Grundton an. Du kannst dir die Dm-Form aber auch über die F-Form (C im 8. Bund) ableiten. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (F- /Dm-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Zähle vom C (H-Saite, 13. Bund) rückwärts zum A. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D- /Bm7-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier wird die erste Übung in den 12. Bund verschoben. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C- /Am-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==1. Fingersatz== Dir wird wohl aufgefallen sein, dass beim zweiten Fingersatz der Ton G fehlt. Den üben wir mit dem ersten Fingersatz. :[[Datei:Scala 71_2-34_5.svg]] Beachte, dass der Grundton (1) unter dem Ringfinger (also im zweiten Bund dieses Fingersatzes) ist, und dass du deine freie Improvisationsübung in Dur günstigerweise mit der (1) beginnen oder zumindest enden sollte. Diesen Fingersatz suchen wir in der C-Dur-Tonleiter auf dem Griffbrett. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] === Eintaktige Sequenzen === Die erste Lage mit leeren Saiten stellt noch keine Herausforderung dar. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Du musst noch nicht einmal den C-Barré im 3. Bund bemühen, um den Grundton zu finden. Die C-Dur-Tonleiter in den ersten drei Bünden reicht. Natürlich kannst du auch den Startton G suchen. Die Tabulatur sagt dir "D-Saite 5. Bund". Erinnere dich daran, dass dies der Stimmton der D-Saite ist (beim Stimmen nach Bünden). Auch hier ist der Fingersatz leicht. <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • A- (Bb-)Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 4 2 3 darkgrey ) (place-fret 4 3 4 yellow3 ) (place-fret 4 5 5 darkgrey ) (place-fret 5 2 "j7" yellow3 ) (place-fret 5 3 1 black ) (place-fret 5 5 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb)-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ====G-Form==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • G-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 2 5 3 darkgrey ) (place-fret 2 6 4 yellow3 ) (place-fret 2 8 5 darkgrey ) (place-fret 3 4 "j7" yellow3 ) (place-fret 3 5 1 black ) (place-fret 3 7 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Bei der G-Form kommt es zwischen der G- und H-Saite zu einem Lagewechsel. Du musst dir jedesmal eine Strategie zurechtlegen, wann und wie du am besten den Lagewechsel durchführst. Wenn du Glück hast, findest du im Notenbild einen Hinweis, wie man günstig die Lage wechseln kann. Ich empfehle dir dort wo die 2 über den Noten steht, den Mittelfinger zu nehmen. *(1 = Z, 2 = M, 3 = R, 4 = K, 0 = leere Saite) Betrachte solche Hinweis nur als Vorschlag, denn es gibt keine verbindliche Regel, wie der Lagewechsel zu erfolgen hat. Übst du die gleiche Sequenzen ein paar Saiten höher oder tiefer, geht es leichter von der Hand. Beachte den Lagewechsel zwischen der G- und H-Saite. Den Grundton C kannst du dir auch vom Ringfinger auf der G-Saite des C-Barrés ableiten. Du musst dir hier eine Strategie zurechtlegen, wann du den Lagewechsel durchführen möchtest. Ich empfehle hier, den Lagewechsel so früh wie möglich zu machen, damit du den Zeigefinger frei hast, um gleich hintereinander zwei Töne in einem Bund zu spielen. Betrachte die Angaben zum Fingersatz nur als Vorschlag. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d-4 e-2 f-3 d e f e d c d e c-1 d-4 e-2 d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier eine alternative Lösung. Du kannst einen kleinen Barré über die Noten C und E legen, und den Lagewechsel später ausführen. Das V unter dem C zeigt hier den 5. Bund an, und nicht etwa Abschläge. Der Lagewechsel erfolgt hier im letzten Takt. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d e f d e f e d-2 \textSpannerDown \override TextSpanner.bound-details.left.text = "V" c-1\startTextSpan d e-1 c-1 d e-1\stopTextSpan d-4 c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • E- (F-)Form <score raw="1"> \version "2.24.4" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 5 7 3 darkgrey ) (place-fret 5 8 4 yellow3 ) (place-fret 5 10 5 darkgrey ) (place-fret 6 7 "j7" yellow3 ) (place-fret 6 8 1 black ) (place-fret 6 10 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Den Grundton C auf der E-Saite kannst du dir vom C-Barré der E-Form (wie ein F- Barré) im 8. Bund ableiten. Der Fingersatz ist wieder einfach. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E-(F)-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • D-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 3 9 3 darkgrey ) (place-fret 3 10 4 yellow3 ) (place-fret 3 12 5 darkgrey ) (place-fret 4 9 "j7" yellow3 ) (place-fret 4 10 1 black ) (place-fret 4 12 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div>Die Tonhöhe ist die selbe, wie in der G-Form, wo wir uns komplizierte Strategien für den Fingersatz zurechtlegen mussten. In dieser Lage ist alles einfacher. Wenn du später mal einen herausfordernden Lick zwischen der G- und H-Saite hast, wäre eine weitere gangbare Strategie den Lick in eine fingertechnisch günstigere Lage zu verlegen. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ====C-Form==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • C-Form <score raw="1"> \version "2.24.4" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 1 12 3 darkgrey ) (place-fret 1 13 4 yellow3 ) (place-fret 1 15 5 darkgrey ) (place-fret 2 12 "j7" yellow3 ) (place-fret 2 13 1 black ) (place-fret 2 15 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Hier wurde die C-Durtonleiter in den 12. Bund verlegt. Der Grundton ist auf der H-Saite im 13. Bund. (Eine Oktave höher als bei der C-Dur Tonleiter in den ersten drei Bünden.) Wer keine E-Gitarre hat oder wer keine Akkustik mit Cutaway hat, der kann die C-Form auch in einem niedrigeren Bund üben. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c''' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Halbtaktige Sequenzen === Diesmal hast du halbtaktige Sequenzen, die einmal wiederholt werden. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- / Bb-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Du kannst die beiden hintereinander folgenden Noten im 5. Bund mit einem Mini-Barré ausführen, und die Lagewechsel mittels Slide (=&nbsp;Glissando) durchführen, oder wie in der Wiederholung ohne Slide durchführen. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major c8-1 g' f e d f e d c-1 e-1 d c-1(\glissando b-1) d c b-1(\glissando c1-1) c8-2 g' f e d f e d c-1 e-2 d-4 c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Fingersatztechnisch wieder problemlos. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Ein Vogel wollte Hochzeit machen === Hier habe ich ein relativ bekanntes Kinderlied gefunden, dass perfekt zum 1. Fingersatz passt. Die Tondauern sind für Ungeübte in Sachen Noten schwer herauszulesen. Kennst du aber das Stück, oder hörst du es dir mehrmals an, so ist es keine unüberwindbare Schwierigkeit. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] Folgt das G nach dem D, greifst du den besser mit dem kleinen Finger. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d-3( g-4) g g16 e | c8 8 8 g'16 e d8 d d-3 g16-4 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier ist es wohl am einfachsten, dass du den kleinen Finger umlegst, wenn du nach dem D den G greifen willst. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb-)Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d-3( g-4) g g16 e | c8 8 8 g'16 e d8-3 d d g16-4 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Wenn der Ton C auf ein E-folgt, kann man entweder ein <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e-2 c-1 g' e d( g) g g16 e-2 | c8-1 8 8 g'16 e d8 d d g16 f | e8-2 c-1 d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Halbtaktige Sequenzen (2) === :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Bei der G-Form kommt es zwischen der G- und H-Saite zu einem Lagewechsel. Du musst dir jedesmal eine Strategie zurechtlegen, wann und wie du am besten den Lagewechsel durchführst. Wenn du Glück hast, findest du im Notenbild einen Hinweis, wie man günstig die Lage wechseln kann. Ich empfehle dir dort wo die 2 über den Noten steht, den Mittelfinger zu nehmen. *(1 = Z, 2 = M, 3 = R, 4 = K, 0 = leere Saite) Betrachte solche Hinweis nur als Vorschlag, denn es gibt keine verbindliche Regel, wie der Lagewechsel zu erfolgen hat. Übst du die gleiche Sequenzen ein paar Saiten höher oder tiefer, geht es leichter von der Hand. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c''' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Einsingen === Diese beiden Motive kennen viele, die schon einmal in einem Chor gesungen haben. Leider entsprechen viele Lieder in ihrem Tonumfang nicht genau einem der vollständigen drei Fingersätze oder der später folgenden Skalen. Zumeist werden nur Ausschnitte aus den Patterns gebraucht. Im ersten Motiv fehlt beispielsweise die große Septime (j7) vor dem Grundton. Dafür enthält das zweite Motiv die große Septime (j7). Das zweite Motiv eicht den Chor auf die gerade geforderte Tonart. Hier werden nur Akkordtöne in einer auf oder absteigenden Tonfolge gespielt (auch Arpeggios genannt). Der A7-Akkord enthält sowohl den Leitton (j7) der zum Grundton (1) hin leitet, als auch den Strebeton (4) die zur Durterz (3) hin strebt. Mit den zwei spannungsreichen Tönen, die sich zum Grundakkord auflösen wollen, wird der Chor auf die Durtonart eingenordet. Hier brauche ich dir nicht zu erklären, wo der Grundton D ist. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A-(Bb-)Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E-(F-)Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==Erste über den zweiten Fingersatz== Wie du siehst, kommt hier jedesmal zuerst der erste Fingersatz mit dem "Karree" rechts, und dannach kommt der Fingersatz mit dem "Karree" links. Sie sind immer untereinander. Nur zwischen der G- und B-Saite verschiebt sich alles um einen Bund. <div style="float:left; padding:5px; border:black solid 1px; "> ;F-Form <score raw="1"> \version "2.14.2" \paper{ indent=0\mm line-width=120\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% 4-o zeigt 4. Saite offen \fret-diagram #"s:2;f:1; 3-3-2;3-5-3;3-6-4; 4-3-6;4-5-7;4-6-1; 5-3-3;5-4-4;5-6-5; 6-3-7;6-4-1;6-6-2;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;Bb-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:2;f:1; 2-4-2;2-6-3;2-7-4; 3-3-6;3-5-7;3-6-1; 4-3-3;4-4-4;4-6-5; 5-3-7;5-4-1;5-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;D-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:2;f:1; 1-4-2;1-6-3;1-7-4; 2-4-6;2-6-2;2-7-1; 3-3-3;3-4-4;3-6-5; 4-3-7;4-4-1;4-6-2;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} === Jamaica Farewell === Die Melodie von [[Liederbuch/ Jamaica Farwell|Jamaica Farwell]] wurde erheblich vereinfacht, damit du dir nicht zu viele Gedanken um den Rhythmus machen musst. Wenn du dich am Quintillo (dem Rhythmus vom Lagerfeuerschlag} orientierst, solltest du wenige Probleme haben. Es gibt recht viele Wiederholung. Die Strophe wurde bei der Wiederholung in die Oktave verschoben, damit das Stück exakt in den Skalenausschnitt passt. Du musst dir für die Fingersätze ggf. Strategien zurechtlegen, damit du die Finger bequem sortiert bekommst. Das Stück beginnt mit dem Ton G. Der (5) in 1. Fingersatz. ;Bb-Form Greife den C wie ein Bb-Barré im 3. Bund. Leite dir von diesem Akkord den Grundton (1) ab, und wandere beim 1. Fingersatz rauf zum Startton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-4-2;2-6-3;2-7-4; 3-3-6;3-5-7;3-6-1; 4-3-3;4-4-4;4-6-5; 5-3-7;5-4-1;5-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (A-, Bb-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ; F-Form Greife den C wie ein F-Barré im 8. Bund. Leite dir von diesem Akkord den Grundton (1) ab, und wandere beim 1. Fingersatz rauf zum Startton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 3-7-2;3-9-3;3-10-4; 4-7-6;4-9-7;4-10-1; 5-7-3;5-8-4;5-10-5; 6-7-7;6-8-1;6-10-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (E-, F-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ;D-Form Schiebe den D-Dur-Akkord in den 12. Bund. Ein D im 12. Bund verschoben ergibt ein C. Leite dir von diesem Akkord den Grundton (1) ab. Orientiere dich kurz im 2. Fingersatz und wandere zurück zum ersten Fingersatz zum Ton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 1-10-2;1-12-3;1-13-4; 2-10-6;2-12-7;2-13-1; 3-9-3;3-10-4;3-12-5; 4-9-7;4-10-1;4-12-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (D-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==3. Fingersatz== Es fällt auf, dass der 3. Fingersatz kein "Karré" hat. {| !Fingersatz !width="30px"| !Intervalle |- |[[Image:Scala Z RK-Z K-ZM K.svg]] !width="30px"| |[[Image:Scala 2 34-5 6-71 2.svg]] |} Der 3. Fingersatz ist gar kein eigenständiger Fingersatz. Der obere Teil des 3. Fingersatzes ist eigentlich schon der untere Teil des 2. Fingersatzes. Ebenso ist der untere Teil des 3. Fingersatzes gleichzeitig der Anfang des 1. Fingersatzes. Du musst dir Strategien zurechtlegen, wie du den Übergang vom Ende des 2. Fingersatzes über die 5 und die 6 hin zum 1. Fingersatz gestaltest. Es kommt beim 3. Fingersatz zu einem Lagewechsel nach links. Übe den 3. Fingersatz zuerst in den obersten Saitenlagen (E A D G x x) === Eine II-V-I-Verbindung === Wir spielen eine einfache Tonfolge über einer 2-5-1-Verbindung. Die Akkordtöne liegen zumeist auf den schweren Zählzeiten. * D, F, A, C gehören zum Dm7 * G, B, D, F gehören zum G7 * C, E, G gehören zum C-Dur-Akkord. Wir nutzen das CAGED-System, um uns grob auf dem Griffbrett zurechtzufinden. ==== Exkurs: Skalenformen ==== Die Namen der Skalen leiten sich übrigens von folgenden einfachen Tonleitern in den ersten Bünden ab: [[Image:Scala C-Am.svg|100px]] [[Image:Scala Bb-Gm.svg|100px]] [[Image:Scala G-Em.svg|100px]] [[Image:Scala F-Dm.svg|100px]] [[Image:Scala D-Hm.svg|100px]] Alle Akkorde die man aus diesen einfachen Tonarten kennt, Bassläufe und ähnliches lassen sich zum großen Teil auf die entsprechenden 5 CAGED-Skalen übertragen, fast so als habe man die Tonleiter mittels Kapodaster in eine höhere Lage verschoben. Wie du siehst, nennen wir die Skalen entgegen des reinen CAGED-System nicht E-Dur-Form (Shape) und nicht die A-Dur-Form (Shape), sondern F- und Bb-Dur-Form. <div style="float:left; padding:5px; border:black solid 1px; "> ;E-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-1;1-2-2;1-4-3; 2-0-5;2-2-6;2-4-7; 3-1-3;3-2-4;3-4-5; 4-1-7;4-2-1;4-4-2; 5-0-4;5-2-5;5-4-6; 6-0-1;6-2-2;6-4-3;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;F-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-3; 1-1-1; 1-3-2; 2-1-5; 2-3-6; 3-0-2; 3-2-3; 3-3-4; 4-0-6; 4-2-7; 4-3-1; 5-0-3; 5-1-4; 5-3-5; 6-0-7; 6-1-1; 6-3-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;G-Dur-Tonleiter <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-3-3; 1-4-1; 1-6-2; 2-4-5; 2-6-6; 3-3-2; 3-5-3; 3-6-4; 4-3-6; 4-5-7; 4-6-1; 5-3-3; 5-4-4; 5-6-5; 6-3-7; 6-4-1; 6-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Du siehst selbst, dass die G-Dur-Tonleiter von der Form her eher wie die F-Dur-Tonleiter als wie die E-Dur-Tonleiter aussieht. <div style="float:left; padding:5px; border:black solid 1px; "> ;A-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-5;1-2-6;1-4-7; 2-0-2;2-2-3;2-3-4; 3-1-7;3-2-1;3-4-2; 4-0-4;4-2-5;4-4-6; 5-0-1;5-2-2;5-4-3; 6-0-5;6-2-6;6-4-7;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;Bb-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-1-5; 1-3-6; 2-1-2; 2-3-3; 2-4-4; 3-0-6; 3-2-7; 3-3-1; 4-0-3; 4-1-4; 4-3-5; 5-0-7; 5-1-1; 5-3-2; 6-1-5; 6-3-6;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;C-Dur-Tonleiter <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-3-5; 1-5-6; 2-3-2; 2-5-3; 2-6-4; 3-2-6; 3-4-7; 3-5-1; 4-2-3; 4-3-4; 4-5-5; 5-2-7; 5-3-1; 5-5-2; 6-3-5; 6-5-6;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Du siehst selbst, dass die C-Dur-Tonleiter von der Form her eher wie die Bb-Dur-Tonleiter als wie die A-Dur-Tonleiter aussieht. ==== 3. Fingersatz II-V-I-Verbindung D-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;D-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:3;f:1; 4-9-7;4-10-1;4-12-2; 5-10-5;5-12-6; 6-10-2;6-12-3;6-13-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Wir beginnen oben bei der D-Form, wo sich der Lagewechsel des 3. Fingersatz noch nicht mit dem Lagewechsel zwischen der G und H-Saite (engl. B-Saite) aufhebt. Würde ich ein Capo in den 10. Bund setzen, dann würde ich die Melodie vom Fingersatz her wie D-Dur spielen. In D-Dur spiele ich diese II-V-I-Verbindung Em7 A7 D. Nehme ich das Capo weg, dann greife ich den Dm(7) als einen Barré der Em-Form im 10. Bund. Von diesem kann ich mir das D als Grundton ableiten. Alternativ siehst du in den Noten, dass die Übung mit dem Ton D anfängt. Dass die oberste Tiefe E-Saite im 12. Bund ebenfalls ein E ergibt, setze ich als bekannt voraus. Falls nicht, beschäftige dich noch einmal mit dem [[Gitarre: Lagerfeueranhang 2c|Stimmen der Gitarre]]. Ein Ganztonschritt bzw. zwei Bünde vor dem E ist der Ton D. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (D-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g-1 a-4 b-1 c4 | b8^\markup { \bold {G7} } a-4 g4-1 f8 e d4 | e8^\markup { \bold {C} } f g4-1 a8-4 b-1 c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung G-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;G-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 3-4-7;3-5-1;3-7-2; 4-5-5;4-7-6; 5-5-2;5-7-3;5-8-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 5. Bund setzen, dann würde man die Melodie vom Fingersatz her wie G-Dur spielen. In G-Dur spielt man diese II-V-I-Verbindung Am7 D7 G. Nimmt man das Capo weg, dann greift man den Dm(7) als einen Barré der Am-Form. Von diesem kannst du dir den D als Grundton ableiten. Einfacher geht es natürlich, wenn du weißt, dass der D im 5. Bund der A-Saite der Stimmton der D-Saite ist. </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (G-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g-1 a-4 b-1 c4 | b8^\markup { \bold {G7} } a-4 g4-1 f8 e d4 | e8^\markup { \bold {C} } f g4-1 a8-4 b-1 c d | c b c2. | \break d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung C-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;C-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-0-7;2-1-1;2-3-2; 3-0-5;3-2-6; 4-0-2;4-2-3;4-3-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Die C-Dur-Form der C-Dur Tonleiter sieht schlicht und ergreifend wie die C-Durtonleiter aus. </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (C-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #4 % \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \break d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung C-Form 12. Bund ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;C-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-12-7;2-13-1;2-15-2; 3-12-5;3-14-6; 4-12-2;4-14-3;4-15-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 12. Bund setzen, dann würde man die Melodie vom Fingersatz her wie C-Dur spielen. In C-Dur spielt man diese II-V-I-Verbindung Dm7 G7 C. Der Startton ist schlicht die D-Saite im 12. Bund. </div> {{clear}} Gerade noch hatten wir einen Lagewechsel nach links. Jetzt aber hebt sich der Lagewechsel nach links vom 3. Fingersatz mit dem Lagewechsel zwischen der G- und H-Saite auf. Es hört sich beim ersten Durchlesen kompliziert an, aber du hast nur 4 Lektionen zu lernen. Den 1. bis 3. Fingersatz und den Lagewechsel zwischen der G- und H-Saite. Das Auffinden der Töne und welche Akkorde zu welcher Tonart gehört, und wie man einen Capo benutzt, sollte eigentlich nichts neues für dich sein. Rein technisch gesehen vereinfacht sich der Fingersatz. Doch es kostet ein wenig Überlegung, wie sich die beiden Lagewechsel auf den 3. Fingersatz auswirken. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (C-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> Sollte es im 12 Bund unbequem zu spielen sein, weil du kein Cutaway hast (Aussparung für die hohen Bünde), übe die C-Form ein paar Bünde zurück in einer anderen Tonart. ==== 3. Fingersatz II-V-I-Verbindung F-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;F-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 1-7-7; 1-8-1;1-10-2; 2-8-5; 2-10-6; 3-7-2; 3-9-3; 3-10-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 6. Bund setzen, dann würde man die Melodie vom Fingersatz her wie F-Dur spielen. In C-Dur spielt man diese II-V-I-Verbindung Gm7 C7 F. Wenn du den C wie ein F-Barré im 8. Bund greifst, dindest du den Grundton (1) auf der hohen E-Saite. Von dem wanderst du runter zum Startton (2). </div> {{clear}} Auch hier hebt sich der Lagewechsel zwischen der G- und H-Saite mit dem Lagewechsel des 3. Fingersatz gegeneinander auf, was den Fingersatz grifftechnisch wieder vereinfacht. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (F-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> == Wie geht es weiter? == Solltest du als Quereinsteiger in diese Lektion gestolpert sein, dann schaue dir die erste Lektion zum [[Gitarre: Aufbau der CAGED-Skalenformen|Aufbau der CAGED-Skalenformen]] an. Insbesondere die Abschnitte, die hier übergangen wurden. Dannach kannst du mit der ersten CAGED-Skala in der D-Dur-Form weitermachen. <noinclude> {{Navigation zurückhochvor |zurücklink=Gitarre: CAGED-Skala G-Dur-Form |zurücktext=CAGED-Skala G-Dur-Form |hochlink=Gitarre: Die Major-Patterns |hochtext=Einführung: Major-Patterns |vorlink=Gitarre: CAGED-Skala D-Dur-Form |vortext=CAGED-Skala D-Dur-Form }} </noinclude> 44fzkybs16l29zpzp9qb0oxns8g1dm4 1090569 1090567 2026-09-08T17:45:47Z Mjchael 2222 /* Eintaktige Sequenzen */ H4 (besser für die Nacharbeiten) 1090569 wikitext text/x-wiki {{:Gitarre/ Navi|Sologitarre| {{:Gitarre: Sologitarre/ Navi Improvisation in Dur und Moll}}| img=Guitar 1.svg |bg=#F8f8f8|border=darkorange|color=dark|px=80|navi=Einführung in die Sologitarre}} = Wiederholung der Fingersätze = ; mit Schwerpunkt auf den Stammtönen Diese Wiederholung ist zum einen dafür gedacht, die vorhergehenden Übungen auf jeder Saitenlage zu machen, und auch in jeder Bundlage, gleichgültig ob die Finger eng beieinander oder weit auseinander stehen. Zum andern sind diese als Vorbereitung in die Sologitarre gedacht. Beispielsweise als Auflockerungsübung zwischen den Barré-Akkorden. Besonderen Augenmerk wollen wir hier auf die Notennamen legen. Diese können hier mitgelernt werden. Solltest du meinen, das sei noch nicht für dich dran und kann warten, dann springe zur ersten CAGED-Skala. Du kannst beim Kapitel Longform nochmal hierrauf zurückkommen. * [[Gitarre: CAGED-Skala D-Dur-Form|CAGED-Skala D-Dur-Form]] Lassen wir die [[Gitarre: Aufbau der CAGED-Skalenformen|erste Lektion]] (insbesondere für die Quereinsteiger) noch einmal Revue passieren. Die folgenden Übungen enthalten oft eine Folge von ein- oder zweitaktigen Sequenzen. Eine Sequenz ist ein Motiv, dass sich auf verschiedenen Tonhöhen wiederholt. Auch ohne Notenkenntnisse kannst du den Verlauf und die Wiederholungen der Sequenzen einfacher im Notenbild verfolgen, als in der Tabulatur; insbesondere wenn du dir gleichzeitig die Übung anhörst. Es kommen auch Ausschnitte aus klassischen Stücken, Folksongs, Kinderlieder o.ä. vor. Die einfache Struktur oder der Bekanntheitsgrad der Melodien sollen dir das Üben erleichtern. Die Finger finden so leichter ihre Position, als wenn du erstmal jede einzelne Note aus der Tabulatur entschlüsseln musst. Jede Übung wird auf allen Saitenlagen geübt. Vorher blieben wir in den mittleren Lagen. Jetzt gehen wir auch in die ersten Bünde, wo man die Finger etwas mehr spreizen muss, und in die höheren Lagen, wo es ein wenig eng wird. Die Stücke wiederholen sich in dieser Lektion in der selben Tonart, doch auf verschiedenen Bünden. Du spielst immer die selbe Tonfolge, nur auf verschiedenen Tonhöhen bzw. auf verschiedenen Saitenlagen. Lediglich zwischen der G- und H-Saite musst du dir jedesmal überlegen, wie sich der Lagewechsel auf den Fingersatz auswirkt. Doch der Fingersatz in den anderen höheren Lagen bleibt immer gleich. Wie die Tonfolgen mit dem CAGED-System zusammenhängen, das muss dich nur am Rande interessieren. Es wird in den folgenden Lektionen näher und ausführlicher erleutert. :[[Datei:Scala Griffbrett.svg]] Wir hatten uns bei den vorhergehenden Übungen weitestgehend an den Intervallen (1-j7) und an der Tabulatur orientiert. Diese sind in allen Tonarten gleich. Suche zuerst das Karré! Daran orientierst du dich. :[[Image:Scala Carree.svg]] {{Tipp|Lerne bei der C-Dur-Tonleiter nicht nur die Intervalle <br> 2 - 3 4 - 5<br> 6 - j7 1 - 2<br> sondern benenne auch jede einzelne Note. <br> D - E F - G<br> A - H C - D<br> So bekommst du einen recht einfachen Überblick über das Griffbrett.}} == Töne der C-Dur Tonleiter auf dem Griffbrett == Wir wollen uns in dieser Lektion auf die Töne bzw. die Notennamen konzentrieren. Allerdings sparen wir uns vorerst alle Töne mit Vorzeichen aus. Die [[Gitarre: Aufbau der CAGED-Skalenformen|ersten Übungen zum 1. und 2. Fingersatz]] werden auf die Tonart C-Dur bzw. A-Moll übertragen und wir spiele sie in den hier gezeigten Positionen. Wir fangen mit dem zweiten Fingersatz an, wo wir entweder den Ton C oder den Ton A der C-Dur- bzw. Am-Tonleiter als Orientierung nutzen :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] Du hast vermutlich allerlei Akkordformen des CAGED-System gesehen. <div class="noprint"> ;Animation [[Image:Crd Grundtonschema ani.gif]] </div> <score> << \new ChordNames { \chordmode { c1 c c c c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 e-2 g c'-1 e' > < c-1\5 g-3\4 c'-3\3 e'-4\2 g'-1 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 e-2\5 g-1\4 c'-1\3 e'-1\2 c''-4\1> < c-1\6 g-2\5 c'-3\4 e'-4\3 g'-1\2 c''-1\1> \once \override FretBoard.fret-diagram-details.dot-color = #'white < c'-1\4 g'-2\3 c''-4\2 e''-3\1 > < c'-4\5 e'-3\4 g'-1\3 c''-2\2 e''-1\1 > } >> </score> Wenn du schon Fingerstyle oder Jazz spielst, mögen dir viele der Formen bekannt vorkommen. Doch selbst wenn du bis jetzt nur das [[Gitarre: Rockdiplom|Rockdiplom]] gemacht hast und mit den dort vorkommenden Barré-Akkorden vertraut bist, wirst du sehen, dass die einfachen Barré-Akkorde ausreichen, um sich auf dem Griffbrett zu zurechtzufinden. Die [[Gitarre: C-Dur-Tonleiter Workshop|C-Dur-Tonleiter in den ersten drei Bünden]] setze ich als bekannt voraus und es sollte dir nicht allzu schwer fallen, diese in den 12. Bund zu übertragen. :[[Datei:Scala C-Am.svg|150px]][[Datei:C-Dur_Majorpattern_III.jpg|150px]] C-Dur als Barré im 3. Bund kennst du vom Rockdiplom, und C-Dur im 8. Bund ist auch kein Hexenwerk. Dazwischen liegt nach dem CAGED-System die G-Form, die dir vermutlich noch nicht untergekommen ist (hier mit weißem Fingersatz). Statt uns die Töne von der G-Form abzuleiten, machen wir es uns einfacher und leiten uns die Töne zur Orientierung vom Am im 5. Bund ab. Du erinnerst dich noch an die Dur- und Mollparallelen? (C- \ Am-Tonleiter bzw. G- \ Em-Form). Oder du nutzt die Grundtöne des C-Barré im 8. Bund. <score> << \new ChordNames { \chordmode { c1 c c a:m c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 e-2 g c'-1 e' > < c-1\5 g-3\4 c'-3\3 e'-4\2 g'-1 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 e-2\5 g-1\4 c'-1\3 e'-1\2 c''-4\1> < a,-1\6 e-3\5 a-4\4 c'-1\3 e'-1\2 a'-1\1 > < c-1\6 g-2\5 c'-3\4 e'-4\3 g'-1\2 c''-1\1> < c'-4\5 e'-3\4 g'-1\3 c''-2\2 e''-1\1 > } >> </score> Leite dir also die Grundtöne C und A von den dir bekannten Barré-Akkorden ab und spare dir die ungewöhnlicheren Akkordformen auf, bis sie dir später beim Fingerstyle oder Jazz begegnen. Es macht dabei garnichts aus, wenn du zum Auffinden der Grundtöne und zum Finden des Starttons ein paar Sekunden brauchst. Du wirst sehen, dass die Wiederholungen der bekannten Übungen auf den verschiedenen Bünden und in verschiedenen Oktavebereichen leicht von der Hand gehen. Lediglich beim Lagewechsel zwischen der G- und H-Saite musst du etwas überlegen. <score> << \new ChordNames { \chordmode { c1 c c a c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 c'-1 > < c-1\5 c'-3\3 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 c'-1\3 c''-4\1> < a,-1\6 a-4\4 a'-1\1 > < c-1\6 c'-3\4 c''-1\1> < c'-4\5 c''-2\2 > } >> </score> Diese wenigen"Eckpunkte" reichen aus, um dich grob auf dem Griffbrett zurechtzufinden. Suche sie noch einmal in der Skala und natürlich auch auf deinem Griffbrett. :[[Datei:C-Major-Scale on the fretboard.svg]] == Zweiter Fingersatz == :[[Datei:Scala 6_71-2_34.svg]] Zuerst suchen wir uns in der C-Dur-Tonleiter überall den zweiten Fingersatz heraus. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] Zur leichteren Orientierung wird die Grafik bei jeder neuen Melodie wiederholt. === Rondeau (Auszug) === Die eintaktige Sequenzen wurde aus einem Rondeau von J.S. Bach entnommen, dass beliebig wiederholt werden kann. Der Grundton C, welcher im letzten Takt rot eingefärbt wurde, wird mit dem kleinen Finger gegriffen. Du kannst tatsächlich die Noten nutzen (sofern du es schon kannst) oder aber du orientierst dich an den Notennamen. Am Anfang des Griffbrettes brauchen wir den zweiten Fingersatz nicht vollständig. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #5 % \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> In der A-(Bb-)Form müssen wir den Lagewechsel zwischen der G- und H-Saite beachten. Übrigens werden hier die Töne in der englischen Form angegeben. (Bb-Form und der Ton B statt des deutschen H.) Nur der erste Bund wird bis zur letzten Note in der dritten Lage gespielt. Der Rest bis zur letzten Note in der zweiten Lage. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (A-, Bb-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e-4 d-2 c d e d c b d c b c d c b a c b a b c d b c d-1 } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Statt in der G-Form das C zu suchen, suche lieber das A im 5. Bund (hier grün hervorgehoben). Oder du leitest dir das C vom Barré im 8. Bund ab. Der Startton E ist auf der A Saite im 7. Bund unter dem Ringfinger. Ansonsten stellt der Fingersatz keine Herausforderung mehr dar. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (G-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b \once \override NoteHead #'color = #green a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Der kleine Finger des C-Barré im 8. Bund in der E- bzw. F-Form gibt gleichzeitig das C des zweiten Fingersatz an. Du siehst, dass ab jetzt alles leichter geworden ist, weil sich ansonsten nichts mehr am Fingersatz ändert. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (E- F-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Für den Grundton C müssen wir uns die D-Form gar nicht so genau ins Gedächtnis rufen, wenn uns die C-Form viel vertrauter ist. Diese hohe Lage ist für E-Gitarristen oder Gitarren mit Cutaway gedacht. Auf der Konzertgitarre ist die sehr hohe Lage schlecht zu spielen. Gehe ggf. einen Kompromiss ein, und spiele diese hohe Saitenlage ein paar Bünde tiefer als Übung nur für den Fingersatz aber nicht für die Notennamen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Noten über dem hohen C (der mit zwei Hilfslinien) wird dir seltener begegnen, da in dem Fall bevorzugt die Noten nach unten oktaviert werden. (Beachte die 8 im Notensystem.) Bei den weiteren Übungen werden jedoch die Versionen mit den vielen Hilfslinien angezeigt. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { \ottava #1 e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Mit der C-Form in den ersten drei Bünden im Hinterkopf ist der 12. Bund leicht zu bewältigen. Wieder eine Übung, die weniger für Konzertgitarren geeignet ist. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === "Das häßliche Entlein" oder "Alle meine Entchen"<ref>Anspielung auf ein Märchen der Gebrüder Grimm nebst einem bekannten deutschen Kinderlied.</ref> in A-Moll === Die vorherige Übung war in Dur, und hier verwenden wir ein und den selben Fingersatz in Moll. Wie du siehst und hörst, lässt sich ein Fingersatz oder ein Pattern nicht eindeutig einer einzigen Tonart zuordnen. Der Schlusston oder der Schlussakkord (hier der Ton A bzw. der Akkord Am) bestimmt die Tonart. Der Grundton A ist hier die Sexte (6) des zugrunde liegenden C-Major-Pattern. Es bleibt dir überlassen, ob du zur Orientierung lieber den Grundton A (grün) bestimmst, oder das C aus dem Karré (rot). Wenn in einer Tabulatur über einer Ziffer zwei Notenhälse stehen, so ist das ein Zeichen für eine halbe Note, die zwei Schläge dauert. Da dieses für viele Gitarristen sehr ungewöhnlich aussieht, verzichtet man oft auf Taktstriche in der Tabulatur. In dem Fall lässt sich die Tondauer allein an den Notenwerten ablesen. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-/Am-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #5 % \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Der Lagewechsel zwischen der G- und H-Saite ist hier leicht zu bewältigen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Gm-/Bb-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d-1 e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2-4 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Auch hier ist es wieder einfacher das A (grün) zu suchen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Em-/G-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (E- / F-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Statt lange nach dem Grundton der D-Form zu suchen, erinneren wir uns kurz, wo der Grundton C auf der H- (B-)Saite sein muß (13. Bund). <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> === Die Moldau (Hauptmotiv) === Die Abfolge der Töne der folgenden Übung unterscheidet sich kaum von der vorhergehenden. Doch mit dem anderen Rhythmus haben wir das Hauptmotiv von der Komposition {{Youtube-Suche|Smetana+Die+Moldau|"Die Moldau" von Bedrich Smetana}} (ohne Auftakt und rhythmisch vereinfacht). Auch wenn es hier (wie in der 7. Übung) nur die Molltonleiter rauf und runter geht, merkst du hoffentlich, wieviel der Takt und Rhythmus an der Wirkung ausmacht. Wenn du später mal meinst, deine Improvisationen hören sich langweilig an, dann solltest du dich mehr mit Rhythmus beschäftigen. Dazu kannst du dich auch ein wenig mit Schlagmustern beschäftigen. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Am-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Warum die Form hier Gm-Form genannt wird, das wird dir in den nachfolgenden Lektionen klarer werden. Auf Fingersatzangaben können wir hier verzichten, wenn du vorher "Alle meine Entchen in Am" gespielt hast. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Bb- /Gm-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier bietet sich besonders an, den Am-Barré zur Orientierung zu verwenden. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Em-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Auch hier gibt dir der kleine Finger des Am-Barrés den Grundton an. Du kannst dir die Dm-Form aber auch über die F-Form (C im 8. Bund) ableiten. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (F- /Dm-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Zähle vom C (H-Saite, 13. Bund) rückwärts zum A. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D- /Bm7-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier wird die erste Übung in den 12. Bund verschoben. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C- /Am-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==1. Fingersatz== Dir wird wohl aufgefallen sein, dass beim zweiten Fingersatz der Ton G fehlt. Den üben wir mit dem ersten Fingersatz. :[[Datei:Scala 71_2-34_5.svg]] Beachte, dass der Grundton (1) unter dem Ringfinger (also im zweiten Bund dieses Fingersatzes) ist, und dass du deine freie Improvisationsübung in Dur günstigerweise mit der (1) beginnen oder zumindest enden sollte. Diesen Fingersatz suchen wir in der C-Dur-Tonleiter auf dem Griffbrett. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] === Eintaktige Sequenzen === Die erste Lage mit leeren Saiten stellt noch keine Herausforderung dar. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • A- (Bb-)Form ==== Du musst noch nicht einmal den C-Barré im 3. Bund bemühen, um den Grundton zu finden. Die C-Dur-Tonleiter in den ersten drei Bünden reicht. Natürlich kannst du auch den Startton G suchen. Die Tabulatur sagt dir "D-Saite 5. Bund". Erinnere dich daran, dass dies der Stimmton der D-Saite ist (beim Stimmen nach Bünden). Auch hier ist der Fingersatz leicht. <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • A- (Bb-)Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 4 2 3 darkgrey ) (place-fret 4 3 4 yellow3 ) (place-fret 4 5 5 darkgrey ) (place-fret 5 2 "j7" yellow3 ) (place-fret 5 3 1 black ) (place-fret 5 5 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb)-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • G-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • G-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 2 5 3 darkgrey ) (place-fret 2 6 4 yellow3 ) (place-fret 2 8 5 darkgrey ) (place-fret 3 4 "j7" yellow3 ) (place-fret 3 5 1 black ) (place-fret 3 7 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Bei der G-Form kommt es zwischen der G- und H-Saite zu einem Lagewechsel. Du musst dir jedesmal eine Strategie zurechtlegen, wann und wie du am besten den Lagewechsel durchführst. Wenn du Glück hast, findest du im Notenbild einen Hinweis, wie man günstig die Lage wechseln kann. Ich empfehle dir dort wo die 2 über den Noten steht, den Mittelfinger zu nehmen. *(1 = Z, 2 = M, 3 = R, 4 = K, 0 = leere Saite) Betrachte solche Hinweis nur als Vorschlag, denn es gibt keine verbindliche Regel, wie der Lagewechsel zu erfolgen hat. Übst du die gleiche Sequenzen ein paar Saiten höher oder tiefer, geht es leichter von der Hand. Beachte den Lagewechsel zwischen der G- und H-Saite. Den Grundton C kannst du dir auch vom Ringfinger auf der G-Saite des C-Barrés ableiten. Du musst dir hier eine Strategie zurechtlegen, wann du den Lagewechsel durchführen möchtest. Ich empfehle hier, den Lagewechsel so früh wie möglich zu machen, damit du den Zeigefinger frei hast, um gleich hintereinander zwei Töne in einem Bund zu spielen. Betrachte die Angaben zum Fingersatz nur als Vorschlag. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d-4 e-2 f-3 d e f e d c d e c-1 d-4 e-2 d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier eine alternative Lösung. Du kannst einen kleinen Barré über die Noten C und E legen, und den Lagewechsel später ausführen. Das V unter dem C zeigt hier den 5. Bund an, und nicht etwa Abschläge. Der Lagewechsel erfolgt hier im letzten Takt. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d e f d e f e d-2 \textSpannerDown \override TextSpanner.bound-details.left.text = "V" c-1\startTextSpan d e-1 c-1 d e-1\stopTextSpan d-4 c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • E- (F-)Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • E- (F-)Form <score raw="1"> \version "2.24.4" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 5 7 3 darkgrey ) (place-fret 5 8 4 yellow3 ) (place-fret 5 10 5 darkgrey ) (place-fret 6 7 "j7" yellow3 ) (place-fret 6 8 1 black ) (place-fret 6 10 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Den Grundton C auf der E-Saite kannst du dir vom C-Barré der E-Form (wie ein F- Barré) im 8. Bund ableiten. Der Fingersatz ist wieder einfach. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E-(F)-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • D-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • D-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 3 9 3 darkgrey ) (place-fret 3 10 4 yellow3 ) (place-fret 3 12 5 darkgrey ) (place-fret 4 9 "j7" yellow3 ) (place-fret 4 10 1 black ) (place-fret 4 12 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div>Die Tonhöhe ist die selbe, wie in der G-Form, wo wir uns komplizierte Strategien für den Fingersatz zurechtlegen mussten. In dieser Lage ist alles einfacher. Wenn du später mal einen herausfordernden Lick zwischen der G- und H-Saite hast, wäre eine weitere gangbare Strategie den Lick in eine fingertechnisch günstigere Lage zu verlegen. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • C-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • C-Form <score raw="1"> \version "2.24.4" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 1 12 3 darkgrey ) (place-fret 1 13 4 yellow3 ) (place-fret 1 15 5 darkgrey ) (place-fret 2 12 "j7" yellow3 ) (place-fret 2 13 1 black ) (place-fret 2 15 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Hier wurde die C-Durtonleiter in den 12. Bund verlegt. Der Grundton ist auf der H-Saite im 13. Bund. (Eine Oktave höher als bei der C-Dur Tonleiter in den ersten drei Bünden.) Wer keine E-Gitarre hat oder wer keine Akkustik mit Cutaway hat, der kann die C-Form auch in einem niedrigeren Bund üben. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c''' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Halbtaktige Sequenzen === Diesmal hast du halbtaktige Sequenzen, die einmal wiederholt werden. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- / Bb-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Du kannst die beiden hintereinander folgenden Noten im 5. Bund mit einem Mini-Barré ausführen, und die Lagewechsel mittels Slide (=&nbsp;Glissando) durchführen, oder wie in der Wiederholung ohne Slide durchführen. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major c8-1 g' f e d f e d c-1 e-1 d c-1(\glissando b-1) d c b-1(\glissando c1-1) c8-2 g' f e d f e d c-1 e-2 d-4 c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Fingersatztechnisch wieder problemlos. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Ein Vogel wollte Hochzeit machen === Hier habe ich ein relativ bekanntes Kinderlied gefunden, dass perfekt zum 1. Fingersatz passt. Die Tondauern sind für Ungeübte in Sachen Noten schwer herauszulesen. Kennst du aber das Stück, oder hörst du es dir mehrmals an, so ist es keine unüberwindbare Schwierigkeit. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] Folgt das G nach dem D, greifst du den besser mit dem kleinen Finger. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d-3( g-4) g g16 e | c8 8 8 g'16 e d8 d d-3 g16-4 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier ist es wohl am einfachsten, dass du den kleinen Finger umlegst, wenn du nach dem D den G greifen willst. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb-)Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d-3( g-4) g g16 e | c8 8 8 g'16 e d8-3 d d g16-4 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Wenn der Ton C auf ein E-folgt, kann man entweder ein <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e-2 c-1 g' e d( g) g g16 e-2 | c8-1 8 8 g'16 e d8 d d g16 f | e8-2 c-1 d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Halbtaktige Sequenzen (2) === :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Bei der G-Form kommt es zwischen der G- und H-Saite zu einem Lagewechsel. Du musst dir jedesmal eine Strategie zurechtlegen, wann und wie du am besten den Lagewechsel durchführst. Wenn du Glück hast, findest du im Notenbild einen Hinweis, wie man günstig die Lage wechseln kann. Ich empfehle dir dort wo die 2 über den Noten steht, den Mittelfinger zu nehmen. *(1 = Z, 2 = M, 3 = R, 4 = K, 0 = leere Saite) Betrachte solche Hinweis nur als Vorschlag, denn es gibt keine verbindliche Regel, wie der Lagewechsel zu erfolgen hat. Übst du die gleiche Sequenzen ein paar Saiten höher oder tiefer, geht es leichter von der Hand. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c''' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Einsingen === Diese beiden Motive kennen viele, die schon einmal in einem Chor gesungen haben. Leider entsprechen viele Lieder in ihrem Tonumfang nicht genau einem der vollständigen drei Fingersätze oder der später folgenden Skalen. Zumeist werden nur Ausschnitte aus den Patterns gebraucht. Im ersten Motiv fehlt beispielsweise die große Septime (j7) vor dem Grundton. Dafür enthält das zweite Motiv die große Septime (j7). Das zweite Motiv eicht den Chor auf die gerade geforderte Tonart. Hier werden nur Akkordtöne in einer auf oder absteigenden Tonfolge gespielt (auch Arpeggios genannt). Der A7-Akkord enthält sowohl den Leitton (j7) der zum Grundton (1) hin leitet, als auch den Strebeton (4) die zur Durterz (3) hin strebt. Mit den zwei spannungsreichen Tönen, die sich zum Grundakkord auflösen wollen, wird der Chor auf die Durtonart eingenordet. Hier brauche ich dir nicht zu erklären, wo der Grundton D ist. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A-(Bb-)Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E-(F-)Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==Erste über den zweiten Fingersatz== Wie du siehst, kommt hier jedesmal zuerst der erste Fingersatz mit dem "Karree" rechts, und dannach kommt der Fingersatz mit dem "Karree" links. Sie sind immer untereinander. Nur zwischen der G- und B-Saite verschiebt sich alles um einen Bund. <div style="float:left; padding:5px; border:black solid 1px; "> ;F-Form <score raw="1"> \version "2.14.2" \paper{ indent=0\mm line-width=120\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% 4-o zeigt 4. Saite offen \fret-diagram #"s:2;f:1; 3-3-2;3-5-3;3-6-4; 4-3-6;4-5-7;4-6-1; 5-3-3;5-4-4;5-6-5; 6-3-7;6-4-1;6-6-2;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;Bb-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:2;f:1; 2-4-2;2-6-3;2-7-4; 3-3-6;3-5-7;3-6-1; 4-3-3;4-4-4;4-6-5; 5-3-7;5-4-1;5-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;D-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:2;f:1; 1-4-2;1-6-3;1-7-4; 2-4-6;2-6-2;2-7-1; 3-3-3;3-4-4;3-6-5; 4-3-7;4-4-1;4-6-2;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} === Jamaica Farewell === Die Melodie von [[Liederbuch/ Jamaica Farwell|Jamaica Farwell]] wurde erheblich vereinfacht, damit du dir nicht zu viele Gedanken um den Rhythmus machen musst. Wenn du dich am Quintillo (dem Rhythmus vom Lagerfeuerschlag} orientierst, solltest du wenige Probleme haben. Es gibt recht viele Wiederholung. Die Strophe wurde bei der Wiederholung in die Oktave verschoben, damit das Stück exakt in den Skalenausschnitt passt. Du musst dir für die Fingersätze ggf. Strategien zurechtlegen, damit du die Finger bequem sortiert bekommst. Das Stück beginnt mit dem Ton G. Der (5) in 1. Fingersatz. ;Bb-Form Greife den C wie ein Bb-Barré im 3. Bund. Leite dir von diesem Akkord den Grundton (1) ab, und wandere beim 1. Fingersatz rauf zum Startton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-4-2;2-6-3;2-7-4; 3-3-6;3-5-7;3-6-1; 4-3-3;4-4-4;4-6-5; 5-3-7;5-4-1;5-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (A-, Bb-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ; F-Form Greife den C wie ein F-Barré im 8. Bund. Leite dir von diesem Akkord den Grundton (1) ab, und wandere beim 1. Fingersatz rauf zum Startton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 3-7-2;3-9-3;3-10-4; 4-7-6;4-9-7;4-10-1; 5-7-3;5-8-4;5-10-5; 6-7-7;6-8-1;6-10-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (E-, F-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ;D-Form Schiebe den D-Dur-Akkord in den 12. Bund. Ein D im 12. Bund verschoben ergibt ein C. Leite dir von diesem Akkord den Grundton (1) ab. Orientiere dich kurz im 2. Fingersatz und wandere zurück zum ersten Fingersatz zum Ton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 1-10-2;1-12-3;1-13-4; 2-10-6;2-12-7;2-13-1; 3-9-3;3-10-4;3-12-5; 4-9-7;4-10-1;4-12-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (D-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==3. Fingersatz== Es fällt auf, dass der 3. Fingersatz kein "Karré" hat. {| !Fingersatz !width="30px"| !Intervalle |- |[[Image:Scala Z RK-Z K-ZM K.svg]] !width="30px"| |[[Image:Scala 2 34-5 6-71 2.svg]] |} Der 3. Fingersatz ist gar kein eigenständiger Fingersatz. Der obere Teil des 3. Fingersatzes ist eigentlich schon der untere Teil des 2. Fingersatzes. Ebenso ist der untere Teil des 3. Fingersatzes gleichzeitig der Anfang des 1. Fingersatzes. Du musst dir Strategien zurechtlegen, wie du den Übergang vom Ende des 2. Fingersatzes über die 5 und die 6 hin zum 1. Fingersatz gestaltest. Es kommt beim 3. Fingersatz zu einem Lagewechsel nach links. Übe den 3. Fingersatz zuerst in den obersten Saitenlagen (E A D G x x) === Eine II-V-I-Verbindung === Wir spielen eine einfache Tonfolge über einer 2-5-1-Verbindung. Die Akkordtöne liegen zumeist auf den schweren Zählzeiten. * D, F, A, C gehören zum Dm7 * G, B, D, F gehören zum G7 * C, E, G gehören zum C-Dur-Akkord. Wir nutzen das CAGED-System, um uns grob auf dem Griffbrett zurechtzufinden. ==== Exkurs: Skalenformen ==== Die Namen der Skalen leiten sich übrigens von folgenden einfachen Tonleitern in den ersten Bünden ab: [[Image:Scala C-Am.svg|100px]] [[Image:Scala Bb-Gm.svg|100px]] [[Image:Scala G-Em.svg|100px]] [[Image:Scala F-Dm.svg|100px]] [[Image:Scala D-Hm.svg|100px]] Alle Akkorde die man aus diesen einfachen Tonarten kennt, Bassläufe und ähnliches lassen sich zum großen Teil auf die entsprechenden 5 CAGED-Skalen übertragen, fast so als habe man die Tonleiter mittels Kapodaster in eine höhere Lage verschoben. Wie du siehst, nennen wir die Skalen entgegen des reinen CAGED-System nicht E-Dur-Form (Shape) und nicht die A-Dur-Form (Shape), sondern F- und Bb-Dur-Form. <div style="float:left; padding:5px; border:black solid 1px; "> ;E-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-1;1-2-2;1-4-3; 2-0-5;2-2-6;2-4-7; 3-1-3;3-2-4;3-4-5; 4-1-7;4-2-1;4-4-2; 5-0-4;5-2-5;5-4-6; 6-0-1;6-2-2;6-4-3;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;F-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-3; 1-1-1; 1-3-2; 2-1-5; 2-3-6; 3-0-2; 3-2-3; 3-3-4; 4-0-6; 4-2-7; 4-3-1; 5-0-3; 5-1-4; 5-3-5; 6-0-7; 6-1-1; 6-3-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;G-Dur-Tonleiter <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-3-3; 1-4-1; 1-6-2; 2-4-5; 2-6-6; 3-3-2; 3-5-3; 3-6-4; 4-3-6; 4-5-7; 4-6-1; 5-3-3; 5-4-4; 5-6-5; 6-3-7; 6-4-1; 6-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Du siehst selbst, dass die G-Dur-Tonleiter von der Form her eher wie die F-Dur-Tonleiter als wie die E-Dur-Tonleiter aussieht. <div style="float:left; padding:5px; border:black solid 1px; "> ;A-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-5;1-2-6;1-4-7; 2-0-2;2-2-3;2-3-4; 3-1-7;3-2-1;3-4-2; 4-0-4;4-2-5;4-4-6; 5-0-1;5-2-2;5-4-3; 6-0-5;6-2-6;6-4-7;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;Bb-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-1-5; 1-3-6; 2-1-2; 2-3-3; 2-4-4; 3-0-6; 3-2-7; 3-3-1; 4-0-3; 4-1-4; 4-3-5; 5-0-7; 5-1-1; 5-3-2; 6-1-5; 6-3-6;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;C-Dur-Tonleiter <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-3-5; 1-5-6; 2-3-2; 2-5-3; 2-6-4; 3-2-6; 3-4-7; 3-5-1; 4-2-3; 4-3-4; 4-5-5; 5-2-7; 5-3-1; 5-5-2; 6-3-5; 6-5-6;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Du siehst selbst, dass die C-Dur-Tonleiter von der Form her eher wie die Bb-Dur-Tonleiter als wie die A-Dur-Tonleiter aussieht. ==== 3. Fingersatz II-V-I-Verbindung D-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;D-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:3;f:1; 4-9-7;4-10-1;4-12-2; 5-10-5;5-12-6; 6-10-2;6-12-3;6-13-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Wir beginnen oben bei der D-Form, wo sich der Lagewechsel des 3. Fingersatz noch nicht mit dem Lagewechsel zwischen der G und H-Saite (engl. B-Saite) aufhebt. Würde ich ein Capo in den 10. Bund setzen, dann würde ich die Melodie vom Fingersatz her wie D-Dur spielen. In D-Dur spiele ich diese II-V-I-Verbindung Em7 A7 D. Nehme ich das Capo weg, dann greife ich den Dm(7) als einen Barré der Em-Form im 10. Bund. Von diesem kann ich mir das D als Grundton ableiten. Alternativ siehst du in den Noten, dass die Übung mit dem Ton D anfängt. Dass die oberste Tiefe E-Saite im 12. Bund ebenfalls ein E ergibt, setze ich als bekannt voraus. Falls nicht, beschäftige dich noch einmal mit dem [[Gitarre: Lagerfeueranhang 2c|Stimmen der Gitarre]]. Ein Ganztonschritt bzw. zwei Bünde vor dem E ist der Ton D. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (D-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g-1 a-4 b-1 c4 | b8^\markup { \bold {G7} } a-4 g4-1 f8 e d4 | e8^\markup { \bold {C} } f g4-1 a8-4 b-1 c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung G-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;G-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 3-4-7;3-5-1;3-7-2; 4-5-5;4-7-6; 5-5-2;5-7-3;5-8-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 5. Bund setzen, dann würde man die Melodie vom Fingersatz her wie G-Dur spielen. In G-Dur spielt man diese II-V-I-Verbindung Am7 D7 G. Nimmt man das Capo weg, dann greift man den Dm(7) als einen Barré der Am-Form. Von diesem kannst du dir den D als Grundton ableiten. Einfacher geht es natürlich, wenn du weißt, dass der D im 5. Bund der A-Saite der Stimmton der D-Saite ist. </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (G-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g-1 a-4 b-1 c4 | b8^\markup { \bold {G7} } a-4 g4-1 f8 e d4 | e8^\markup { \bold {C} } f g4-1 a8-4 b-1 c d | c b c2. | \break d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung C-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;C-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-0-7;2-1-1;2-3-2; 3-0-5;3-2-6; 4-0-2;4-2-3;4-3-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Die C-Dur-Form der C-Dur Tonleiter sieht schlicht und ergreifend wie die C-Durtonleiter aus. </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (C-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #4 % \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \break d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung C-Form 12. Bund ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;C-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-12-7;2-13-1;2-15-2; 3-12-5;3-14-6; 4-12-2;4-14-3;4-15-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 12. Bund setzen, dann würde man die Melodie vom Fingersatz her wie C-Dur spielen. In C-Dur spielt man diese II-V-I-Verbindung Dm7 G7 C. Der Startton ist schlicht die D-Saite im 12. Bund. </div> {{clear}} Gerade noch hatten wir einen Lagewechsel nach links. Jetzt aber hebt sich der Lagewechsel nach links vom 3. Fingersatz mit dem Lagewechsel zwischen der G- und H-Saite auf. Es hört sich beim ersten Durchlesen kompliziert an, aber du hast nur 4 Lektionen zu lernen. Den 1. bis 3. Fingersatz und den Lagewechsel zwischen der G- und H-Saite. Das Auffinden der Töne und welche Akkorde zu welcher Tonart gehört, und wie man einen Capo benutzt, sollte eigentlich nichts neues für dich sein. Rein technisch gesehen vereinfacht sich der Fingersatz. Doch es kostet ein wenig Überlegung, wie sich die beiden Lagewechsel auf den 3. Fingersatz auswirken. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (C-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> Sollte es im 12 Bund unbequem zu spielen sein, weil du kein Cutaway hast (Aussparung für die hohen Bünde), übe die C-Form ein paar Bünde zurück in einer anderen Tonart. ==== 3. Fingersatz II-V-I-Verbindung F-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;F-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 1-7-7; 1-8-1;1-10-2; 2-8-5; 2-10-6; 3-7-2; 3-9-3; 3-10-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 6. Bund setzen, dann würde man die Melodie vom Fingersatz her wie F-Dur spielen. In C-Dur spielt man diese II-V-I-Verbindung Gm7 C7 F. Wenn du den C wie ein F-Barré im 8. Bund greifst, dindest du den Grundton (1) auf der hohen E-Saite. Von dem wanderst du runter zum Startton (2). </div> {{clear}} Auch hier hebt sich der Lagewechsel zwischen der G- und H-Saite mit dem Lagewechsel des 3. Fingersatz gegeneinander auf, was den Fingersatz grifftechnisch wieder vereinfacht. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (F-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> == Wie geht es weiter? == Solltest du als Quereinsteiger in diese Lektion gestolpert sein, dann schaue dir die erste Lektion zum [[Gitarre: Aufbau der CAGED-Skalenformen|Aufbau der CAGED-Skalenformen]] an. Insbesondere die Abschnitte, die hier übergangen wurden. Dannach kannst du mit der ersten CAGED-Skala in der D-Dur-Form weitermachen. <noinclude> {{Navigation zurückhochvor |zurücklink=Gitarre: CAGED-Skala G-Dur-Form |zurücktext=CAGED-Skala G-Dur-Form |hochlink=Gitarre: Die Major-Patterns |hochtext=Einführung: Major-Patterns |vorlink=Gitarre: CAGED-Skala D-Dur-Form |vortext=CAGED-Skala D-Dur-Form }} </noinclude> drefm9d3wfjlrnsshwxvk0afdk1ogb6 1090570 1090569 2026-09-08T17:59:44Z Mjchael 2222 /* Halbtaktige Sequenzen */ h4 1090570 wikitext text/x-wiki {{:Gitarre/ Navi|Sologitarre| {{:Gitarre: Sologitarre/ Navi Improvisation in Dur und Moll}}| img=Guitar 1.svg |bg=#F8f8f8|border=darkorange|color=dark|px=80|navi=Einführung in die Sologitarre}} = Wiederholung der Fingersätze = ; mit Schwerpunkt auf den Stammtönen Diese Wiederholung ist zum einen dafür gedacht, die vorhergehenden Übungen auf jeder Saitenlage zu machen, und auch in jeder Bundlage, gleichgültig ob die Finger eng beieinander oder weit auseinander stehen. Zum andern sind diese als Vorbereitung in die Sologitarre gedacht. Beispielsweise als Auflockerungsübung zwischen den Barré-Akkorden. Besonderen Augenmerk wollen wir hier auf die Notennamen legen. Diese können hier mitgelernt werden. Solltest du meinen, das sei noch nicht für dich dran und kann warten, dann springe zur ersten CAGED-Skala. Du kannst beim Kapitel Longform nochmal hierrauf zurückkommen. * [[Gitarre: CAGED-Skala D-Dur-Form|CAGED-Skala D-Dur-Form]] Lassen wir die [[Gitarre: Aufbau der CAGED-Skalenformen|erste Lektion]] (insbesondere für die Quereinsteiger) noch einmal Revue passieren. Die folgenden Übungen enthalten oft eine Folge von ein- oder zweitaktigen Sequenzen. Eine Sequenz ist ein Motiv, dass sich auf verschiedenen Tonhöhen wiederholt. Auch ohne Notenkenntnisse kannst du den Verlauf und die Wiederholungen der Sequenzen einfacher im Notenbild verfolgen, als in der Tabulatur; insbesondere wenn du dir gleichzeitig die Übung anhörst. Es kommen auch Ausschnitte aus klassischen Stücken, Folksongs, Kinderlieder o.ä. vor. Die einfache Struktur oder der Bekanntheitsgrad der Melodien sollen dir das Üben erleichtern. Die Finger finden so leichter ihre Position, als wenn du erstmal jede einzelne Note aus der Tabulatur entschlüsseln musst. Jede Übung wird auf allen Saitenlagen geübt. Vorher blieben wir in den mittleren Lagen. Jetzt gehen wir auch in die ersten Bünde, wo man die Finger etwas mehr spreizen muss, und in die höheren Lagen, wo es ein wenig eng wird. Die Stücke wiederholen sich in dieser Lektion in der selben Tonart, doch auf verschiedenen Bünden. Du spielst immer die selbe Tonfolge, nur auf verschiedenen Tonhöhen bzw. auf verschiedenen Saitenlagen. Lediglich zwischen der G- und H-Saite musst du dir jedesmal überlegen, wie sich der Lagewechsel auf den Fingersatz auswirkt. Doch der Fingersatz in den anderen höheren Lagen bleibt immer gleich. Wie die Tonfolgen mit dem CAGED-System zusammenhängen, das muss dich nur am Rande interessieren. Es wird in den folgenden Lektionen näher und ausführlicher erleutert. :[[Datei:Scala Griffbrett.svg]] Wir hatten uns bei den vorhergehenden Übungen weitestgehend an den Intervallen (1-j7) und an der Tabulatur orientiert. Diese sind in allen Tonarten gleich. Suche zuerst das Karré! Daran orientierst du dich. :[[Image:Scala Carree.svg]] {{Tipp|Lerne bei der C-Dur-Tonleiter nicht nur die Intervalle <br> 2 - 3 4 - 5<br> 6 - j7 1 - 2<br> sondern benenne auch jede einzelne Note. <br> D - E F - G<br> A - H C - D<br> So bekommst du einen recht einfachen Überblick über das Griffbrett.}} == Töne der C-Dur Tonleiter auf dem Griffbrett == Wir wollen uns in dieser Lektion auf die Töne bzw. die Notennamen konzentrieren. Allerdings sparen wir uns vorerst alle Töne mit Vorzeichen aus. Die [[Gitarre: Aufbau der CAGED-Skalenformen|ersten Übungen zum 1. und 2. Fingersatz]] werden auf die Tonart C-Dur bzw. A-Moll übertragen und wir spiele sie in den hier gezeigten Positionen. Wir fangen mit dem zweiten Fingersatz an, wo wir entweder den Ton C oder den Ton A der C-Dur- bzw. Am-Tonleiter als Orientierung nutzen :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] Du hast vermutlich allerlei Akkordformen des CAGED-System gesehen. <div class="noprint"> ;Animation [[Image:Crd Grundtonschema ani.gif]] </div> <score> << \new ChordNames { \chordmode { c1 c c c c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 e-2 g c'-1 e' > < c-1\5 g-3\4 c'-3\3 e'-4\2 g'-1 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 e-2\5 g-1\4 c'-1\3 e'-1\2 c''-4\1> < c-1\6 g-2\5 c'-3\4 e'-4\3 g'-1\2 c''-1\1> \once \override FretBoard.fret-diagram-details.dot-color = #'white < c'-1\4 g'-2\3 c''-4\2 e''-3\1 > < c'-4\5 e'-3\4 g'-1\3 c''-2\2 e''-1\1 > } >> </score> Wenn du schon Fingerstyle oder Jazz spielst, mögen dir viele der Formen bekannt vorkommen. Doch selbst wenn du bis jetzt nur das [[Gitarre: Rockdiplom|Rockdiplom]] gemacht hast und mit den dort vorkommenden Barré-Akkorden vertraut bist, wirst du sehen, dass die einfachen Barré-Akkorde ausreichen, um sich auf dem Griffbrett zu zurechtzufinden. Die [[Gitarre: C-Dur-Tonleiter Workshop|C-Dur-Tonleiter in den ersten drei Bünden]] setze ich als bekannt voraus und es sollte dir nicht allzu schwer fallen, diese in den 12. Bund zu übertragen. :[[Datei:Scala C-Am.svg|150px]][[Datei:C-Dur_Majorpattern_III.jpg|150px]] C-Dur als Barré im 3. Bund kennst du vom Rockdiplom, und C-Dur im 8. Bund ist auch kein Hexenwerk. Dazwischen liegt nach dem CAGED-System die G-Form, die dir vermutlich noch nicht untergekommen ist (hier mit weißem Fingersatz). Statt uns die Töne von der G-Form abzuleiten, machen wir es uns einfacher und leiten uns die Töne zur Orientierung vom Am im 5. Bund ab. Du erinnerst dich noch an die Dur- und Mollparallelen? (C- \ Am-Tonleiter bzw. G- \ Em-Form). Oder du nutzt die Grundtöne des C-Barré im 8. Bund. <score> << \new ChordNames { \chordmode { c1 c c a:m c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 e-2 g c'-1 e' > < c-1\5 g-3\4 c'-3\3 e'-4\2 g'-1 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 e-2\5 g-1\4 c'-1\3 e'-1\2 c''-4\1> < a,-1\6 e-3\5 a-4\4 c'-1\3 e'-1\2 a'-1\1 > < c-1\6 g-2\5 c'-3\4 e'-4\3 g'-1\2 c''-1\1> < c'-4\5 e'-3\4 g'-1\3 c''-2\2 e''-1\1 > } >> </score> Leite dir also die Grundtöne C und A von den dir bekannten Barré-Akkorden ab und spare dir die ungewöhnlicheren Akkordformen auf, bis sie dir später beim Fingerstyle oder Jazz begegnen. Es macht dabei garnichts aus, wenn du zum Auffinden der Grundtöne und zum Finden des Starttons ein paar Sekunden brauchst. Du wirst sehen, dass die Wiederholungen der bekannten Übungen auf den verschiedenen Bünden und in verschiedenen Oktavebereichen leicht von der Hand gehen. Lediglich beim Lagewechsel zwischen der G- und H-Saite musst du etwas überlegen. <score> << \new ChordNames { \chordmode { c1 c c a c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 c'-1 > < c-1\5 c'-3\3 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 c'-1\3 c''-4\1> < a,-1\6 a-4\4 a'-1\1 > < c-1\6 c'-3\4 c''-1\1> < c'-4\5 c''-2\2 > } >> </score> Diese wenigen"Eckpunkte" reichen aus, um dich grob auf dem Griffbrett zurechtzufinden. Suche sie noch einmal in der Skala und natürlich auch auf deinem Griffbrett. :[[Datei:C-Major-Scale on the fretboard.svg]] == Zweiter Fingersatz == :[[Datei:Scala 6_71-2_34.svg]] Zuerst suchen wir uns in der C-Dur-Tonleiter überall den zweiten Fingersatz heraus. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] Zur leichteren Orientierung wird die Grafik bei jeder neuen Melodie wiederholt. === Rondeau (Auszug) === Die eintaktige Sequenzen wurde aus einem Rondeau von J.S. Bach entnommen, dass beliebig wiederholt werden kann. Der Grundton C, welcher im letzten Takt rot eingefärbt wurde, wird mit dem kleinen Finger gegriffen. Du kannst tatsächlich die Noten nutzen (sofern du es schon kannst) oder aber du orientierst dich an den Notennamen. Am Anfang des Griffbrettes brauchen wir den zweiten Fingersatz nicht vollständig. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #5 % \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> In der A-(Bb-)Form müssen wir den Lagewechsel zwischen der G- und H-Saite beachten. Übrigens werden hier die Töne in der englischen Form angegeben. (Bb-Form und der Ton B statt des deutschen H.) Nur der erste Bund wird bis zur letzten Note in der dritten Lage gespielt. Der Rest bis zur letzten Note in der zweiten Lage. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (A-, Bb-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e-4 d-2 c d e d c b d c b c d c b a c b a b c d b c d-1 } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Statt in der G-Form das C zu suchen, suche lieber das A im 5. Bund (hier grün hervorgehoben). Oder du leitest dir das C vom Barré im 8. Bund ab. Der Startton E ist auf der A Saite im 7. Bund unter dem Ringfinger. Ansonsten stellt der Fingersatz keine Herausforderung mehr dar. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (G-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b \once \override NoteHead #'color = #green a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Der kleine Finger des C-Barré im 8. Bund in der E- bzw. F-Form gibt gleichzeitig das C des zweiten Fingersatz an. Du siehst, dass ab jetzt alles leichter geworden ist, weil sich ansonsten nichts mehr am Fingersatz ändert. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (E- F-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Für den Grundton C müssen wir uns die D-Form gar nicht so genau ins Gedächtnis rufen, wenn uns die C-Form viel vertrauter ist. Diese hohe Lage ist für E-Gitarristen oder Gitarren mit Cutaway gedacht. Auf der Konzertgitarre ist die sehr hohe Lage schlecht zu spielen. Gehe ggf. einen Kompromiss ein, und spiele diese hohe Saitenlage ein paar Bünde tiefer als Übung nur für den Fingersatz aber nicht für die Notennamen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Noten über dem hohen C (der mit zwei Hilfslinien) wird dir seltener begegnen, da in dem Fall bevorzugt die Noten nach unten oktaviert werden. (Beachte die 8 im Notensystem.) Bei den weiteren Übungen werden jedoch die Versionen mit den vielen Hilfslinien angezeigt. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { \ottava #1 e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Mit der C-Form in den ersten drei Bünden im Hinterkopf ist der 12. Bund leicht zu bewältigen. Wieder eine Übung, die weniger für Konzertgitarren geeignet ist. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === "Das häßliche Entlein" oder "Alle meine Entchen"<ref>Anspielung auf ein Märchen der Gebrüder Grimm nebst einem bekannten deutschen Kinderlied.</ref> in A-Moll === Die vorherige Übung war in Dur, und hier verwenden wir ein und den selben Fingersatz in Moll. Wie du siehst und hörst, lässt sich ein Fingersatz oder ein Pattern nicht eindeutig einer einzigen Tonart zuordnen. Der Schlusston oder der Schlussakkord (hier der Ton A bzw. der Akkord Am) bestimmt die Tonart. Der Grundton A ist hier die Sexte (6) des zugrunde liegenden C-Major-Pattern. Es bleibt dir überlassen, ob du zur Orientierung lieber den Grundton A (grün) bestimmst, oder das C aus dem Karré (rot). Wenn in einer Tabulatur über einer Ziffer zwei Notenhälse stehen, so ist das ein Zeichen für eine halbe Note, die zwei Schläge dauert. Da dieses für viele Gitarristen sehr ungewöhnlich aussieht, verzichtet man oft auf Taktstriche in der Tabulatur. In dem Fall lässt sich die Tondauer allein an den Notenwerten ablesen. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-/Am-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #5 % \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Der Lagewechsel zwischen der G- und H-Saite ist hier leicht zu bewältigen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Gm-/Bb-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d-1 e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2-4 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Auch hier ist es wieder einfacher das A (grün) zu suchen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Em-/G-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (E- / F-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Statt lange nach dem Grundton der D-Form zu suchen, erinneren wir uns kurz, wo der Grundton C auf der H- (B-)Saite sein muß (13. Bund). <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> === Die Moldau (Hauptmotiv) === Die Abfolge der Töne der folgenden Übung unterscheidet sich kaum von der vorhergehenden. Doch mit dem anderen Rhythmus haben wir das Hauptmotiv von der Komposition {{Youtube-Suche|Smetana+Die+Moldau|"Die Moldau" von Bedrich Smetana}} (ohne Auftakt und rhythmisch vereinfacht). Auch wenn es hier (wie in der 7. Übung) nur die Molltonleiter rauf und runter geht, merkst du hoffentlich, wieviel der Takt und Rhythmus an der Wirkung ausmacht. Wenn du später mal meinst, deine Improvisationen hören sich langweilig an, dann solltest du dich mehr mit Rhythmus beschäftigen. Dazu kannst du dich auch ein wenig mit Schlagmustern beschäftigen. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Am-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Warum die Form hier Gm-Form genannt wird, das wird dir in den nachfolgenden Lektionen klarer werden. Auf Fingersatzangaben können wir hier verzichten, wenn du vorher "Alle meine Entchen in Am" gespielt hast. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Bb- /Gm-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier bietet sich besonders an, den Am-Barré zur Orientierung zu verwenden. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Em-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Auch hier gibt dir der kleine Finger des Am-Barrés den Grundton an. Du kannst dir die Dm-Form aber auch über die F-Form (C im 8. Bund) ableiten. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (F- /Dm-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Zähle vom C (H-Saite, 13. Bund) rückwärts zum A. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D- /Bm7-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier wird die erste Übung in den 12. Bund verschoben. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C- /Am-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==1. Fingersatz== Dir wird wohl aufgefallen sein, dass beim zweiten Fingersatz der Ton G fehlt. Den üben wir mit dem ersten Fingersatz. :[[Datei:Scala 71_2-34_5.svg]] Beachte, dass der Grundton (1) unter dem Ringfinger (also im zweiten Bund dieses Fingersatzes) ist, und dass du deine freie Improvisationsübung in Dur günstigerweise mit der (1) beginnen oder zumindest enden sollte. Diesen Fingersatz suchen wir in der C-Dur-Tonleiter auf dem Griffbrett. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] === Eintaktige Sequenzen === Die erste Lage mit leeren Saiten stellt noch keine Herausforderung dar. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • A- (Bb-)Form ==== Du musst noch nicht einmal den C-Barré im 3. Bund bemühen, um den Grundton zu finden. Die C-Dur-Tonleiter in den ersten drei Bünden reicht. Natürlich kannst du auch den Startton G suchen. Die Tabulatur sagt dir "D-Saite 5. Bund". Erinnere dich daran, dass dies der Stimmton der D-Saite ist (beim Stimmen nach Bünden). Auch hier ist der Fingersatz leicht. <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • A- (Bb-)Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 4 2 3 darkgrey ) (place-fret 4 3 4 yellow3 ) (place-fret 4 5 5 darkgrey ) (place-fret 5 2 "j7" yellow3 ) (place-fret 5 3 1 black ) (place-fret 5 5 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb)-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • G-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • G-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 2 5 3 darkgrey ) (place-fret 2 6 4 yellow3 ) (place-fret 2 8 5 darkgrey ) (place-fret 3 4 "j7" yellow3 ) (place-fret 3 5 1 black ) (place-fret 3 7 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Bei der G-Form kommt es zwischen der G- und H-Saite zu einem Lagewechsel. Du musst dir jedesmal eine Strategie zurechtlegen, wann und wie du am besten den Lagewechsel durchführst. Wenn du Glück hast, findest du im Notenbild einen Hinweis, wie man günstig die Lage wechseln kann. Ich empfehle dir dort wo die 2 über den Noten steht, den Mittelfinger zu nehmen. *(1 = Z, 2 = M, 3 = R, 4 = K, 0 = leere Saite) Betrachte solche Hinweis nur als Vorschlag, denn es gibt keine verbindliche Regel, wie der Lagewechsel zu erfolgen hat. Übst du die gleiche Sequenzen ein paar Saiten höher oder tiefer, geht es leichter von der Hand. Beachte den Lagewechsel zwischen der G- und H-Saite. Den Grundton C kannst du dir auch vom Ringfinger auf der G-Saite des C-Barrés ableiten. Du musst dir hier eine Strategie zurechtlegen, wann du den Lagewechsel durchführen möchtest. Ich empfehle hier, den Lagewechsel so früh wie möglich zu machen, damit du den Zeigefinger frei hast, um gleich hintereinander zwei Töne in einem Bund zu spielen. Betrachte die Angaben zum Fingersatz nur als Vorschlag. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d-4 e-2 f-3 d e f e d c d e c-1 d-4 e-2 d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier eine alternative Lösung. Du kannst einen kleinen Barré über die Noten C und E legen, und den Lagewechsel später ausführen. Das V unter dem C zeigt hier den 5. Bund an, und nicht etwa Abschläge. Der Lagewechsel erfolgt hier im letzten Takt. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d e f d e f e d-2 \textSpannerDown \override TextSpanner.bound-details.left.text = "V" c-1\startTextSpan d e-1 c-1 d e-1\stopTextSpan d-4 c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • E- (F-)Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • E- (F-)Form <score raw="1"> \version "2.24.4" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 5 7 3 darkgrey ) (place-fret 5 8 4 yellow3 ) (place-fret 5 10 5 darkgrey ) (place-fret 6 7 "j7" yellow3 ) (place-fret 6 8 1 black ) (place-fret 6 10 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Den Grundton C auf der E-Saite kannst du dir vom C-Barré der E-Form (wie ein F- Barré) im 8. Bund ableiten. Der Fingersatz ist wieder einfach. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E-(F)-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • D-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • D-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 3 9 3 darkgrey ) (place-fret 3 10 4 yellow3 ) (place-fret 3 12 5 darkgrey ) (place-fret 4 9 "j7" yellow3 ) (place-fret 4 10 1 black ) (place-fret 4 12 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div>Die Tonhöhe ist die selbe, wie in der G-Form, wo wir uns komplizierte Strategien für den Fingersatz zurechtlegen mussten. In dieser Lage ist alles einfacher. Wenn du später mal einen herausfordernden Lick zwischen der G- und H-Saite hast, wäre eine weitere gangbare Strategie den Lick in eine fingertechnisch günstigere Lage zu verlegen. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • C-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • C-Form <score raw="1"> \version "2.24.4" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 1 12 3 darkgrey ) (place-fret 1 13 4 yellow3 ) (place-fret 1 15 5 darkgrey ) (place-fret 2 12 "j7" yellow3 ) (place-fret 2 13 1 black ) (place-fret 2 15 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Hier wurde die C-Durtonleiter in den 12. Bund verlegt. Der Grundton ist auf der H-Saite im 13. Bund. (Eine Oktave höher als bei der C-Dur Tonleiter in den ersten drei Bünden.) Wer keine E-Gitarre hat oder wer keine Akkustik mit Cutaway hat, der kann die C-Form auch in einem niedrigeren Bund üben. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c''' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Halbtaktige Sequenzen === Diesmal hast du halbtaktige Sequenzen, die einmal wiederholt werden. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • A- (Bb-)Form ==== <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- / Bb-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • G-Form ==== Du kannst die beiden hintereinander folgenden Noten im 5. Bund mit einem Mini-Barré ausführen, und die Lagewechsel mittels Slide (=&nbsp;Glissando) durchführen, oder wie in der Wiederholung ohne Slide durchführen. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major c8-1 g' f e d f e d c-1 e-1 d c-1(\glissando b-1) d c b-1(\glissando c1-1) c8-2 g' f e d f e d c-1 e-2 d-4 c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • E- (F-)Form ==== Fingersatztechnisch wieder problemlos. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • D-Form ==== <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • C-Form ==== <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> === Ein Vogel wollte Hochzeit machen === Hier habe ich ein relativ bekanntes Kinderlied gefunden, dass perfekt zum 1. Fingersatz passt. Die Tondauern sind für Ungeübte in Sachen Noten schwer herauszulesen. Kennst du aber das Stück, oder hörst du es dir mehrmals an, so ist es keine unüberwindbare Schwierigkeit. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] Folgt das G nach dem D, greifst du den besser mit dem kleinen Finger. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d-3( g-4) g g16 e | c8 8 8 g'16 e d8 d d-3 g16-4 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier ist es wohl am einfachsten, dass du den kleinen Finger umlegst, wenn du nach dem D den G greifen willst. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb-)Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d-3( g-4) g g16 e | c8 8 8 g'16 e d8-3 d d g16-4 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Wenn der Ton C auf ein E-folgt, kann man entweder ein <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e-2 c-1 g' e d( g) g g16 e-2 | c8-1 8 8 g'16 e d8 d d g16 f | e8-2 c-1 d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Halbtaktige Sequenzen (2) === :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Bei der G-Form kommt es zwischen der G- und H-Saite zu einem Lagewechsel. Du musst dir jedesmal eine Strategie zurechtlegen, wann und wie du am besten den Lagewechsel durchführst. Wenn du Glück hast, findest du im Notenbild einen Hinweis, wie man günstig die Lage wechseln kann. Ich empfehle dir dort wo die 2 über den Noten steht, den Mittelfinger zu nehmen. *(1 = Z, 2 = M, 3 = R, 4 = K, 0 = leere Saite) Betrachte solche Hinweis nur als Vorschlag, denn es gibt keine verbindliche Regel, wie der Lagewechsel zu erfolgen hat. Übst du die gleiche Sequenzen ein paar Saiten höher oder tiefer, geht es leichter von der Hand. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c''' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Einsingen === Diese beiden Motive kennen viele, die schon einmal in einem Chor gesungen haben. Leider entsprechen viele Lieder in ihrem Tonumfang nicht genau einem der vollständigen drei Fingersätze oder der später folgenden Skalen. Zumeist werden nur Ausschnitte aus den Patterns gebraucht. Im ersten Motiv fehlt beispielsweise die große Septime (j7) vor dem Grundton. Dafür enthält das zweite Motiv die große Septime (j7). Das zweite Motiv eicht den Chor auf die gerade geforderte Tonart. Hier werden nur Akkordtöne in einer auf oder absteigenden Tonfolge gespielt (auch Arpeggios genannt). Der A7-Akkord enthält sowohl den Leitton (j7) der zum Grundton (1) hin leitet, als auch den Strebeton (4) die zur Durterz (3) hin strebt. Mit den zwei spannungsreichen Tönen, die sich zum Grundakkord auflösen wollen, wird der Chor auf die Durtonart eingenordet. Hier brauche ich dir nicht zu erklären, wo der Grundton D ist. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A-(Bb-)Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E-(F-)Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==Erste über den zweiten Fingersatz== Wie du siehst, kommt hier jedesmal zuerst der erste Fingersatz mit dem "Karree" rechts, und dannach kommt der Fingersatz mit dem "Karree" links. Sie sind immer untereinander. Nur zwischen der G- und B-Saite verschiebt sich alles um einen Bund. <div style="float:left; padding:5px; border:black solid 1px; "> ;F-Form <score raw="1"> \version "2.14.2" \paper{ indent=0\mm line-width=120\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% 4-o zeigt 4. Saite offen \fret-diagram #"s:2;f:1; 3-3-2;3-5-3;3-6-4; 4-3-6;4-5-7;4-6-1; 5-3-3;5-4-4;5-6-5; 6-3-7;6-4-1;6-6-2;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;Bb-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:2;f:1; 2-4-2;2-6-3;2-7-4; 3-3-6;3-5-7;3-6-1; 4-3-3;4-4-4;4-6-5; 5-3-7;5-4-1;5-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;D-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:2;f:1; 1-4-2;1-6-3;1-7-4; 2-4-6;2-6-2;2-7-1; 3-3-3;3-4-4;3-6-5; 4-3-7;4-4-1;4-6-2;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} === Jamaica Farewell === Die Melodie von [[Liederbuch/ Jamaica Farwell|Jamaica Farwell]] wurde erheblich vereinfacht, damit du dir nicht zu viele Gedanken um den Rhythmus machen musst. Wenn du dich am Quintillo (dem Rhythmus vom Lagerfeuerschlag} orientierst, solltest du wenige Probleme haben. Es gibt recht viele Wiederholung. Die Strophe wurde bei der Wiederholung in die Oktave verschoben, damit das Stück exakt in den Skalenausschnitt passt. Du musst dir für die Fingersätze ggf. Strategien zurechtlegen, damit du die Finger bequem sortiert bekommst. Das Stück beginnt mit dem Ton G. Der (5) in 1. Fingersatz. ;Bb-Form Greife den C wie ein Bb-Barré im 3. Bund. Leite dir von diesem Akkord den Grundton (1) ab, und wandere beim 1. Fingersatz rauf zum Startton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-4-2;2-6-3;2-7-4; 3-3-6;3-5-7;3-6-1; 4-3-3;4-4-4;4-6-5; 5-3-7;5-4-1;5-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (A-, Bb-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ; F-Form Greife den C wie ein F-Barré im 8. Bund. Leite dir von diesem Akkord den Grundton (1) ab, und wandere beim 1. Fingersatz rauf zum Startton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 3-7-2;3-9-3;3-10-4; 4-7-6;4-9-7;4-10-1; 5-7-3;5-8-4;5-10-5; 6-7-7;6-8-1;6-10-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (E-, F-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ;D-Form Schiebe den D-Dur-Akkord in den 12. Bund. Ein D im 12. Bund verschoben ergibt ein C. Leite dir von diesem Akkord den Grundton (1) ab. Orientiere dich kurz im 2. Fingersatz und wandere zurück zum ersten Fingersatz zum Ton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 1-10-2;1-12-3;1-13-4; 2-10-6;2-12-7;2-13-1; 3-9-3;3-10-4;3-12-5; 4-9-7;4-10-1;4-12-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (D-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==3. Fingersatz== Es fällt auf, dass der 3. Fingersatz kein "Karré" hat. {| !Fingersatz !width="30px"| !Intervalle |- |[[Image:Scala Z RK-Z K-ZM K.svg]] !width="30px"| |[[Image:Scala 2 34-5 6-71 2.svg]] |} Der 3. Fingersatz ist gar kein eigenständiger Fingersatz. Der obere Teil des 3. Fingersatzes ist eigentlich schon der untere Teil des 2. Fingersatzes. Ebenso ist der untere Teil des 3. Fingersatzes gleichzeitig der Anfang des 1. Fingersatzes. Du musst dir Strategien zurechtlegen, wie du den Übergang vom Ende des 2. Fingersatzes über die 5 und die 6 hin zum 1. Fingersatz gestaltest. Es kommt beim 3. Fingersatz zu einem Lagewechsel nach links. Übe den 3. Fingersatz zuerst in den obersten Saitenlagen (E A D G x x) === Eine II-V-I-Verbindung === Wir spielen eine einfache Tonfolge über einer 2-5-1-Verbindung. Die Akkordtöne liegen zumeist auf den schweren Zählzeiten. * D, F, A, C gehören zum Dm7 * G, B, D, F gehören zum G7 * C, E, G gehören zum C-Dur-Akkord. Wir nutzen das CAGED-System, um uns grob auf dem Griffbrett zurechtzufinden. ==== Exkurs: Skalenformen ==== Die Namen der Skalen leiten sich übrigens von folgenden einfachen Tonleitern in den ersten Bünden ab: [[Image:Scala C-Am.svg|100px]] [[Image:Scala Bb-Gm.svg|100px]] [[Image:Scala G-Em.svg|100px]] [[Image:Scala F-Dm.svg|100px]] [[Image:Scala D-Hm.svg|100px]] Alle Akkorde die man aus diesen einfachen Tonarten kennt, Bassläufe und ähnliches lassen sich zum großen Teil auf die entsprechenden 5 CAGED-Skalen übertragen, fast so als habe man die Tonleiter mittels Kapodaster in eine höhere Lage verschoben. Wie du siehst, nennen wir die Skalen entgegen des reinen CAGED-System nicht E-Dur-Form (Shape) und nicht die A-Dur-Form (Shape), sondern F- und Bb-Dur-Form. <div style="float:left; padding:5px; border:black solid 1px; "> ;E-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-1;1-2-2;1-4-3; 2-0-5;2-2-6;2-4-7; 3-1-3;3-2-4;3-4-5; 4-1-7;4-2-1;4-4-2; 5-0-4;5-2-5;5-4-6; 6-0-1;6-2-2;6-4-3;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;F-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-3; 1-1-1; 1-3-2; 2-1-5; 2-3-6; 3-0-2; 3-2-3; 3-3-4; 4-0-6; 4-2-7; 4-3-1; 5-0-3; 5-1-4; 5-3-5; 6-0-7; 6-1-1; 6-3-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;G-Dur-Tonleiter <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-3-3; 1-4-1; 1-6-2; 2-4-5; 2-6-6; 3-3-2; 3-5-3; 3-6-4; 4-3-6; 4-5-7; 4-6-1; 5-3-3; 5-4-4; 5-6-5; 6-3-7; 6-4-1; 6-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Du siehst selbst, dass die G-Dur-Tonleiter von der Form her eher wie die F-Dur-Tonleiter als wie die E-Dur-Tonleiter aussieht. <div style="float:left; padding:5px; border:black solid 1px; "> ;A-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-5;1-2-6;1-4-7; 2-0-2;2-2-3;2-3-4; 3-1-7;3-2-1;3-4-2; 4-0-4;4-2-5;4-4-6; 5-0-1;5-2-2;5-4-3; 6-0-5;6-2-6;6-4-7;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;Bb-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-1-5; 1-3-6; 2-1-2; 2-3-3; 2-4-4; 3-0-6; 3-2-7; 3-3-1; 4-0-3; 4-1-4; 4-3-5; 5-0-7; 5-1-1; 5-3-2; 6-1-5; 6-3-6;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;C-Dur-Tonleiter <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-3-5; 1-5-6; 2-3-2; 2-5-3; 2-6-4; 3-2-6; 3-4-7; 3-5-1; 4-2-3; 4-3-4; 4-5-5; 5-2-7; 5-3-1; 5-5-2; 6-3-5; 6-5-6;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Du siehst selbst, dass die C-Dur-Tonleiter von der Form her eher wie die Bb-Dur-Tonleiter als wie die A-Dur-Tonleiter aussieht. ==== 3. Fingersatz II-V-I-Verbindung D-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;D-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:3;f:1; 4-9-7;4-10-1;4-12-2; 5-10-5;5-12-6; 6-10-2;6-12-3;6-13-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Wir beginnen oben bei der D-Form, wo sich der Lagewechsel des 3. Fingersatz noch nicht mit dem Lagewechsel zwischen der G und H-Saite (engl. B-Saite) aufhebt. Würde ich ein Capo in den 10. Bund setzen, dann würde ich die Melodie vom Fingersatz her wie D-Dur spielen. In D-Dur spiele ich diese II-V-I-Verbindung Em7 A7 D. Nehme ich das Capo weg, dann greife ich den Dm(7) als einen Barré der Em-Form im 10. Bund. Von diesem kann ich mir das D als Grundton ableiten. Alternativ siehst du in den Noten, dass die Übung mit dem Ton D anfängt. Dass die oberste Tiefe E-Saite im 12. Bund ebenfalls ein E ergibt, setze ich als bekannt voraus. Falls nicht, beschäftige dich noch einmal mit dem [[Gitarre: Lagerfeueranhang 2c|Stimmen der Gitarre]]. Ein Ganztonschritt bzw. zwei Bünde vor dem E ist der Ton D. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (D-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g-1 a-4 b-1 c4 | b8^\markup { \bold {G7} } a-4 g4-1 f8 e d4 | e8^\markup { \bold {C} } f g4-1 a8-4 b-1 c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung G-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;G-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 3-4-7;3-5-1;3-7-2; 4-5-5;4-7-6; 5-5-2;5-7-3;5-8-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 5. Bund setzen, dann würde man die Melodie vom Fingersatz her wie G-Dur spielen. In G-Dur spielt man diese II-V-I-Verbindung Am7 D7 G. Nimmt man das Capo weg, dann greift man den Dm(7) als einen Barré der Am-Form. Von diesem kannst du dir den D als Grundton ableiten. Einfacher geht es natürlich, wenn du weißt, dass der D im 5. Bund der A-Saite der Stimmton der D-Saite ist. </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (G-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g-1 a-4 b-1 c4 | b8^\markup { \bold {G7} } a-4 g4-1 f8 e d4 | e8^\markup { \bold {C} } f g4-1 a8-4 b-1 c d | c b c2. | \break d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung C-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;C-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-0-7;2-1-1;2-3-2; 3-0-5;3-2-6; 4-0-2;4-2-3;4-3-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Die C-Dur-Form der C-Dur Tonleiter sieht schlicht und ergreifend wie die C-Durtonleiter aus. </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (C-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #4 % \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \break d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung C-Form 12. Bund ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;C-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-12-7;2-13-1;2-15-2; 3-12-5;3-14-6; 4-12-2;4-14-3;4-15-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 12. Bund setzen, dann würde man die Melodie vom Fingersatz her wie C-Dur spielen. In C-Dur spielt man diese II-V-I-Verbindung Dm7 G7 C. Der Startton ist schlicht die D-Saite im 12. Bund. </div> {{clear}} Gerade noch hatten wir einen Lagewechsel nach links. Jetzt aber hebt sich der Lagewechsel nach links vom 3. Fingersatz mit dem Lagewechsel zwischen der G- und H-Saite auf. Es hört sich beim ersten Durchlesen kompliziert an, aber du hast nur 4 Lektionen zu lernen. Den 1. bis 3. Fingersatz und den Lagewechsel zwischen der G- und H-Saite. Das Auffinden der Töne und welche Akkorde zu welcher Tonart gehört, und wie man einen Capo benutzt, sollte eigentlich nichts neues für dich sein. Rein technisch gesehen vereinfacht sich der Fingersatz. Doch es kostet ein wenig Überlegung, wie sich die beiden Lagewechsel auf den 3. Fingersatz auswirken. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (C-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> Sollte es im 12 Bund unbequem zu spielen sein, weil du kein Cutaway hast (Aussparung für die hohen Bünde), übe die C-Form ein paar Bünde zurück in einer anderen Tonart. ==== 3. Fingersatz II-V-I-Verbindung F-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;F-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 1-7-7; 1-8-1;1-10-2; 2-8-5; 2-10-6; 3-7-2; 3-9-3; 3-10-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 6. Bund setzen, dann würde man die Melodie vom Fingersatz her wie F-Dur spielen. In C-Dur spielt man diese II-V-I-Verbindung Gm7 C7 F. Wenn du den C wie ein F-Barré im 8. Bund greifst, dindest du den Grundton (1) auf der hohen E-Saite. Von dem wanderst du runter zum Startton (2). </div> {{clear}} Auch hier hebt sich der Lagewechsel zwischen der G- und H-Saite mit dem Lagewechsel des 3. Fingersatz gegeneinander auf, was den Fingersatz grifftechnisch wieder vereinfacht. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (F-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> == Wie geht es weiter? == Solltest du als Quereinsteiger in diese Lektion gestolpert sein, dann schaue dir die erste Lektion zum [[Gitarre: Aufbau der CAGED-Skalenformen|Aufbau der CAGED-Skalenformen]] an. Insbesondere die Abschnitte, die hier übergangen wurden. Dannach kannst du mit der ersten CAGED-Skala in der D-Dur-Form weitermachen. <noinclude> {{Navigation zurückhochvor |zurücklink=Gitarre: CAGED-Skala G-Dur-Form |zurücktext=CAGED-Skala G-Dur-Form |hochlink=Gitarre: Die Major-Patterns |hochtext=Einführung: Major-Patterns |vorlink=Gitarre: CAGED-Skala D-Dur-Form |vortext=CAGED-Skala D-Dur-Form }} </noinclude> 8vi4jr8407ikc2a9ixo8rwme2t80nmf 1090571 1090570 2026-09-08T18:11:34Z Mjchael 2222 /* 1. Fingersatz • A- (Bb-)Form */ 1090571 wikitext text/x-wiki {{:Gitarre/ Navi|Sologitarre| {{:Gitarre: Sologitarre/ Navi Improvisation in Dur und Moll}}| img=Guitar 1.svg |bg=#F8f8f8|border=darkorange|color=dark|px=80|navi=Einführung in die Sologitarre}} = Wiederholung der Fingersätze = ; mit Schwerpunkt auf den Stammtönen Diese Wiederholung ist zum einen dafür gedacht, die vorhergehenden Übungen auf jeder Saitenlage zu machen, und auch in jeder Bundlage, gleichgültig ob die Finger eng beieinander oder weit auseinander stehen. Zum andern sind diese als Vorbereitung in die Sologitarre gedacht. Beispielsweise als Auflockerungsübung zwischen den Barré-Akkorden. Besonderen Augenmerk wollen wir hier auf die Notennamen legen. Diese können hier mitgelernt werden. Solltest du meinen, das sei noch nicht für dich dran und kann warten, dann springe zur ersten CAGED-Skala. Du kannst beim Kapitel Longform nochmal hierrauf zurückkommen. * [[Gitarre: CAGED-Skala D-Dur-Form|CAGED-Skala D-Dur-Form]] Lassen wir die [[Gitarre: Aufbau der CAGED-Skalenformen|erste Lektion]] (insbesondere für die Quereinsteiger) noch einmal Revue passieren. Die folgenden Übungen enthalten oft eine Folge von ein- oder zweitaktigen Sequenzen. Eine Sequenz ist ein Motiv, dass sich auf verschiedenen Tonhöhen wiederholt. Auch ohne Notenkenntnisse kannst du den Verlauf und die Wiederholungen der Sequenzen einfacher im Notenbild verfolgen, als in der Tabulatur; insbesondere wenn du dir gleichzeitig die Übung anhörst. Es kommen auch Ausschnitte aus klassischen Stücken, Folksongs, Kinderlieder o.ä. vor. Die einfache Struktur oder der Bekanntheitsgrad der Melodien sollen dir das Üben erleichtern. Die Finger finden so leichter ihre Position, als wenn du erstmal jede einzelne Note aus der Tabulatur entschlüsseln musst. Jede Übung wird auf allen Saitenlagen geübt. Vorher blieben wir in den mittleren Lagen. Jetzt gehen wir auch in die ersten Bünde, wo man die Finger etwas mehr spreizen muss, und in die höheren Lagen, wo es ein wenig eng wird. Die Stücke wiederholen sich in dieser Lektion in der selben Tonart, doch auf verschiedenen Bünden. Du spielst immer die selbe Tonfolge, nur auf verschiedenen Tonhöhen bzw. auf verschiedenen Saitenlagen. Lediglich zwischen der G- und H-Saite musst du dir jedesmal überlegen, wie sich der Lagewechsel auf den Fingersatz auswirkt. Doch der Fingersatz in den anderen höheren Lagen bleibt immer gleich. Wie die Tonfolgen mit dem CAGED-System zusammenhängen, das muss dich nur am Rande interessieren. Es wird in den folgenden Lektionen näher und ausführlicher erleutert. :[[Datei:Scala Griffbrett.svg]] Wir hatten uns bei den vorhergehenden Übungen weitestgehend an den Intervallen (1-j7) und an der Tabulatur orientiert. Diese sind in allen Tonarten gleich. Suche zuerst das Karré! Daran orientierst du dich. :[[Image:Scala Carree.svg]] {{Tipp|Lerne bei der C-Dur-Tonleiter nicht nur die Intervalle <br> 2 - 3 4 - 5<br> 6 - j7 1 - 2<br> sondern benenne auch jede einzelne Note. <br> D - E F - G<br> A - H C - D<br> So bekommst du einen recht einfachen Überblick über das Griffbrett.}} == Töne der C-Dur Tonleiter auf dem Griffbrett == Wir wollen uns in dieser Lektion auf die Töne bzw. die Notennamen konzentrieren. Allerdings sparen wir uns vorerst alle Töne mit Vorzeichen aus. Die [[Gitarre: Aufbau der CAGED-Skalenformen|ersten Übungen zum 1. und 2. Fingersatz]] werden auf die Tonart C-Dur bzw. A-Moll übertragen und wir spiele sie in den hier gezeigten Positionen. Wir fangen mit dem zweiten Fingersatz an, wo wir entweder den Ton C oder den Ton A der C-Dur- bzw. Am-Tonleiter als Orientierung nutzen :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] Du hast vermutlich allerlei Akkordformen des CAGED-System gesehen. <div class="noprint"> ;Animation [[Image:Crd Grundtonschema ani.gif]] </div> <score> << \new ChordNames { \chordmode { c1 c c c c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 e-2 g c'-1 e' > < c-1\5 g-3\4 c'-3\3 e'-4\2 g'-1 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 e-2\5 g-1\4 c'-1\3 e'-1\2 c''-4\1> < c-1\6 g-2\5 c'-3\4 e'-4\3 g'-1\2 c''-1\1> \once \override FretBoard.fret-diagram-details.dot-color = #'white < c'-1\4 g'-2\3 c''-4\2 e''-3\1 > < c'-4\5 e'-3\4 g'-1\3 c''-2\2 e''-1\1 > } >> </score> Wenn du schon Fingerstyle oder Jazz spielst, mögen dir viele der Formen bekannt vorkommen. Doch selbst wenn du bis jetzt nur das [[Gitarre: Rockdiplom|Rockdiplom]] gemacht hast und mit den dort vorkommenden Barré-Akkorden vertraut bist, wirst du sehen, dass die einfachen Barré-Akkorde ausreichen, um sich auf dem Griffbrett zu zurechtzufinden. Die [[Gitarre: C-Dur-Tonleiter Workshop|C-Dur-Tonleiter in den ersten drei Bünden]] setze ich als bekannt voraus und es sollte dir nicht allzu schwer fallen, diese in den 12. Bund zu übertragen. :[[Datei:Scala C-Am.svg|150px]][[Datei:C-Dur_Majorpattern_III.jpg|150px]] C-Dur als Barré im 3. Bund kennst du vom Rockdiplom, und C-Dur im 8. Bund ist auch kein Hexenwerk. Dazwischen liegt nach dem CAGED-System die G-Form, die dir vermutlich noch nicht untergekommen ist (hier mit weißem Fingersatz). Statt uns die Töne von der G-Form abzuleiten, machen wir es uns einfacher und leiten uns die Töne zur Orientierung vom Am im 5. Bund ab. Du erinnerst dich noch an die Dur- und Mollparallelen? (C- \ Am-Tonleiter bzw. G- \ Em-Form). Oder du nutzt die Grundtöne des C-Barré im 8. Bund. <score> << \new ChordNames { \chordmode { c1 c c a:m c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 e-2 g c'-1 e' > < c-1\5 g-3\4 c'-3\3 e'-4\2 g'-1 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 e-2\5 g-1\4 c'-1\3 e'-1\2 c''-4\1> < a,-1\6 e-3\5 a-4\4 c'-1\3 e'-1\2 a'-1\1 > < c-1\6 g-2\5 c'-3\4 e'-4\3 g'-1\2 c''-1\1> < c'-4\5 e'-3\4 g'-1\3 c''-2\2 e''-1\1 > } >> </score> Leite dir also die Grundtöne C und A von den dir bekannten Barré-Akkorden ab und spare dir die ungewöhnlicheren Akkordformen auf, bis sie dir später beim Fingerstyle oder Jazz begegnen. Es macht dabei garnichts aus, wenn du zum Auffinden der Grundtöne und zum Finden des Starttons ein paar Sekunden brauchst. Du wirst sehen, dass die Wiederholungen der bekannten Übungen auf den verschiedenen Bünden und in verschiedenen Oktavebereichen leicht von der Hand gehen. Lediglich beim Lagewechsel zwischen der G- und H-Saite musst du etwas überlegen. <score> << \new ChordNames { \chordmode { c1 c c a c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 c'-1 > < c-1\5 c'-3\3 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 c'-1\3 c''-4\1> < a,-1\6 a-4\4 a'-1\1 > < c-1\6 c'-3\4 c''-1\1> < c'-4\5 c''-2\2 > } >> </score> Diese wenigen"Eckpunkte" reichen aus, um dich grob auf dem Griffbrett zurechtzufinden. Suche sie noch einmal in der Skala und natürlich auch auf deinem Griffbrett. :[[Datei:C-Major-Scale on the fretboard.svg]] == Zweiter Fingersatz == :[[Datei:Scala 6_71-2_34.svg]] Zuerst suchen wir uns in der C-Dur-Tonleiter überall den zweiten Fingersatz heraus. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] Zur leichteren Orientierung wird die Grafik bei jeder neuen Melodie wiederholt. === Rondeau (Auszug) === Die eintaktige Sequenzen wurde aus einem Rondeau von J.S. Bach entnommen, dass beliebig wiederholt werden kann. Der Grundton C, welcher im letzten Takt rot eingefärbt wurde, wird mit dem kleinen Finger gegriffen. Du kannst tatsächlich die Noten nutzen (sofern du es schon kannst) oder aber du orientierst dich an den Notennamen. Am Anfang des Griffbrettes brauchen wir den zweiten Fingersatz nicht vollständig. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #5 % \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> In der A-(Bb-)Form müssen wir den Lagewechsel zwischen der G- und H-Saite beachten. Übrigens werden hier die Töne in der englischen Form angegeben. (Bb-Form und der Ton B statt des deutschen H.) Nur der erste Bund wird bis zur letzten Note in der dritten Lage gespielt. Der Rest bis zur letzten Note in der zweiten Lage. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (A-, Bb-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e-4 d-2 c d e d c b d c b c d c b a c b a b c d b c d-1 } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Statt in der G-Form das C zu suchen, suche lieber das A im 5. Bund (hier grün hervorgehoben). Oder du leitest dir das C vom Barré im 8. Bund ab. Der Startton E ist auf der A Saite im 7. Bund unter dem Ringfinger. Ansonsten stellt der Fingersatz keine Herausforderung mehr dar. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (G-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b \once \override NoteHead #'color = #green a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Der kleine Finger des C-Barré im 8. Bund in der E- bzw. F-Form gibt gleichzeitig das C des zweiten Fingersatz an. Du siehst, dass ab jetzt alles leichter geworden ist, weil sich ansonsten nichts mehr am Fingersatz ändert. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (E- F-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Für den Grundton C müssen wir uns die D-Form gar nicht so genau ins Gedächtnis rufen, wenn uns die C-Form viel vertrauter ist. Diese hohe Lage ist für E-Gitarristen oder Gitarren mit Cutaway gedacht. Auf der Konzertgitarre ist die sehr hohe Lage schlecht zu spielen. Gehe ggf. einen Kompromiss ein, und spiele diese hohe Saitenlage ein paar Bünde tiefer als Übung nur für den Fingersatz aber nicht für die Notennamen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Noten über dem hohen C (der mit zwei Hilfslinien) wird dir seltener begegnen, da in dem Fall bevorzugt die Noten nach unten oktaviert werden. (Beachte die 8 im Notensystem.) Bei den weiteren Übungen werden jedoch die Versionen mit den vielen Hilfslinien angezeigt. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { \ottava #1 e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Mit der C-Form in den ersten drei Bünden im Hinterkopf ist der 12. Bund leicht zu bewältigen. Wieder eine Übung, die weniger für Konzertgitarren geeignet ist. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === "Das häßliche Entlein" oder "Alle meine Entchen"<ref>Anspielung auf ein Märchen der Gebrüder Grimm nebst einem bekannten deutschen Kinderlied.</ref> in A-Moll === Die vorherige Übung war in Dur, und hier verwenden wir ein und den selben Fingersatz in Moll. Wie du siehst und hörst, lässt sich ein Fingersatz oder ein Pattern nicht eindeutig einer einzigen Tonart zuordnen. Der Schlusston oder der Schlussakkord (hier der Ton A bzw. der Akkord Am) bestimmt die Tonart. Der Grundton A ist hier die Sexte (6) des zugrunde liegenden C-Major-Pattern. Es bleibt dir überlassen, ob du zur Orientierung lieber den Grundton A (grün) bestimmst, oder das C aus dem Karré (rot). Wenn in einer Tabulatur über einer Ziffer zwei Notenhälse stehen, so ist das ein Zeichen für eine halbe Note, die zwei Schläge dauert. Da dieses für viele Gitarristen sehr ungewöhnlich aussieht, verzichtet man oft auf Taktstriche in der Tabulatur. In dem Fall lässt sich die Tondauer allein an den Notenwerten ablesen. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-/Am-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #5 % \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Der Lagewechsel zwischen der G- und H-Saite ist hier leicht zu bewältigen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Gm-/Bb-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d-1 e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2-4 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Auch hier ist es wieder einfacher das A (grün) zu suchen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Em-/G-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (E- / F-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Statt lange nach dem Grundton der D-Form zu suchen, erinneren wir uns kurz, wo der Grundton C auf der H- (B-)Saite sein muß (13. Bund). <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> === Die Moldau (Hauptmotiv) === Die Abfolge der Töne der folgenden Übung unterscheidet sich kaum von der vorhergehenden. Doch mit dem anderen Rhythmus haben wir das Hauptmotiv von der Komposition {{Youtube-Suche|Smetana+Die+Moldau|"Die Moldau" von Bedrich Smetana}} (ohne Auftakt und rhythmisch vereinfacht). Auch wenn es hier (wie in der 7. Übung) nur die Molltonleiter rauf und runter geht, merkst du hoffentlich, wieviel der Takt und Rhythmus an der Wirkung ausmacht. Wenn du später mal meinst, deine Improvisationen hören sich langweilig an, dann solltest du dich mehr mit Rhythmus beschäftigen. Dazu kannst du dich auch ein wenig mit Schlagmustern beschäftigen. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Am-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Warum die Form hier Gm-Form genannt wird, das wird dir in den nachfolgenden Lektionen klarer werden. Auf Fingersatzangaben können wir hier verzichten, wenn du vorher "Alle meine Entchen in Am" gespielt hast. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Bb- /Gm-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier bietet sich besonders an, den Am-Barré zur Orientierung zu verwenden. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Em-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Auch hier gibt dir der kleine Finger des Am-Barrés den Grundton an. Du kannst dir die Dm-Form aber auch über die F-Form (C im 8. Bund) ableiten. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (F- /Dm-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Zähle vom C (H-Saite, 13. Bund) rückwärts zum A. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D- /Bm7-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier wird die erste Übung in den 12. Bund verschoben. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C- /Am-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==1. Fingersatz== Dir wird wohl aufgefallen sein, dass beim zweiten Fingersatz der Ton G fehlt. Den üben wir mit dem ersten Fingersatz. :[[Datei:Scala 71_2-34_5.svg]] Beachte, dass der Grundton (1) unter dem Ringfinger (also im zweiten Bund dieses Fingersatzes) ist, und dass du deine freie Improvisationsübung in Dur günstigerweise mit der (1) beginnen oder zumindest enden sollte. Diesen Fingersatz suchen wir in der C-Dur-Tonleiter auf dem Griffbrett. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] === Eintaktige Sequenzen === Die erste Lage mit leeren Saiten stellt noch keine Herausforderung dar. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • A- (Bb-)Form ==== Du musst noch nicht einmal den C-Barré im 3. Bund bemühen, um den Grundton zu finden. Die C-Dur-Tonleiter in den ersten drei Bünden reicht. Natürlich kannst du auch den Startton G suchen. Die Tabulatur sagt dir "D-Saite 5. Bund". Erinnere dich daran, dass dies der Stimmton der D-Saite ist (beim Stimmen nach Bünden). Auch hier ist der Fingersatz leicht. <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • A- (Bb-)Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 4 2 3 darkgrey ) (place-fret 4 3 4 yellow3 ) (place-fret 4 5 5 darkgrey ) (place-fret 5 2 "j7" yellow3 ) (place-fret 5 3 1 black ) (place-fret 5 5 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb)-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • G-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • G-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 2 5 3 darkgrey ) (place-fret 2 6 4 yellow3 ) (place-fret 2 8 5 darkgrey ) (place-fret 3 4 "j7" yellow3 ) (place-fret 3 5 1 black ) (place-fret 3 7 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Bei der G-Form kommt es zwischen der G- und H-Saite zu einem Lagewechsel. Du musst dir jedesmal eine Strategie zurechtlegen, wann und wie du am besten den Lagewechsel durchführst. Wenn du Glück hast, findest du im Notenbild einen Hinweis, wie man günstig die Lage wechseln kann. Ich empfehle dir dort wo die 2 über den Noten steht, den Mittelfinger zu nehmen. *(1 = Z, 2 = M, 3 = R, 4 = K, 0 = leere Saite) Betrachte solche Hinweis nur als Vorschlag, denn es gibt keine verbindliche Regel, wie der Lagewechsel zu erfolgen hat. Übst du die gleiche Sequenzen ein paar Saiten höher oder tiefer, geht es leichter von der Hand. Beachte den Lagewechsel zwischen der G- und H-Saite. Den Grundton C kannst du dir auch vom Ringfinger auf der G-Saite des C-Barrés ableiten. Du musst dir hier eine Strategie zurechtlegen, wann du den Lagewechsel durchführen möchtest. Ich empfehle hier, den Lagewechsel so früh wie möglich zu machen, damit du den Zeigefinger frei hast, um gleich hintereinander zwei Töne in einem Bund zu spielen. Betrachte die Angaben zum Fingersatz nur als Vorschlag. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d-4 e-2 f-3 d e f e d c d e c-1 d-4 e-2 d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier eine alternative Lösung. Du kannst einen kleinen Barré über die Noten C und E legen, und den Lagewechsel später ausführen. Das V unter dem C zeigt hier den 5. Bund an, und nicht etwa Abschläge. Der Lagewechsel erfolgt hier im letzten Takt. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d e f d e f e d-2 \textSpannerDown \override TextSpanner.bound-details.left.text = "V" c-1\startTextSpan d e-1 c-1 d e-1\stopTextSpan d-4 c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • E- (F-)Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • E- (F-)Form <score raw="1"> \version "2.24.4" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 5 7 3 darkgrey ) (place-fret 5 8 4 yellow3 ) (place-fret 5 10 5 darkgrey ) (place-fret 6 7 "j7" yellow3 ) (place-fret 6 8 1 black ) (place-fret 6 10 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Den Grundton C auf der E-Saite kannst du dir vom C-Barré der E-Form (wie ein F- Barré) im 8. Bund ableiten. Der Fingersatz ist wieder einfach. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E-(F)-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • D-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • D-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 3 9 3 darkgrey ) (place-fret 3 10 4 yellow3 ) (place-fret 3 12 5 darkgrey ) (place-fret 4 9 "j7" yellow3 ) (place-fret 4 10 1 black ) (place-fret 4 12 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div>Die Tonhöhe ist die selbe, wie in der G-Form, wo wir uns komplizierte Strategien für den Fingersatz zurechtlegen mussten. In dieser Lage ist alles einfacher. Wenn du später mal einen herausfordernden Lick zwischen der G- und H-Saite hast, wäre eine weitere gangbare Strategie den Lick in eine fingertechnisch günstigere Lage zu verlegen. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • C-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • C-Form <score raw="1"> \version "2.24.4" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 1 12 3 darkgrey ) (place-fret 1 13 4 yellow3 ) (place-fret 1 15 5 darkgrey ) (place-fret 2 12 "j7" yellow3 ) (place-fret 2 13 1 black ) (place-fret 2 15 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Hier wurde die C-Durtonleiter in den 12. Bund verlegt. Der Grundton ist auf der H-Saite im 13. Bund. (Eine Oktave höher als bei der C-Dur Tonleiter in den ersten drei Bünden.) Wer keine E-Gitarre hat oder wer keine Akkustik mit Cutaway hat, der kann die C-Form auch in einem niedrigeren Bund üben. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c''' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Halbtaktige Sequenzen === Diesmal hast du halbtaktige Sequenzen, die einmal wiederholt werden. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • A- (Bb-)Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • A- (Bb-)Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 4 2 "E" darkgrey ) (place-fret 4 3 "F" yellow3 ) (place-fret 4 5 "G" darkgrey ) (place-fret 5 2 "B" yellow3 ) (place-fret 5 3 "C" black ) (place-fret 5 5 "D" darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Leite dir den Grundton vom C-Dur-Akkord, oder vom C-Barré im 3. Bund ab. Lerne nicht nur die Intervlle, sondern auch die Notennamen. (Zumindest bei den einfachen Tonarten F-, G- und C-Dur). Andere Tonarten kommen später dran. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- / Bb-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • G-Form ==== Du kannst die beiden hintereinander folgenden Noten im 5. Bund mit einem Mini-Barré ausführen, und die Lagewechsel mittels Slide (=&nbsp;Glissando) durchführen, oder wie in der Wiederholung ohne Slide durchführen. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major c8-1 g' f e d f e d c-1 e-1 d c-1(\glissando b-1) d c b-1(\glissando c1-1) c8-2 g' f e d f e d c-1 e-2 d-4 c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • E- (F-)Form ==== Fingersatztechnisch wieder problemlos. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • D-Form ==== <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • C-Form ==== <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> === Ein Vogel wollte Hochzeit machen === Hier habe ich ein relativ bekanntes Kinderlied gefunden, dass perfekt zum 1. Fingersatz passt. Die Tondauern sind für Ungeübte in Sachen Noten schwer herauszulesen. Kennst du aber das Stück, oder hörst du es dir mehrmals an, so ist es keine unüberwindbare Schwierigkeit. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] Folgt das G nach dem D, greifst du den besser mit dem kleinen Finger. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d-3( g-4) g g16 e | c8 8 8 g'16 e d8 d d-3 g16-4 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier ist es wohl am einfachsten, dass du den kleinen Finger umlegst, wenn du nach dem D den G greifen willst. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb-)Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d-3( g-4) g g16 e | c8 8 8 g'16 e d8-3 d d g16-4 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Wenn der Ton C auf ein E-folgt, kann man entweder ein <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e-2 c-1 g' e d( g) g g16 e-2 | c8-1 8 8 g'16 e d8 d d g16 f | e8-2 c-1 d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Halbtaktige Sequenzen (2) === :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Bei der G-Form kommt es zwischen der G- und H-Saite zu einem Lagewechsel. Du musst dir jedesmal eine Strategie zurechtlegen, wann und wie du am besten den Lagewechsel durchführst. Wenn du Glück hast, findest du im Notenbild einen Hinweis, wie man günstig die Lage wechseln kann. Ich empfehle dir dort wo die 2 über den Noten steht, den Mittelfinger zu nehmen. *(1 = Z, 2 = M, 3 = R, 4 = K, 0 = leere Saite) Betrachte solche Hinweis nur als Vorschlag, denn es gibt keine verbindliche Regel, wie der Lagewechsel zu erfolgen hat. Übst du die gleiche Sequenzen ein paar Saiten höher oder tiefer, geht es leichter von der Hand. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c''' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Einsingen === Diese beiden Motive kennen viele, die schon einmal in einem Chor gesungen haben. Leider entsprechen viele Lieder in ihrem Tonumfang nicht genau einem der vollständigen drei Fingersätze oder der später folgenden Skalen. Zumeist werden nur Ausschnitte aus den Patterns gebraucht. Im ersten Motiv fehlt beispielsweise die große Septime (j7) vor dem Grundton. Dafür enthält das zweite Motiv die große Septime (j7). Das zweite Motiv eicht den Chor auf die gerade geforderte Tonart. Hier werden nur Akkordtöne in einer auf oder absteigenden Tonfolge gespielt (auch Arpeggios genannt). Der A7-Akkord enthält sowohl den Leitton (j7) der zum Grundton (1) hin leitet, als auch den Strebeton (4) die zur Durterz (3) hin strebt. Mit den zwei spannungsreichen Tönen, die sich zum Grundakkord auflösen wollen, wird der Chor auf die Durtonart eingenordet. Hier brauche ich dir nicht zu erklären, wo der Grundton D ist. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A-(Bb-)Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E-(F-)Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==Erste über den zweiten Fingersatz== Wie du siehst, kommt hier jedesmal zuerst der erste Fingersatz mit dem "Karree" rechts, und dannach kommt der Fingersatz mit dem "Karree" links. Sie sind immer untereinander. Nur zwischen der G- und B-Saite verschiebt sich alles um einen Bund. <div style="float:left; padding:5px; border:black solid 1px; "> ;F-Form <score raw="1"> \version "2.14.2" \paper{ indent=0\mm line-width=120\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% 4-o zeigt 4. Saite offen \fret-diagram #"s:2;f:1; 3-3-2;3-5-3;3-6-4; 4-3-6;4-5-7;4-6-1; 5-3-3;5-4-4;5-6-5; 6-3-7;6-4-1;6-6-2;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;Bb-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:2;f:1; 2-4-2;2-6-3;2-7-4; 3-3-6;3-5-7;3-6-1; 4-3-3;4-4-4;4-6-5; 5-3-7;5-4-1;5-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;D-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:2;f:1; 1-4-2;1-6-3;1-7-4; 2-4-6;2-6-2;2-7-1; 3-3-3;3-4-4;3-6-5; 4-3-7;4-4-1;4-6-2;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} === Jamaica Farewell === Die Melodie von [[Liederbuch/ Jamaica Farwell|Jamaica Farwell]] wurde erheblich vereinfacht, damit du dir nicht zu viele Gedanken um den Rhythmus machen musst. Wenn du dich am Quintillo (dem Rhythmus vom Lagerfeuerschlag} orientierst, solltest du wenige Probleme haben. Es gibt recht viele Wiederholung. Die Strophe wurde bei der Wiederholung in die Oktave verschoben, damit das Stück exakt in den Skalenausschnitt passt. Du musst dir für die Fingersätze ggf. Strategien zurechtlegen, damit du die Finger bequem sortiert bekommst. Das Stück beginnt mit dem Ton G. Der (5) in 1. Fingersatz. ;Bb-Form Greife den C wie ein Bb-Barré im 3. Bund. Leite dir von diesem Akkord den Grundton (1) ab, und wandere beim 1. Fingersatz rauf zum Startton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-4-2;2-6-3;2-7-4; 3-3-6;3-5-7;3-6-1; 4-3-3;4-4-4;4-6-5; 5-3-7;5-4-1;5-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (A-, Bb-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ; F-Form Greife den C wie ein F-Barré im 8. Bund. Leite dir von diesem Akkord den Grundton (1) ab, und wandere beim 1. Fingersatz rauf zum Startton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 3-7-2;3-9-3;3-10-4; 4-7-6;4-9-7;4-10-1; 5-7-3;5-8-4;5-10-5; 6-7-7;6-8-1;6-10-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (E-, F-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ;D-Form Schiebe den D-Dur-Akkord in den 12. Bund. Ein D im 12. Bund verschoben ergibt ein C. Leite dir von diesem Akkord den Grundton (1) ab. Orientiere dich kurz im 2. Fingersatz und wandere zurück zum ersten Fingersatz zum Ton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 1-10-2;1-12-3;1-13-4; 2-10-6;2-12-7;2-13-1; 3-9-3;3-10-4;3-12-5; 4-9-7;4-10-1;4-12-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (D-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==3. Fingersatz== Es fällt auf, dass der 3. Fingersatz kein "Karré" hat. {| !Fingersatz !width="30px"| !Intervalle |- |[[Image:Scala Z RK-Z K-ZM K.svg]] !width="30px"| |[[Image:Scala 2 34-5 6-71 2.svg]] |} Der 3. Fingersatz ist gar kein eigenständiger Fingersatz. Der obere Teil des 3. Fingersatzes ist eigentlich schon der untere Teil des 2. Fingersatzes. Ebenso ist der untere Teil des 3. Fingersatzes gleichzeitig der Anfang des 1. Fingersatzes. Du musst dir Strategien zurechtlegen, wie du den Übergang vom Ende des 2. Fingersatzes über die 5 und die 6 hin zum 1. Fingersatz gestaltest. Es kommt beim 3. Fingersatz zu einem Lagewechsel nach links. Übe den 3. Fingersatz zuerst in den obersten Saitenlagen (E A D G x x) === Eine II-V-I-Verbindung === Wir spielen eine einfache Tonfolge über einer 2-5-1-Verbindung. Die Akkordtöne liegen zumeist auf den schweren Zählzeiten. * D, F, A, C gehören zum Dm7 * G, B, D, F gehören zum G7 * C, E, G gehören zum C-Dur-Akkord. Wir nutzen das CAGED-System, um uns grob auf dem Griffbrett zurechtzufinden. ==== Exkurs: Skalenformen ==== Die Namen der Skalen leiten sich übrigens von folgenden einfachen Tonleitern in den ersten Bünden ab: [[Image:Scala C-Am.svg|100px]] [[Image:Scala Bb-Gm.svg|100px]] [[Image:Scala G-Em.svg|100px]] [[Image:Scala F-Dm.svg|100px]] [[Image:Scala D-Hm.svg|100px]] Alle Akkorde die man aus diesen einfachen Tonarten kennt, Bassläufe und ähnliches lassen sich zum großen Teil auf die entsprechenden 5 CAGED-Skalen übertragen, fast so als habe man die Tonleiter mittels Kapodaster in eine höhere Lage verschoben. Wie du siehst, nennen wir die Skalen entgegen des reinen CAGED-System nicht E-Dur-Form (Shape) und nicht die A-Dur-Form (Shape), sondern F- und Bb-Dur-Form. <div style="float:left; padding:5px; border:black solid 1px; "> ;E-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-1;1-2-2;1-4-3; 2-0-5;2-2-6;2-4-7; 3-1-3;3-2-4;3-4-5; 4-1-7;4-2-1;4-4-2; 5-0-4;5-2-5;5-4-6; 6-0-1;6-2-2;6-4-3;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;F-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-3; 1-1-1; 1-3-2; 2-1-5; 2-3-6; 3-0-2; 3-2-3; 3-3-4; 4-0-6; 4-2-7; 4-3-1; 5-0-3; 5-1-4; 5-3-5; 6-0-7; 6-1-1; 6-3-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;G-Dur-Tonleiter <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-3-3; 1-4-1; 1-6-2; 2-4-5; 2-6-6; 3-3-2; 3-5-3; 3-6-4; 4-3-6; 4-5-7; 4-6-1; 5-3-3; 5-4-4; 5-6-5; 6-3-7; 6-4-1; 6-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Du siehst selbst, dass die G-Dur-Tonleiter von der Form her eher wie die F-Dur-Tonleiter als wie die E-Dur-Tonleiter aussieht. <div style="float:left; padding:5px; border:black solid 1px; "> ;A-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-5;1-2-6;1-4-7; 2-0-2;2-2-3;2-3-4; 3-1-7;3-2-1;3-4-2; 4-0-4;4-2-5;4-4-6; 5-0-1;5-2-2;5-4-3; 6-0-5;6-2-6;6-4-7;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;Bb-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-1-5; 1-3-6; 2-1-2; 2-3-3; 2-4-4; 3-0-6; 3-2-7; 3-3-1; 4-0-3; 4-1-4; 4-3-5; 5-0-7; 5-1-1; 5-3-2; 6-1-5; 6-3-6;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;C-Dur-Tonleiter <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-3-5; 1-5-6; 2-3-2; 2-5-3; 2-6-4; 3-2-6; 3-4-7; 3-5-1; 4-2-3; 4-3-4; 4-5-5; 5-2-7; 5-3-1; 5-5-2; 6-3-5; 6-5-6;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Du siehst selbst, dass die C-Dur-Tonleiter von der Form her eher wie die Bb-Dur-Tonleiter als wie die A-Dur-Tonleiter aussieht. ==== 3. Fingersatz II-V-I-Verbindung D-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;D-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:3;f:1; 4-9-7;4-10-1;4-12-2; 5-10-5;5-12-6; 6-10-2;6-12-3;6-13-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Wir beginnen oben bei der D-Form, wo sich der Lagewechsel des 3. Fingersatz noch nicht mit dem Lagewechsel zwischen der G und H-Saite (engl. B-Saite) aufhebt. Würde ich ein Capo in den 10. Bund setzen, dann würde ich die Melodie vom Fingersatz her wie D-Dur spielen. In D-Dur spiele ich diese II-V-I-Verbindung Em7 A7 D. Nehme ich das Capo weg, dann greife ich den Dm(7) als einen Barré der Em-Form im 10. Bund. Von diesem kann ich mir das D als Grundton ableiten. Alternativ siehst du in den Noten, dass die Übung mit dem Ton D anfängt. Dass die oberste Tiefe E-Saite im 12. Bund ebenfalls ein E ergibt, setze ich als bekannt voraus. Falls nicht, beschäftige dich noch einmal mit dem [[Gitarre: Lagerfeueranhang 2c|Stimmen der Gitarre]]. Ein Ganztonschritt bzw. zwei Bünde vor dem E ist der Ton D. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (D-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g-1 a-4 b-1 c4 | b8^\markup { \bold {G7} } a-4 g4-1 f8 e d4 | e8^\markup { \bold {C} } f g4-1 a8-4 b-1 c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung G-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;G-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 3-4-7;3-5-1;3-7-2; 4-5-5;4-7-6; 5-5-2;5-7-3;5-8-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 5. Bund setzen, dann würde man die Melodie vom Fingersatz her wie G-Dur spielen. In G-Dur spielt man diese II-V-I-Verbindung Am7 D7 G. Nimmt man das Capo weg, dann greift man den Dm(7) als einen Barré der Am-Form. Von diesem kannst du dir den D als Grundton ableiten. Einfacher geht es natürlich, wenn du weißt, dass der D im 5. Bund der A-Saite der Stimmton der D-Saite ist. </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (G-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g-1 a-4 b-1 c4 | b8^\markup { \bold {G7} } a-4 g4-1 f8 e d4 | e8^\markup { \bold {C} } f g4-1 a8-4 b-1 c d | c b c2. | \break d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung C-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;C-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-0-7;2-1-1;2-3-2; 3-0-5;3-2-6; 4-0-2;4-2-3;4-3-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Die C-Dur-Form der C-Dur Tonleiter sieht schlicht und ergreifend wie die C-Durtonleiter aus. </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (C-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #4 % \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \break d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung C-Form 12. Bund ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;C-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-12-7;2-13-1;2-15-2; 3-12-5;3-14-6; 4-12-2;4-14-3;4-15-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 12. Bund setzen, dann würde man die Melodie vom Fingersatz her wie C-Dur spielen. In C-Dur spielt man diese II-V-I-Verbindung Dm7 G7 C. Der Startton ist schlicht die D-Saite im 12. Bund. </div> {{clear}} Gerade noch hatten wir einen Lagewechsel nach links. Jetzt aber hebt sich der Lagewechsel nach links vom 3. Fingersatz mit dem Lagewechsel zwischen der G- und H-Saite auf. Es hört sich beim ersten Durchlesen kompliziert an, aber du hast nur 4 Lektionen zu lernen. Den 1. bis 3. Fingersatz und den Lagewechsel zwischen der G- und H-Saite. Das Auffinden der Töne und welche Akkorde zu welcher Tonart gehört, und wie man einen Capo benutzt, sollte eigentlich nichts neues für dich sein. Rein technisch gesehen vereinfacht sich der Fingersatz. Doch es kostet ein wenig Überlegung, wie sich die beiden Lagewechsel auf den 3. Fingersatz auswirken. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (C-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> Sollte es im 12 Bund unbequem zu spielen sein, weil du kein Cutaway hast (Aussparung für die hohen Bünde), übe die C-Form ein paar Bünde zurück in einer anderen Tonart. ==== 3. Fingersatz II-V-I-Verbindung F-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;F-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 1-7-7; 1-8-1;1-10-2; 2-8-5; 2-10-6; 3-7-2; 3-9-3; 3-10-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 6. Bund setzen, dann würde man die Melodie vom Fingersatz her wie F-Dur spielen. In C-Dur spielt man diese II-V-I-Verbindung Gm7 C7 F. Wenn du den C wie ein F-Barré im 8. Bund greifst, dindest du den Grundton (1) auf der hohen E-Saite. Von dem wanderst du runter zum Startton (2). </div> {{clear}} Auch hier hebt sich der Lagewechsel zwischen der G- und H-Saite mit dem Lagewechsel des 3. Fingersatz gegeneinander auf, was den Fingersatz grifftechnisch wieder vereinfacht. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (F-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> == Wie geht es weiter? == Solltest du als Quereinsteiger in diese Lektion gestolpert sein, dann schaue dir die erste Lektion zum [[Gitarre: Aufbau der CAGED-Skalenformen|Aufbau der CAGED-Skalenformen]] an. Insbesondere die Abschnitte, die hier übergangen wurden. Dannach kannst du mit der ersten CAGED-Skala in der D-Dur-Form weitermachen. <noinclude> {{Navigation zurückhochvor |zurücklink=Gitarre: CAGED-Skala G-Dur-Form |zurücktext=CAGED-Skala G-Dur-Form |hochlink=Gitarre: Die Major-Patterns |hochtext=Einführung: Major-Patterns |vorlink=Gitarre: CAGED-Skala D-Dur-Form |vortext=CAGED-Skala D-Dur-Form }} </noinclude> 1rq9ikd40gg7u2et0mupjb1wm7mezhg 1090572 1090571 2026-09-08T18:20:19Z Mjchael 2222 /* 1. Fingersatz • A- (Bb-)Form */ 1090572 wikitext text/x-wiki {{:Gitarre/ Navi|Sologitarre| {{:Gitarre: Sologitarre/ Navi Improvisation in Dur und Moll}}| img=Guitar 1.svg |bg=#F8f8f8|border=darkorange|color=dark|px=80|navi=Einführung in die Sologitarre}} = Wiederholung der Fingersätze = ; mit Schwerpunkt auf den Stammtönen Diese Wiederholung ist zum einen dafür gedacht, die vorhergehenden Übungen auf jeder Saitenlage zu machen, und auch in jeder Bundlage, gleichgültig ob die Finger eng beieinander oder weit auseinander stehen. Zum andern sind diese als Vorbereitung in die Sologitarre gedacht. Beispielsweise als Auflockerungsübung zwischen den Barré-Akkorden. Besonderen Augenmerk wollen wir hier auf die Notennamen legen. Diese können hier mitgelernt werden. Solltest du meinen, das sei noch nicht für dich dran und kann warten, dann springe zur ersten CAGED-Skala. Du kannst beim Kapitel Longform nochmal hierrauf zurückkommen. * [[Gitarre: CAGED-Skala D-Dur-Form|CAGED-Skala D-Dur-Form]] Lassen wir die [[Gitarre: Aufbau der CAGED-Skalenformen|erste Lektion]] (insbesondere für die Quereinsteiger) noch einmal Revue passieren. Die folgenden Übungen enthalten oft eine Folge von ein- oder zweitaktigen Sequenzen. Eine Sequenz ist ein Motiv, dass sich auf verschiedenen Tonhöhen wiederholt. Auch ohne Notenkenntnisse kannst du den Verlauf und die Wiederholungen der Sequenzen einfacher im Notenbild verfolgen, als in der Tabulatur; insbesondere wenn du dir gleichzeitig die Übung anhörst. Es kommen auch Ausschnitte aus klassischen Stücken, Folksongs, Kinderlieder o.ä. vor. Die einfache Struktur oder der Bekanntheitsgrad der Melodien sollen dir das Üben erleichtern. Die Finger finden so leichter ihre Position, als wenn du erstmal jede einzelne Note aus der Tabulatur entschlüsseln musst. Jede Übung wird auf allen Saitenlagen geübt. Vorher blieben wir in den mittleren Lagen. Jetzt gehen wir auch in die ersten Bünde, wo man die Finger etwas mehr spreizen muss, und in die höheren Lagen, wo es ein wenig eng wird. Die Stücke wiederholen sich in dieser Lektion in der selben Tonart, doch auf verschiedenen Bünden. Du spielst immer die selbe Tonfolge, nur auf verschiedenen Tonhöhen bzw. auf verschiedenen Saitenlagen. Lediglich zwischen der G- und H-Saite musst du dir jedesmal überlegen, wie sich der Lagewechsel auf den Fingersatz auswirkt. Doch der Fingersatz in den anderen höheren Lagen bleibt immer gleich. Wie die Tonfolgen mit dem CAGED-System zusammenhängen, das muss dich nur am Rande interessieren. Es wird in den folgenden Lektionen näher und ausführlicher erleutert. :[[Datei:Scala Griffbrett.svg]] Wir hatten uns bei den vorhergehenden Übungen weitestgehend an den Intervallen (1-j7) und an der Tabulatur orientiert. Diese sind in allen Tonarten gleich. Suche zuerst das Karré! Daran orientierst du dich. :[[Image:Scala Carree.svg]] {{Tipp|Lerne bei der C-Dur-Tonleiter nicht nur die Intervalle <br> 2 - 3 4 - 5<br> 6 - j7 1 - 2<br> sondern benenne auch jede einzelne Note. <br> D - E F - G<br> A - H C - D<br> So bekommst du einen recht einfachen Überblick über das Griffbrett.}} == Töne der C-Dur Tonleiter auf dem Griffbrett == Wir wollen uns in dieser Lektion auf die Töne bzw. die Notennamen konzentrieren. Allerdings sparen wir uns vorerst alle Töne mit Vorzeichen aus. Die [[Gitarre: Aufbau der CAGED-Skalenformen|ersten Übungen zum 1. und 2. Fingersatz]] werden auf die Tonart C-Dur bzw. A-Moll übertragen und wir spiele sie in den hier gezeigten Positionen. Wir fangen mit dem zweiten Fingersatz an, wo wir entweder den Ton C oder den Ton A der C-Dur- bzw. Am-Tonleiter als Orientierung nutzen :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] Du hast vermutlich allerlei Akkordformen des CAGED-System gesehen. <div class="noprint"> ;Animation [[Image:Crd Grundtonschema ani.gif]] </div> <score> << \new ChordNames { \chordmode { c1 c c c c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 e-2 g c'-1 e' > < c-1\5 g-3\4 c'-3\3 e'-4\2 g'-1 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 e-2\5 g-1\4 c'-1\3 e'-1\2 c''-4\1> < c-1\6 g-2\5 c'-3\4 e'-4\3 g'-1\2 c''-1\1> \once \override FretBoard.fret-diagram-details.dot-color = #'white < c'-1\4 g'-2\3 c''-4\2 e''-3\1 > < c'-4\5 e'-3\4 g'-1\3 c''-2\2 e''-1\1 > } >> </score> Wenn du schon Fingerstyle oder Jazz spielst, mögen dir viele der Formen bekannt vorkommen. Doch selbst wenn du bis jetzt nur das [[Gitarre: Rockdiplom|Rockdiplom]] gemacht hast und mit den dort vorkommenden Barré-Akkorden vertraut bist, wirst du sehen, dass die einfachen Barré-Akkorde ausreichen, um sich auf dem Griffbrett zu zurechtzufinden. Die [[Gitarre: C-Dur-Tonleiter Workshop|C-Dur-Tonleiter in den ersten drei Bünden]] setze ich als bekannt voraus und es sollte dir nicht allzu schwer fallen, diese in den 12. Bund zu übertragen. :[[Datei:Scala C-Am.svg|150px]][[Datei:C-Dur_Majorpattern_III.jpg|150px]] C-Dur als Barré im 3. Bund kennst du vom Rockdiplom, und C-Dur im 8. Bund ist auch kein Hexenwerk. Dazwischen liegt nach dem CAGED-System die G-Form, die dir vermutlich noch nicht untergekommen ist (hier mit weißem Fingersatz). Statt uns die Töne von der G-Form abzuleiten, machen wir es uns einfacher und leiten uns die Töne zur Orientierung vom Am im 5. Bund ab. Du erinnerst dich noch an die Dur- und Mollparallelen? (C- \ Am-Tonleiter bzw. G- \ Em-Form). Oder du nutzt die Grundtöne des C-Barré im 8. Bund. <score> << \new ChordNames { \chordmode { c1 c c a:m c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 e-2 g c'-1 e' > < c-1\5 g-3\4 c'-3\3 e'-4\2 g'-1 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 e-2\5 g-1\4 c'-1\3 e'-1\2 c''-4\1> < a,-1\6 e-3\5 a-4\4 c'-1\3 e'-1\2 a'-1\1 > < c-1\6 g-2\5 c'-3\4 e'-4\3 g'-1\2 c''-1\1> < c'-4\5 e'-3\4 g'-1\3 c''-2\2 e''-1\1 > } >> </score> Leite dir also die Grundtöne C und A von den dir bekannten Barré-Akkorden ab und spare dir die ungewöhnlicheren Akkordformen auf, bis sie dir später beim Fingerstyle oder Jazz begegnen. Es macht dabei garnichts aus, wenn du zum Auffinden der Grundtöne und zum Finden des Starttons ein paar Sekunden brauchst. Du wirst sehen, dass die Wiederholungen der bekannten Übungen auf den verschiedenen Bünden und in verschiedenen Oktavebereichen leicht von der Hand gehen. Lediglich beim Lagewechsel zwischen der G- und H-Saite musst du etwas überlegen. <score> << \new ChordNames { \chordmode { c1 c c a c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 c'-1 > < c-1\5 c'-3\3 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 c'-1\3 c''-4\1> < a,-1\6 a-4\4 a'-1\1 > < c-1\6 c'-3\4 c''-1\1> < c'-4\5 c''-2\2 > } >> </score> Diese wenigen"Eckpunkte" reichen aus, um dich grob auf dem Griffbrett zurechtzufinden. Suche sie noch einmal in der Skala und natürlich auch auf deinem Griffbrett. :[[Datei:C-Major-Scale on the fretboard.svg]] == Zweiter Fingersatz == :[[Datei:Scala 6_71-2_34.svg]] Zuerst suchen wir uns in der C-Dur-Tonleiter überall den zweiten Fingersatz heraus. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] Zur leichteren Orientierung wird die Grafik bei jeder neuen Melodie wiederholt. === Rondeau (Auszug) === Die eintaktige Sequenzen wurde aus einem Rondeau von J.S. Bach entnommen, dass beliebig wiederholt werden kann. Der Grundton C, welcher im letzten Takt rot eingefärbt wurde, wird mit dem kleinen Finger gegriffen. Du kannst tatsächlich die Noten nutzen (sofern du es schon kannst) oder aber du orientierst dich an den Notennamen. Am Anfang des Griffbrettes brauchen wir den zweiten Fingersatz nicht vollständig. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #5 % \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> In der A-(Bb-)Form müssen wir den Lagewechsel zwischen der G- und H-Saite beachten. Übrigens werden hier die Töne in der englischen Form angegeben. (Bb-Form und der Ton B statt des deutschen H.) Nur der erste Bund wird bis zur letzten Note in der dritten Lage gespielt. Der Rest bis zur letzten Note in der zweiten Lage. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (A-, Bb-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e-4 d-2 c d e d c b d c b c d c b a c b a b c d b c d-1 } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Statt in der G-Form das C zu suchen, suche lieber das A im 5. Bund (hier grün hervorgehoben). Oder du leitest dir das C vom Barré im 8. Bund ab. Der Startton E ist auf der A Saite im 7. Bund unter dem Ringfinger. Ansonsten stellt der Fingersatz keine Herausforderung mehr dar. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (G-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b \once \override NoteHead #'color = #green a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Der kleine Finger des C-Barré im 8. Bund in der E- bzw. F-Form gibt gleichzeitig das C des zweiten Fingersatz an. Du siehst, dass ab jetzt alles leichter geworden ist, weil sich ansonsten nichts mehr am Fingersatz ändert. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (E- F-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Für den Grundton C müssen wir uns die D-Form gar nicht so genau ins Gedächtnis rufen, wenn uns die C-Form viel vertrauter ist. Diese hohe Lage ist für E-Gitarristen oder Gitarren mit Cutaway gedacht. Auf der Konzertgitarre ist die sehr hohe Lage schlecht zu spielen. Gehe ggf. einen Kompromiss ein, und spiele diese hohe Saitenlage ein paar Bünde tiefer als Übung nur für den Fingersatz aber nicht für die Notennamen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Noten über dem hohen C (der mit zwei Hilfslinien) wird dir seltener begegnen, da in dem Fall bevorzugt die Noten nach unten oktaviert werden. (Beachte die 8 im Notensystem.) Bei den weiteren Übungen werden jedoch die Versionen mit den vielen Hilfslinien angezeigt. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { \ottava #1 e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Mit der C-Form in den ersten drei Bünden im Hinterkopf ist der 12. Bund leicht zu bewältigen. Wieder eine Übung, die weniger für Konzertgitarren geeignet ist. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === "Das häßliche Entlein" oder "Alle meine Entchen"<ref>Anspielung auf ein Märchen der Gebrüder Grimm nebst einem bekannten deutschen Kinderlied.</ref> in A-Moll === Die vorherige Übung war in Dur, und hier verwenden wir ein und den selben Fingersatz in Moll. Wie du siehst und hörst, lässt sich ein Fingersatz oder ein Pattern nicht eindeutig einer einzigen Tonart zuordnen. Der Schlusston oder der Schlussakkord (hier der Ton A bzw. der Akkord Am) bestimmt die Tonart. Der Grundton A ist hier die Sexte (6) des zugrunde liegenden C-Major-Pattern. Es bleibt dir überlassen, ob du zur Orientierung lieber den Grundton A (grün) bestimmst, oder das C aus dem Karré (rot). Wenn in einer Tabulatur über einer Ziffer zwei Notenhälse stehen, so ist das ein Zeichen für eine halbe Note, die zwei Schläge dauert. Da dieses für viele Gitarristen sehr ungewöhnlich aussieht, verzichtet man oft auf Taktstriche in der Tabulatur. In dem Fall lässt sich die Tondauer allein an den Notenwerten ablesen. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-/Am-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #5 % \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Der Lagewechsel zwischen der G- und H-Saite ist hier leicht zu bewältigen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Gm-/Bb-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d-1 e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2-4 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Auch hier ist es wieder einfacher das A (grün) zu suchen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Em-/G-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (E- / F-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Statt lange nach dem Grundton der D-Form zu suchen, erinneren wir uns kurz, wo der Grundton C auf der H- (B-)Saite sein muß (13. Bund). <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> === Die Moldau (Hauptmotiv) === Die Abfolge der Töne der folgenden Übung unterscheidet sich kaum von der vorhergehenden. Doch mit dem anderen Rhythmus haben wir das Hauptmotiv von der Komposition {{Youtube-Suche|Smetana+Die+Moldau|"Die Moldau" von Bedrich Smetana}} (ohne Auftakt und rhythmisch vereinfacht). Auch wenn es hier (wie in der 7. Übung) nur die Molltonleiter rauf und runter geht, merkst du hoffentlich, wieviel der Takt und Rhythmus an der Wirkung ausmacht. Wenn du später mal meinst, deine Improvisationen hören sich langweilig an, dann solltest du dich mehr mit Rhythmus beschäftigen. Dazu kannst du dich auch ein wenig mit Schlagmustern beschäftigen. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Am-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Warum die Form hier Gm-Form genannt wird, das wird dir in den nachfolgenden Lektionen klarer werden. Auf Fingersatzangaben können wir hier verzichten, wenn du vorher "Alle meine Entchen in Am" gespielt hast. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Bb- /Gm-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier bietet sich besonders an, den Am-Barré zur Orientierung zu verwenden. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Em-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Auch hier gibt dir der kleine Finger des Am-Barrés den Grundton an. Du kannst dir die Dm-Form aber auch über die F-Form (C im 8. Bund) ableiten. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (F- /Dm-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Zähle vom C (H-Saite, 13. Bund) rückwärts zum A. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D- /Bm7-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier wird die erste Übung in den 12. Bund verschoben. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C- /Am-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==1. Fingersatz== Dir wird wohl aufgefallen sein, dass beim zweiten Fingersatz der Ton G fehlt. Den üben wir mit dem ersten Fingersatz. :[[Datei:Scala 71_2-34_5.svg]] Beachte, dass der Grundton (1) unter dem Ringfinger (also im zweiten Bund dieses Fingersatzes) ist, und dass du deine freie Improvisationsübung in Dur günstigerweise mit der (1) beginnen oder zumindest enden sollte. Diesen Fingersatz suchen wir in der C-Dur-Tonleiter auf dem Griffbrett. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] === Eintaktige Sequenzen === Die erste Lage mit leeren Saiten stellt noch keine Herausforderung dar. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • A- (Bb-)Form ==== Du musst noch nicht einmal den C-Barré im 3. Bund bemühen, um den Grundton zu finden. Die C-Dur-Tonleiter in den ersten drei Bünden reicht. Natürlich kannst du auch den Startton G suchen. Die Tabulatur sagt dir "D-Saite 5. Bund". Erinnere dich daran, dass dies der Stimmton der D-Saite ist (beim Stimmen nach Bünden). Auch hier ist der Fingersatz leicht. <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • A- (Bb-)Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 4 2 3 darkgrey ) (place-fret 4 3 4 yellow3 ) (place-fret 4 5 5 darkgrey ) (place-fret 5 2 "j7" yellow3 ) (place-fret 5 3 1 black ) (place-fret 5 5 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb)-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • G-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • G-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 2 5 3 darkgrey ) (place-fret 2 6 4 yellow3 ) (place-fret 2 8 5 darkgrey ) (place-fret 3 4 "j7" yellow3 ) (place-fret 3 5 1 black ) (place-fret 3 7 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Bei der G-Form kommt es zwischen der G- und H-Saite zu einem Lagewechsel. Du musst dir jedesmal eine Strategie zurechtlegen, wann und wie du am besten den Lagewechsel durchführst. Wenn du Glück hast, findest du im Notenbild einen Hinweis, wie man günstig die Lage wechseln kann. Ich empfehle dir dort wo die 2 über den Noten steht, den Mittelfinger zu nehmen. *(1 = Z, 2 = M, 3 = R, 4 = K, 0 = leere Saite) Betrachte solche Hinweis nur als Vorschlag, denn es gibt keine verbindliche Regel, wie der Lagewechsel zu erfolgen hat. Übst du die gleiche Sequenzen ein paar Saiten höher oder tiefer, geht es leichter von der Hand. Beachte den Lagewechsel zwischen der G- und H-Saite. Den Grundton C kannst du dir auch vom Ringfinger auf der G-Saite des C-Barrés ableiten. Du musst dir hier eine Strategie zurechtlegen, wann du den Lagewechsel durchführen möchtest. Ich empfehle hier, den Lagewechsel so früh wie möglich zu machen, damit du den Zeigefinger frei hast, um gleich hintereinander zwei Töne in einem Bund zu spielen. Betrachte die Angaben zum Fingersatz nur als Vorschlag. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d-4 e-2 f-3 d e f e d c d e c-1 d-4 e-2 d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier eine alternative Lösung. Du kannst einen kleinen Barré über die Noten C und E legen, und den Lagewechsel später ausführen. Das V unter dem C zeigt hier den 5. Bund an, und nicht etwa Abschläge. Der Lagewechsel erfolgt hier im letzten Takt. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d e f d e f e d-2 \textSpannerDown \override TextSpanner.bound-details.left.text = "V" c-1\startTextSpan d e-1 c-1 d e-1\stopTextSpan d-4 c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • E- (F-)Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • E- (F-)Form <score raw="1"> \version "2.24.4" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 5 7 3 darkgrey ) (place-fret 5 8 4 yellow3 ) (place-fret 5 10 5 darkgrey ) (place-fret 6 7 "j7" yellow3 ) (place-fret 6 8 1 black ) (place-fret 6 10 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Den Grundton C auf der E-Saite kannst du dir vom C-Barré der E-Form (wie ein F- Barré) im 8. Bund ableiten. Der Fingersatz ist wieder einfach. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E-(F)-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • D-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • D-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 3 9 3 darkgrey ) (place-fret 3 10 4 yellow3 ) (place-fret 3 12 5 darkgrey ) (place-fret 4 9 "j7" yellow3 ) (place-fret 4 10 1 black ) (place-fret 4 12 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div>Die Tonhöhe ist die selbe, wie in der G-Form, wo wir uns komplizierte Strategien für den Fingersatz zurechtlegen mussten. In dieser Lage ist alles einfacher. Wenn du später mal einen herausfordernden Lick zwischen der G- und H-Saite hast, wäre eine weitere gangbare Strategie den Lick in eine fingertechnisch günstigere Lage zu verlegen. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • C-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • C-Form <score raw="1"> \version "2.24.4" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 1 12 3 darkgrey ) (place-fret 1 13 4 yellow3 ) (place-fret 1 15 5 darkgrey ) (place-fret 2 12 "j7" yellow3 ) (place-fret 2 13 1 black ) (place-fret 2 15 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Hier wurde die C-Durtonleiter in den 12. Bund verlegt. Der Grundton ist auf der H-Saite im 13. Bund. (Eine Oktave höher als bei der C-Dur Tonleiter in den ersten drei Bünden.) Wer keine E-Gitarre hat oder wer keine Akkustik mit Cutaway hat, der kann die C-Form auch in einem niedrigeren Bund üben. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c''' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Halbtaktige Sequenzen === Diesmal hast du halbtaktige Sequenzen, die einmal wiederholt werden. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== A- (Bb-)Form • 1. Fingersatz ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • A- (Bb-)Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 4 2 "E" darkgrey ) (place-fret 4 3 "F" yellow3 ) (place-fret 4 5 "G" darkgrey ) (place-fret 5 2 "B" yellow3 ) (place-fret 5 3 "C" black ) (place-fret 5 5 "D" darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Leite dir den Grundton vom C-Dur-Akkord, oder vom C-Barré im 3. Bund ab. Lerne nicht nur die Intervlle, sondern auch die Notennamen. (Zumindest bei den einfachen Tonarten F-, G- und C-Dur). Andere Tonarten kommen später dran. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- / Bb-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • G-Form ==== Du kannst die beiden hintereinander folgenden Noten im 5. Bund mit einem Mini-Barré ausführen, und die Lagewechsel mittels Slide (=&nbsp;Glissando) durchführen, oder wie in der Wiederholung ohne Slide durchführen. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major c8-1 g' f e d f e d c-1 e-1 d c-1(\glissando b-1) d c b-1(\glissando c1-1) c8-2 g' f e d f e d c-1 e-2 d-4 c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • E- (F-)Form ==== Fingersatztechnisch wieder problemlos. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • D-Form ==== <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • C-Form ==== <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> === Ein Vogel wollte Hochzeit machen === Hier habe ich ein relativ bekanntes Kinderlied gefunden, dass perfekt zum 1. Fingersatz passt. Die Tondauern sind für Ungeübte in Sachen Noten schwer herauszulesen. Kennst du aber das Stück, oder hörst du es dir mehrmals an, so ist es keine unüberwindbare Schwierigkeit. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] Folgt das G nach dem D, greifst du den besser mit dem kleinen Finger. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d-3( g-4) g g16 e | c8 8 8 g'16 e d8 d d-3 g16-4 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier ist es wohl am einfachsten, dass du den kleinen Finger umlegst, wenn du nach dem D den G greifen willst. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb-)Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d-3( g-4) g g16 e | c8 8 8 g'16 e d8-3 d d g16-4 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Wenn der Ton C auf ein E-folgt, kann man entweder ein <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e-2 c-1 g' e d( g) g g16 e-2 | c8-1 8 8 g'16 e d8 d d g16 f | e8-2 c-1 d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Halbtaktige Sequenzen (2) === :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Bei der G-Form kommt es zwischen der G- und H-Saite zu einem Lagewechsel. Du musst dir jedesmal eine Strategie zurechtlegen, wann und wie du am besten den Lagewechsel durchführst. Wenn du Glück hast, findest du im Notenbild einen Hinweis, wie man günstig die Lage wechseln kann. Ich empfehle dir dort wo die 2 über den Noten steht, den Mittelfinger zu nehmen. *(1 = Z, 2 = M, 3 = R, 4 = K, 0 = leere Saite) Betrachte solche Hinweis nur als Vorschlag, denn es gibt keine verbindliche Regel, wie der Lagewechsel zu erfolgen hat. Übst du die gleiche Sequenzen ein paar Saiten höher oder tiefer, geht es leichter von der Hand. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c''' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Einsingen === Diese beiden Motive kennen viele, die schon einmal in einem Chor gesungen haben. Leider entsprechen viele Lieder in ihrem Tonumfang nicht genau einem der vollständigen drei Fingersätze oder der später folgenden Skalen. Zumeist werden nur Ausschnitte aus den Patterns gebraucht. Im ersten Motiv fehlt beispielsweise die große Septime (j7) vor dem Grundton. Dafür enthält das zweite Motiv die große Septime (j7). Das zweite Motiv eicht den Chor auf die gerade geforderte Tonart. Hier werden nur Akkordtöne in einer auf oder absteigenden Tonfolge gespielt (auch Arpeggios genannt). Der A7-Akkord enthält sowohl den Leitton (j7) der zum Grundton (1) hin leitet, als auch den Strebeton (4) die zur Durterz (3) hin strebt. Mit den zwei spannungsreichen Tönen, die sich zum Grundakkord auflösen wollen, wird der Chor auf die Durtonart eingenordet. Hier brauche ich dir nicht zu erklären, wo der Grundton D ist. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A-(Bb-)Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E-(F-)Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==Erste über den zweiten Fingersatz== Wie du siehst, kommt hier jedesmal zuerst der erste Fingersatz mit dem "Karree" rechts, und dannach kommt der Fingersatz mit dem "Karree" links. Sie sind immer untereinander. Nur zwischen der G- und B-Saite verschiebt sich alles um einen Bund. <div style="float:left; padding:5px; border:black solid 1px; "> ;F-Form <score raw="1"> \version "2.14.2" \paper{ indent=0\mm line-width=120\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% 4-o zeigt 4. Saite offen \fret-diagram #"s:2;f:1; 3-3-2;3-5-3;3-6-4; 4-3-6;4-5-7;4-6-1; 5-3-3;5-4-4;5-6-5; 6-3-7;6-4-1;6-6-2;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;Bb-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:2;f:1; 2-4-2;2-6-3;2-7-4; 3-3-6;3-5-7;3-6-1; 4-3-3;4-4-4;4-6-5; 5-3-7;5-4-1;5-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;D-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:2;f:1; 1-4-2;1-6-3;1-7-4; 2-4-6;2-6-2;2-7-1; 3-3-3;3-4-4;3-6-5; 4-3-7;4-4-1;4-6-2;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} === Jamaica Farewell === Die Melodie von [[Liederbuch/ Jamaica Farwell|Jamaica Farwell]] wurde erheblich vereinfacht, damit du dir nicht zu viele Gedanken um den Rhythmus machen musst. Wenn du dich am Quintillo (dem Rhythmus vom Lagerfeuerschlag} orientierst, solltest du wenige Probleme haben. Es gibt recht viele Wiederholung. Die Strophe wurde bei der Wiederholung in die Oktave verschoben, damit das Stück exakt in den Skalenausschnitt passt. Du musst dir für die Fingersätze ggf. Strategien zurechtlegen, damit du die Finger bequem sortiert bekommst. Das Stück beginnt mit dem Ton G. Der (5) in 1. Fingersatz. ;Bb-Form Greife den C wie ein Bb-Barré im 3. Bund. Leite dir von diesem Akkord den Grundton (1) ab, und wandere beim 1. Fingersatz rauf zum Startton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-4-2;2-6-3;2-7-4; 3-3-6;3-5-7;3-6-1; 4-3-3;4-4-4;4-6-5; 5-3-7;5-4-1;5-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (A-, Bb-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ; F-Form Greife den C wie ein F-Barré im 8. Bund. Leite dir von diesem Akkord den Grundton (1) ab, und wandere beim 1. Fingersatz rauf zum Startton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 3-7-2;3-9-3;3-10-4; 4-7-6;4-9-7;4-10-1; 5-7-3;5-8-4;5-10-5; 6-7-7;6-8-1;6-10-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (E-, F-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ;D-Form Schiebe den D-Dur-Akkord in den 12. Bund. Ein D im 12. Bund verschoben ergibt ein C. Leite dir von diesem Akkord den Grundton (1) ab. Orientiere dich kurz im 2. Fingersatz und wandere zurück zum ersten Fingersatz zum Ton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 1-10-2;1-12-3;1-13-4; 2-10-6;2-12-7;2-13-1; 3-9-3;3-10-4;3-12-5; 4-9-7;4-10-1;4-12-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (D-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==3. Fingersatz== Es fällt auf, dass der 3. Fingersatz kein "Karré" hat. {| !Fingersatz !width="30px"| !Intervalle |- |[[Image:Scala Z RK-Z K-ZM K.svg]] !width="30px"| |[[Image:Scala 2 34-5 6-71 2.svg]] |} Der 3. Fingersatz ist gar kein eigenständiger Fingersatz. Der obere Teil des 3. Fingersatzes ist eigentlich schon der untere Teil des 2. Fingersatzes. Ebenso ist der untere Teil des 3. Fingersatzes gleichzeitig der Anfang des 1. Fingersatzes. Du musst dir Strategien zurechtlegen, wie du den Übergang vom Ende des 2. Fingersatzes über die 5 und die 6 hin zum 1. Fingersatz gestaltest. Es kommt beim 3. Fingersatz zu einem Lagewechsel nach links. Übe den 3. Fingersatz zuerst in den obersten Saitenlagen (E A D G x x) === Eine II-V-I-Verbindung === Wir spielen eine einfache Tonfolge über einer 2-5-1-Verbindung. Die Akkordtöne liegen zumeist auf den schweren Zählzeiten. * D, F, A, C gehören zum Dm7 * G, B, D, F gehören zum G7 * C, E, G gehören zum C-Dur-Akkord. Wir nutzen das CAGED-System, um uns grob auf dem Griffbrett zurechtzufinden. ==== Exkurs: Skalenformen ==== Die Namen der Skalen leiten sich übrigens von folgenden einfachen Tonleitern in den ersten Bünden ab: [[Image:Scala C-Am.svg|100px]] [[Image:Scala Bb-Gm.svg|100px]] [[Image:Scala G-Em.svg|100px]] [[Image:Scala F-Dm.svg|100px]] [[Image:Scala D-Hm.svg|100px]] Alle Akkorde die man aus diesen einfachen Tonarten kennt, Bassläufe und ähnliches lassen sich zum großen Teil auf die entsprechenden 5 CAGED-Skalen übertragen, fast so als habe man die Tonleiter mittels Kapodaster in eine höhere Lage verschoben. Wie du siehst, nennen wir die Skalen entgegen des reinen CAGED-System nicht E-Dur-Form (Shape) und nicht die A-Dur-Form (Shape), sondern F- und Bb-Dur-Form. <div style="float:left; padding:5px; border:black solid 1px; "> ;E-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-1;1-2-2;1-4-3; 2-0-5;2-2-6;2-4-7; 3-1-3;3-2-4;3-4-5; 4-1-7;4-2-1;4-4-2; 5-0-4;5-2-5;5-4-6; 6-0-1;6-2-2;6-4-3;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;F-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-3; 1-1-1; 1-3-2; 2-1-5; 2-3-6; 3-0-2; 3-2-3; 3-3-4; 4-0-6; 4-2-7; 4-3-1; 5-0-3; 5-1-4; 5-3-5; 6-0-7; 6-1-1; 6-3-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;G-Dur-Tonleiter <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-3-3; 1-4-1; 1-6-2; 2-4-5; 2-6-6; 3-3-2; 3-5-3; 3-6-4; 4-3-6; 4-5-7; 4-6-1; 5-3-3; 5-4-4; 5-6-5; 6-3-7; 6-4-1; 6-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Du siehst selbst, dass die G-Dur-Tonleiter von der Form her eher wie die F-Dur-Tonleiter als wie die E-Dur-Tonleiter aussieht. <div style="float:left; padding:5px; border:black solid 1px; "> ;A-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-5;1-2-6;1-4-7; 2-0-2;2-2-3;2-3-4; 3-1-7;3-2-1;3-4-2; 4-0-4;4-2-5;4-4-6; 5-0-1;5-2-2;5-4-3; 6-0-5;6-2-6;6-4-7;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;Bb-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-1-5; 1-3-6; 2-1-2; 2-3-3; 2-4-4; 3-0-6; 3-2-7; 3-3-1; 4-0-3; 4-1-4; 4-3-5; 5-0-7; 5-1-1; 5-3-2; 6-1-5; 6-3-6;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;C-Dur-Tonleiter <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-3-5; 1-5-6; 2-3-2; 2-5-3; 2-6-4; 3-2-6; 3-4-7; 3-5-1; 4-2-3; 4-3-4; 4-5-5; 5-2-7; 5-3-1; 5-5-2; 6-3-5; 6-5-6;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Du siehst selbst, dass die C-Dur-Tonleiter von der Form her eher wie die Bb-Dur-Tonleiter als wie die A-Dur-Tonleiter aussieht. ==== 3. Fingersatz II-V-I-Verbindung D-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;D-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:3;f:1; 4-9-7;4-10-1;4-12-2; 5-10-5;5-12-6; 6-10-2;6-12-3;6-13-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Wir beginnen oben bei der D-Form, wo sich der Lagewechsel des 3. Fingersatz noch nicht mit dem Lagewechsel zwischen der G und H-Saite (engl. B-Saite) aufhebt. Würde ich ein Capo in den 10. Bund setzen, dann würde ich die Melodie vom Fingersatz her wie D-Dur spielen. In D-Dur spiele ich diese II-V-I-Verbindung Em7 A7 D. Nehme ich das Capo weg, dann greife ich den Dm(7) als einen Barré der Em-Form im 10. Bund. Von diesem kann ich mir das D als Grundton ableiten. Alternativ siehst du in den Noten, dass die Übung mit dem Ton D anfängt. Dass die oberste Tiefe E-Saite im 12. Bund ebenfalls ein E ergibt, setze ich als bekannt voraus. Falls nicht, beschäftige dich noch einmal mit dem [[Gitarre: Lagerfeueranhang 2c|Stimmen der Gitarre]]. Ein Ganztonschritt bzw. zwei Bünde vor dem E ist der Ton D. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (D-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g-1 a-4 b-1 c4 | b8^\markup { \bold {G7} } a-4 g4-1 f8 e d4 | e8^\markup { \bold {C} } f g4-1 a8-4 b-1 c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung G-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;G-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 3-4-7;3-5-1;3-7-2; 4-5-5;4-7-6; 5-5-2;5-7-3;5-8-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 5. Bund setzen, dann würde man die Melodie vom Fingersatz her wie G-Dur spielen. In G-Dur spielt man diese II-V-I-Verbindung Am7 D7 G. Nimmt man das Capo weg, dann greift man den Dm(7) als einen Barré der Am-Form. Von diesem kannst du dir den D als Grundton ableiten. Einfacher geht es natürlich, wenn du weißt, dass der D im 5. Bund der A-Saite der Stimmton der D-Saite ist. </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (G-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g-1 a-4 b-1 c4 | b8^\markup { \bold {G7} } a-4 g4-1 f8 e d4 | e8^\markup { \bold {C} } f g4-1 a8-4 b-1 c d | c b c2. | \break d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung C-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;C-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-0-7;2-1-1;2-3-2; 3-0-5;3-2-6; 4-0-2;4-2-3;4-3-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Die C-Dur-Form der C-Dur Tonleiter sieht schlicht und ergreifend wie die C-Durtonleiter aus. </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (C-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #4 % \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \break d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung C-Form 12. Bund ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;C-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-12-7;2-13-1;2-15-2; 3-12-5;3-14-6; 4-12-2;4-14-3;4-15-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 12. Bund setzen, dann würde man die Melodie vom Fingersatz her wie C-Dur spielen. In C-Dur spielt man diese II-V-I-Verbindung Dm7 G7 C. Der Startton ist schlicht die D-Saite im 12. Bund. </div> {{clear}} Gerade noch hatten wir einen Lagewechsel nach links. Jetzt aber hebt sich der Lagewechsel nach links vom 3. Fingersatz mit dem Lagewechsel zwischen der G- und H-Saite auf. Es hört sich beim ersten Durchlesen kompliziert an, aber du hast nur 4 Lektionen zu lernen. Den 1. bis 3. Fingersatz und den Lagewechsel zwischen der G- und H-Saite. Das Auffinden der Töne und welche Akkorde zu welcher Tonart gehört, und wie man einen Capo benutzt, sollte eigentlich nichts neues für dich sein. Rein technisch gesehen vereinfacht sich der Fingersatz. Doch es kostet ein wenig Überlegung, wie sich die beiden Lagewechsel auf den 3. Fingersatz auswirken. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (C-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> Sollte es im 12 Bund unbequem zu spielen sein, weil du kein Cutaway hast (Aussparung für die hohen Bünde), übe die C-Form ein paar Bünde zurück in einer anderen Tonart. ==== 3. Fingersatz II-V-I-Verbindung F-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;F-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 1-7-7; 1-8-1;1-10-2; 2-8-5; 2-10-6; 3-7-2; 3-9-3; 3-10-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 6. Bund setzen, dann würde man die Melodie vom Fingersatz her wie F-Dur spielen. In C-Dur spielt man diese II-V-I-Verbindung Gm7 C7 F. Wenn du den C wie ein F-Barré im 8. Bund greifst, dindest du den Grundton (1) auf der hohen E-Saite. Von dem wanderst du runter zum Startton (2). </div> {{clear}} Auch hier hebt sich der Lagewechsel zwischen der G- und H-Saite mit dem Lagewechsel des 3. Fingersatz gegeneinander auf, was den Fingersatz grifftechnisch wieder vereinfacht. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (F-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> == Wie geht es weiter? == Solltest du als Quereinsteiger in diese Lektion gestolpert sein, dann schaue dir die erste Lektion zum [[Gitarre: Aufbau der CAGED-Skalenformen|Aufbau der CAGED-Skalenformen]] an. Insbesondere die Abschnitte, die hier übergangen wurden. Dannach kannst du mit der ersten CAGED-Skala in der D-Dur-Form weitermachen. <noinclude> {{Navigation zurückhochvor |zurücklink=Gitarre: CAGED-Skala G-Dur-Form |zurücktext=CAGED-Skala G-Dur-Form |hochlink=Gitarre: Die Major-Patterns |hochtext=Einführung: Major-Patterns |vorlink=Gitarre: CAGED-Skala D-Dur-Form |vortext=CAGED-Skala D-Dur-Form }} </noinclude> mtxjsxacgenzmk0x7ljg52v8ark81wx 1090578 1090572 2026-09-08T18:43:02Z Mjchael 2222 /* 1. Fingersatz • G-Form */ 1090578 wikitext text/x-wiki {{:Gitarre/ Navi|Sologitarre| {{:Gitarre: Sologitarre/ Navi Improvisation in Dur und Moll}}| img=Guitar 1.svg |bg=#F8f8f8|border=darkorange|color=dark|px=80|navi=Einführung in die Sologitarre}} = Wiederholung der Fingersätze = ; mit Schwerpunkt auf den Stammtönen Diese Wiederholung ist zum einen dafür gedacht, die vorhergehenden Übungen auf jeder Saitenlage zu machen, und auch in jeder Bundlage, gleichgültig ob die Finger eng beieinander oder weit auseinander stehen. Zum andern sind diese als Vorbereitung in die Sologitarre gedacht. Beispielsweise als Auflockerungsübung zwischen den Barré-Akkorden. Besonderen Augenmerk wollen wir hier auf die Notennamen legen. Diese können hier mitgelernt werden. Solltest du meinen, das sei noch nicht für dich dran und kann warten, dann springe zur ersten CAGED-Skala. Du kannst beim Kapitel Longform nochmal hierrauf zurückkommen. * [[Gitarre: CAGED-Skala D-Dur-Form|CAGED-Skala D-Dur-Form]] Lassen wir die [[Gitarre: Aufbau der CAGED-Skalenformen|erste Lektion]] (insbesondere für die Quereinsteiger) noch einmal Revue passieren. Die folgenden Übungen enthalten oft eine Folge von ein- oder zweitaktigen Sequenzen. Eine Sequenz ist ein Motiv, dass sich auf verschiedenen Tonhöhen wiederholt. Auch ohne Notenkenntnisse kannst du den Verlauf und die Wiederholungen der Sequenzen einfacher im Notenbild verfolgen, als in der Tabulatur; insbesondere wenn du dir gleichzeitig die Übung anhörst. Es kommen auch Ausschnitte aus klassischen Stücken, Folksongs, Kinderlieder o.ä. vor. Die einfache Struktur oder der Bekanntheitsgrad der Melodien sollen dir das Üben erleichtern. Die Finger finden so leichter ihre Position, als wenn du erstmal jede einzelne Note aus der Tabulatur entschlüsseln musst. Jede Übung wird auf allen Saitenlagen geübt. Vorher blieben wir in den mittleren Lagen. Jetzt gehen wir auch in die ersten Bünde, wo man die Finger etwas mehr spreizen muss, und in die höheren Lagen, wo es ein wenig eng wird. Die Stücke wiederholen sich in dieser Lektion in der selben Tonart, doch auf verschiedenen Bünden. Du spielst immer die selbe Tonfolge, nur auf verschiedenen Tonhöhen bzw. auf verschiedenen Saitenlagen. Lediglich zwischen der G- und H-Saite musst du dir jedesmal überlegen, wie sich der Lagewechsel auf den Fingersatz auswirkt. Doch der Fingersatz in den anderen höheren Lagen bleibt immer gleich. Wie die Tonfolgen mit dem CAGED-System zusammenhängen, das muss dich nur am Rande interessieren. Es wird in den folgenden Lektionen näher und ausführlicher erleutert. :[[Datei:Scala Griffbrett.svg]] Wir hatten uns bei den vorhergehenden Übungen weitestgehend an den Intervallen (1-j7) und an der Tabulatur orientiert. Diese sind in allen Tonarten gleich. Suche zuerst das Karré! Daran orientierst du dich. :[[Image:Scala Carree.svg]] {{Tipp|Lerne bei der C-Dur-Tonleiter nicht nur die Intervalle <br> 2 - 3 4 - 5<br> 6 - j7 1 - 2<br> sondern benenne auch jede einzelne Note. <br> D - E F - G<br> A - H C - D<br> So bekommst du einen recht einfachen Überblick über das Griffbrett.}} == Töne der C-Dur Tonleiter auf dem Griffbrett == Wir wollen uns in dieser Lektion auf die Töne bzw. die Notennamen konzentrieren. Allerdings sparen wir uns vorerst alle Töne mit Vorzeichen aus. Die [[Gitarre: Aufbau der CAGED-Skalenformen|ersten Übungen zum 1. und 2. Fingersatz]] werden auf die Tonart C-Dur bzw. A-Moll übertragen und wir spiele sie in den hier gezeigten Positionen. Wir fangen mit dem zweiten Fingersatz an, wo wir entweder den Ton C oder den Ton A der C-Dur- bzw. Am-Tonleiter als Orientierung nutzen :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] Du hast vermutlich allerlei Akkordformen des CAGED-System gesehen. <div class="noprint"> ;Animation [[Image:Crd Grundtonschema ani.gif]] </div> <score> << \new ChordNames { \chordmode { c1 c c c c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 e-2 g c'-1 e' > < c-1\5 g-3\4 c'-3\3 e'-4\2 g'-1 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 e-2\5 g-1\4 c'-1\3 e'-1\2 c''-4\1> < c-1\6 g-2\5 c'-3\4 e'-4\3 g'-1\2 c''-1\1> \once \override FretBoard.fret-diagram-details.dot-color = #'white < c'-1\4 g'-2\3 c''-4\2 e''-3\1 > < c'-4\5 e'-3\4 g'-1\3 c''-2\2 e''-1\1 > } >> </score> Wenn du schon Fingerstyle oder Jazz spielst, mögen dir viele der Formen bekannt vorkommen. Doch selbst wenn du bis jetzt nur das [[Gitarre: Rockdiplom|Rockdiplom]] gemacht hast und mit den dort vorkommenden Barré-Akkorden vertraut bist, wirst du sehen, dass die einfachen Barré-Akkorde ausreichen, um sich auf dem Griffbrett zu zurechtzufinden. Die [[Gitarre: C-Dur-Tonleiter Workshop|C-Dur-Tonleiter in den ersten drei Bünden]] setze ich als bekannt voraus und es sollte dir nicht allzu schwer fallen, diese in den 12. Bund zu übertragen. :[[Datei:Scala C-Am.svg|150px]][[Datei:C-Dur_Majorpattern_III.jpg|150px]] C-Dur als Barré im 3. Bund kennst du vom Rockdiplom, und C-Dur im 8. Bund ist auch kein Hexenwerk. Dazwischen liegt nach dem CAGED-System die G-Form, die dir vermutlich noch nicht untergekommen ist (hier mit weißem Fingersatz). Statt uns die Töne von der G-Form abzuleiten, machen wir es uns einfacher und leiten uns die Töne zur Orientierung vom Am im 5. Bund ab. Du erinnerst dich noch an die Dur- und Mollparallelen? (C- \ Am-Tonleiter bzw. G- \ Em-Form). Oder du nutzt die Grundtöne des C-Barré im 8. Bund. <score> << \new ChordNames { \chordmode { c1 c c a:m c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 e-2 g c'-1 e' > < c-1\5 g-3\4 c'-3\3 e'-4\2 g'-1 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 e-2\5 g-1\4 c'-1\3 e'-1\2 c''-4\1> < a,-1\6 e-3\5 a-4\4 c'-1\3 e'-1\2 a'-1\1 > < c-1\6 g-2\5 c'-3\4 e'-4\3 g'-1\2 c''-1\1> < c'-4\5 e'-3\4 g'-1\3 c''-2\2 e''-1\1 > } >> </score> Leite dir also die Grundtöne C und A von den dir bekannten Barré-Akkorden ab und spare dir die ungewöhnlicheren Akkordformen auf, bis sie dir später beim Fingerstyle oder Jazz begegnen. Es macht dabei garnichts aus, wenn du zum Auffinden der Grundtöne und zum Finden des Starttons ein paar Sekunden brauchst. Du wirst sehen, dass die Wiederholungen der bekannten Übungen auf den verschiedenen Bünden und in verschiedenen Oktavebereichen leicht von der Hand gehen. Lediglich beim Lagewechsel zwischen der G- und H-Saite musst du etwas überlegen. <score> << \new ChordNames { \chordmode { c1 c c a c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 c'-1 > < c-1\5 c'-3\3 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 c'-1\3 c''-4\1> < a,-1\6 a-4\4 a'-1\1 > < c-1\6 c'-3\4 c''-1\1> < c'-4\5 c''-2\2 > } >> </score> Diese wenigen"Eckpunkte" reichen aus, um dich grob auf dem Griffbrett zurechtzufinden. Suche sie noch einmal in der Skala und natürlich auch auf deinem Griffbrett. :[[Datei:C-Major-Scale on the fretboard.svg]] == Zweiter Fingersatz == :[[Datei:Scala 6_71-2_34.svg]] Zuerst suchen wir uns in der C-Dur-Tonleiter überall den zweiten Fingersatz heraus. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] Zur leichteren Orientierung wird die Grafik bei jeder neuen Melodie wiederholt. === Rondeau (Auszug) === Die eintaktige Sequenzen wurde aus einem Rondeau von J.S. Bach entnommen, dass beliebig wiederholt werden kann. Der Grundton C, welcher im letzten Takt rot eingefärbt wurde, wird mit dem kleinen Finger gegriffen. Du kannst tatsächlich die Noten nutzen (sofern du es schon kannst) oder aber du orientierst dich an den Notennamen. Am Anfang des Griffbrettes brauchen wir den zweiten Fingersatz nicht vollständig. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #5 % \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> In der A-(Bb-)Form müssen wir den Lagewechsel zwischen der G- und H-Saite beachten. Übrigens werden hier die Töne in der englischen Form angegeben. (Bb-Form und der Ton B statt des deutschen H.) Nur der erste Bund wird bis zur letzten Note in der dritten Lage gespielt. Der Rest bis zur letzten Note in der zweiten Lage. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (A-, Bb-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e-4 d-2 c d e d c b d c b c d c b a c b a b c d b c d-1 } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Statt in der G-Form das C zu suchen, suche lieber das A im 5. Bund (hier grün hervorgehoben). Oder du leitest dir das C vom Barré im 8. Bund ab. Der Startton E ist auf der A Saite im 7. Bund unter dem Ringfinger. Ansonsten stellt der Fingersatz keine Herausforderung mehr dar. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (G-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b \once \override NoteHead #'color = #green a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Der kleine Finger des C-Barré im 8. Bund in der E- bzw. F-Form gibt gleichzeitig das C des zweiten Fingersatz an. Du siehst, dass ab jetzt alles leichter geworden ist, weil sich ansonsten nichts mehr am Fingersatz ändert. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (E- F-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Für den Grundton C müssen wir uns die D-Form gar nicht so genau ins Gedächtnis rufen, wenn uns die C-Form viel vertrauter ist. Diese hohe Lage ist für E-Gitarristen oder Gitarren mit Cutaway gedacht. Auf der Konzertgitarre ist die sehr hohe Lage schlecht zu spielen. Gehe ggf. einen Kompromiss ein, und spiele diese hohe Saitenlage ein paar Bünde tiefer als Übung nur für den Fingersatz aber nicht für die Notennamen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Noten über dem hohen C (der mit zwei Hilfslinien) wird dir seltener begegnen, da in dem Fall bevorzugt die Noten nach unten oktaviert werden. (Beachte die 8 im Notensystem.) Bei den weiteren Übungen werden jedoch die Versionen mit den vielen Hilfslinien angezeigt. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { \ottava #1 e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Mit der C-Form in den ersten drei Bünden im Hinterkopf ist der 12. Bund leicht zu bewältigen. Wieder eine Übung, die weniger für Konzertgitarren geeignet ist. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === "Das häßliche Entlein" oder "Alle meine Entchen"<ref>Anspielung auf ein Märchen der Gebrüder Grimm nebst einem bekannten deutschen Kinderlied.</ref> in A-Moll === Die vorherige Übung war in Dur, und hier verwenden wir ein und den selben Fingersatz in Moll. Wie du siehst und hörst, lässt sich ein Fingersatz oder ein Pattern nicht eindeutig einer einzigen Tonart zuordnen. Der Schlusston oder der Schlussakkord (hier der Ton A bzw. der Akkord Am) bestimmt die Tonart. Der Grundton A ist hier die Sexte (6) des zugrunde liegenden C-Major-Pattern. Es bleibt dir überlassen, ob du zur Orientierung lieber den Grundton A (grün) bestimmst, oder das C aus dem Karré (rot). Wenn in einer Tabulatur über einer Ziffer zwei Notenhälse stehen, so ist das ein Zeichen für eine halbe Note, die zwei Schläge dauert. Da dieses für viele Gitarristen sehr ungewöhnlich aussieht, verzichtet man oft auf Taktstriche in der Tabulatur. In dem Fall lässt sich die Tondauer allein an den Notenwerten ablesen. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-/Am-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #5 % \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Der Lagewechsel zwischen der G- und H-Saite ist hier leicht zu bewältigen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Gm-/Bb-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d-1 e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2-4 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Auch hier ist es wieder einfacher das A (grün) zu suchen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Em-/G-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (E- / F-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Statt lange nach dem Grundton der D-Form zu suchen, erinneren wir uns kurz, wo der Grundton C auf der H- (B-)Saite sein muß (13. Bund). <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> === Die Moldau (Hauptmotiv) === Die Abfolge der Töne der folgenden Übung unterscheidet sich kaum von der vorhergehenden. Doch mit dem anderen Rhythmus haben wir das Hauptmotiv von der Komposition {{Youtube-Suche|Smetana+Die+Moldau|"Die Moldau" von Bedrich Smetana}} (ohne Auftakt und rhythmisch vereinfacht). Auch wenn es hier (wie in der 7. Übung) nur die Molltonleiter rauf und runter geht, merkst du hoffentlich, wieviel der Takt und Rhythmus an der Wirkung ausmacht. Wenn du später mal meinst, deine Improvisationen hören sich langweilig an, dann solltest du dich mehr mit Rhythmus beschäftigen. Dazu kannst du dich auch ein wenig mit Schlagmustern beschäftigen. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Am-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Warum die Form hier Gm-Form genannt wird, das wird dir in den nachfolgenden Lektionen klarer werden. Auf Fingersatzangaben können wir hier verzichten, wenn du vorher "Alle meine Entchen in Am" gespielt hast. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Bb- /Gm-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier bietet sich besonders an, den Am-Barré zur Orientierung zu verwenden. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Em-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Auch hier gibt dir der kleine Finger des Am-Barrés den Grundton an. Du kannst dir die Dm-Form aber auch über die F-Form (C im 8. Bund) ableiten. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (F- /Dm-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Zähle vom C (H-Saite, 13. Bund) rückwärts zum A. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D- /Bm7-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier wird die erste Übung in den 12. Bund verschoben. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C- /Am-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==1. Fingersatz== Dir wird wohl aufgefallen sein, dass beim zweiten Fingersatz der Ton G fehlt. Den üben wir mit dem ersten Fingersatz. :[[Datei:Scala 71_2-34_5.svg]] Beachte, dass der Grundton (1) unter dem Ringfinger (also im zweiten Bund dieses Fingersatzes) ist, und dass du deine freie Improvisationsübung in Dur günstigerweise mit der (1) beginnen oder zumindest enden sollte. Diesen Fingersatz suchen wir in der C-Dur-Tonleiter auf dem Griffbrett. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] === Eintaktige Sequenzen === Die erste Lage mit leeren Saiten stellt noch keine Herausforderung dar. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • A- (Bb-)Form ==== Du musst noch nicht einmal den C-Barré im 3. Bund bemühen, um den Grundton zu finden. Die C-Dur-Tonleiter in den ersten drei Bünden reicht. Natürlich kannst du auch den Startton G suchen. Die Tabulatur sagt dir "D-Saite 5. Bund". Erinnere dich daran, dass dies der Stimmton der D-Saite ist (beim Stimmen nach Bünden). Auch hier ist der Fingersatz leicht. <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • A- (Bb-)Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 4 2 3 darkgrey ) (place-fret 4 3 4 yellow3 ) (place-fret 4 5 5 darkgrey ) (place-fret 5 2 "j7" yellow3 ) (place-fret 5 3 1 black ) (place-fret 5 5 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb)-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • G-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • G-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 2 5 3 darkgrey ) (place-fret 2 6 4 yellow3 ) (place-fret 2 8 5 darkgrey ) (place-fret 3 4 "j7" yellow3 ) (place-fret 3 5 1 black ) (place-fret 3 7 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Bei der G-Form kommt es zwischen der G- und H-Saite zu einem Lagewechsel. Du musst dir jedesmal eine Strategie zurechtlegen, wann und wie du am besten den Lagewechsel durchführst. Wenn du Glück hast, findest du im Notenbild einen Hinweis, wie man günstig die Lage wechseln kann. Ich empfehle dir dort wo die 2 über den Noten steht, den Mittelfinger zu nehmen. *(1 = Z, 2 = M, 3 = R, 4 = K, 0 = leere Saite) Betrachte solche Hinweis nur als Vorschlag, denn es gibt keine verbindliche Regel, wie der Lagewechsel zu erfolgen hat. Übst du die gleiche Sequenzen ein paar Saiten höher oder tiefer, geht es leichter von der Hand. Beachte den Lagewechsel zwischen der G- und H-Saite. Den Grundton C kannst du dir auch vom Ringfinger auf der G-Saite des C-Barrés ableiten. Du musst dir hier eine Strategie zurechtlegen, wann du den Lagewechsel durchführen möchtest. Ich empfehle hier, den Lagewechsel so früh wie möglich zu machen, damit du den Zeigefinger frei hast, um gleich hintereinander zwei Töne in einem Bund zu spielen. Betrachte die Angaben zum Fingersatz nur als Vorschlag. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d-4 e-2 f-3 d e f e d c d e c-1 d-4 e-2 d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier eine alternative Lösung. Du kannst einen kleinen Barré über die Noten C und E legen, und den Lagewechsel später ausführen. Das V unter dem C zeigt hier den 5. Bund an, und nicht etwa Abschläge. Der Lagewechsel erfolgt hier im letzten Takt. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d e f d e f e d-2 \textSpannerDown \override TextSpanner.bound-details.left.text = "V" c-1\startTextSpan d e-1 c-1 d e-1\stopTextSpan d-4 c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • E- (F-)Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • E- (F-)Form <score raw="1"> \version "2.24.4" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 5 7 3 darkgrey ) (place-fret 5 8 4 yellow3 ) (place-fret 5 10 5 darkgrey ) (place-fret 6 7 "j7" yellow3 ) (place-fret 6 8 1 black ) (place-fret 6 10 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Den Grundton C auf der E-Saite kannst du dir vom C-Barré der E-Form (wie ein F- Barré) im 8. Bund ableiten. Der Fingersatz ist wieder einfach. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E-(F)-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • D-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • D-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 3 9 3 darkgrey ) (place-fret 3 10 4 yellow3 ) (place-fret 3 12 5 darkgrey ) (place-fret 4 9 "j7" yellow3 ) (place-fret 4 10 1 black ) (place-fret 4 12 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div>Die Tonhöhe ist die selbe, wie in der G-Form, wo wir uns komplizierte Strategien für den Fingersatz zurechtlegen mussten. In dieser Lage ist alles einfacher. Wenn du später mal einen herausfordernden Lick zwischen der G- und H-Saite hast, wäre eine weitere gangbare Strategie den Lick in eine fingertechnisch günstigere Lage zu verlegen. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • C-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • C-Form <score raw="1"> \version "2.24.4" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 1 12 3 darkgrey ) (place-fret 1 13 4 yellow3 ) (place-fret 1 15 5 darkgrey ) (place-fret 2 12 "j7" yellow3 ) (place-fret 2 13 1 black ) (place-fret 2 15 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Hier wurde die C-Durtonleiter in den 12. Bund verlegt. Der Grundton ist auf der H-Saite im 13. Bund. (Eine Oktave höher als bei der C-Dur Tonleiter in den ersten drei Bünden.) Wer keine E-Gitarre hat oder wer keine Akkustik mit Cutaway hat, der kann die C-Form auch in einem niedrigeren Bund üben. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c''' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Halbtaktige Sequenzen === Diesmal hast du halbtaktige Sequenzen, die einmal wiederholt werden. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== A- (Bb-)Form • 1. Fingersatz ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • A- (Bb-)Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 4 2 "E" darkgrey ) (place-fret 4 3 "F" yellow3 ) (place-fret 4 5 "G" darkgrey ) (place-fret 5 2 "B" yellow3 ) (place-fret 5 3 "C" black ) (place-fret 5 5 "D" darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Leite dir den Grundton vom C-Dur-Akkord, oder vom C-Barré im 3. Bund ab. Lerne nicht nur die Intervlle, sondern auch die Notennamen. (Zumindest bei den einfachen Tonarten F-, G- und C-Dur). Andere Tonarten kommen später dran. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- / Bb-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • G-Form ==== Du kannst die beiden hintereinander folgenden Noten im 5. Bund mit einem Mini-Barré ausführen, und die Lagewechsel mittels Slide (=&nbsp;Glissando) durchführen, oder wie in der Wiederholung ohne Slide durchführen. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major c8-1 g' f e d f e d c-1 e-1 d c-1(\glissando b-1) d c b-1(\glissando c1-1) c8-2 g' f e d f e d c-1 e-2 d-4 c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • E- (F-)Form ==== Fingersatztechnisch wieder problemlos. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • D-Form ==== <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • C-Form ==== <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> === Ein Vogel wollte Hochzeit machen === Hier habe ich ein relativ bekanntes Kinderlied gefunden, dass perfekt zum 1. Fingersatz passt. Die Tondauern sind für Ungeübte in Sachen Noten schwer herauszulesen. Kennst du aber das Stück, oder hörst du es dir mehrmals an, so ist es keine unüberwindbare Schwierigkeit. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] Folgt das G nach dem D, greifst du den besser mit dem kleinen Finger. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d-3( g-4) g g16 e | c8 8 8 g'16 e d8 d d-3 g16-4 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier ist es wohl am einfachsten, dass du den kleinen Finger umlegst, wenn du nach dem D den G greifen willst. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb-)Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d-3( g-4) g g16 e | c8 8 8 g'16 e d8-3 d d g16-4 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Wenn der Ton C auf ein E-folgt, kann man entweder ein <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e-2 c-1 g' e d( g) g g16 e-2 | c8-1 8 8 g'16 e d8 d d g16 f | e8-2 c-1 d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Halbtaktige Sequenzen (2) === :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Bei der G-Form kommt es zwischen der G- und H-Saite zu einem Lagewechsel. Du musst dir jedesmal eine Strategie zurechtlegen, wann und wie du am besten den Lagewechsel durchführst. Wenn du Glück hast, findest du im Notenbild einen Hinweis, wie man günstig die Lage wechseln kann. Ich empfehle dir dort wo die 2 über den Noten steht, den Mittelfinger zu nehmen. *(1 = Z, 2 = M, 3 = R, 4 = K, 0 = leere Saite) Betrachte solche Hinweis nur als Vorschlag, denn es gibt keine verbindliche Regel, wie der Lagewechsel zu erfolgen hat. Übst du die gleiche Sequenzen ein paar Saiten höher oder tiefer, geht es leichter von der Hand. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c''' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Einsingen === Diese beiden Motive kennen viele, die schon einmal in einem Chor gesungen haben. Leider entsprechen viele Lieder in ihrem Tonumfang nicht genau einem der vollständigen drei Fingersätze oder der später folgenden Skalen. Zumeist werden nur Ausschnitte aus den Patterns gebraucht. Im ersten Motiv fehlt beispielsweise die große Septime (j7) vor dem Grundton. Dafür enthält das zweite Motiv die große Septime (j7). Das zweite Motiv eicht den Chor auf die gerade geforderte Tonart. Hier werden nur Akkordtöne in einer auf oder absteigenden Tonfolge gespielt (auch Arpeggios genannt). Der A7-Akkord enthält sowohl den Leitton (j7) der zum Grundton (1) hin leitet, als auch den Strebeton (4) die zur Durterz (3) hin strebt. Mit den zwei spannungsreichen Tönen, die sich zum Grundakkord auflösen wollen, wird der Chor auf die Durtonart eingenordet. Hier brauche ich dir nicht zu erklären, wo der Grundton D ist. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A-(Bb-)Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E-(F-)Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==Erste über den zweiten Fingersatz== Wie du siehst, kommt hier jedesmal zuerst der erste Fingersatz mit dem "Karree" rechts, und dannach kommt der Fingersatz mit dem "Karree" links. Sie sind immer untereinander. Nur zwischen der G- und B-Saite verschiebt sich alles um einen Bund. <div style="float:left; padding:5px; border:black solid 1px; "> ;F-Form <score raw="1"> \version "2.14.2" \paper{ indent=0\mm line-width=120\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% 4-o zeigt 4. Saite offen \fret-diagram #"s:2;f:1; 3-3-2;3-5-3;3-6-4; 4-3-6;4-5-7;4-6-1; 5-3-3;5-4-4;5-6-5; 6-3-7;6-4-1;6-6-2;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;Bb-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:2;f:1; 2-4-2;2-6-3;2-7-4; 3-3-6;3-5-7;3-6-1; 4-3-3;4-4-4;4-6-5; 5-3-7;5-4-1;5-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;D-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:2;f:1; 1-4-2;1-6-3;1-7-4; 2-4-6;2-6-2;2-7-1; 3-3-3;3-4-4;3-6-5; 4-3-7;4-4-1;4-6-2;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} === Jamaica Farewell === Die Melodie von [[Liederbuch/ Jamaica Farwell|Jamaica Farwell]] wurde erheblich vereinfacht, damit du dir nicht zu viele Gedanken um den Rhythmus machen musst. Wenn du dich am Quintillo (dem Rhythmus vom Lagerfeuerschlag} orientierst, solltest du wenige Probleme haben. Es gibt recht viele Wiederholung. Die Strophe wurde bei der Wiederholung in die Oktave verschoben, damit das Stück exakt in den Skalenausschnitt passt. Du musst dir für die Fingersätze ggf. Strategien zurechtlegen, damit du die Finger bequem sortiert bekommst. Das Stück beginnt mit dem Ton G. Der (5) in 1. Fingersatz. ;Bb-Form Greife den C wie ein Bb-Barré im 3. Bund. Leite dir von diesem Akkord den Grundton (1) ab, und wandere beim 1. Fingersatz rauf zum Startton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-4-2;2-6-3;2-7-4; 3-3-6;3-5-7;3-6-1; 4-3-3;4-4-4;4-6-5; 5-3-7;5-4-1;5-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (A-, Bb-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ; F-Form Greife den C wie ein F-Barré im 8. Bund. Leite dir von diesem Akkord den Grundton (1) ab, und wandere beim 1. Fingersatz rauf zum Startton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 3-7-2;3-9-3;3-10-4; 4-7-6;4-9-7;4-10-1; 5-7-3;5-8-4;5-10-5; 6-7-7;6-8-1;6-10-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (E-, F-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ;D-Form Schiebe den D-Dur-Akkord in den 12. Bund. Ein D im 12. Bund verschoben ergibt ein C. Leite dir von diesem Akkord den Grundton (1) ab. Orientiere dich kurz im 2. Fingersatz und wandere zurück zum ersten Fingersatz zum Ton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 1-10-2;1-12-3;1-13-4; 2-10-6;2-12-7;2-13-1; 3-9-3;3-10-4;3-12-5; 4-9-7;4-10-1;4-12-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (D-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==3. Fingersatz== Es fällt auf, dass der 3. Fingersatz kein "Karré" hat. {| !Fingersatz !width="30px"| !Intervalle |- |[[Image:Scala Z RK-Z K-ZM K.svg]] !width="30px"| |[[Image:Scala 2 34-5 6-71 2.svg]] |} Der 3. Fingersatz ist gar kein eigenständiger Fingersatz. Der obere Teil des 3. Fingersatzes ist eigentlich schon der untere Teil des 2. Fingersatzes. Ebenso ist der untere Teil des 3. Fingersatzes gleichzeitig der Anfang des 1. Fingersatzes. Du musst dir Strategien zurechtlegen, wie du den Übergang vom Ende des 2. Fingersatzes über die 5 und die 6 hin zum 1. Fingersatz gestaltest. Es kommt beim 3. Fingersatz zu einem Lagewechsel nach links. Übe den 3. Fingersatz zuerst in den obersten Saitenlagen (E A D G x x) === Eine II-V-I-Verbindung === Wir spielen eine einfache Tonfolge über einer 2-5-1-Verbindung. Die Akkordtöne liegen zumeist auf den schweren Zählzeiten. * D, F, A, C gehören zum Dm7 * G, B, D, F gehören zum G7 * C, E, G gehören zum C-Dur-Akkord. Wir nutzen das CAGED-System, um uns grob auf dem Griffbrett zurechtzufinden. ==== Exkurs: Skalenformen ==== Die Namen der Skalen leiten sich übrigens von folgenden einfachen Tonleitern in den ersten Bünden ab: [[Image:Scala C-Am.svg|100px]] [[Image:Scala Bb-Gm.svg|100px]] [[Image:Scala G-Em.svg|100px]] [[Image:Scala F-Dm.svg|100px]] [[Image:Scala D-Hm.svg|100px]] Alle Akkorde die man aus diesen einfachen Tonarten kennt, Bassläufe und ähnliches lassen sich zum großen Teil auf die entsprechenden 5 CAGED-Skalen übertragen, fast so als habe man die Tonleiter mittels Kapodaster in eine höhere Lage verschoben. Wie du siehst, nennen wir die Skalen entgegen des reinen CAGED-System nicht E-Dur-Form (Shape) und nicht die A-Dur-Form (Shape), sondern F- und Bb-Dur-Form. <div style="float:left; padding:5px; border:black solid 1px; "> ;E-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-1;1-2-2;1-4-3; 2-0-5;2-2-6;2-4-7; 3-1-3;3-2-4;3-4-5; 4-1-7;4-2-1;4-4-2; 5-0-4;5-2-5;5-4-6; 6-0-1;6-2-2;6-4-3;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;F-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-3; 1-1-1; 1-3-2; 2-1-5; 2-3-6; 3-0-2; 3-2-3; 3-3-4; 4-0-6; 4-2-7; 4-3-1; 5-0-3; 5-1-4; 5-3-5; 6-0-7; 6-1-1; 6-3-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;G-Dur-Tonleiter <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-3-3; 1-4-1; 1-6-2; 2-4-5; 2-6-6; 3-3-2; 3-5-3; 3-6-4; 4-3-6; 4-5-7; 4-6-1; 5-3-3; 5-4-4; 5-6-5; 6-3-7; 6-4-1; 6-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Du siehst selbst, dass die G-Dur-Tonleiter von der Form her eher wie die F-Dur-Tonleiter als wie die E-Dur-Tonleiter aussieht. <div style="float:left; padding:5px; border:black solid 1px; "> ;A-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-5;1-2-6;1-4-7; 2-0-2;2-2-3;2-3-4; 3-1-7;3-2-1;3-4-2; 4-0-4;4-2-5;4-4-6; 5-0-1;5-2-2;5-4-3; 6-0-5;6-2-6;6-4-7;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;Bb-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-1-5; 1-3-6; 2-1-2; 2-3-3; 2-4-4; 3-0-6; 3-2-7; 3-3-1; 4-0-3; 4-1-4; 4-3-5; 5-0-7; 5-1-1; 5-3-2; 6-1-5; 6-3-6;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;C-Dur-Tonleiter <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-3-5; 1-5-6; 2-3-2; 2-5-3; 2-6-4; 3-2-6; 3-4-7; 3-5-1; 4-2-3; 4-3-4; 4-5-5; 5-2-7; 5-3-1; 5-5-2; 6-3-5; 6-5-6;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Du siehst selbst, dass die C-Dur-Tonleiter von der Form her eher wie die Bb-Dur-Tonleiter als wie die A-Dur-Tonleiter aussieht. ==== 3. Fingersatz II-V-I-Verbindung D-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;D-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:3;f:1; 4-9-7;4-10-1;4-12-2; 5-10-5;5-12-6; 6-10-2;6-12-3;6-13-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Wir beginnen oben bei der D-Form, wo sich der Lagewechsel des 3. Fingersatz noch nicht mit dem Lagewechsel zwischen der G und H-Saite (engl. B-Saite) aufhebt. Würde ich ein Capo in den 10. Bund setzen, dann würde ich die Melodie vom Fingersatz her wie D-Dur spielen. In D-Dur spiele ich diese II-V-I-Verbindung Em7 A7 D. Nehme ich das Capo weg, dann greife ich den Dm(7) als einen Barré der Em-Form im 10. Bund. Von diesem kann ich mir das D als Grundton ableiten. Alternativ siehst du in den Noten, dass die Übung mit dem Ton D anfängt. Dass die oberste Tiefe E-Saite im 12. Bund ebenfalls ein E ergibt, setze ich als bekannt voraus. Falls nicht, beschäftige dich noch einmal mit dem [[Gitarre: Lagerfeueranhang 2c|Stimmen der Gitarre]]. Ein Ganztonschritt bzw. zwei Bünde vor dem E ist der Ton D. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (D-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g-1 a-4 b-1 c4 | b8^\markup { \bold {G7} } a-4 g4-1 f8 e d4 | e8^\markup { \bold {C} } f g4-1 a8-4 b-1 c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung G-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;G-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 3-4-7;3-5-1;3-7-2; 4-5-5;4-7-6; 5-5-2;5-7-3;5-8-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 5. Bund setzen, dann würde man die Melodie vom Fingersatz her wie G-Dur spielen. In G-Dur spielt man diese II-V-I-Verbindung Am7 D7 G. Nimmt man das Capo weg, dann greift man den Dm(7) als einen Barré der Am-Form. Von diesem kannst du dir den D als Grundton ableiten. Einfacher geht es natürlich, wenn du weißt, dass der D im 5. Bund der A-Saite der Stimmton der D-Saite ist. </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (G-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g-1 a-4 b-1 c4 | b8^\markup { \bold {G7} } a-4 g4-1 f8 e d4 | e8^\markup { \bold {C} } f g4-1 a8-4 b-1 c d | c b c2. | \break d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung C-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;C-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-0-7;2-1-1;2-3-2; 3-0-5;3-2-6; 4-0-2;4-2-3;4-3-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Die C-Dur-Form der C-Dur Tonleiter sieht schlicht und ergreifend wie die C-Durtonleiter aus. </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (C-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #4 % \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \break d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung C-Form 12. Bund ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;C-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-12-7;2-13-1;2-15-2; 3-12-5;3-14-6; 4-12-2;4-14-3;4-15-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 12. Bund setzen, dann würde man die Melodie vom Fingersatz her wie C-Dur spielen. In C-Dur spielt man diese II-V-I-Verbindung Dm7 G7 C. Der Startton ist schlicht die D-Saite im 12. Bund. </div> {{clear}} Gerade noch hatten wir einen Lagewechsel nach links. Jetzt aber hebt sich der Lagewechsel nach links vom 3. Fingersatz mit dem Lagewechsel zwischen der G- und H-Saite auf. Es hört sich beim ersten Durchlesen kompliziert an, aber du hast nur 4 Lektionen zu lernen. Den 1. bis 3. Fingersatz und den Lagewechsel zwischen der G- und H-Saite. Das Auffinden der Töne und welche Akkorde zu welcher Tonart gehört, und wie man einen Capo benutzt, sollte eigentlich nichts neues für dich sein. Rein technisch gesehen vereinfacht sich der Fingersatz. Doch es kostet ein wenig Überlegung, wie sich die beiden Lagewechsel auf den 3. Fingersatz auswirken. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (C-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> Sollte es im 12 Bund unbequem zu spielen sein, weil du kein Cutaway hast (Aussparung für die hohen Bünde), übe die C-Form ein paar Bünde zurück in einer anderen Tonart. ==== 3. Fingersatz II-V-I-Verbindung F-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;F-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 1-7-7; 1-8-1;1-10-2; 2-8-5; 2-10-6; 3-7-2; 3-9-3; 3-10-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 6. Bund setzen, dann würde man die Melodie vom Fingersatz her wie F-Dur spielen. In C-Dur spielt man diese II-V-I-Verbindung Gm7 C7 F. Wenn du den C wie ein F-Barré im 8. Bund greifst, dindest du den Grundton (1) auf der hohen E-Saite. Von dem wanderst du runter zum Startton (2). </div> {{clear}} Auch hier hebt sich der Lagewechsel zwischen der G- und H-Saite mit dem Lagewechsel des 3. Fingersatz gegeneinander auf, was den Fingersatz grifftechnisch wieder vereinfacht. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (F-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> == Wie geht es weiter? == Solltest du als Quereinsteiger in diese Lektion gestolpert sein, dann schaue dir die erste Lektion zum [[Gitarre: Aufbau der CAGED-Skalenformen|Aufbau der CAGED-Skalenformen]] an. Insbesondere die Abschnitte, die hier übergangen wurden. Dannach kannst du mit der ersten CAGED-Skala in der D-Dur-Form weitermachen. <noinclude> {{Navigation zurückhochvor |zurücklink=Gitarre: CAGED-Skala G-Dur-Form |zurücktext=CAGED-Skala G-Dur-Form |hochlink=Gitarre: Die Major-Patterns |hochtext=Einführung: Major-Patterns |vorlink=Gitarre: CAGED-Skala D-Dur-Form |vortext=CAGED-Skala D-Dur-Form }} </noinclude> 098188snak7x8fb3yii67h11fu64xdv 1090583 1090578 2026-09-08T18:48:47Z Mjchael 2222 /* 1. Fingersatz • G-Form */ 1090583 wikitext text/x-wiki {{:Gitarre/ Navi|Sologitarre| {{:Gitarre: Sologitarre/ Navi Improvisation in Dur und Moll}}| img=Guitar 1.svg |bg=#F8f8f8|border=darkorange|color=dark|px=80|navi=Einführung in die Sologitarre}} = Wiederholung der Fingersätze = ; mit Schwerpunkt auf den Stammtönen Diese Wiederholung ist zum einen dafür gedacht, die vorhergehenden Übungen auf jeder Saitenlage zu machen, und auch in jeder Bundlage, gleichgültig ob die Finger eng beieinander oder weit auseinander stehen. Zum andern sind diese als Vorbereitung in die Sologitarre gedacht. Beispielsweise als Auflockerungsübung zwischen den Barré-Akkorden. Besonderen Augenmerk wollen wir hier auf die Notennamen legen. Diese können hier mitgelernt werden. Solltest du meinen, das sei noch nicht für dich dran und kann warten, dann springe zur ersten CAGED-Skala. Du kannst beim Kapitel Longform nochmal hierrauf zurückkommen. * [[Gitarre: CAGED-Skala D-Dur-Form|CAGED-Skala D-Dur-Form]] Lassen wir die [[Gitarre: Aufbau der CAGED-Skalenformen|erste Lektion]] (insbesondere für die Quereinsteiger) noch einmal Revue passieren. Die folgenden Übungen enthalten oft eine Folge von ein- oder zweitaktigen Sequenzen. Eine Sequenz ist ein Motiv, dass sich auf verschiedenen Tonhöhen wiederholt. Auch ohne Notenkenntnisse kannst du den Verlauf und die Wiederholungen der Sequenzen einfacher im Notenbild verfolgen, als in der Tabulatur; insbesondere wenn du dir gleichzeitig die Übung anhörst. Es kommen auch Ausschnitte aus klassischen Stücken, Folksongs, Kinderlieder o.ä. vor. Die einfache Struktur oder der Bekanntheitsgrad der Melodien sollen dir das Üben erleichtern. Die Finger finden so leichter ihre Position, als wenn du erstmal jede einzelne Note aus der Tabulatur entschlüsseln musst. Jede Übung wird auf allen Saitenlagen geübt. Vorher blieben wir in den mittleren Lagen. Jetzt gehen wir auch in die ersten Bünde, wo man die Finger etwas mehr spreizen muss, und in die höheren Lagen, wo es ein wenig eng wird. Die Stücke wiederholen sich in dieser Lektion in der selben Tonart, doch auf verschiedenen Bünden. Du spielst immer die selbe Tonfolge, nur auf verschiedenen Tonhöhen bzw. auf verschiedenen Saitenlagen. Lediglich zwischen der G- und H-Saite musst du dir jedesmal überlegen, wie sich der Lagewechsel auf den Fingersatz auswirkt. Doch der Fingersatz in den anderen höheren Lagen bleibt immer gleich. Wie die Tonfolgen mit dem CAGED-System zusammenhängen, das muss dich nur am Rande interessieren. Es wird in den folgenden Lektionen näher und ausführlicher erleutert. :[[Datei:Scala Griffbrett.svg]] Wir hatten uns bei den vorhergehenden Übungen weitestgehend an den Intervallen (1-j7) und an der Tabulatur orientiert. Diese sind in allen Tonarten gleich. Suche zuerst das Karré! Daran orientierst du dich. :[[Image:Scala Carree.svg]] {{Tipp|Lerne bei der C-Dur-Tonleiter nicht nur die Intervalle <br> 2 - 3 4 - 5<br> 6 - j7 1 - 2<br> sondern benenne auch jede einzelne Note. <br> D - E F - G<br> A - H C - D<br> So bekommst du einen recht einfachen Überblick über das Griffbrett.}} == Töne der C-Dur Tonleiter auf dem Griffbrett == Wir wollen uns in dieser Lektion auf die Töne bzw. die Notennamen konzentrieren. Allerdings sparen wir uns vorerst alle Töne mit Vorzeichen aus. Die [[Gitarre: Aufbau der CAGED-Skalenformen|ersten Übungen zum 1. und 2. Fingersatz]] werden auf die Tonart C-Dur bzw. A-Moll übertragen und wir spiele sie in den hier gezeigten Positionen. Wir fangen mit dem zweiten Fingersatz an, wo wir entweder den Ton C oder den Ton A der C-Dur- bzw. Am-Tonleiter als Orientierung nutzen :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] Du hast vermutlich allerlei Akkordformen des CAGED-System gesehen. <div class="noprint"> ;Animation [[Image:Crd Grundtonschema ani.gif]] </div> <score> << \new ChordNames { \chordmode { c1 c c c c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 e-2 g c'-1 e' > < c-1\5 g-3\4 c'-3\3 e'-4\2 g'-1 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 e-2\5 g-1\4 c'-1\3 e'-1\2 c''-4\1> < c-1\6 g-2\5 c'-3\4 e'-4\3 g'-1\2 c''-1\1> \once \override FretBoard.fret-diagram-details.dot-color = #'white < c'-1\4 g'-2\3 c''-4\2 e''-3\1 > < c'-4\5 e'-3\4 g'-1\3 c''-2\2 e''-1\1 > } >> </score> Wenn du schon Fingerstyle oder Jazz spielst, mögen dir viele der Formen bekannt vorkommen. Doch selbst wenn du bis jetzt nur das [[Gitarre: Rockdiplom|Rockdiplom]] gemacht hast und mit den dort vorkommenden Barré-Akkorden vertraut bist, wirst du sehen, dass die einfachen Barré-Akkorde ausreichen, um sich auf dem Griffbrett zu zurechtzufinden. Die [[Gitarre: C-Dur-Tonleiter Workshop|C-Dur-Tonleiter in den ersten drei Bünden]] setze ich als bekannt voraus und es sollte dir nicht allzu schwer fallen, diese in den 12. Bund zu übertragen. :[[Datei:Scala C-Am.svg|150px]][[Datei:C-Dur_Majorpattern_III.jpg|150px]] C-Dur als Barré im 3. Bund kennst du vom Rockdiplom, und C-Dur im 8. Bund ist auch kein Hexenwerk. Dazwischen liegt nach dem CAGED-System die G-Form, die dir vermutlich noch nicht untergekommen ist (hier mit weißem Fingersatz). Statt uns die Töne von der G-Form abzuleiten, machen wir es uns einfacher und leiten uns die Töne zur Orientierung vom Am im 5. Bund ab. Du erinnerst dich noch an die Dur- und Mollparallelen? (C- \ Am-Tonleiter bzw. G- \ Em-Form). Oder du nutzt die Grundtöne des C-Barré im 8. Bund. <score> << \new ChordNames { \chordmode { c1 c c a:m c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 e-2 g c'-1 e' > < c-1\5 g-3\4 c'-3\3 e'-4\2 g'-1 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 e-2\5 g-1\4 c'-1\3 e'-1\2 c''-4\1> < a,-1\6 e-3\5 a-4\4 c'-1\3 e'-1\2 a'-1\1 > < c-1\6 g-2\5 c'-3\4 e'-4\3 g'-1\2 c''-1\1> < c'-4\5 e'-3\4 g'-1\3 c''-2\2 e''-1\1 > } >> </score> Leite dir also die Grundtöne C und A von den dir bekannten Barré-Akkorden ab und spare dir die ungewöhnlicheren Akkordformen auf, bis sie dir später beim Fingerstyle oder Jazz begegnen. Es macht dabei garnichts aus, wenn du zum Auffinden der Grundtöne und zum Finden des Starttons ein paar Sekunden brauchst. Du wirst sehen, dass die Wiederholungen der bekannten Übungen auf den verschiedenen Bünden und in verschiedenen Oktavebereichen leicht von der Hand gehen. Lediglich beim Lagewechsel zwischen der G- und H-Saite musst du etwas überlegen. <score> << \new ChordNames { \chordmode { c1 c c a c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 c'-1 > < c-1\5 c'-3\3 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 c'-1\3 c''-4\1> < a,-1\6 a-4\4 a'-1\1 > < c-1\6 c'-3\4 c''-1\1> < c'-4\5 c''-2\2 > } >> </score> Diese wenigen"Eckpunkte" reichen aus, um dich grob auf dem Griffbrett zurechtzufinden. Suche sie noch einmal in der Skala und natürlich auch auf deinem Griffbrett. :[[Datei:C-Major-Scale on the fretboard.svg]] == Zweiter Fingersatz == :[[Datei:Scala 6_71-2_34.svg]] Zuerst suchen wir uns in der C-Dur-Tonleiter überall den zweiten Fingersatz heraus. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] Zur leichteren Orientierung wird die Grafik bei jeder neuen Melodie wiederholt. === Rondeau (Auszug) === Die eintaktige Sequenzen wurde aus einem Rondeau von J.S. Bach entnommen, dass beliebig wiederholt werden kann. Der Grundton C, welcher im letzten Takt rot eingefärbt wurde, wird mit dem kleinen Finger gegriffen. Du kannst tatsächlich die Noten nutzen (sofern du es schon kannst) oder aber du orientierst dich an den Notennamen. Am Anfang des Griffbrettes brauchen wir den zweiten Fingersatz nicht vollständig. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #5 % \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> In der A-(Bb-)Form müssen wir den Lagewechsel zwischen der G- und H-Saite beachten. Übrigens werden hier die Töne in der englischen Form angegeben. (Bb-Form und der Ton B statt des deutschen H.) Nur der erste Bund wird bis zur letzten Note in der dritten Lage gespielt. Der Rest bis zur letzten Note in der zweiten Lage. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (A-, Bb-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e-4 d-2 c d e d c b d c b c d c b a c b a b c d b c d-1 } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Statt in der G-Form das C zu suchen, suche lieber das A im 5. Bund (hier grün hervorgehoben). Oder du leitest dir das C vom Barré im 8. Bund ab. Der Startton E ist auf der A Saite im 7. Bund unter dem Ringfinger. Ansonsten stellt der Fingersatz keine Herausforderung mehr dar. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (G-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b \once \override NoteHead #'color = #green a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Der kleine Finger des C-Barré im 8. Bund in der E- bzw. F-Form gibt gleichzeitig das C des zweiten Fingersatz an. Du siehst, dass ab jetzt alles leichter geworden ist, weil sich ansonsten nichts mehr am Fingersatz ändert. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (E- F-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Für den Grundton C müssen wir uns die D-Form gar nicht so genau ins Gedächtnis rufen, wenn uns die C-Form viel vertrauter ist. Diese hohe Lage ist für E-Gitarristen oder Gitarren mit Cutaway gedacht. Auf der Konzertgitarre ist die sehr hohe Lage schlecht zu spielen. Gehe ggf. einen Kompromiss ein, und spiele diese hohe Saitenlage ein paar Bünde tiefer als Übung nur für den Fingersatz aber nicht für die Notennamen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Noten über dem hohen C (der mit zwei Hilfslinien) wird dir seltener begegnen, da in dem Fall bevorzugt die Noten nach unten oktaviert werden. (Beachte die 8 im Notensystem.) Bei den weiteren Übungen werden jedoch die Versionen mit den vielen Hilfslinien angezeigt. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { \ottava #1 e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Mit der C-Form in den ersten drei Bünden im Hinterkopf ist der 12. Bund leicht zu bewältigen. Wieder eine Übung, die weniger für Konzertgitarren geeignet ist. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === "Das häßliche Entlein" oder "Alle meine Entchen"<ref>Anspielung auf ein Märchen der Gebrüder Grimm nebst einem bekannten deutschen Kinderlied.</ref> in A-Moll === Die vorherige Übung war in Dur, und hier verwenden wir ein und den selben Fingersatz in Moll. Wie du siehst und hörst, lässt sich ein Fingersatz oder ein Pattern nicht eindeutig einer einzigen Tonart zuordnen. Der Schlusston oder der Schlussakkord (hier der Ton A bzw. der Akkord Am) bestimmt die Tonart. Der Grundton A ist hier die Sexte (6) des zugrunde liegenden C-Major-Pattern. Es bleibt dir überlassen, ob du zur Orientierung lieber den Grundton A (grün) bestimmst, oder das C aus dem Karré (rot). Wenn in einer Tabulatur über einer Ziffer zwei Notenhälse stehen, so ist das ein Zeichen für eine halbe Note, die zwei Schläge dauert. Da dieses für viele Gitarristen sehr ungewöhnlich aussieht, verzichtet man oft auf Taktstriche in der Tabulatur. In dem Fall lässt sich die Tondauer allein an den Notenwerten ablesen. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-/Am-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #5 % \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Der Lagewechsel zwischen der G- und H-Saite ist hier leicht zu bewältigen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Gm-/Bb-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d-1 e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2-4 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Auch hier ist es wieder einfacher das A (grün) zu suchen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Em-/G-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (E- / F-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Statt lange nach dem Grundton der D-Form zu suchen, erinneren wir uns kurz, wo der Grundton C auf der H- (B-)Saite sein muß (13. Bund). <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> === Die Moldau (Hauptmotiv) === Die Abfolge der Töne der folgenden Übung unterscheidet sich kaum von der vorhergehenden. Doch mit dem anderen Rhythmus haben wir das Hauptmotiv von der Komposition {{Youtube-Suche|Smetana+Die+Moldau|"Die Moldau" von Bedrich Smetana}} (ohne Auftakt und rhythmisch vereinfacht). Auch wenn es hier (wie in der 7. Übung) nur die Molltonleiter rauf und runter geht, merkst du hoffentlich, wieviel der Takt und Rhythmus an der Wirkung ausmacht. Wenn du später mal meinst, deine Improvisationen hören sich langweilig an, dann solltest du dich mehr mit Rhythmus beschäftigen. Dazu kannst du dich auch ein wenig mit Schlagmustern beschäftigen. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Am-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Warum die Form hier Gm-Form genannt wird, das wird dir in den nachfolgenden Lektionen klarer werden. Auf Fingersatzangaben können wir hier verzichten, wenn du vorher "Alle meine Entchen in Am" gespielt hast. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Bb- /Gm-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier bietet sich besonders an, den Am-Barré zur Orientierung zu verwenden. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Em-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Auch hier gibt dir der kleine Finger des Am-Barrés den Grundton an. Du kannst dir die Dm-Form aber auch über die F-Form (C im 8. Bund) ableiten. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (F- /Dm-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Zähle vom C (H-Saite, 13. Bund) rückwärts zum A. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D- /Bm7-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier wird die erste Übung in den 12. Bund verschoben. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C- /Am-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==1. Fingersatz== Dir wird wohl aufgefallen sein, dass beim zweiten Fingersatz der Ton G fehlt. Den üben wir mit dem ersten Fingersatz. :[[Datei:Scala 71_2-34_5.svg]] Beachte, dass der Grundton (1) unter dem Ringfinger (also im zweiten Bund dieses Fingersatzes) ist, und dass du deine freie Improvisationsübung in Dur günstigerweise mit der (1) beginnen oder zumindest enden sollte. Diesen Fingersatz suchen wir in der C-Dur-Tonleiter auf dem Griffbrett. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] === Eintaktige Sequenzen === Die erste Lage mit leeren Saiten stellt noch keine Herausforderung dar. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • A- (Bb-)Form ==== Du musst noch nicht einmal den C-Barré im 3. Bund bemühen, um den Grundton zu finden. Die C-Dur-Tonleiter in den ersten drei Bünden reicht. Natürlich kannst du auch den Startton G suchen. Die Tabulatur sagt dir "D-Saite 5. Bund". Erinnere dich daran, dass dies der Stimmton der D-Saite ist (beim Stimmen nach Bünden). Auch hier ist der Fingersatz leicht. <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • A- (Bb-)Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 4 2 3 darkgrey ) (place-fret 4 3 4 yellow3 ) (place-fret 4 5 5 darkgrey ) (place-fret 5 2 "j7" yellow3 ) (place-fret 5 3 1 black ) (place-fret 5 5 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb)-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • G-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • G-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 2 5 3 darkgrey ) (place-fret 2 6 4 yellow3 ) (place-fret 2 8 5 darkgrey ) (place-fret 3 4 "j7" yellow3 ) (place-fret 3 5 1 black ) (place-fret 3 7 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Bei der G-Form kommt es zwischen der G- und H-Saite zu einem Lagewechsel. Du musst dir jedesmal eine Strategie zurechtlegen, wann und wie du am besten den Lagewechsel durchführst. Wenn du Glück hast, findest du im Notenbild einen Hinweis, wie man günstig die Lage wechseln kann. Ich empfehle dir dort wo die 2 über den Noten steht, den Mittelfinger zu nehmen. *(1 = Z, 2 = M, 3 = R, 4 = K, 0 = leere Saite) Betrachte solche Hinweis nur als Vorschlag, denn es gibt keine verbindliche Regel, wie der Lagewechsel zu erfolgen hat. Übst du die gleiche Sequenzen ein paar Saiten höher oder tiefer, geht es leichter von der Hand. Beachte den Lagewechsel zwischen der G- und H-Saite. Den Grundton C kannst du dir auch vom Ringfinger auf der G-Saite des C-Barrés ableiten. Du musst dir hier eine Strategie zurechtlegen, wann du den Lagewechsel durchführen möchtest. Ich empfehle hier, den Lagewechsel so früh wie möglich zu machen, damit du den Zeigefinger frei hast, um gleich hintereinander zwei Töne in einem Bund zu spielen. Betrachte die Angaben zum Fingersatz nur als Vorschlag. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d-4 e-2 f-3 d e f e d c d e c-1 d-4 e-2 d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier eine alternative Lösung. Du kannst einen kleinen Barré über die Noten C und E legen, und den Lagewechsel später ausführen. Das V unter dem C zeigt hier den 5. Bund an, und nicht etwa Abschläge. Der Lagewechsel erfolgt hier im letzten Takt. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d e f d e f e d-2 \textSpannerDown \override TextSpanner.bound-details.left.text = "V" c-1\startTextSpan d e-1 c-1 d e-1\stopTextSpan d-4 c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • E- (F-)Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • E- (F-)Form <score raw="1"> \version "2.24.4" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 5 7 3 darkgrey ) (place-fret 5 8 4 yellow3 ) (place-fret 5 10 5 darkgrey ) (place-fret 6 7 "j7" yellow3 ) (place-fret 6 8 1 black ) (place-fret 6 10 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Den Grundton C auf der E-Saite kannst du dir vom C-Barré der E-Form (wie ein F- Barré) im 8. Bund ableiten. Der Fingersatz ist wieder einfach. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E-(F)-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • D-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • D-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 3 9 3 darkgrey ) (place-fret 3 10 4 yellow3 ) (place-fret 3 12 5 darkgrey ) (place-fret 4 9 "j7" yellow3 ) (place-fret 4 10 1 black ) (place-fret 4 12 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div>Die Tonhöhe ist die selbe, wie in der G-Form, wo wir uns komplizierte Strategien für den Fingersatz zurechtlegen mussten. In dieser Lage ist alles einfacher. Wenn du später mal einen herausfordernden Lick zwischen der G- und H-Saite hast, wäre eine weitere gangbare Strategie den Lick in eine fingertechnisch günstigere Lage zu verlegen. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • C-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • C-Form <score raw="1"> \version "2.24.4" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 1 12 3 darkgrey ) (place-fret 1 13 4 yellow3 ) (place-fret 1 15 5 darkgrey ) (place-fret 2 12 "j7" yellow3 ) (place-fret 2 13 1 black ) (place-fret 2 15 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Hier wurde die C-Durtonleiter in den 12. Bund verlegt. Der Grundton ist auf der H-Saite im 13. Bund. (Eine Oktave höher als bei der C-Dur Tonleiter in den ersten drei Bünden.) Wer keine E-Gitarre hat oder wer keine Akkustik mit Cutaway hat, der kann die C-Form auch in einem niedrigeren Bund üben. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c''' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Halbtaktige Sequenzen === Diesmal hast du halbtaktige Sequenzen, die einmal wiederholt werden. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== A- (Bb-)Form • 1. Fingersatz ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • A- (Bb-)Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 4 2 "E" darkgrey ) (place-fret 4 3 "F" yellow3 ) (place-fret 4 5 "G" darkgrey ) (place-fret 5 2 "B" yellow3 ) (place-fret 5 3 "C" black ) (place-fret 5 5 "D" darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Leite dir den Grundton vom C-Dur-Akkord, oder vom C-Barré im 3. Bund ab. Lerne nicht nur die Intervlle, sondern auch die Notennamen. (Zumindest bei den einfachen Tonarten F-, G- und C-Dur). Andere Tonarten kommen später dran. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- / Bb-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== G-Form • 1. Fingersatz ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • G-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 2 5 "E" darkgrey ) (place-fret 2 6 "F" yellow3 ) (place-fret 2 8 "G" darkgrey ) (place-fret 3 4 "B" yellow3 ) (place-fret 3 5 "C" black ) (place-fret 3 7 "D" darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div>Du kannst die beiden hintereinander folgenden Noten im 5. Bund mit einem Mini-Barré ausführen, und die Lagewechsel mittels Slide (=&nbsp;Glissando) durchführen, oder wie in der Wiederholung ohne Slide durchführen. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major c8-1 g' f e d f e d c-1 e-1 d c-1(\glissando b-1) d c b-1(\glissando c1-1) c8-2 g' f e d f e d c-1 e-2 d-4 c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • E- (F-)Form ==== Fingersatztechnisch wieder problemlos. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • D-Form ==== <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • C-Form ==== <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> === Ein Vogel wollte Hochzeit machen === Hier habe ich ein relativ bekanntes Kinderlied gefunden, dass perfekt zum 1. Fingersatz passt. Die Tondauern sind für Ungeübte in Sachen Noten schwer herauszulesen. Kennst du aber das Stück, oder hörst du es dir mehrmals an, so ist es keine unüberwindbare Schwierigkeit. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] Folgt das G nach dem D, greifst du den besser mit dem kleinen Finger. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d-3( g-4) g g16 e | c8 8 8 g'16 e d8 d d-3 g16-4 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier ist es wohl am einfachsten, dass du den kleinen Finger umlegst, wenn du nach dem D den G greifen willst. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb-)Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d-3( g-4) g g16 e | c8 8 8 g'16 e d8-3 d d g16-4 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Wenn der Ton C auf ein E-folgt, kann man entweder ein <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e-2 c-1 g' e d( g) g g16 e-2 | c8-1 8 8 g'16 e d8 d d g16 f | e8-2 c-1 d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Halbtaktige Sequenzen (2) === :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Bei der G-Form kommt es zwischen der G- und H-Saite zu einem Lagewechsel. Du musst dir jedesmal eine Strategie zurechtlegen, wann und wie du am besten den Lagewechsel durchführst. Wenn du Glück hast, findest du im Notenbild einen Hinweis, wie man günstig die Lage wechseln kann. Ich empfehle dir dort wo die 2 über den Noten steht, den Mittelfinger zu nehmen. *(1 = Z, 2 = M, 3 = R, 4 = K, 0 = leere Saite) Betrachte solche Hinweis nur als Vorschlag, denn es gibt keine verbindliche Regel, wie der Lagewechsel zu erfolgen hat. Übst du die gleiche Sequenzen ein paar Saiten höher oder tiefer, geht es leichter von der Hand. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c''' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Einsingen === Diese beiden Motive kennen viele, die schon einmal in einem Chor gesungen haben. Leider entsprechen viele Lieder in ihrem Tonumfang nicht genau einem der vollständigen drei Fingersätze oder der später folgenden Skalen. Zumeist werden nur Ausschnitte aus den Patterns gebraucht. Im ersten Motiv fehlt beispielsweise die große Septime (j7) vor dem Grundton. Dafür enthält das zweite Motiv die große Septime (j7). Das zweite Motiv eicht den Chor auf die gerade geforderte Tonart. Hier werden nur Akkordtöne in einer auf oder absteigenden Tonfolge gespielt (auch Arpeggios genannt). Der A7-Akkord enthält sowohl den Leitton (j7) der zum Grundton (1) hin leitet, als auch den Strebeton (4) die zur Durterz (3) hin strebt. Mit den zwei spannungsreichen Tönen, die sich zum Grundakkord auflösen wollen, wird der Chor auf die Durtonart eingenordet. Hier brauche ich dir nicht zu erklären, wo der Grundton D ist. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A-(Bb-)Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E-(F-)Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==Erste über den zweiten Fingersatz== Wie du siehst, kommt hier jedesmal zuerst der erste Fingersatz mit dem "Karree" rechts, und dannach kommt der Fingersatz mit dem "Karree" links. Sie sind immer untereinander. Nur zwischen der G- und B-Saite verschiebt sich alles um einen Bund. <div style="float:left; padding:5px; border:black solid 1px; "> ;F-Form <score raw="1"> \version "2.14.2" \paper{ indent=0\mm line-width=120\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% 4-o zeigt 4. Saite offen \fret-diagram #"s:2;f:1; 3-3-2;3-5-3;3-6-4; 4-3-6;4-5-7;4-6-1; 5-3-3;5-4-4;5-6-5; 6-3-7;6-4-1;6-6-2;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;Bb-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:2;f:1; 2-4-2;2-6-3;2-7-4; 3-3-6;3-5-7;3-6-1; 4-3-3;4-4-4;4-6-5; 5-3-7;5-4-1;5-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;D-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:2;f:1; 1-4-2;1-6-3;1-7-4; 2-4-6;2-6-2;2-7-1; 3-3-3;3-4-4;3-6-5; 4-3-7;4-4-1;4-6-2;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} === Jamaica Farewell === Die Melodie von [[Liederbuch/ Jamaica Farwell|Jamaica Farwell]] wurde erheblich vereinfacht, damit du dir nicht zu viele Gedanken um den Rhythmus machen musst. Wenn du dich am Quintillo (dem Rhythmus vom Lagerfeuerschlag} orientierst, solltest du wenige Probleme haben. Es gibt recht viele Wiederholung. Die Strophe wurde bei der Wiederholung in die Oktave verschoben, damit das Stück exakt in den Skalenausschnitt passt. Du musst dir für die Fingersätze ggf. Strategien zurechtlegen, damit du die Finger bequem sortiert bekommst. Das Stück beginnt mit dem Ton G. Der (5) in 1. Fingersatz. ;Bb-Form Greife den C wie ein Bb-Barré im 3. Bund. Leite dir von diesem Akkord den Grundton (1) ab, und wandere beim 1. Fingersatz rauf zum Startton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-4-2;2-6-3;2-7-4; 3-3-6;3-5-7;3-6-1; 4-3-3;4-4-4;4-6-5; 5-3-7;5-4-1;5-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (A-, Bb-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ; F-Form Greife den C wie ein F-Barré im 8. Bund. Leite dir von diesem Akkord den Grundton (1) ab, und wandere beim 1. Fingersatz rauf zum Startton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 3-7-2;3-9-3;3-10-4; 4-7-6;4-9-7;4-10-1; 5-7-3;5-8-4;5-10-5; 6-7-7;6-8-1;6-10-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (E-, F-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ;D-Form Schiebe den D-Dur-Akkord in den 12. Bund. Ein D im 12. Bund verschoben ergibt ein C. Leite dir von diesem Akkord den Grundton (1) ab. Orientiere dich kurz im 2. Fingersatz und wandere zurück zum ersten Fingersatz zum Ton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 1-10-2;1-12-3;1-13-4; 2-10-6;2-12-7;2-13-1; 3-9-3;3-10-4;3-12-5; 4-9-7;4-10-1;4-12-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (D-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==3. Fingersatz== Es fällt auf, dass der 3. Fingersatz kein "Karré" hat. {| !Fingersatz !width="30px"| !Intervalle |- |[[Image:Scala Z RK-Z K-ZM K.svg]] !width="30px"| |[[Image:Scala 2 34-5 6-71 2.svg]] |} Der 3. Fingersatz ist gar kein eigenständiger Fingersatz. Der obere Teil des 3. Fingersatzes ist eigentlich schon der untere Teil des 2. Fingersatzes. Ebenso ist der untere Teil des 3. Fingersatzes gleichzeitig der Anfang des 1. Fingersatzes. Du musst dir Strategien zurechtlegen, wie du den Übergang vom Ende des 2. Fingersatzes über die 5 und die 6 hin zum 1. Fingersatz gestaltest. Es kommt beim 3. Fingersatz zu einem Lagewechsel nach links. Übe den 3. Fingersatz zuerst in den obersten Saitenlagen (E A D G x x) === Eine II-V-I-Verbindung === Wir spielen eine einfache Tonfolge über einer 2-5-1-Verbindung. Die Akkordtöne liegen zumeist auf den schweren Zählzeiten. * D, F, A, C gehören zum Dm7 * G, B, D, F gehören zum G7 * C, E, G gehören zum C-Dur-Akkord. Wir nutzen das CAGED-System, um uns grob auf dem Griffbrett zurechtzufinden. ==== Exkurs: Skalenformen ==== Die Namen der Skalen leiten sich übrigens von folgenden einfachen Tonleitern in den ersten Bünden ab: [[Image:Scala C-Am.svg|100px]] [[Image:Scala Bb-Gm.svg|100px]] [[Image:Scala G-Em.svg|100px]] [[Image:Scala F-Dm.svg|100px]] [[Image:Scala D-Hm.svg|100px]] Alle Akkorde die man aus diesen einfachen Tonarten kennt, Bassläufe und ähnliches lassen sich zum großen Teil auf die entsprechenden 5 CAGED-Skalen übertragen, fast so als habe man die Tonleiter mittels Kapodaster in eine höhere Lage verschoben. Wie du siehst, nennen wir die Skalen entgegen des reinen CAGED-System nicht E-Dur-Form (Shape) und nicht die A-Dur-Form (Shape), sondern F- und Bb-Dur-Form. <div style="float:left; padding:5px; border:black solid 1px; "> ;E-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-1;1-2-2;1-4-3; 2-0-5;2-2-6;2-4-7; 3-1-3;3-2-4;3-4-5; 4-1-7;4-2-1;4-4-2; 5-0-4;5-2-5;5-4-6; 6-0-1;6-2-2;6-4-3;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;F-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-3; 1-1-1; 1-3-2; 2-1-5; 2-3-6; 3-0-2; 3-2-3; 3-3-4; 4-0-6; 4-2-7; 4-3-1; 5-0-3; 5-1-4; 5-3-5; 6-0-7; 6-1-1; 6-3-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;G-Dur-Tonleiter <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-3-3; 1-4-1; 1-6-2; 2-4-5; 2-6-6; 3-3-2; 3-5-3; 3-6-4; 4-3-6; 4-5-7; 4-6-1; 5-3-3; 5-4-4; 5-6-5; 6-3-7; 6-4-1; 6-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Du siehst selbst, dass die G-Dur-Tonleiter von der Form her eher wie die F-Dur-Tonleiter als wie die E-Dur-Tonleiter aussieht. <div style="float:left; padding:5px; border:black solid 1px; "> ;A-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-5;1-2-6;1-4-7; 2-0-2;2-2-3;2-3-4; 3-1-7;3-2-1;3-4-2; 4-0-4;4-2-5;4-4-6; 5-0-1;5-2-2;5-4-3; 6-0-5;6-2-6;6-4-7;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;Bb-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-1-5; 1-3-6; 2-1-2; 2-3-3; 2-4-4; 3-0-6; 3-2-7; 3-3-1; 4-0-3; 4-1-4; 4-3-5; 5-0-7; 5-1-1; 5-3-2; 6-1-5; 6-3-6;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;C-Dur-Tonleiter <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-3-5; 1-5-6; 2-3-2; 2-5-3; 2-6-4; 3-2-6; 3-4-7; 3-5-1; 4-2-3; 4-3-4; 4-5-5; 5-2-7; 5-3-1; 5-5-2; 6-3-5; 6-5-6;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Du siehst selbst, dass die C-Dur-Tonleiter von der Form her eher wie die Bb-Dur-Tonleiter als wie die A-Dur-Tonleiter aussieht. ==== 3. Fingersatz II-V-I-Verbindung D-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;D-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:3;f:1; 4-9-7;4-10-1;4-12-2; 5-10-5;5-12-6; 6-10-2;6-12-3;6-13-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Wir beginnen oben bei der D-Form, wo sich der Lagewechsel des 3. Fingersatz noch nicht mit dem Lagewechsel zwischen der G und H-Saite (engl. B-Saite) aufhebt. Würde ich ein Capo in den 10. Bund setzen, dann würde ich die Melodie vom Fingersatz her wie D-Dur spielen. In D-Dur spiele ich diese II-V-I-Verbindung Em7 A7 D. Nehme ich das Capo weg, dann greife ich den Dm(7) als einen Barré der Em-Form im 10. Bund. Von diesem kann ich mir das D als Grundton ableiten. Alternativ siehst du in den Noten, dass die Übung mit dem Ton D anfängt. Dass die oberste Tiefe E-Saite im 12. Bund ebenfalls ein E ergibt, setze ich als bekannt voraus. Falls nicht, beschäftige dich noch einmal mit dem [[Gitarre: Lagerfeueranhang 2c|Stimmen der Gitarre]]. Ein Ganztonschritt bzw. zwei Bünde vor dem E ist der Ton D. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (D-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g-1 a-4 b-1 c4 | b8^\markup { \bold {G7} } a-4 g4-1 f8 e d4 | e8^\markup { \bold {C} } f g4-1 a8-4 b-1 c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung G-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;G-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 3-4-7;3-5-1;3-7-2; 4-5-5;4-7-6; 5-5-2;5-7-3;5-8-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 5. Bund setzen, dann würde man die Melodie vom Fingersatz her wie G-Dur spielen. In G-Dur spielt man diese II-V-I-Verbindung Am7 D7 G. Nimmt man das Capo weg, dann greift man den Dm(7) als einen Barré der Am-Form. Von diesem kannst du dir den D als Grundton ableiten. Einfacher geht es natürlich, wenn du weißt, dass der D im 5. Bund der A-Saite der Stimmton der D-Saite ist. </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (G-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g-1 a-4 b-1 c4 | b8^\markup { \bold {G7} } a-4 g4-1 f8 e d4 | e8^\markup { \bold {C} } f g4-1 a8-4 b-1 c d | c b c2. | \break d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung C-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;C-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-0-7;2-1-1;2-3-2; 3-0-5;3-2-6; 4-0-2;4-2-3;4-3-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Die C-Dur-Form der C-Dur Tonleiter sieht schlicht und ergreifend wie die C-Durtonleiter aus. </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (C-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #4 % \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \break d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung C-Form 12. Bund ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;C-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-12-7;2-13-1;2-15-2; 3-12-5;3-14-6; 4-12-2;4-14-3;4-15-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 12. Bund setzen, dann würde man die Melodie vom Fingersatz her wie C-Dur spielen. In C-Dur spielt man diese II-V-I-Verbindung Dm7 G7 C. Der Startton ist schlicht die D-Saite im 12. Bund. </div> {{clear}} Gerade noch hatten wir einen Lagewechsel nach links. Jetzt aber hebt sich der Lagewechsel nach links vom 3. Fingersatz mit dem Lagewechsel zwischen der G- und H-Saite auf. Es hört sich beim ersten Durchlesen kompliziert an, aber du hast nur 4 Lektionen zu lernen. Den 1. bis 3. Fingersatz und den Lagewechsel zwischen der G- und H-Saite. Das Auffinden der Töne und welche Akkorde zu welcher Tonart gehört, und wie man einen Capo benutzt, sollte eigentlich nichts neues für dich sein. Rein technisch gesehen vereinfacht sich der Fingersatz. Doch es kostet ein wenig Überlegung, wie sich die beiden Lagewechsel auf den 3. Fingersatz auswirken. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (C-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> Sollte es im 12 Bund unbequem zu spielen sein, weil du kein Cutaway hast (Aussparung für die hohen Bünde), übe die C-Form ein paar Bünde zurück in einer anderen Tonart. ==== 3. Fingersatz II-V-I-Verbindung F-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;F-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 1-7-7; 1-8-1;1-10-2; 2-8-5; 2-10-6; 3-7-2; 3-9-3; 3-10-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 6. Bund setzen, dann würde man die Melodie vom Fingersatz her wie F-Dur spielen. In C-Dur spielt man diese II-V-I-Verbindung Gm7 C7 F. Wenn du den C wie ein F-Barré im 8. Bund greifst, dindest du den Grundton (1) auf der hohen E-Saite. Von dem wanderst du runter zum Startton (2). </div> {{clear}} Auch hier hebt sich der Lagewechsel zwischen der G- und H-Saite mit dem Lagewechsel des 3. Fingersatz gegeneinander auf, was den Fingersatz grifftechnisch wieder vereinfacht. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (F-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> == Wie geht es weiter? == Solltest du als Quereinsteiger in diese Lektion gestolpert sein, dann schaue dir die erste Lektion zum [[Gitarre: Aufbau der CAGED-Skalenformen|Aufbau der CAGED-Skalenformen]] an. Insbesondere die Abschnitte, die hier übergangen wurden. Dannach kannst du mit der ersten CAGED-Skala in der D-Dur-Form weitermachen. <noinclude> {{Navigation zurückhochvor |zurücklink=Gitarre: CAGED-Skala G-Dur-Form |zurücktext=CAGED-Skala G-Dur-Form |hochlink=Gitarre: Die Major-Patterns |hochtext=Einführung: Major-Patterns |vorlink=Gitarre: CAGED-Skala D-Dur-Form |vortext=CAGED-Skala D-Dur-Form }} </noinclude> 330l9vlbog34667iqmvzxs9jzx04q65 1090587 1090583 2026-09-08T19:09:58Z Mjchael 2222 /* 1. Fingersatz • E- (F-)Form */ 1090587 wikitext text/x-wiki {{:Gitarre/ Navi|Sologitarre| {{:Gitarre: Sologitarre/ Navi Improvisation in Dur und Moll}}| img=Guitar 1.svg |bg=#F8f8f8|border=darkorange|color=dark|px=80|navi=Einführung in die Sologitarre}} = Wiederholung der Fingersätze = ; mit Schwerpunkt auf den Stammtönen Diese Wiederholung ist zum einen dafür gedacht, die vorhergehenden Übungen auf jeder Saitenlage zu machen, und auch in jeder Bundlage, gleichgültig ob die Finger eng beieinander oder weit auseinander stehen. Zum andern sind diese als Vorbereitung in die Sologitarre gedacht. Beispielsweise als Auflockerungsübung zwischen den Barré-Akkorden. Besonderen Augenmerk wollen wir hier auf die Notennamen legen. Diese können hier mitgelernt werden. Solltest du meinen, das sei noch nicht für dich dran und kann warten, dann springe zur ersten CAGED-Skala. Du kannst beim Kapitel Longform nochmal hierrauf zurückkommen. * [[Gitarre: CAGED-Skala D-Dur-Form|CAGED-Skala D-Dur-Form]] Lassen wir die [[Gitarre: Aufbau der CAGED-Skalenformen|erste Lektion]] (insbesondere für die Quereinsteiger) noch einmal Revue passieren. Die folgenden Übungen enthalten oft eine Folge von ein- oder zweitaktigen Sequenzen. Eine Sequenz ist ein Motiv, dass sich auf verschiedenen Tonhöhen wiederholt. Auch ohne Notenkenntnisse kannst du den Verlauf und die Wiederholungen der Sequenzen einfacher im Notenbild verfolgen, als in der Tabulatur; insbesondere wenn du dir gleichzeitig die Übung anhörst. Es kommen auch Ausschnitte aus klassischen Stücken, Folksongs, Kinderlieder o.ä. vor. Die einfache Struktur oder der Bekanntheitsgrad der Melodien sollen dir das Üben erleichtern. Die Finger finden so leichter ihre Position, als wenn du erstmal jede einzelne Note aus der Tabulatur entschlüsseln musst. Jede Übung wird auf allen Saitenlagen geübt. Vorher blieben wir in den mittleren Lagen. Jetzt gehen wir auch in die ersten Bünde, wo man die Finger etwas mehr spreizen muss, und in die höheren Lagen, wo es ein wenig eng wird. Die Stücke wiederholen sich in dieser Lektion in der selben Tonart, doch auf verschiedenen Bünden. Du spielst immer die selbe Tonfolge, nur auf verschiedenen Tonhöhen bzw. auf verschiedenen Saitenlagen. Lediglich zwischen der G- und H-Saite musst du dir jedesmal überlegen, wie sich der Lagewechsel auf den Fingersatz auswirkt. Doch der Fingersatz in den anderen höheren Lagen bleibt immer gleich. Wie die Tonfolgen mit dem CAGED-System zusammenhängen, das muss dich nur am Rande interessieren. Es wird in den folgenden Lektionen näher und ausführlicher erleutert. :[[Datei:Scala Griffbrett.svg]] Wir hatten uns bei den vorhergehenden Übungen weitestgehend an den Intervallen (1-j7) und an der Tabulatur orientiert. Diese sind in allen Tonarten gleich. Suche zuerst das Karré! Daran orientierst du dich. :[[Image:Scala Carree.svg]] {{Tipp|Lerne bei der C-Dur-Tonleiter nicht nur die Intervalle <br> 2 - 3 4 - 5<br> 6 - j7 1 - 2<br> sondern benenne auch jede einzelne Note. <br> D - E F - G<br> A - H C - D<br> So bekommst du einen recht einfachen Überblick über das Griffbrett.}} == Töne der C-Dur Tonleiter auf dem Griffbrett == Wir wollen uns in dieser Lektion auf die Töne bzw. die Notennamen konzentrieren. Allerdings sparen wir uns vorerst alle Töne mit Vorzeichen aus. Die [[Gitarre: Aufbau der CAGED-Skalenformen|ersten Übungen zum 1. und 2. Fingersatz]] werden auf die Tonart C-Dur bzw. A-Moll übertragen und wir spiele sie in den hier gezeigten Positionen. Wir fangen mit dem zweiten Fingersatz an, wo wir entweder den Ton C oder den Ton A der C-Dur- bzw. Am-Tonleiter als Orientierung nutzen :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] Du hast vermutlich allerlei Akkordformen des CAGED-System gesehen. <div class="noprint"> ;Animation [[Image:Crd Grundtonschema ani.gif]] </div> <score> << \new ChordNames { \chordmode { c1 c c c c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 e-2 g c'-1 e' > < c-1\5 g-3\4 c'-3\3 e'-4\2 g'-1 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 e-2\5 g-1\4 c'-1\3 e'-1\2 c''-4\1> < c-1\6 g-2\5 c'-3\4 e'-4\3 g'-1\2 c''-1\1> \once \override FretBoard.fret-diagram-details.dot-color = #'white < c'-1\4 g'-2\3 c''-4\2 e''-3\1 > < c'-4\5 e'-3\4 g'-1\3 c''-2\2 e''-1\1 > } >> </score> Wenn du schon Fingerstyle oder Jazz spielst, mögen dir viele der Formen bekannt vorkommen. Doch selbst wenn du bis jetzt nur das [[Gitarre: Rockdiplom|Rockdiplom]] gemacht hast und mit den dort vorkommenden Barré-Akkorden vertraut bist, wirst du sehen, dass die einfachen Barré-Akkorde ausreichen, um sich auf dem Griffbrett zu zurechtzufinden. Die [[Gitarre: C-Dur-Tonleiter Workshop|C-Dur-Tonleiter in den ersten drei Bünden]] setze ich als bekannt voraus und es sollte dir nicht allzu schwer fallen, diese in den 12. Bund zu übertragen. :[[Datei:Scala C-Am.svg|150px]][[Datei:C-Dur_Majorpattern_III.jpg|150px]] C-Dur als Barré im 3. Bund kennst du vom Rockdiplom, und C-Dur im 8. Bund ist auch kein Hexenwerk. Dazwischen liegt nach dem CAGED-System die G-Form, die dir vermutlich noch nicht untergekommen ist (hier mit weißem Fingersatz). Statt uns die Töne von der G-Form abzuleiten, machen wir es uns einfacher und leiten uns die Töne zur Orientierung vom Am im 5. Bund ab. Du erinnerst dich noch an die Dur- und Mollparallelen? (C- \ Am-Tonleiter bzw. G- \ Em-Form). Oder du nutzt die Grundtöne des C-Barré im 8. Bund. <score> << \new ChordNames { \chordmode { c1 c c a:m c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 e-2 g c'-1 e' > < c-1\5 g-3\4 c'-3\3 e'-4\2 g'-1 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 e-2\5 g-1\4 c'-1\3 e'-1\2 c''-4\1> < a,-1\6 e-3\5 a-4\4 c'-1\3 e'-1\2 a'-1\1 > < c-1\6 g-2\5 c'-3\4 e'-4\3 g'-1\2 c''-1\1> < c'-4\5 e'-3\4 g'-1\3 c''-2\2 e''-1\1 > } >> </score> Leite dir also die Grundtöne C und A von den dir bekannten Barré-Akkorden ab und spare dir die ungewöhnlicheren Akkordformen auf, bis sie dir später beim Fingerstyle oder Jazz begegnen. Es macht dabei garnichts aus, wenn du zum Auffinden der Grundtöne und zum Finden des Starttons ein paar Sekunden brauchst. Du wirst sehen, dass die Wiederholungen der bekannten Übungen auf den verschiedenen Bünden und in verschiedenen Oktavebereichen leicht von der Hand gehen. Lediglich beim Lagewechsel zwischen der G- und H-Saite musst du etwas überlegen. <score> << \new ChordNames { \chordmode { c1 c c a c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 c'-1 > < c-1\5 c'-3\3 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 c'-1\3 c''-4\1> < a,-1\6 a-4\4 a'-1\1 > < c-1\6 c'-3\4 c''-1\1> < c'-4\5 c''-2\2 > } >> </score> Diese wenigen"Eckpunkte" reichen aus, um dich grob auf dem Griffbrett zurechtzufinden. Suche sie noch einmal in der Skala und natürlich auch auf deinem Griffbrett. :[[Datei:C-Major-Scale on the fretboard.svg]] == Zweiter Fingersatz == :[[Datei:Scala 6_71-2_34.svg]] Zuerst suchen wir uns in der C-Dur-Tonleiter überall den zweiten Fingersatz heraus. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] Zur leichteren Orientierung wird die Grafik bei jeder neuen Melodie wiederholt. === Rondeau (Auszug) === Die eintaktige Sequenzen wurde aus einem Rondeau von J.S. Bach entnommen, dass beliebig wiederholt werden kann. Der Grundton C, welcher im letzten Takt rot eingefärbt wurde, wird mit dem kleinen Finger gegriffen. Du kannst tatsächlich die Noten nutzen (sofern du es schon kannst) oder aber du orientierst dich an den Notennamen. Am Anfang des Griffbrettes brauchen wir den zweiten Fingersatz nicht vollständig. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #5 % \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> In der A-(Bb-)Form müssen wir den Lagewechsel zwischen der G- und H-Saite beachten. Übrigens werden hier die Töne in der englischen Form angegeben. (Bb-Form und der Ton B statt des deutschen H.) Nur der erste Bund wird bis zur letzten Note in der dritten Lage gespielt. Der Rest bis zur letzten Note in der zweiten Lage. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (A-, Bb-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e-4 d-2 c d e d c b d c b c d c b a c b a b c d b c d-1 } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Statt in der G-Form das C zu suchen, suche lieber das A im 5. Bund (hier grün hervorgehoben). Oder du leitest dir das C vom Barré im 8. Bund ab. Der Startton E ist auf der A Saite im 7. Bund unter dem Ringfinger. Ansonsten stellt der Fingersatz keine Herausforderung mehr dar. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (G-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b \once \override NoteHead #'color = #green a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Der kleine Finger des C-Barré im 8. Bund in der E- bzw. F-Form gibt gleichzeitig das C des zweiten Fingersatz an. Du siehst, dass ab jetzt alles leichter geworden ist, weil sich ansonsten nichts mehr am Fingersatz ändert. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (E- F-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Für den Grundton C müssen wir uns die D-Form gar nicht so genau ins Gedächtnis rufen, wenn uns die C-Form viel vertrauter ist. Diese hohe Lage ist für E-Gitarristen oder Gitarren mit Cutaway gedacht. Auf der Konzertgitarre ist die sehr hohe Lage schlecht zu spielen. Gehe ggf. einen Kompromiss ein, und spiele diese hohe Saitenlage ein paar Bünde tiefer als Übung nur für den Fingersatz aber nicht für die Notennamen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Noten über dem hohen C (der mit zwei Hilfslinien) wird dir seltener begegnen, da in dem Fall bevorzugt die Noten nach unten oktaviert werden. (Beachte die 8 im Notensystem.) Bei den weiteren Übungen werden jedoch die Versionen mit den vielen Hilfslinien angezeigt. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { \ottava #1 e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Mit der C-Form in den ersten drei Bünden im Hinterkopf ist der 12. Bund leicht zu bewältigen. Wieder eine Übung, die weniger für Konzertgitarren geeignet ist. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === "Das häßliche Entlein" oder "Alle meine Entchen"<ref>Anspielung auf ein Märchen der Gebrüder Grimm nebst einem bekannten deutschen Kinderlied.</ref> in A-Moll === Die vorherige Übung war in Dur, und hier verwenden wir ein und den selben Fingersatz in Moll. Wie du siehst und hörst, lässt sich ein Fingersatz oder ein Pattern nicht eindeutig einer einzigen Tonart zuordnen. Der Schlusston oder der Schlussakkord (hier der Ton A bzw. der Akkord Am) bestimmt die Tonart. Der Grundton A ist hier die Sexte (6) des zugrunde liegenden C-Major-Pattern. Es bleibt dir überlassen, ob du zur Orientierung lieber den Grundton A (grün) bestimmst, oder das C aus dem Karré (rot). Wenn in einer Tabulatur über einer Ziffer zwei Notenhälse stehen, so ist das ein Zeichen für eine halbe Note, die zwei Schläge dauert. Da dieses für viele Gitarristen sehr ungewöhnlich aussieht, verzichtet man oft auf Taktstriche in der Tabulatur. In dem Fall lässt sich die Tondauer allein an den Notenwerten ablesen. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-/Am-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #5 % \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Der Lagewechsel zwischen der G- und H-Saite ist hier leicht zu bewältigen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Gm-/Bb-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d-1 e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2-4 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Auch hier ist es wieder einfacher das A (grün) zu suchen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Em-/G-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (E- / F-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Statt lange nach dem Grundton der D-Form zu suchen, erinneren wir uns kurz, wo der Grundton C auf der H- (B-)Saite sein muß (13. Bund). <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> === Die Moldau (Hauptmotiv) === Die Abfolge der Töne der folgenden Übung unterscheidet sich kaum von der vorhergehenden. Doch mit dem anderen Rhythmus haben wir das Hauptmotiv von der Komposition {{Youtube-Suche|Smetana+Die+Moldau|"Die Moldau" von Bedrich Smetana}} (ohne Auftakt und rhythmisch vereinfacht). Auch wenn es hier (wie in der 7. Übung) nur die Molltonleiter rauf und runter geht, merkst du hoffentlich, wieviel der Takt und Rhythmus an der Wirkung ausmacht. Wenn du später mal meinst, deine Improvisationen hören sich langweilig an, dann solltest du dich mehr mit Rhythmus beschäftigen. Dazu kannst du dich auch ein wenig mit Schlagmustern beschäftigen. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Am-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Warum die Form hier Gm-Form genannt wird, das wird dir in den nachfolgenden Lektionen klarer werden. Auf Fingersatzangaben können wir hier verzichten, wenn du vorher "Alle meine Entchen in Am" gespielt hast. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Bb- /Gm-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier bietet sich besonders an, den Am-Barré zur Orientierung zu verwenden. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Em-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Auch hier gibt dir der kleine Finger des Am-Barrés den Grundton an. Du kannst dir die Dm-Form aber auch über die F-Form (C im 8. Bund) ableiten. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (F- /Dm-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Zähle vom C (H-Saite, 13. Bund) rückwärts zum A. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D- /Bm7-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier wird die erste Übung in den 12. Bund verschoben. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C- /Am-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==1. Fingersatz== Dir wird wohl aufgefallen sein, dass beim zweiten Fingersatz der Ton G fehlt. Den üben wir mit dem ersten Fingersatz. :[[Datei:Scala 71_2-34_5.svg]] Beachte, dass der Grundton (1) unter dem Ringfinger (also im zweiten Bund dieses Fingersatzes) ist, und dass du deine freie Improvisationsübung in Dur günstigerweise mit der (1) beginnen oder zumindest enden sollte. Diesen Fingersatz suchen wir in der C-Dur-Tonleiter auf dem Griffbrett. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] === Eintaktige Sequenzen === Die erste Lage mit leeren Saiten stellt noch keine Herausforderung dar. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • A- (Bb-)Form ==== Du musst noch nicht einmal den C-Barré im 3. Bund bemühen, um den Grundton zu finden. Die C-Dur-Tonleiter in den ersten drei Bünden reicht. Natürlich kannst du auch den Startton G suchen. Die Tabulatur sagt dir "D-Saite 5. Bund". Erinnere dich daran, dass dies der Stimmton der D-Saite ist (beim Stimmen nach Bünden). Auch hier ist der Fingersatz leicht. <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • A- (Bb-)Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 4 2 3 darkgrey ) (place-fret 4 3 4 yellow3 ) (place-fret 4 5 5 darkgrey ) (place-fret 5 2 "j7" yellow3 ) (place-fret 5 3 1 black ) (place-fret 5 5 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb)-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • G-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • G-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 2 5 3 darkgrey ) (place-fret 2 6 4 yellow3 ) (place-fret 2 8 5 darkgrey ) (place-fret 3 4 "j7" yellow3 ) (place-fret 3 5 1 black ) (place-fret 3 7 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Bei der G-Form kommt es zwischen der G- und H-Saite zu einem Lagewechsel. Du musst dir jedesmal eine Strategie zurechtlegen, wann und wie du am besten den Lagewechsel durchführst. Wenn du Glück hast, findest du im Notenbild einen Hinweis, wie man günstig die Lage wechseln kann. Ich empfehle dir dort wo die 2 über den Noten steht, den Mittelfinger zu nehmen. *(1 = Z, 2 = M, 3 = R, 4 = K, 0 = leere Saite) Betrachte solche Hinweis nur als Vorschlag, denn es gibt keine verbindliche Regel, wie der Lagewechsel zu erfolgen hat. Übst du die gleiche Sequenzen ein paar Saiten höher oder tiefer, geht es leichter von der Hand. Beachte den Lagewechsel zwischen der G- und H-Saite. Den Grundton C kannst du dir auch vom Ringfinger auf der G-Saite des C-Barrés ableiten. Du musst dir hier eine Strategie zurechtlegen, wann du den Lagewechsel durchführen möchtest. Ich empfehle hier, den Lagewechsel so früh wie möglich zu machen, damit du den Zeigefinger frei hast, um gleich hintereinander zwei Töne in einem Bund zu spielen. Betrachte die Angaben zum Fingersatz nur als Vorschlag. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d-4 e-2 f-3 d e f e d c d e c-1 d-4 e-2 d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier eine alternative Lösung. Du kannst einen kleinen Barré über die Noten C und E legen, und den Lagewechsel später ausführen. Das V unter dem C zeigt hier den 5. Bund an, und nicht etwa Abschläge. Der Lagewechsel erfolgt hier im letzten Takt. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d e f d e f e d-2 \textSpannerDown \override TextSpanner.bound-details.left.text = "V" c-1\startTextSpan d e-1 c-1 d e-1\stopTextSpan d-4 c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • E- (F-)Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • E- (F-)Form <score raw="1"> \version "2.24.4" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 5 7 3 darkgrey ) (place-fret 5 8 4 yellow3 ) (place-fret 5 10 5 darkgrey ) (place-fret 6 7 "j7" yellow3 ) (place-fret 6 8 1 black ) (place-fret 6 10 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Den Grundton C auf der E-Saite kannst du dir vom C-Barré der E-Form (wie ein F- Barré) im 8. Bund ableiten. Der Fingersatz ist wieder einfach. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E-(F)-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • D-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • D-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 3 9 3 darkgrey ) (place-fret 3 10 4 yellow3 ) (place-fret 3 12 5 darkgrey ) (place-fret 4 9 "j7" yellow3 ) (place-fret 4 10 1 black ) (place-fret 4 12 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div>Die Tonhöhe ist die selbe, wie in der G-Form, wo wir uns komplizierte Strategien für den Fingersatz zurechtlegen mussten. In dieser Lage ist alles einfacher. Wenn du später mal einen herausfordernden Lick zwischen der G- und H-Saite hast, wäre eine weitere gangbare Strategie den Lick in eine fingertechnisch günstigere Lage zu verlegen. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • C-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • C-Form <score raw="1"> \version "2.24.4" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 1 12 3 darkgrey ) (place-fret 1 13 4 yellow3 ) (place-fret 1 15 5 darkgrey ) (place-fret 2 12 "j7" yellow3 ) (place-fret 2 13 1 black ) (place-fret 2 15 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Hier wurde die C-Durtonleiter in den 12. Bund verlegt. Der Grundton ist auf der H-Saite im 13. Bund. (Eine Oktave höher als bei der C-Dur Tonleiter in den ersten drei Bünden.) Wer keine E-Gitarre hat oder wer keine Akkustik mit Cutaway hat, der kann die C-Form auch in einem niedrigeren Bund üben. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c''' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Halbtaktige Sequenzen === Diesmal hast du halbtaktige Sequenzen, die einmal wiederholt werden. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== A- (Bb-)Form • 1. Fingersatz ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • A- (Bb-)Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 4 2 "E" darkgrey ) (place-fret 4 3 "F" yellow3 ) (place-fret 4 5 "G" darkgrey ) (place-fret 5 2 "B" yellow3 ) (place-fret 5 3 "C" black ) (place-fret 5 5 "D" darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Leite dir den Grundton vom C-Dur-Akkord, oder vom C-Barré im 3. Bund ab. Lerne nicht nur die Intervlle, sondern auch die Notennamen. (Zumindest bei den einfachen Tonarten F-, G- und C-Dur). Andere Tonarten kommen später dran. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- / Bb-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== G-Form • 1. Fingersatz ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • G-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 2 5 "E" darkgrey ) (place-fret 2 6 "F" yellow3 ) (place-fret 2 8 "G" darkgrey ) (place-fret 3 4 "B" yellow3 ) (place-fret 3 5 "C" black ) (place-fret 3 7 "D" darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div>Du kannst die beiden hintereinander folgenden Noten im 5. Bund mit einem Mini-Barré ausführen, und die Lagewechsel mittels Slide (=&nbsp;Glissando) durchführen, oder wie in der Wiederholung ohne Slide durchführen. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major c8-1 g' f e d f e d c-1 e-1 d c-1(\glissando b-1) d c b-1(\glissando c1-1) c8-2 g' f e d f e d c-1 e-2 d-4 c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • E- (F-)Form ==== Fingersatztechnisch wieder problemlos. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • D-Form ==== <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • C-Form ==== <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> === Ein Vogel wollte Hochzeit machen === Hier habe ich ein relativ bekanntes Kinderlied gefunden, dass perfekt zum 1. Fingersatz passt. Die Tondauern sind für Ungeübte in Sachen Noten schwer herauszulesen. Kennst du aber das Stück, oder hörst du es dir mehrmals an, so ist es keine unüberwindbare Schwierigkeit. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] Folgt das G nach dem D, greifst du den besser mit dem kleinen Finger. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d-3( g-4) g g16 e | c8 8 8 g'16 e d8 d d-3 g16-4 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier ist es wohl am einfachsten, dass du den kleinen Finger umlegst, wenn du nach dem D den G greifen willst. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb-)Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d-3( g-4) g g16 e | c8 8 8 g'16 e d8-3 d d g16-4 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Wenn der Ton C auf ein E-folgt, kann man entweder ein <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e-2 c-1 g' e d( g) g g16 e-2 | c8-1 8 8 g'16 e d8 d d g16 f | e8-2 c-1 d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Halbtaktige Sequenzen (2) === :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Bei der G-Form kommt es zwischen der G- und H-Saite zu einem Lagewechsel. Du musst dir jedesmal eine Strategie zurechtlegen, wann und wie du am besten den Lagewechsel durchführst. Wenn du Glück hast, findest du im Notenbild einen Hinweis, wie man günstig die Lage wechseln kann. Ich empfehle dir dort wo die 2 über den Noten steht, den Mittelfinger zu nehmen. *(1 = Z, 2 = M, 3 = R, 4 = K, 0 = leere Saite) Betrachte solche Hinweis nur als Vorschlag, denn es gibt keine verbindliche Regel, wie der Lagewechsel zu erfolgen hat. Übst du die gleiche Sequenzen ein paar Saiten höher oder tiefer, geht es leichter von der Hand. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c''' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Einsingen === Diese beiden Motive kennen viele, die schon einmal in einem Chor gesungen haben. Leider entsprechen viele Lieder in ihrem Tonumfang nicht genau einem der vollständigen drei Fingersätze oder der später folgenden Skalen. Zumeist werden nur Ausschnitte aus den Patterns gebraucht. Im ersten Motiv fehlt beispielsweise die große Septime (j7) vor dem Grundton. Dafür enthält das zweite Motiv die große Septime (j7). Das zweite Motiv eicht den Chor auf die gerade geforderte Tonart. Hier werden nur Akkordtöne in einer auf oder absteigenden Tonfolge gespielt (auch Arpeggios genannt). Der A7-Akkord enthält sowohl den Leitton (j7) der zum Grundton (1) hin leitet, als auch den Strebeton (4) die zur Durterz (3) hin strebt. Mit den zwei spannungsreichen Tönen, die sich zum Grundakkord auflösen wollen, wird der Chor auf die Durtonart eingenordet. Hier brauche ich dir nicht zu erklären, wo der Grundton D ist. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A-(Bb-)Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E-(F-)Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==Erste über den zweiten Fingersatz== Wie du siehst, kommt hier jedesmal zuerst der erste Fingersatz mit dem "Karree" rechts, und dannach kommt der Fingersatz mit dem "Karree" links. Sie sind immer untereinander. Nur zwischen der G- und B-Saite verschiebt sich alles um einen Bund. <div style="float:left; padding:5px; border:black solid 1px; "> ;F-Form <score raw="1"> \version "2.14.2" \paper{ indent=0\mm line-width=120\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% 4-o zeigt 4. Saite offen \fret-diagram #"s:2;f:1; 3-3-2;3-5-3;3-6-4; 4-3-6;4-5-7;4-6-1; 5-3-3;5-4-4;5-6-5; 6-3-7;6-4-1;6-6-2;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;Bb-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:2;f:1; 2-4-2;2-6-3;2-7-4; 3-3-6;3-5-7;3-6-1; 4-3-3;4-4-4;4-6-5; 5-3-7;5-4-1;5-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;D-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:2;f:1; 1-4-2;1-6-3;1-7-4; 2-4-6;2-6-2;2-7-1; 3-3-3;3-4-4;3-6-5; 4-3-7;4-4-1;4-6-2;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} === Jamaica Farewell === Die Melodie von [[Liederbuch/ Jamaica Farwell|Jamaica Farwell]] wurde erheblich vereinfacht, damit du dir nicht zu viele Gedanken um den Rhythmus machen musst. Wenn du dich am Quintillo (dem Rhythmus vom Lagerfeuerschlag} orientierst, solltest du wenige Probleme haben. Es gibt recht viele Wiederholung. Die Strophe wurde bei der Wiederholung in die Oktave verschoben, damit das Stück exakt in den Skalenausschnitt passt. Du musst dir für die Fingersätze ggf. Strategien zurechtlegen, damit du die Finger bequem sortiert bekommst. Das Stück beginnt mit dem Ton G. Der (5) in 1. Fingersatz. ;Bb-Form Greife den C wie ein Bb-Barré im 3. Bund. Leite dir von diesem Akkord den Grundton (1) ab, und wandere beim 1. Fingersatz rauf zum Startton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-4-2;2-6-3;2-7-4; 3-3-6;3-5-7;3-6-1; 4-3-3;4-4-4;4-6-5; 5-3-7;5-4-1;5-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (A-, Bb-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ; F-Form Greife den C wie ein F-Barré im 8. Bund. Leite dir von diesem Akkord den Grundton (1) ab, und wandere beim 1. Fingersatz rauf zum Startton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 3-7-2;3-9-3;3-10-4; 4-7-6;4-9-7;4-10-1; 5-7-3;5-8-4;5-10-5; 6-7-7;6-8-1;6-10-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (E-, F-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ;D-Form Schiebe den D-Dur-Akkord in den 12. Bund. Ein D im 12. Bund verschoben ergibt ein C. Leite dir von diesem Akkord den Grundton (1) ab. Orientiere dich kurz im 2. Fingersatz und wandere zurück zum ersten Fingersatz zum Ton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 1-10-2;1-12-3;1-13-4; 2-10-6;2-12-7;2-13-1; 3-9-3;3-10-4;3-12-5; 4-9-7;4-10-1;4-12-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (D-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==3. Fingersatz== Es fällt auf, dass der 3. Fingersatz kein "Karré" hat. {| !Fingersatz !width="30px"| !Intervalle |- |[[Image:Scala Z RK-Z K-ZM K.svg]] !width="30px"| |[[Image:Scala 2 34-5 6-71 2.svg]] |} Der 3. Fingersatz ist gar kein eigenständiger Fingersatz. Der obere Teil des 3. Fingersatzes ist eigentlich schon der untere Teil des 2. Fingersatzes. Ebenso ist der untere Teil des 3. Fingersatzes gleichzeitig der Anfang des 1. Fingersatzes. Du musst dir Strategien zurechtlegen, wie du den Übergang vom Ende des 2. Fingersatzes über die 5 und die 6 hin zum 1. Fingersatz gestaltest. Es kommt beim 3. Fingersatz zu einem Lagewechsel nach links. Übe den 3. Fingersatz zuerst in den obersten Saitenlagen (E A D G x x) === Eine II-V-I-Verbindung === Wir spielen eine einfache Tonfolge über einer 2-5-1-Verbindung. Die Akkordtöne liegen zumeist auf den schweren Zählzeiten. * D, F, A, C gehören zum Dm7 * G, B, D, F gehören zum G7 * C, E, G gehören zum C-Dur-Akkord. Wir nutzen das CAGED-System, um uns grob auf dem Griffbrett zurechtzufinden. ==== Exkurs: Skalenformen ==== Die Namen der Skalen leiten sich übrigens von folgenden einfachen Tonleitern in den ersten Bünden ab: [[Image:Scala C-Am.svg|100px]] [[Image:Scala Bb-Gm.svg|100px]] [[Image:Scala G-Em.svg|100px]] [[Image:Scala F-Dm.svg|100px]] [[Image:Scala D-Hm.svg|100px]] Alle Akkorde die man aus diesen einfachen Tonarten kennt, Bassläufe und ähnliches lassen sich zum großen Teil auf die entsprechenden 5 CAGED-Skalen übertragen, fast so als habe man die Tonleiter mittels Kapodaster in eine höhere Lage verschoben. Wie du siehst, nennen wir die Skalen entgegen des reinen CAGED-System nicht E-Dur-Form (Shape) und nicht die A-Dur-Form (Shape), sondern F- und Bb-Dur-Form. <div style="float:left; padding:5px; border:black solid 1px; "> ;E-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-1;1-2-2;1-4-3; 2-0-5;2-2-6;2-4-7; 3-1-3;3-2-4;3-4-5; 4-1-7;4-2-1;4-4-2; 5-0-4;5-2-5;5-4-6; 6-0-1;6-2-2;6-4-3;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;F-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-3; 1-1-1; 1-3-2; 2-1-5; 2-3-6; 3-0-2; 3-2-3; 3-3-4; 4-0-6; 4-2-7; 4-3-1; 5-0-3; 5-1-4; 5-3-5; 6-0-7; 6-1-1; 6-3-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;G-Dur-Tonleiter <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-3-3; 1-4-1; 1-6-2; 2-4-5; 2-6-6; 3-3-2; 3-5-3; 3-6-4; 4-3-6; 4-5-7; 4-6-1; 5-3-3; 5-4-4; 5-6-5; 6-3-7; 6-4-1; 6-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Du siehst selbst, dass die G-Dur-Tonleiter von der Form her eher wie die F-Dur-Tonleiter als wie die E-Dur-Tonleiter aussieht. <div style="float:left; padding:5px; border:black solid 1px; "> ;A-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-5;1-2-6;1-4-7; 2-0-2;2-2-3;2-3-4; 3-1-7;3-2-1;3-4-2; 4-0-4;4-2-5;4-4-6; 5-0-1;5-2-2;5-4-3; 6-0-5;6-2-6;6-4-7;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;Bb-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-1-5; 1-3-6; 2-1-2; 2-3-3; 2-4-4; 3-0-6; 3-2-7; 3-3-1; 4-0-3; 4-1-4; 4-3-5; 5-0-7; 5-1-1; 5-3-2; 6-1-5; 6-3-6;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;C-Dur-Tonleiter <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-3-5; 1-5-6; 2-3-2; 2-5-3; 2-6-4; 3-2-6; 3-4-7; 3-5-1; 4-2-3; 4-3-4; 4-5-5; 5-2-7; 5-3-1; 5-5-2; 6-3-5; 6-5-6;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Du siehst selbst, dass die C-Dur-Tonleiter von der Form her eher wie die Bb-Dur-Tonleiter als wie die A-Dur-Tonleiter aussieht. ==== 3. Fingersatz II-V-I-Verbindung D-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;D-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:3;f:1; 4-9-7;4-10-1;4-12-2; 5-10-5;5-12-6; 6-10-2;6-12-3;6-13-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Wir beginnen oben bei der D-Form, wo sich der Lagewechsel des 3. Fingersatz noch nicht mit dem Lagewechsel zwischen der G und H-Saite (engl. B-Saite) aufhebt. Würde ich ein Capo in den 10. Bund setzen, dann würde ich die Melodie vom Fingersatz her wie D-Dur spielen. In D-Dur spiele ich diese II-V-I-Verbindung Em7 A7 D. Nehme ich das Capo weg, dann greife ich den Dm(7) als einen Barré der Em-Form im 10. Bund. Von diesem kann ich mir das D als Grundton ableiten. Alternativ siehst du in den Noten, dass die Übung mit dem Ton D anfängt. Dass die oberste Tiefe E-Saite im 12. Bund ebenfalls ein E ergibt, setze ich als bekannt voraus. Falls nicht, beschäftige dich noch einmal mit dem [[Gitarre: Lagerfeueranhang 2c|Stimmen der Gitarre]]. Ein Ganztonschritt bzw. zwei Bünde vor dem E ist der Ton D. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (D-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g-1 a-4 b-1 c4 | b8^\markup { \bold {G7} } a-4 g4-1 f8 e d4 | e8^\markup { \bold {C} } f g4-1 a8-4 b-1 c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung G-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;G-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 3-4-7;3-5-1;3-7-2; 4-5-5;4-7-6; 5-5-2;5-7-3;5-8-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 5. Bund setzen, dann würde man die Melodie vom Fingersatz her wie G-Dur spielen. In G-Dur spielt man diese II-V-I-Verbindung Am7 D7 G. Nimmt man das Capo weg, dann greift man den Dm(7) als einen Barré der Am-Form. Von diesem kannst du dir den D als Grundton ableiten. Einfacher geht es natürlich, wenn du weißt, dass der D im 5. Bund der A-Saite der Stimmton der D-Saite ist. </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (G-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g-1 a-4 b-1 c4 | b8^\markup { \bold {G7} } a-4 g4-1 f8 e d4 | e8^\markup { \bold {C} } f g4-1 a8-4 b-1 c d | c b c2. | \break d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung C-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;C-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-0-7;2-1-1;2-3-2; 3-0-5;3-2-6; 4-0-2;4-2-3;4-3-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Die C-Dur-Form der C-Dur Tonleiter sieht schlicht und ergreifend wie die C-Durtonleiter aus. </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (C-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #4 % \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \break d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung C-Form 12. Bund ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;C-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-12-7;2-13-1;2-15-2; 3-12-5;3-14-6; 4-12-2;4-14-3;4-15-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 12. Bund setzen, dann würde man die Melodie vom Fingersatz her wie C-Dur spielen. In C-Dur spielt man diese II-V-I-Verbindung Dm7 G7 C. Der Startton ist schlicht die D-Saite im 12. Bund. </div> {{clear}} Gerade noch hatten wir einen Lagewechsel nach links. Jetzt aber hebt sich der Lagewechsel nach links vom 3. Fingersatz mit dem Lagewechsel zwischen der G- und H-Saite auf. Es hört sich beim ersten Durchlesen kompliziert an, aber du hast nur 4 Lektionen zu lernen. Den 1. bis 3. Fingersatz und den Lagewechsel zwischen der G- und H-Saite. Das Auffinden der Töne und welche Akkorde zu welcher Tonart gehört, und wie man einen Capo benutzt, sollte eigentlich nichts neues für dich sein. Rein technisch gesehen vereinfacht sich der Fingersatz. Doch es kostet ein wenig Überlegung, wie sich die beiden Lagewechsel auf den 3. Fingersatz auswirken. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (C-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> Sollte es im 12 Bund unbequem zu spielen sein, weil du kein Cutaway hast (Aussparung für die hohen Bünde), übe die C-Form ein paar Bünde zurück in einer anderen Tonart. ==== 3. Fingersatz II-V-I-Verbindung F-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;F-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 1-7-7; 1-8-1;1-10-2; 2-8-5; 2-10-6; 3-7-2; 3-9-3; 3-10-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 6. Bund setzen, dann würde man die Melodie vom Fingersatz her wie F-Dur spielen. In C-Dur spielt man diese II-V-I-Verbindung Gm7 C7 F. Wenn du den C wie ein F-Barré im 8. Bund greifst, dindest du den Grundton (1) auf der hohen E-Saite. Von dem wanderst du runter zum Startton (2). </div> {{clear}} Auch hier hebt sich der Lagewechsel zwischen der G- und H-Saite mit dem Lagewechsel des 3. Fingersatz gegeneinander auf, was den Fingersatz grifftechnisch wieder vereinfacht. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (F-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> == Wie geht es weiter? == Solltest du als Quereinsteiger in diese Lektion gestolpert sein, dann schaue dir die erste Lektion zum [[Gitarre: Aufbau der CAGED-Skalenformen|Aufbau der CAGED-Skalenformen]] an. Insbesondere die Abschnitte, die hier übergangen wurden. Dannach kannst du mit der ersten CAGED-Skala in der D-Dur-Form weitermachen. <noinclude> {{Navigation zurückhochvor |zurücklink=Gitarre: CAGED-Skala G-Dur-Form |zurücktext=CAGED-Skala G-Dur-Form |hochlink=Gitarre: Die Major-Patterns |hochtext=Einführung: Major-Patterns |vorlink=Gitarre: CAGED-Skala D-Dur-Form |vortext=CAGED-Skala D-Dur-Form }} </noinclude> ik4zus5bhpzd555d58x7wz3xvbt5xws 1090588 1090587 2026-09-08T19:14:43Z Mjchael 2222 /* 1. Fingersatz • E- (F-)Form */ 1090588 wikitext text/x-wiki {{:Gitarre/ Navi|Sologitarre| {{:Gitarre: Sologitarre/ Navi Improvisation in Dur und Moll}}| img=Guitar 1.svg |bg=#F8f8f8|border=darkorange|color=dark|px=80|navi=Einführung in die Sologitarre}} = Wiederholung der Fingersätze = ; mit Schwerpunkt auf den Stammtönen Diese Wiederholung ist zum einen dafür gedacht, die vorhergehenden Übungen auf jeder Saitenlage zu machen, und auch in jeder Bundlage, gleichgültig ob die Finger eng beieinander oder weit auseinander stehen. Zum andern sind diese als Vorbereitung in die Sologitarre gedacht. Beispielsweise als Auflockerungsübung zwischen den Barré-Akkorden. Besonderen Augenmerk wollen wir hier auf die Notennamen legen. Diese können hier mitgelernt werden. Solltest du meinen, das sei noch nicht für dich dran und kann warten, dann springe zur ersten CAGED-Skala. Du kannst beim Kapitel Longform nochmal hierrauf zurückkommen. * [[Gitarre: CAGED-Skala D-Dur-Form|CAGED-Skala D-Dur-Form]] Lassen wir die [[Gitarre: Aufbau der CAGED-Skalenformen|erste Lektion]] (insbesondere für die Quereinsteiger) noch einmal Revue passieren. Die folgenden Übungen enthalten oft eine Folge von ein- oder zweitaktigen Sequenzen. Eine Sequenz ist ein Motiv, dass sich auf verschiedenen Tonhöhen wiederholt. Auch ohne Notenkenntnisse kannst du den Verlauf und die Wiederholungen der Sequenzen einfacher im Notenbild verfolgen, als in der Tabulatur; insbesondere wenn du dir gleichzeitig die Übung anhörst. Es kommen auch Ausschnitte aus klassischen Stücken, Folksongs, Kinderlieder o.ä. vor. Die einfache Struktur oder der Bekanntheitsgrad der Melodien sollen dir das Üben erleichtern. Die Finger finden so leichter ihre Position, als wenn du erstmal jede einzelne Note aus der Tabulatur entschlüsseln musst. Jede Übung wird auf allen Saitenlagen geübt. Vorher blieben wir in den mittleren Lagen. Jetzt gehen wir auch in die ersten Bünde, wo man die Finger etwas mehr spreizen muss, und in die höheren Lagen, wo es ein wenig eng wird. Die Stücke wiederholen sich in dieser Lektion in der selben Tonart, doch auf verschiedenen Bünden. Du spielst immer die selbe Tonfolge, nur auf verschiedenen Tonhöhen bzw. auf verschiedenen Saitenlagen. Lediglich zwischen der G- und H-Saite musst du dir jedesmal überlegen, wie sich der Lagewechsel auf den Fingersatz auswirkt. Doch der Fingersatz in den anderen höheren Lagen bleibt immer gleich. Wie die Tonfolgen mit dem CAGED-System zusammenhängen, das muss dich nur am Rande interessieren. Es wird in den folgenden Lektionen näher und ausführlicher erleutert. :[[Datei:Scala Griffbrett.svg]] Wir hatten uns bei den vorhergehenden Übungen weitestgehend an den Intervallen (1-j7) und an der Tabulatur orientiert. Diese sind in allen Tonarten gleich. Suche zuerst das Karré! Daran orientierst du dich. :[[Image:Scala Carree.svg]] {{Tipp|Lerne bei der C-Dur-Tonleiter nicht nur die Intervalle <br> 2 - 3 4 - 5<br> 6 - j7 1 - 2<br> sondern benenne auch jede einzelne Note. <br> D - E F - G<br> A - H C - D<br> So bekommst du einen recht einfachen Überblick über das Griffbrett.}} == Töne der C-Dur Tonleiter auf dem Griffbrett == Wir wollen uns in dieser Lektion auf die Töne bzw. die Notennamen konzentrieren. Allerdings sparen wir uns vorerst alle Töne mit Vorzeichen aus. Die [[Gitarre: Aufbau der CAGED-Skalenformen|ersten Übungen zum 1. und 2. Fingersatz]] werden auf die Tonart C-Dur bzw. A-Moll übertragen und wir spiele sie in den hier gezeigten Positionen. Wir fangen mit dem zweiten Fingersatz an, wo wir entweder den Ton C oder den Ton A der C-Dur- bzw. Am-Tonleiter als Orientierung nutzen :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] Du hast vermutlich allerlei Akkordformen des CAGED-System gesehen. <div class="noprint"> ;Animation [[Image:Crd Grundtonschema ani.gif]] </div> <score> << \new ChordNames { \chordmode { c1 c c c c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 e-2 g c'-1 e' > < c-1\5 g-3\4 c'-3\3 e'-4\2 g'-1 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 e-2\5 g-1\4 c'-1\3 e'-1\2 c''-4\1> < c-1\6 g-2\5 c'-3\4 e'-4\3 g'-1\2 c''-1\1> \once \override FretBoard.fret-diagram-details.dot-color = #'white < c'-1\4 g'-2\3 c''-4\2 e''-3\1 > < c'-4\5 e'-3\4 g'-1\3 c''-2\2 e''-1\1 > } >> </score> Wenn du schon Fingerstyle oder Jazz spielst, mögen dir viele der Formen bekannt vorkommen. Doch selbst wenn du bis jetzt nur das [[Gitarre: Rockdiplom|Rockdiplom]] gemacht hast und mit den dort vorkommenden Barré-Akkorden vertraut bist, wirst du sehen, dass die einfachen Barré-Akkorde ausreichen, um sich auf dem Griffbrett zu zurechtzufinden. Die [[Gitarre: C-Dur-Tonleiter Workshop|C-Dur-Tonleiter in den ersten drei Bünden]] setze ich als bekannt voraus und es sollte dir nicht allzu schwer fallen, diese in den 12. Bund zu übertragen. :[[Datei:Scala C-Am.svg|150px]][[Datei:C-Dur_Majorpattern_III.jpg|150px]] C-Dur als Barré im 3. Bund kennst du vom Rockdiplom, und C-Dur im 8. Bund ist auch kein Hexenwerk. Dazwischen liegt nach dem CAGED-System die G-Form, die dir vermutlich noch nicht untergekommen ist (hier mit weißem Fingersatz). Statt uns die Töne von der G-Form abzuleiten, machen wir es uns einfacher und leiten uns die Töne zur Orientierung vom Am im 5. Bund ab. Du erinnerst dich noch an die Dur- und Mollparallelen? (C- \ Am-Tonleiter bzw. G- \ Em-Form). Oder du nutzt die Grundtöne des C-Barré im 8. Bund. <score> << \new ChordNames { \chordmode { c1 c c a:m c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 e-2 g c'-1 e' > < c-1\5 g-3\4 c'-3\3 e'-4\2 g'-1 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 e-2\5 g-1\4 c'-1\3 e'-1\2 c''-4\1> < a,-1\6 e-3\5 a-4\4 c'-1\3 e'-1\2 a'-1\1 > < c-1\6 g-2\5 c'-3\4 e'-4\3 g'-1\2 c''-1\1> < c'-4\5 e'-3\4 g'-1\3 c''-2\2 e''-1\1 > } >> </score> Leite dir also die Grundtöne C und A von den dir bekannten Barré-Akkorden ab und spare dir die ungewöhnlicheren Akkordformen auf, bis sie dir später beim Fingerstyle oder Jazz begegnen. Es macht dabei garnichts aus, wenn du zum Auffinden der Grundtöne und zum Finden des Starttons ein paar Sekunden brauchst. Du wirst sehen, dass die Wiederholungen der bekannten Übungen auf den verschiedenen Bünden und in verschiedenen Oktavebereichen leicht von der Hand gehen. Lediglich beim Lagewechsel zwischen der G- und H-Saite musst du etwas überlegen. <score> << \new ChordNames { \chordmode { c1 c c a c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 c'-1 > < c-1\5 c'-3\3 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 c'-1\3 c''-4\1> < a,-1\6 a-4\4 a'-1\1 > < c-1\6 c'-3\4 c''-1\1> < c'-4\5 c''-2\2 > } >> </score> Diese wenigen"Eckpunkte" reichen aus, um dich grob auf dem Griffbrett zurechtzufinden. Suche sie noch einmal in der Skala und natürlich auch auf deinem Griffbrett. :[[Datei:C-Major-Scale on the fretboard.svg]] == Zweiter Fingersatz == :[[Datei:Scala 6_71-2_34.svg]] Zuerst suchen wir uns in der C-Dur-Tonleiter überall den zweiten Fingersatz heraus. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] Zur leichteren Orientierung wird die Grafik bei jeder neuen Melodie wiederholt. === Rondeau (Auszug) === Die eintaktige Sequenzen wurde aus einem Rondeau von J.S. Bach entnommen, dass beliebig wiederholt werden kann. Der Grundton C, welcher im letzten Takt rot eingefärbt wurde, wird mit dem kleinen Finger gegriffen. Du kannst tatsächlich die Noten nutzen (sofern du es schon kannst) oder aber du orientierst dich an den Notennamen. Am Anfang des Griffbrettes brauchen wir den zweiten Fingersatz nicht vollständig. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #5 % \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> In der A-(Bb-)Form müssen wir den Lagewechsel zwischen der G- und H-Saite beachten. Übrigens werden hier die Töne in der englischen Form angegeben. (Bb-Form und der Ton B statt des deutschen H.) Nur der erste Bund wird bis zur letzten Note in der dritten Lage gespielt. Der Rest bis zur letzten Note in der zweiten Lage. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (A-, Bb-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e-4 d-2 c d e d c b d c b c d c b a c b a b c d b c d-1 } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Statt in der G-Form das C zu suchen, suche lieber das A im 5. Bund (hier grün hervorgehoben). Oder du leitest dir das C vom Barré im 8. Bund ab. Der Startton E ist auf der A Saite im 7. Bund unter dem Ringfinger. Ansonsten stellt der Fingersatz keine Herausforderung mehr dar. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (G-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b \once \override NoteHead #'color = #green a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Der kleine Finger des C-Barré im 8. Bund in der E- bzw. F-Form gibt gleichzeitig das C des zweiten Fingersatz an. Du siehst, dass ab jetzt alles leichter geworden ist, weil sich ansonsten nichts mehr am Fingersatz ändert. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (E- F-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Für den Grundton C müssen wir uns die D-Form gar nicht so genau ins Gedächtnis rufen, wenn uns die C-Form viel vertrauter ist. Diese hohe Lage ist für E-Gitarristen oder Gitarren mit Cutaway gedacht. Auf der Konzertgitarre ist die sehr hohe Lage schlecht zu spielen. Gehe ggf. einen Kompromiss ein, und spiele diese hohe Saitenlage ein paar Bünde tiefer als Übung nur für den Fingersatz aber nicht für die Notennamen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Noten über dem hohen C (der mit zwei Hilfslinien) wird dir seltener begegnen, da in dem Fall bevorzugt die Noten nach unten oktaviert werden. (Beachte die 8 im Notensystem.) Bei den weiteren Übungen werden jedoch die Versionen mit den vielen Hilfslinien angezeigt. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { \ottava #1 e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Mit der C-Form in den ersten drei Bünden im Hinterkopf ist der 12. Bund leicht zu bewältigen. Wieder eine Übung, die weniger für Konzertgitarren geeignet ist. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === "Das häßliche Entlein" oder "Alle meine Entchen"<ref>Anspielung auf ein Märchen der Gebrüder Grimm nebst einem bekannten deutschen Kinderlied.</ref> in A-Moll === Die vorherige Übung war in Dur, und hier verwenden wir ein und den selben Fingersatz in Moll. Wie du siehst und hörst, lässt sich ein Fingersatz oder ein Pattern nicht eindeutig einer einzigen Tonart zuordnen. Der Schlusston oder der Schlussakkord (hier der Ton A bzw. der Akkord Am) bestimmt die Tonart. Der Grundton A ist hier die Sexte (6) des zugrunde liegenden C-Major-Pattern. Es bleibt dir überlassen, ob du zur Orientierung lieber den Grundton A (grün) bestimmst, oder das C aus dem Karré (rot). Wenn in einer Tabulatur über einer Ziffer zwei Notenhälse stehen, so ist das ein Zeichen für eine halbe Note, die zwei Schläge dauert. Da dieses für viele Gitarristen sehr ungewöhnlich aussieht, verzichtet man oft auf Taktstriche in der Tabulatur. In dem Fall lässt sich die Tondauer allein an den Notenwerten ablesen. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-/Am-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #5 % \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Der Lagewechsel zwischen der G- und H-Saite ist hier leicht zu bewältigen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Gm-/Bb-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d-1 e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2-4 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Auch hier ist es wieder einfacher das A (grün) zu suchen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Em-/G-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (E- / F-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Statt lange nach dem Grundton der D-Form zu suchen, erinneren wir uns kurz, wo der Grundton C auf der H- (B-)Saite sein muß (13. Bund). <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> === Die Moldau (Hauptmotiv) === Die Abfolge der Töne der folgenden Übung unterscheidet sich kaum von der vorhergehenden. Doch mit dem anderen Rhythmus haben wir das Hauptmotiv von der Komposition {{Youtube-Suche|Smetana+Die+Moldau|"Die Moldau" von Bedrich Smetana}} (ohne Auftakt und rhythmisch vereinfacht). Auch wenn es hier (wie in der 7. Übung) nur die Molltonleiter rauf und runter geht, merkst du hoffentlich, wieviel der Takt und Rhythmus an der Wirkung ausmacht. Wenn du später mal meinst, deine Improvisationen hören sich langweilig an, dann solltest du dich mehr mit Rhythmus beschäftigen. Dazu kannst du dich auch ein wenig mit Schlagmustern beschäftigen. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Am-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Warum die Form hier Gm-Form genannt wird, das wird dir in den nachfolgenden Lektionen klarer werden. Auf Fingersatzangaben können wir hier verzichten, wenn du vorher "Alle meine Entchen in Am" gespielt hast. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Bb- /Gm-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier bietet sich besonders an, den Am-Barré zur Orientierung zu verwenden. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Em-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Auch hier gibt dir der kleine Finger des Am-Barrés den Grundton an. Du kannst dir die Dm-Form aber auch über die F-Form (C im 8. Bund) ableiten. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (F- /Dm-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Zähle vom C (H-Saite, 13. Bund) rückwärts zum A. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D- /Bm7-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier wird die erste Übung in den 12. Bund verschoben. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C- /Am-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==1. Fingersatz== Dir wird wohl aufgefallen sein, dass beim zweiten Fingersatz der Ton G fehlt. Den üben wir mit dem ersten Fingersatz. :[[Datei:Scala 71_2-34_5.svg]] Beachte, dass der Grundton (1) unter dem Ringfinger (also im zweiten Bund dieses Fingersatzes) ist, und dass du deine freie Improvisationsübung in Dur günstigerweise mit der (1) beginnen oder zumindest enden sollte. Diesen Fingersatz suchen wir in der C-Dur-Tonleiter auf dem Griffbrett. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] === Eintaktige Sequenzen === Die erste Lage mit leeren Saiten stellt noch keine Herausforderung dar. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • A- (Bb-)Form ==== Du musst noch nicht einmal den C-Barré im 3. Bund bemühen, um den Grundton zu finden. Die C-Dur-Tonleiter in den ersten drei Bünden reicht. Natürlich kannst du auch den Startton G suchen. Die Tabulatur sagt dir "D-Saite 5. Bund". Erinnere dich daran, dass dies der Stimmton der D-Saite ist (beim Stimmen nach Bünden). Auch hier ist der Fingersatz leicht. <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • A- (Bb-)Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 4 2 3 darkgrey ) (place-fret 4 3 4 yellow3 ) (place-fret 4 5 5 darkgrey ) (place-fret 5 2 "j7" yellow3 ) (place-fret 5 3 1 black ) (place-fret 5 5 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb)-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • G-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • G-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 2 5 3 darkgrey ) (place-fret 2 6 4 yellow3 ) (place-fret 2 8 5 darkgrey ) (place-fret 3 4 "j7" yellow3 ) (place-fret 3 5 1 black ) (place-fret 3 7 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Bei der G-Form kommt es zwischen der G- und H-Saite zu einem Lagewechsel. Du musst dir jedesmal eine Strategie zurechtlegen, wann und wie du am besten den Lagewechsel durchführst. Wenn du Glück hast, findest du im Notenbild einen Hinweis, wie man günstig die Lage wechseln kann. Ich empfehle dir dort wo die 2 über den Noten steht, den Mittelfinger zu nehmen. *(1 = Z, 2 = M, 3 = R, 4 = K, 0 = leere Saite) Betrachte solche Hinweis nur als Vorschlag, denn es gibt keine verbindliche Regel, wie der Lagewechsel zu erfolgen hat. Übst du die gleiche Sequenzen ein paar Saiten höher oder tiefer, geht es leichter von der Hand. Beachte den Lagewechsel zwischen der G- und H-Saite. Den Grundton C kannst du dir auch vom Ringfinger auf der G-Saite des C-Barrés ableiten. Du musst dir hier eine Strategie zurechtlegen, wann du den Lagewechsel durchführen möchtest. Ich empfehle hier, den Lagewechsel so früh wie möglich zu machen, damit du den Zeigefinger frei hast, um gleich hintereinander zwei Töne in einem Bund zu spielen. Betrachte die Angaben zum Fingersatz nur als Vorschlag. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d-4 e-2 f-3 d e f e d c d e c-1 d-4 e-2 d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier eine alternative Lösung. Du kannst einen kleinen Barré über die Noten C und E legen, und den Lagewechsel später ausführen. Das V unter dem C zeigt hier den 5. Bund an, und nicht etwa Abschläge. Der Lagewechsel erfolgt hier im letzten Takt. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d e f d e f e d-2 \textSpannerDown \override TextSpanner.bound-details.left.text = "V" c-1\startTextSpan d e-1 c-1 d e-1\stopTextSpan d-4 c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • E- (F-)Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • E- (F-)Form <score raw="1"> \version "2.24.4" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 5 7 3 darkgrey ) (place-fret 5 8 4 yellow3 ) (place-fret 5 10 5 darkgrey ) (place-fret 6 7 "j7" yellow3 ) (place-fret 6 8 1 black ) (place-fret 6 10 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Den Grundton C auf der E-Saite kannst du dir vom C-Barré der E-Form (wie ein F- Barré) im 8. Bund ableiten. Der Fingersatz ist wieder einfach. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E-(F)-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • D-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • D-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 3 9 3 darkgrey ) (place-fret 3 10 4 yellow3 ) (place-fret 3 12 5 darkgrey ) (place-fret 4 9 "j7" yellow3 ) (place-fret 4 10 1 black ) (place-fret 4 12 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div>Die Tonhöhe ist die selbe, wie in der G-Form, wo wir uns komplizierte Strategien für den Fingersatz zurechtlegen mussten. In dieser Lage ist alles einfacher. Wenn du später mal einen herausfordernden Lick zwischen der G- und H-Saite hast, wäre eine weitere gangbare Strategie den Lick in eine fingertechnisch günstigere Lage zu verlegen. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • C-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • C-Form <score raw="1"> \version "2.24.4" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 1 12 3 darkgrey ) (place-fret 1 13 4 yellow3 ) (place-fret 1 15 5 darkgrey ) (place-fret 2 12 "j7" yellow3 ) (place-fret 2 13 1 black ) (place-fret 2 15 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Hier wurde die C-Durtonleiter in den 12. Bund verlegt. Der Grundton ist auf der H-Saite im 13. Bund. (Eine Oktave höher als bei der C-Dur Tonleiter in den ersten drei Bünden.) Wer keine E-Gitarre hat oder wer keine Akkustik mit Cutaway hat, der kann die C-Form auch in einem niedrigeren Bund üben. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c''' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Halbtaktige Sequenzen === Diesmal hast du halbtaktige Sequenzen, die einmal wiederholt werden. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== A- (Bb-)Form • 1. Fingersatz ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • A- (Bb-)Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 4 2 "E" darkgrey ) (place-fret 4 3 "F" yellow3 ) (place-fret 4 5 "G" darkgrey ) (place-fret 5 2 "B" yellow3 ) (place-fret 5 3 "C" black ) (place-fret 5 5 "D" darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Leite dir den Grundton vom C-Dur-Akkord, oder vom C-Barré im 3. Bund ab. Lerne nicht nur die Intervlle, sondern auch die Notennamen. (Zumindest bei den einfachen Tonarten F-, G- und C-Dur). Andere Tonarten kommen später dran. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- / Bb-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== G-Form • 1. Fingersatz ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • G-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 2 5 "E" darkgrey ) (place-fret 2 6 "F" yellow3 ) (place-fret 2 8 "G" darkgrey ) (place-fret 3 4 "B" yellow3 ) (place-fret 3 5 "C" black ) (place-fret 3 7 "D" darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div>Du kannst die beiden hintereinander folgenden Noten im 5. Bund mit einem Mini-Barré ausführen, und die Lagewechsel mittels Slide (=&nbsp;Glissando) durchführen, oder wie in der Wiederholung ohne Slide durchführen. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major c8-1 g' f e d f e d c-1 e-1 d c-1(\glissando b-1) d c b-1(\glissando c1-1) c8-2 g' f e d f e d c-1 e-2 d-4 c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== E- (F-)Form • 1. Fingersatz ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • E- (F-)Form <score raw="1"> \version "2.24.4" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 5 7 "E" darkgrey ) (place-fret 5 8 "F" yellow3 ) (place-fret 5 10 "G" darkgrey ) (place-fret 6 7 "B" yellow3 ) (place-fret 6 8 "C" black ) (place-fret 6 10 "D" darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Fingersatztechnisch wieder problemlos. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • D-Form ==== <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • C-Form ==== <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> === Ein Vogel wollte Hochzeit machen === Hier habe ich ein relativ bekanntes Kinderlied gefunden, dass perfekt zum 1. Fingersatz passt. Die Tondauern sind für Ungeübte in Sachen Noten schwer herauszulesen. Kennst du aber das Stück, oder hörst du es dir mehrmals an, so ist es keine unüberwindbare Schwierigkeit. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] Folgt das G nach dem D, greifst du den besser mit dem kleinen Finger. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d-3( g-4) g g16 e | c8 8 8 g'16 e d8 d d-3 g16-4 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier ist es wohl am einfachsten, dass du den kleinen Finger umlegst, wenn du nach dem D den G greifen willst. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb-)Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d-3( g-4) g g16 e | c8 8 8 g'16 e d8-3 d d g16-4 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Wenn der Ton C auf ein E-folgt, kann man entweder ein <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e-2 c-1 g' e d( g) g g16 e-2 | c8-1 8 8 g'16 e d8 d d g16 f | e8-2 c-1 d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Halbtaktige Sequenzen (2) === :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Bei der G-Form kommt es zwischen der G- und H-Saite zu einem Lagewechsel. Du musst dir jedesmal eine Strategie zurechtlegen, wann und wie du am besten den Lagewechsel durchführst. Wenn du Glück hast, findest du im Notenbild einen Hinweis, wie man günstig die Lage wechseln kann. Ich empfehle dir dort wo die 2 über den Noten steht, den Mittelfinger zu nehmen. *(1 = Z, 2 = M, 3 = R, 4 = K, 0 = leere Saite) Betrachte solche Hinweis nur als Vorschlag, denn es gibt keine verbindliche Regel, wie der Lagewechsel zu erfolgen hat. Übst du die gleiche Sequenzen ein paar Saiten höher oder tiefer, geht es leichter von der Hand. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c''' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Einsingen === Diese beiden Motive kennen viele, die schon einmal in einem Chor gesungen haben. Leider entsprechen viele Lieder in ihrem Tonumfang nicht genau einem der vollständigen drei Fingersätze oder der später folgenden Skalen. Zumeist werden nur Ausschnitte aus den Patterns gebraucht. Im ersten Motiv fehlt beispielsweise die große Septime (j7) vor dem Grundton. Dafür enthält das zweite Motiv die große Septime (j7). Das zweite Motiv eicht den Chor auf die gerade geforderte Tonart. Hier werden nur Akkordtöne in einer auf oder absteigenden Tonfolge gespielt (auch Arpeggios genannt). Der A7-Akkord enthält sowohl den Leitton (j7) der zum Grundton (1) hin leitet, als auch den Strebeton (4) die zur Durterz (3) hin strebt. Mit den zwei spannungsreichen Tönen, die sich zum Grundakkord auflösen wollen, wird der Chor auf die Durtonart eingenordet. Hier brauche ich dir nicht zu erklären, wo der Grundton D ist. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A-(Bb-)Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E-(F-)Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==Erste über den zweiten Fingersatz== Wie du siehst, kommt hier jedesmal zuerst der erste Fingersatz mit dem "Karree" rechts, und dannach kommt der Fingersatz mit dem "Karree" links. Sie sind immer untereinander. Nur zwischen der G- und B-Saite verschiebt sich alles um einen Bund. <div style="float:left; padding:5px; border:black solid 1px; "> ;F-Form <score raw="1"> \version "2.14.2" \paper{ indent=0\mm line-width=120\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% 4-o zeigt 4. Saite offen \fret-diagram #"s:2;f:1; 3-3-2;3-5-3;3-6-4; 4-3-6;4-5-7;4-6-1; 5-3-3;5-4-4;5-6-5; 6-3-7;6-4-1;6-6-2;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;Bb-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:2;f:1; 2-4-2;2-6-3;2-7-4; 3-3-6;3-5-7;3-6-1; 4-3-3;4-4-4;4-6-5; 5-3-7;5-4-1;5-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;D-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:2;f:1; 1-4-2;1-6-3;1-7-4; 2-4-6;2-6-2;2-7-1; 3-3-3;3-4-4;3-6-5; 4-3-7;4-4-1;4-6-2;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} === Jamaica Farewell === Die Melodie von [[Liederbuch/ Jamaica Farwell|Jamaica Farwell]] wurde erheblich vereinfacht, damit du dir nicht zu viele Gedanken um den Rhythmus machen musst. Wenn du dich am Quintillo (dem Rhythmus vom Lagerfeuerschlag} orientierst, solltest du wenige Probleme haben. Es gibt recht viele Wiederholung. Die Strophe wurde bei der Wiederholung in die Oktave verschoben, damit das Stück exakt in den Skalenausschnitt passt. Du musst dir für die Fingersätze ggf. Strategien zurechtlegen, damit du die Finger bequem sortiert bekommst. Das Stück beginnt mit dem Ton G. Der (5) in 1. Fingersatz. ;Bb-Form Greife den C wie ein Bb-Barré im 3. Bund. Leite dir von diesem Akkord den Grundton (1) ab, und wandere beim 1. Fingersatz rauf zum Startton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-4-2;2-6-3;2-7-4; 3-3-6;3-5-7;3-6-1; 4-3-3;4-4-4;4-6-5; 5-3-7;5-4-1;5-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (A-, Bb-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ; F-Form Greife den C wie ein F-Barré im 8. Bund. Leite dir von diesem Akkord den Grundton (1) ab, und wandere beim 1. Fingersatz rauf zum Startton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 3-7-2;3-9-3;3-10-4; 4-7-6;4-9-7;4-10-1; 5-7-3;5-8-4;5-10-5; 6-7-7;6-8-1;6-10-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (E-, F-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ;D-Form Schiebe den D-Dur-Akkord in den 12. Bund. Ein D im 12. Bund verschoben ergibt ein C. Leite dir von diesem Akkord den Grundton (1) ab. Orientiere dich kurz im 2. Fingersatz und wandere zurück zum ersten Fingersatz zum Ton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 1-10-2;1-12-3;1-13-4; 2-10-6;2-12-7;2-13-1; 3-9-3;3-10-4;3-12-5; 4-9-7;4-10-1;4-12-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (D-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==3. Fingersatz== Es fällt auf, dass der 3. Fingersatz kein "Karré" hat. {| !Fingersatz !width="30px"| !Intervalle |- |[[Image:Scala Z RK-Z K-ZM K.svg]] !width="30px"| |[[Image:Scala 2 34-5 6-71 2.svg]] |} Der 3. Fingersatz ist gar kein eigenständiger Fingersatz. Der obere Teil des 3. Fingersatzes ist eigentlich schon der untere Teil des 2. Fingersatzes. Ebenso ist der untere Teil des 3. Fingersatzes gleichzeitig der Anfang des 1. Fingersatzes. Du musst dir Strategien zurechtlegen, wie du den Übergang vom Ende des 2. Fingersatzes über die 5 und die 6 hin zum 1. Fingersatz gestaltest. Es kommt beim 3. Fingersatz zu einem Lagewechsel nach links. Übe den 3. Fingersatz zuerst in den obersten Saitenlagen (E A D G x x) === Eine II-V-I-Verbindung === Wir spielen eine einfache Tonfolge über einer 2-5-1-Verbindung. Die Akkordtöne liegen zumeist auf den schweren Zählzeiten. * D, F, A, C gehören zum Dm7 * G, B, D, F gehören zum G7 * C, E, G gehören zum C-Dur-Akkord. Wir nutzen das CAGED-System, um uns grob auf dem Griffbrett zurechtzufinden. ==== Exkurs: Skalenformen ==== Die Namen der Skalen leiten sich übrigens von folgenden einfachen Tonleitern in den ersten Bünden ab: [[Image:Scala C-Am.svg|100px]] [[Image:Scala Bb-Gm.svg|100px]] [[Image:Scala G-Em.svg|100px]] [[Image:Scala F-Dm.svg|100px]] [[Image:Scala D-Hm.svg|100px]] Alle Akkorde die man aus diesen einfachen Tonarten kennt, Bassläufe und ähnliches lassen sich zum großen Teil auf die entsprechenden 5 CAGED-Skalen übertragen, fast so als habe man die Tonleiter mittels Kapodaster in eine höhere Lage verschoben. Wie du siehst, nennen wir die Skalen entgegen des reinen CAGED-System nicht E-Dur-Form (Shape) und nicht die A-Dur-Form (Shape), sondern F- und Bb-Dur-Form. <div style="float:left; padding:5px; border:black solid 1px; "> ;E-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-1;1-2-2;1-4-3; 2-0-5;2-2-6;2-4-7; 3-1-3;3-2-4;3-4-5; 4-1-7;4-2-1;4-4-2; 5-0-4;5-2-5;5-4-6; 6-0-1;6-2-2;6-4-3;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;F-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-3; 1-1-1; 1-3-2; 2-1-5; 2-3-6; 3-0-2; 3-2-3; 3-3-4; 4-0-6; 4-2-7; 4-3-1; 5-0-3; 5-1-4; 5-3-5; 6-0-7; 6-1-1; 6-3-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;G-Dur-Tonleiter <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-3-3; 1-4-1; 1-6-2; 2-4-5; 2-6-6; 3-3-2; 3-5-3; 3-6-4; 4-3-6; 4-5-7; 4-6-1; 5-3-3; 5-4-4; 5-6-5; 6-3-7; 6-4-1; 6-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Du siehst selbst, dass die G-Dur-Tonleiter von der Form her eher wie die F-Dur-Tonleiter als wie die E-Dur-Tonleiter aussieht. <div style="float:left; padding:5px; border:black solid 1px; "> ;A-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-5;1-2-6;1-4-7; 2-0-2;2-2-3;2-3-4; 3-1-7;3-2-1;3-4-2; 4-0-4;4-2-5;4-4-6; 5-0-1;5-2-2;5-4-3; 6-0-5;6-2-6;6-4-7;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;Bb-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-1-5; 1-3-6; 2-1-2; 2-3-3; 2-4-4; 3-0-6; 3-2-7; 3-3-1; 4-0-3; 4-1-4; 4-3-5; 5-0-7; 5-1-1; 5-3-2; 6-1-5; 6-3-6;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;C-Dur-Tonleiter <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-3-5; 1-5-6; 2-3-2; 2-5-3; 2-6-4; 3-2-6; 3-4-7; 3-5-1; 4-2-3; 4-3-4; 4-5-5; 5-2-7; 5-3-1; 5-5-2; 6-3-5; 6-5-6;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Du siehst selbst, dass die C-Dur-Tonleiter von der Form her eher wie die Bb-Dur-Tonleiter als wie die A-Dur-Tonleiter aussieht. ==== 3. Fingersatz II-V-I-Verbindung D-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;D-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:3;f:1; 4-9-7;4-10-1;4-12-2; 5-10-5;5-12-6; 6-10-2;6-12-3;6-13-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Wir beginnen oben bei der D-Form, wo sich der Lagewechsel des 3. Fingersatz noch nicht mit dem Lagewechsel zwischen der G und H-Saite (engl. B-Saite) aufhebt. Würde ich ein Capo in den 10. Bund setzen, dann würde ich die Melodie vom Fingersatz her wie D-Dur spielen. In D-Dur spiele ich diese II-V-I-Verbindung Em7 A7 D. Nehme ich das Capo weg, dann greife ich den Dm(7) als einen Barré der Em-Form im 10. Bund. Von diesem kann ich mir das D als Grundton ableiten. Alternativ siehst du in den Noten, dass die Übung mit dem Ton D anfängt. Dass die oberste Tiefe E-Saite im 12. Bund ebenfalls ein E ergibt, setze ich als bekannt voraus. Falls nicht, beschäftige dich noch einmal mit dem [[Gitarre: Lagerfeueranhang 2c|Stimmen der Gitarre]]. Ein Ganztonschritt bzw. zwei Bünde vor dem E ist der Ton D. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (D-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g-1 a-4 b-1 c4 | b8^\markup { \bold {G7} } a-4 g4-1 f8 e d4 | e8^\markup { \bold {C} } f g4-1 a8-4 b-1 c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung G-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;G-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 3-4-7;3-5-1;3-7-2; 4-5-5;4-7-6; 5-5-2;5-7-3;5-8-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 5. Bund setzen, dann würde man die Melodie vom Fingersatz her wie G-Dur spielen. In G-Dur spielt man diese II-V-I-Verbindung Am7 D7 G. Nimmt man das Capo weg, dann greift man den Dm(7) als einen Barré der Am-Form. Von diesem kannst du dir den D als Grundton ableiten. Einfacher geht es natürlich, wenn du weißt, dass der D im 5. Bund der A-Saite der Stimmton der D-Saite ist. </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (G-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g-1 a-4 b-1 c4 | b8^\markup { \bold {G7} } a-4 g4-1 f8 e d4 | e8^\markup { \bold {C} } f g4-1 a8-4 b-1 c d | c b c2. | \break d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung C-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;C-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-0-7;2-1-1;2-3-2; 3-0-5;3-2-6; 4-0-2;4-2-3;4-3-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Die C-Dur-Form der C-Dur Tonleiter sieht schlicht und ergreifend wie die C-Durtonleiter aus. </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (C-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #4 % \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \break d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung C-Form 12. Bund ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;C-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-12-7;2-13-1;2-15-2; 3-12-5;3-14-6; 4-12-2;4-14-3;4-15-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 12. Bund setzen, dann würde man die Melodie vom Fingersatz her wie C-Dur spielen. In C-Dur spielt man diese II-V-I-Verbindung Dm7 G7 C. Der Startton ist schlicht die D-Saite im 12. Bund. </div> {{clear}} Gerade noch hatten wir einen Lagewechsel nach links. Jetzt aber hebt sich der Lagewechsel nach links vom 3. Fingersatz mit dem Lagewechsel zwischen der G- und H-Saite auf. Es hört sich beim ersten Durchlesen kompliziert an, aber du hast nur 4 Lektionen zu lernen. Den 1. bis 3. Fingersatz und den Lagewechsel zwischen der G- und H-Saite. Das Auffinden der Töne und welche Akkorde zu welcher Tonart gehört, und wie man einen Capo benutzt, sollte eigentlich nichts neues für dich sein. Rein technisch gesehen vereinfacht sich der Fingersatz. Doch es kostet ein wenig Überlegung, wie sich die beiden Lagewechsel auf den 3. Fingersatz auswirken. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (C-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> Sollte es im 12 Bund unbequem zu spielen sein, weil du kein Cutaway hast (Aussparung für die hohen Bünde), übe die C-Form ein paar Bünde zurück in einer anderen Tonart. ==== 3. Fingersatz II-V-I-Verbindung F-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;F-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 1-7-7; 1-8-1;1-10-2; 2-8-5; 2-10-6; 3-7-2; 3-9-3; 3-10-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 6. Bund setzen, dann würde man die Melodie vom Fingersatz her wie F-Dur spielen. In C-Dur spielt man diese II-V-I-Verbindung Gm7 C7 F. Wenn du den C wie ein F-Barré im 8. Bund greifst, dindest du den Grundton (1) auf der hohen E-Saite. Von dem wanderst du runter zum Startton (2). </div> {{clear}} Auch hier hebt sich der Lagewechsel zwischen der G- und H-Saite mit dem Lagewechsel des 3. Fingersatz gegeneinander auf, was den Fingersatz grifftechnisch wieder vereinfacht. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (F-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> == Wie geht es weiter? == Solltest du als Quereinsteiger in diese Lektion gestolpert sein, dann schaue dir die erste Lektion zum [[Gitarre: Aufbau der CAGED-Skalenformen|Aufbau der CAGED-Skalenformen]] an. Insbesondere die Abschnitte, die hier übergangen wurden. Dannach kannst du mit der ersten CAGED-Skala in der D-Dur-Form weitermachen. <noinclude> {{Navigation zurückhochvor |zurücklink=Gitarre: CAGED-Skala G-Dur-Form |zurücktext=CAGED-Skala G-Dur-Form |hochlink=Gitarre: Die Major-Patterns |hochtext=Einführung: Major-Patterns |vorlink=Gitarre: CAGED-Skala D-Dur-Form |vortext=CAGED-Skala D-Dur-Form }} </noinclude> dnb44phw2x1kxhrqcj3k1n2qw034lnq 1090589 1090588 2026-09-08T19:22:26Z Mjchael 2222 /* 1. Fingersatz • D-Form */ 1090589 wikitext text/x-wiki {{:Gitarre/ Navi|Sologitarre| {{:Gitarre: Sologitarre/ Navi Improvisation in Dur und Moll}}| img=Guitar 1.svg |bg=#F8f8f8|border=darkorange|color=dark|px=80|navi=Einführung in die Sologitarre}} = Wiederholung der Fingersätze = ; mit Schwerpunkt auf den Stammtönen Diese Wiederholung ist zum einen dafür gedacht, die vorhergehenden Übungen auf jeder Saitenlage zu machen, und auch in jeder Bundlage, gleichgültig ob die Finger eng beieinander oder weit auseinander stehen. Zum andern sind diese als Vorbereitung in die Sologitarre gedacht. Beispielsweise als Auflockerungsübung zwischen den Barré-Akkorden. Besonderen Augenmerk wollen wir hier auf die Notennamen legen. Diese können hier mitgelernt werden. Solltest du meinen, das sei noch nicht für dich dran und kann warten, dann springe zur ersten CAGED-Skala. Du kannst beim Kapitel Longform nochmal hierrauf zurückkommen. * [[Gitarre: CAGED-Skala D-Dur-Form|CAGED-Skala D-Dur-Form]] Lassen wir die [[Gitarre: Aufbau der CAGED-Skalenformen|erste Lektion]] (insbesondere für die Quereinsteiger) noch einmal Revue passieren. Die folgenden Übungen enthalten oft eine Folge von ein- oder zweitaktigen Sequenzen. Eine Sequenz ist ein Motiv, dass sich auf verschiedenen Tonhöhen wiederholt. Auch ohne Notenkenntnisse kannst du den Verlauf und die Wiederholungen der Sequenzen einfacher im Notenbild verfolgen, als in der Tabulatur; insbesondere wenn du dir gleichzeitig die Übung anhörst. Es kommen auch Ausschnitte aus klassischen Stücken, Folksongs, Kinderlieder o.ä. vor. Die einfache Struktur oder der Bekanntheitsgrad der Melodien sollen dir das Üben erleichtern. Die Finger finden so leichter ihre Position, als wenn du erstmal jede einzelne Note aus der Tabulatur entschlüsseln musst. Jede Übung wird auf allen Saitenlagen geübt. Vorher blieben wir in den mittleren Lagen. Jetzt gehen wir auch in die ersten Bünde, wo man die Finger etwas mehr spreizen muss, und in die höheren Lagen, wo es ein wenig eng wird. Die Stücke wiederholen sich in dieser Lektion in der selben Tonart, doch auf verschiedenen Bünden. Du spielst immer die selbe Tonfolge, nur auf verschiedenen Tonhöhen bzw. auf verschiedenen Saitenlagen. Lediglich zwischen der G- und H-Saite musst du dir jedesmal überlegen, wie sich der Lagewechsel auf den Fingersatz auswirkt. Doch der Fingersatz in den anderen höheren Lagen bleibt immer gleich. Wie die Tonfolgen mit dem CAGED-System zusammenhängen, das muss dich nur am Rande interessieren. Es wird in den folgenden Lektionen näher und ausführlicher erleutert. :[[Datei:Scala Griffbrett.svg]] Wir hatten uns bei den vorhergehenden Übungen weitestgehend an den Intervallen (1-j7) und an der Tabulatur orientiert. Diese sind in allen Tonarten gleich. Suche zuerst das Karré! Daran orientierst du dich. :[[Image:Scala Carree.svg]] {{Tipp|Lerne bei der C-Dur-Tonleiter nicht nur die Intervalle <br> 2 - 3 4 - 5<br> 6 - j7 1 - 2<br> sondern benenne auch jede einzelne Note. <br> D - E F - G<br> A - H C - D<br> So bekommst du einen recht einfachen Überblick über das Griffbrett.}} == Töne der C-Dur Tonleiter auf dem Griffbrett == Wir wollen uns in dieser Lektion auf die Töne bzw. die Notennamen konzentrieren. Allerdings sparen wir uns vorerst alle Töne mit Vorzeichen aus. Die [[Gitarre: Aufbau der CAGED-Skalenformen|ersten Übungen zum 1. und 2. Fingersatz]] werden auf die Tonart C-Dur bzw. A-Moll übertragen und wir spiele sie in den hier gezeigten Positionen. Wir fangen mit dem zweiten Fingersatz an, wo wir entweder den Ton C oder den Ton A der C-Dur- bzw. Am-Tonleiter als Orientierung nutzen :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] Du hast vermutlich allerlei Akkordformen des CAGED-System gesehen. <div class="noprint"> ;Animation [[Image:Crd Grundtonschema ani.gif]] </div> <score> << \new ChordNames { \chordmode { c1 c c c c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 e-2 g c'-1 e' > < c-1\5 g-3\4 c'-3\3 e'-4\2 g'-1 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 e-2\5 g-1\4 c'-1\3 e'-1\2 c''-4\1> < c-1\6 g-2\5 c'-3\4 e'-4\3 g'-1\2 c''-1\1> \once \override FretBoard.fret-diagram-details.dot-color = #'white < c'-1\4 g'-2\3 c''-4\2 e''-3\1 > < c'-4\5 e'-3\4 g'-1\3 c''-2\2 e''-1\1 > } >> </score> Wenn du schon Fingerstyle oder Jazz spielst, mögen dir viele der Formen bekannt vorkommen. Doch selbst wenn du bis jetzt nur das [[Gitarre: Rockdiplom|Rockdiplom]] gemacht hast und mit den dort vorkommenden Barré-Akkorden vertraut bist, wirst du sehen, dass die einfachen Barré-Akkorde ausreichen, um sich auf dem Griffbrett zu zurechtzufinden. Die [[Gitarre: C-Dur-Tonleiter Workshop|C-Dur-Tonleiter in den ersten drei Bünden]] setze ich als bekannt voraus und es sollte dir nicht allzu schwer fallen, diese in den 12. Bund zu übertragen. :[[Datei:Scala C-Am.svg|150px]][[Datei:C-Dur_Majorpattern_III.jpg|150px]] C-Dur als Barré im 3. Bund kennst du vom Rockdiplom, und C-Dur im 8. Bund ist auch kein Hexenwerk. Dazwischen liegt nach dem CAGED-System die G-Form, die dir vermutlich noch nicht untergekommen ist (hier mit weißem Fingersatz). Statt uns die Töne von der G-Form abzuleiten, machen wir es uns einfacher und leiten uns die Töne zur Orientierung vom Am im 5. Bund ab. Du erinnerst dich noch an die Dur- und Mollparallelen? (C- \ Am-Tonleiter bzw. G- \ Em-Form). Oder du nutzt die Grundtöne des C-Barré im 8. Bund. <score> << \new ChordNames { \chordmode { c1 c c a:m c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 e-2 g c'-1 e' > < c-1\5 g-3\4 c'-3\3 e'-4\2 g'-1 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 e-2\5 g-1\4 c'-1\3 e'-1\2 c''-4\1> < a,-1\6 e-3\5 a-4\4 c'-1\3 e'-1\2 a'-1\1 > < c-1\6 g-2\5 c'-3\4 e'-4\3 g'-1\2 c''-1\1> < c'-4\5 e'-3\4 g'-1\3 c''-2\2 e''-1\1 > } >> </score> Leite dir also die Grundtöne C und A von den dir bekannten Barré-Akkorden ab und spare dir die ungewöhnlicheren Akkordformen auf, bis sie dir später beim Fingerstyle oder Jazz begegnen. Es macht dabei garnichts aus, wenn du zum Auffinden der Grundtöne und zum Finden des Starttons ein paar Sekunden brauchst. Du wirst sehen, dass die Wiederholungen der bekannten Übungen auf den verschiedenen Bünden und in verschiedenen Oktavebereichen leicht von der Hand gehen. Lediglich beim Lagewechsel zwischen der G- und H-Saite musst du etwas überlegen. <score> << \new ChordNames { \chordmode { c1 c c a c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 c'-1 > < c-1\5 c'-3\3 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 c'-1\3 c''-4\1> < a,-1\6 a-4\4 a'-1\1 > < c-1\6 c'-3\4 c''-1\1> < c'-4\5 c''-2\2 > } >> </score> Diese wenigen"Eckpunkte" reichen aus, um dich grob auf dem Griffbrett zurechtzufinden. Suche sie noch einmal in der Skala und natürlich auch auf deinem Griffbrett. :[[Datei:C-Major-Scale on the fretboard.svg]] == Zweiter Fingersatz == :[[Datei:Scala 6_71-2_34.svg]] Zuerst suchen wir uns in der C-Dur-Tonleiter überall den zweiten Fingersatz heraus. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] Zur leichteren Orientierung wird die Grafik bei jeder neuen Melodie wiederholt. === Rondeau (Auszug) === Die eintaktige Sequenzen wurde aus einem Rondeau von J.S. Bach entnommen, dass beliebig wiederholt werden kann. Der Grundton C, welcher im letzten Takt rot eingefärbt wurde, wird mit dem kleinen Finger gegriffen. Du kannst tatsächlich die Noten nutzen (sofern du es schon kannst) oder aber du orientierst dich an den Notennamen. Am Anfang des Griffbrettes brauchen wir den zweiten Fingersatz nicht vollständig. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #5 % \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> In der A-(Bb-)Form müssen wir den Lagewechsel zwischen der G- und H-Saite beachten. Übrigens werden hier die Töne in der englischen Form angegeben. (Bb-Form und der Ton B statt des deutschen H.) Nur der erste Bund wird bis zur letzten Note in der dritten Lage gespielt. Der Rest bis zur letzten Note in der zweiten Lage. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (A-, Bb-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e-4 d-2 c d e d c b d c b c d c b a c b a b c d b c d-1 } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Statt in der G-Form das C zu suchen, suche lieber das A im 5. Bund (hier grün hervorgehoben). Oder du leitest dir das C vom Barré im 8. Bund ab. Der Startton E ist auf der A Saite im 7. Bund unter dem Ringfinger. Ansonsten stellt der Fingersatz keine Herausforderung mehr dar. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (G-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b \once \override NoteHead #'color = #green a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Der kleine Finger des C-Barré im 8. Bund in der E- bzw. F-Form gibt gleichzeitig das C des zweiten Fingersatz an. Du siehst, dass ab jetzt alles leichter geworden ist, weil sich ansonsten nichts mehr am Fingersatz ändert. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (E- F-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Für den Grundton C müssen wir uns die D-Form gar nicht so genau ins Gedächtnis rufen, wenn uns die C-Form viel vertrauter ist. Diese hohe Lage ist für E-Gitarristen oder Gitarren mit Cutaway gedacht. Auf der Konzertgitarre ist die sehr hohe Lage schlecht zu spielen. Gehe ggf. einen Kompromiss ein, und spiele diese hohe Saitenlage ein paar Bünde tiefer als Übung nur für den Fingersatz aber nicht für die Notennamen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Noten über dem hohen C (der mit zwei Hilfslinien) wird dir seltener begegnen, da in dem Fall bevorzugt die Noten nach unten oktaviert werden. (Beachte die 8 im Notensystem.) Bei den weiteren Übungen werden jedoch die Versionen mit den vielen Hilfslinien angezeigt. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { \ottava #1 e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Mit der C-Form in den ersten drei Bünden im Hinterkopf ist der 12. Bund leicht zu bewältigen. Wieder eine Übung, die weniger für Konzertgitarren geeignet ist. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === "Das häßliche Entlein" oder "Alle meine Entchen"<ref>Anspielung auf ein Märchen der Gebrüder Grimm nebst einem bekannten deutschen Kinderlied.</ref> in A-Moll === Die vorherige Übung war in Dur, und hier verwenden wir ein und den selben Fingersatz in Moll. Wie du siehst und hörst, lässt sich ein Fingersatz oder ein Pattern nicht eindeutig einer einzigen Tonart zuordnen. Der Schlusston oder der Schlussakkord (hier der Ton A bzw. der Akkord Am) bestimmt die Tonart. Der Grundton A ist hier die Sexte (6) des zugrunde liegenden C-Major-Pattern. Es bleibt dir überlassen, ob du zur Orientierung lieber den Grundton A (grün) bestimmst, oder das C aus dem Karré (rot). Wenn in einer Tabulatur über einer Ziffer zwei Notenhälse stehen, so ist das ein Zeichen für eine halbe Note, die zwei Schläge dauert. Da dieses für viele Gitarristen sehr ungewöhnlich aussieht, verzichtet man oft auf Taktstriche in der Tabulatur. In dem Fall lässt sich die Tondauer allein an den Notenwerten ablesen. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-/Am-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #5 % \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Der Lagewechsel zwischen der G- und H-Saite ist hier leicht zu bewältigen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Gm-/Bb-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d-1 e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2-4 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Auch hier ist es wieder einfacher das A (grün) zu suchen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Em-/G-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (E- / F-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Statt lange nach dem Grundton der D-Form zu suchen, erinneren wir uns kurz, wo der Grundton C auf der H- (B-)Saite sein muß (13. Bund). <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> === Die Moldau (Hauptmotiv) === Die Abfolge der Töne der folgenden Übung unterscheidet sich kaum von der vorhergehenden. Doch mit dem anderen Rhythmus haben wir das Hauptmotiv von der Komposition {{Youtube-Suche|Smetana+Die+Moldau|"Die Moldau" von Bedrich Smetana}} (ohne Auftakt und rhythmisch vereinfacht). Auch wenn es hier (wie in der 7. Übung) nur die Molltonleiter rauf und runter geht, merkst du hoffentlich, wieviel der Takt und Rhythmus an der Wirkung ausmacht. Wenn du später mal meinst, deine Improvisationen hören sich langweilig an, dann solltest du dich mehr mit Rhythmus beschäftigen. Dazu kannst du dich auch ein wenig mit Schlagmustern beschäftigen. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Am-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Warum die Form hier Gm-Form genannt wird, das wird dir in den nachfolgenden Lektionen klarer werden. Auf Fingersatzangaben können wir hier verzichten, wenn du vorher "Alle meine Entchen in Am" gespielt hast. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Bb- /Gm-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier bietet sich besonders an, den Am-Barré zur Orientierung zu verwenden. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Em-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Auch hier gibt dir der kleine Finger des Am-Barrés den Grundton an. Du kannst dir die Dm-Form aber auch über die F-Form (C im 8. Bund) ableiten. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (F- /Dm-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Zähle vom C (H-Saite, 13. Bund) rückwärts zum A. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D- /Bm7-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier wird die erste Übung in den 12. Bund verschoben. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C- /Am-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==1. Fingersatz== Dir wird wohl aufgefallen sein, dass beim zweiten Fingersatz der Ton G fehlt. Den üben wir mit dem ersten Fingersatz. :[[Datei:Scala 71_2-34_5.svg]] Beachte, dass der Grundton (1) unter dem Ringfinger (also im zweiten Bund dieses Fingersatzes) ist, und dass du deine freie Improvisationsübung in Dur günstigerweise mit der (1) beginnen oder zumindest enden sollte. Diesen Fingersatz suchen wir in der C-Dur-Tonleiter auf dem Griffbrett. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] === Eintaktige Sequenzen === Die erste Lage mit leeren Saiten stellt noch keine Herausforderung dar. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • A- (Bb-)Form ==== Du musst noch nicht einmal den C-Barré im 3. Bund bemühen, um den Grundton zu finden. Die C-Dur-Tonleiter in den ersten drei Bünden reicht. Natürlich kannst du auch den Startton G suchen. Die Tabulatur sagt dir "D-Saite 5. Bund". Erinnere dich daran, dass dies der Stimmton der D-Saite ist (beim Stimmen nach Bünden). Auch hier ist der Fingersatz leicht. <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • A- (Bb-)Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 4 2 3 darkgrey ) (place-fret 4 3 4 yellow3 ) (place-fret 4 5 5 darkgrey ) (place-fret 5 2 "j7" yellow3 ) (place-fret 5 3 1 black ) (place-fret 5 5 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb)-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • G-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • G-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 2 5 3 darkgrey ) (place-fret 2 6 4 yellow3 ) (place-fret 2 8 5 darkgrey ) (place-fret 3 4 "j7" yellow3 ) (place-fret 3 5 1 black ) (place-fret 3 7 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Bei der G-Form kommt es zwischen der G- und H-Saite zu einem Lagewechsel. Du musst dir jedesmal eine Strategie zurechtlegen, wann und wie du am besten den Lagewechsel durchführst. Wenn du Glück hast, findest du im Notenbild einen Hinweis, wie man günstig die Lage wechseln kann. Ich empfehle dir dort wo die 2 über den Noten steht, den Mittelfinger zu nehmen. *(1 = Z, 2 = M, 3 = R, 4 = K, 0 = leere Saite) Betrachte solche Hinweis nur als Vorschlag, denn es gibt keine verbindliche Regel, wie der Lagewechsel zu erfolgen hat. Übst du die gleiche Sequenzen ein paar Saiten höher oder tiefer, geht es leichter von der Hand. Beachte den Lagewechsel zwischen der G- und H-Saite. Den Grundton C kannst du dir auch vom Ringfinger auf der G-Saite des C-Barrés ableiten. Du musst dir hier eine Strategie zurechtlegen, wann du den Lagewechsel durchführen möchtest. Ich empfehle hier, den Lagewechsel so früh wie möglich zu machen, damit du den Zeigefinger frei hast, um gleich hintereinander zwei Töne in einem Bund zu spielen. Betrachte die Angaben zum Fingersatz nur als Vorschlag. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d-4 e-2 f-3 d e f e d c d e c-1 d-4 e-2 d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier eine alternative Lösung. Du kannst einen kleinen Barré über die Noten C und E legen, und den Lagewechsel später ausführen. Das V unter dem C zeigt hier den 5. Bund an, und nicht etwa Abschläge. Der Lagewechsel erfolgt hier im letzten Takt. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d e f d e f e d-2 \textSpannerDown \override TextSpanner.bound-details.left.text = "V" c-1\startTextSpan d e-1 c-1 d e-1\stopTextSpan d-4 c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • E- (F-)Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • E- (F-)Form <score raw="1"> \version "2.24.4" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 5 7 3 darkgrey ) (place-fret 5 8 4 yellow3 ) (place-fret 5 10 5 darkgrey ) (place-fret 6 7 "j7" yellow3 ) (place-fret 6 8 1 black ) (place-fret 6 10 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Den Grundton C auf der E-Saite kannst du dir vom C-Barré der E-Form (wie ein F- Barré) im 8. Bund ableiten. Der Fingersatz ist wieder einfach. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E-(F)-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • D-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • D-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 3 9 3 darkgrey ) (place-fret 3 10 4 yellow3 ) (place-fret 3 12 5 darkgrey ) (place-fret 4 9 "j7" yellow3 ) (place-fret 4 10 1 black ) (place-fret 4 12 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div>Die Tonhöhe ist die selbe, wie in der G-Form, wo wir uns komplizierte Strategien für den Fingersatz zurechtlegen mussten. In dieser Lage ist alles einfacher. Wenn du später mal einen herausfordernden Lick zwischen der G- und H-Saite hast, wäre eine weitere gangbare Strategie den Lick in eine fingertechnisch günstigere Lage zu verlegen. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • C-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • C-Form <score raw="1"> \version "2.24.4" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 1 12 3 darkgrey ) (place-fret 1 13 4 yellow3 ) (place-fret 1 15 5 darkgrey ) (place-fret 2 12 "j7" yellow3 ) (place-fret 2 13 1 black ) (place-fret 2 15 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Hier wurde die C-Durtonleiter in den 12. Bund verlegt. Der Grundton ist auf der H-Saite im 13. Bund. (Eine Oktave höher als bei der C-Dur Tonleiter in den ersten drei Bünden.) Wer keine E-Gitarre hat oder wer keine Akkustik mit Cutaway hat, der kann die C-Form auch in einem niedrigeren Bund üben. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c''' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Halbtaktige Sequenzen === Diesmal hast du halbtaktige Sequenzen, die einmal wiederholt werden. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== A- (Bb-)Form • 1. Fingersatz ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • A- (Bb-)Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 4 2 "E" darkgrey ) (place-fret 4 3 "F" yellow3 ) (place-fret 4 5 "G" darkgrey ) (place-fret 5 2 "B" yellow3 ) (place-fret 5 3 "C" black ) (place-fret 5 5 "D" darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Leite dir den Grundton vom C-Dur-Akkord, oder vom C-Barré im 3. Bund ab. Lerne nicht nur die Intervlle, sondern auch die Notennamen. (Zumindest bei den einfachen Tonarten F-, G- und C-Dur). Andere Tonarten kommen später dran. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- / Bb-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== G-Form • 1. Fingersatz ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • G-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 2 5 "E" darkgrey ) (place-fret 2 6 "F" yellow3 ) (place-fret 2 8 "G" darkgrey ) (place-fret 3 4 "B" yellow3 ) (place-fret 3 5 "C" black ) (place-fret 3 7 "D" darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div>Du kannst die beiden hintereinander folgenden Noten im 5. Bund mit einem Mini-Barré ausführen, und die Lagewechsel mittels Slide (=&nbsp;Glissando) durchführen, oder wie in der Wiederholung ohne Slide durchführen. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major c8-1 g' f e d f e d c-1 e-1 d c-1(\glissando b-1) d c b-1(\glissando c1-1) c8-2 g' f e d f e d c-1 e-2 d-4 c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== E- (F-)Form • 1. Fingersatz ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • E- (F-)Form <score raw="1"> \version "2.24.4" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 5 7 "E" darkgrey ) (place-fret 5 8 "F" yellow3 ) (place-fret 5 10 "G" darkgrey ) (place-fret 6 7 "B" yellow3 ) (place-fret 6 8 "C" black ) (place-fret 6 10 "D" darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Fingersatztechnisch wieder problemlos. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • D-Form ==== <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • C-Form ==== <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> === Ein Vogel wollte Hochzeit machen === Hier habe ich ein relativ bekanntes Kinderlied gefunden, dass perfekt zum 1. Fingersatz passt. Die Tondauern sind für Ungeübte in Sachen Noten schwer herauszulesen. Kennst du aber das Stück, oder hörst du es dir mehrmals an, so ist es keine unüberwindbare Schwierigkeit. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] Folgt das G nach dem D, greifst du den besser mit dem kleinen Finger. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d-3( g-4) g g16 e | c8 8 8 g'16 e d8 d d-3 g16-4 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier ist es wohl am einfachsten, dass du den kleinen Finger umlegst, wenn du nach dem D den G greifen willst. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb-)Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d-3( g-4) g g16 e | c8 8 8 g'16 e d8-3 d d g16-4 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Wenn der Ton C auf ein E-folgt, kann man entweder ein <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e-2 c-1 g' e d( g) g g16 e-2 | c8-1 8 8 g'16 e d8 d d g16 f | e8-2 c-1 d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Halbtaktige Sequenzen (2) === :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Bei der G-Form kommt es zwischen der G- und H-Saite zu einem Lagewechsel. Du musst dir jedesmal eine Strategie zurechtlegen, wann und wie du am besten den Lagewechsel durchführst. Wenn du Glück hast, findest du im Notenbild einen Hinweis, wie man günstig die Lage wechseln kann. Ich empfehle dir dort wo die 2 über den Noten steht, den Mittelfinger zu nehmen. *(1 = Z, 2 = M, 3 = R, 4 = K, 0 = leere Saite) Betrachte solche Hinweis nur als Vorschlag, denn es gibt keine verbindliche Regel, wie der Lagewechsel zu erfolgen hat. Übst du die gleiche Sequenzen ein paar Saiten höher oder tiefer, geht es leichter von der Hand. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c''' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Einsingen === Diese beiden Motive kennen viele, die schon einmal in einem Chor gesungen haben. Leider entsprechen viele Lieder in ihrem Tonumfang nicht genau einem der vollständigen drei Fingersätze oder der später folgenden Skalen. Zumeist werden nur Ausschnitte aus den Patterns gebraucht. Im ersten Motiv fehlt beispielsweise die große Septime (j7) vor dem Grundton. Dafür enthält das zweite Motiv die große Septime (j7). Das zweite Motiv eicht den Chor auf die gerade geforderte Tonart. Hier werden nur Akkordtöne in einer auf oder absteigenden Tonfolge gespielt (auch Arpeggios genannt). Der A7-Akkord enthält sowohl den Leitton (j7) der zum Grundton (1) hin leitet, als auch den Strebeton (4) die zur Durterz (3) hin strebt. Mit den zwei spannungsreichen Tönen, die sich zum Grundakkord auflösen wollen, wird der Chor auf die Durtonart eingenordet. Hier brauche ich dir nicht zu erklären, wo der Grundton D ist. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A-(Bb-)Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E-(F-)Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==Erste über den zweiten Fingersatz== Wie du siehst, kommt hier jedesmal zuerst der erste Fingersatz mit dem "Karree" rechts, und dannach kommt der Fingersatz mit dem "Karree" links. Sie sind immer untereinander. Nur zwischen der G- und B-Saite verschiebt sich alles um einen Bund. <div style="float:left; padding:5px; border:black solid 1px; "> ;F-Form <score raw="1"> \version "2.14.2" \paper{ indent=0\mm line-width=120\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% 4-o zeigt 4. Saite offen \fret-diagram #"s:2;f:1; 3-3-2;3-5-3;3-6-4; 4-3-6;4-5-7;4-6-1; 5-3-3;5-4-4;5-6-5; 6-3-7;6-4-1;6-6-2;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;Bb-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:2;f:1; 2-4-2;2-6-3;2-7-4; 3-3-6;3-5-7;3-6-1; 4-3-3;4-4-4;4-6-5; 5-3-7;5-4-1;5-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;D-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:2;f:1; 1-4-2;1-6-3;1-7-4; 2-4-6;2-6-2;2-7-1; 3-3-3;3-4-4;3-6-5; 4-3-7;4-4-1;4-6-2;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} === Jamaica Farewell === Die Melodie von [[Liederbuch/ Jamaica Farwell|Jamaica Farwell]] wurde erheblich vereinfacht, damit du dir nicht zu viele Gedanken um den Rhythmus machen musst. Wenn du dich am Quintillo (dem Rhythmus vom Lagerfeuerschlag} orientierst, solltest du wenige Probleme haben. Es gibt recht viele Wiederholung. Die Strophe wurde bei der Wiederholung in die Oktave verschoben, damit das Stück exakt in den Skalenausschnitt passt. Du musst dir für die Fingersätze ggf. Strategien zurechtlegen, damit du die Finger bequem sortiert bekommst. Das Stück beginnt mit dem Ton G. Der (5) in 1. Fingersatz. ;Bb-Form Greife den C wie ein Bb-Barré im 3. Bund. Leite dir von diesem Akkord den Grundton (1) ab, und wandere beim 1. Fingersatz rauf zum Startton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-4-2;2-6-3;2-7-4; 3-3-6;3-5-7;3-6-1; 4-3-3;4-4-4;4-6-5; 5-3-7;5-4-1;5-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (A-, Bb-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ; F-Form Greife den C wie ein F-Barré im 8. Bund. Leite dir von diesem Akkord den Grundton (1) ab, und wandere beim 1. Fingersatz rauf zum Startton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 3-7-2;3-9-3;3-10-4; 4-7-6;4-9-7;4-10-1; 5-7-3;5-8-4;5-10-5; 6-7-7;6-8-1;6-10-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (E-, F-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ;D-Form Schiebe den D-Dur-Akkord in den 12. Bund. Ein D im 12. Bund verschoben ergibt ein C. Leite dir von diesem Akkord den Grundton (1) ab. Orientiere dich kurz im 2. Fingersatz und wandere zurück zum ersten Fingersatz zum Ton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 1-10-2;1-12-3;1-13-4; 2-10-6;2-12-7;2-13-1; 3-9-3;3-10-4;3-12-5; 4-9-7;4-10-1;4-12-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (D-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==3. Fingersatz== Es fällt auf, dass der 3. Fingersatz kein "Karré" hat. {| !Fingersatz !width="30px"| !Intervalle |- |[[Image:Scala Z RK-Z K-ZM K.svg]] !width="30px"| |[[Image:Scala 2 34-5 6-71 2.svg]] |} Der 3. Fingersatz ist gar kein eigenständiger Fingersatz. Der obere Teil des 3. Fingersatzes ist eigentlich schon der untere Teil des 2. Fingersatzes. Ebenso ist der untere Teil des 3. Fingersatzes gleichzeitig der Anfang des 1. Fingersatzes. Du musst dir Strategien zurechtlegen, wie du den Übergang vom Ende des 2. Fingersatzes über die 5 und die 6 hin zum 1. Fingersatz gestaltest. Es kommt beim 3. Fingersatz zu einem Lagewechsel nach links. Übe den 3. Fingersatz zuerst in den obersten Saitenlagen (E A D G x x) === Eine II-V-I-Verbindung === Wir spielen eine einfache Tonfolge über einer 2-5-1-Verbindung. Die Akkordtöne liegen zumeist auf den schweren Zählzeiten. * D, F, A, C gehören zum Dm7 * G, B, D, F gehören zum G7 * C, E, G gehören zum C-Dur-Akkord. Wir nutzen das CAGED-System, um uns grob auf dem Griffbrett zurechtzufinden. ==== Exkurs: Skalenformen ==== Die Namen der Skalen leiten sich übrigens von folgenden einfachen Tonleitern in den ersten Bünden ab: [[Image:Scala C-Am.svg|100px]] [[Image:Scala Bb-Gm.svg|100px]] [[Image:Scala G-Em.svg|100px]] [[Image:Scala F-Dm.svg|100px]] [[Image:Scala D-Hm.svg|100px]] Alle Akkorde die man aus diesen einfachen Tonarten kennt, Bassläufe und ähnliches lassen sich zum großen Teil auf die entsprechenden 5 CAGED-Skalen übertragen, fast so als habe man die Tonleiter mittels Kapodaster in eine höhere Lage verschoben. Wie du siehst, nennen wir die Skalen entgegen des reinen CAGED-System nicht E-Dur-Form (Shape) und nicht die A-Dur-Form (Shape), sondern F- und Bb-Dur-Form. <div style="float:left; padding:5px; border:black solid 1px; "> ;E-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-1;1-2-2;1-4-3; 2-0-5;2-2-6;2-4-7; 3-1-3;3-2-4;3-4-5; 4-1-7;4-2-1;4-4-2; 5-0-4;5-2-5;5-4-6; 6-0-1;6-2-2;6-4-3;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;F-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-3; 1-1-1; 1-3-2; 2-1-5; 2-3-6; 3-0-2; 3-2-3; 3-3-4; 4-0-6; 4-2-7; 4-3-1; 5-0-3; 5-1-4; 5-3-5; 6-0-7; 6-1-1; 6-3-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;G-Dur-Tonleiter <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-3-3; 1-4-1; 1-6-2; 2-4-5; 2-6-6; 3-3-2; 3-5-3; 3-6-4; 4-3-6; 4-5-7; 4-6-1; 5-3-3; 5-4-4; 5-6-5; 6-3-7; 6-4-1; 6-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Du siehst selbst, dass die G-Dur-Tonleiter von der Form her eher wie die F-Dur-Tonleiter als wie die E-Dur-Tonleiter aussieht. <div style="float:left; padding:5px; border:black solid 1px; "> ;A-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-5;1-2-6;1-4-7; 2-0-2;2-2-3;2-3-4; 3-1-7;3-2-1;3-4-2; 4-0-4;4-2-5;4-4-6; 5-0-1;5-2-2;5-4-3; 6-0-5;6-2-6;6-4-7;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;Bb-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-1-5; 1-3-6; 2-1-2; 2-3-3; 2-4-4; 3-0-6; 3-2-7; 3-3-1; 4-0-3; 4-1-4; 4-3-5; 5-0-7; 5-1-1; 5-3-2; 6-1-5; 6-3-6;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;C-Dur-Tonleiter <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-3-5; 1-5-6; 2-3-2; 2-5-3; 2-6-4; 3-2-6; 3-4-7; 3-5-1; 4-2-3; 4-3-4; 4-5-5; 5-2-7; 5-3-1; 5-5-2; 6-3-5; 6-5-6;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Du siehst selbst, dass die C-Dur-Tonleiter von der Form her eher wie die Bb-Dur-Tonleiter als wie die A-Dur-Tonleiter aussieht. ==== 3. Fingersatz II-V-I-Verbindung D-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;D-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:3;f:1; 4-9-7;4-10-1;4-12-2; 5-10-5;5-12-6; 6-10-2;6-12-3;6-13-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Wir beginnen oben bei der D-Form, wo sich der Lagewechsel des 3. Fingersatz noch nicht mit dem Lagewechsel zwischen der G und H-Saite (engl. B-Saite) aufhebt. Würde ich ein Capo in den 10. Bund setzen, dann würde ich die Melodie vom Fingersatz her wie D-Dur spielen. In D-Dur spiele ich diese II-V-I-Verbindung Em7 A7 D. Nehme ich das Capo weg, dann greife ich den Dm(7) als einen Barré der Em-Form im 10. Bund. Von diesem kann ich mir das D als Grundton ableiten. Alternativ siehst du in den Noten, dass die Übung mit dem Ton D anfängt. Dass die oberste Tiefe E-Saite im 12. Bund ebenfalls ein E ergibt, setze ich als bekannt voraus. Falls nicht, beschäftige dich noch einmal mit dem [[Gitarre: Lagerfeueranhang 2c|Stimmen der Gitarre]]. Ein Ganztonschritt bzw. zwei Bünde vor dem E ist der Ton D. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (D-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g-1 a-4 b-1 c4 | b8^\markup { \bold {G7} } a-4 g4-1 f8 e d4 | e8^\markup { \bold {C} } f g4-1 a8-4 b-1 c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung G-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;G-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 3-4-7;3-5-1;3-7-2; 4-5-5;4-7-6; 5-5-2;5-7-3;5-8-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 5. Bund setzen, dann würde man die Melodie vom Fingersatz her wie G-Dur spielen. In G-Dur spielt man diese II-V-I-Verbindung Am7 D7 G. Nimmt man das Capo weg, dann greift man den Dm(7) als einen Barré der Am-Form. Von diesem kannst du dir den D als Grundton ableiten. Einfacher geht es natürlich, wenn du weißt, dass der D im 5. Bund der A-Saite der Stimmton der D-Saite ist. </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (G-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g-1 a-4 b-1 c4 | b8^\markup { \bold {G7} } a-4 g4-1 f8 e d4 | e8^\markup { \bold {C} } f g4-1 a8-4 b-1 c d | c b c2. | \break d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung C-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;C-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-0-7;2-1-1;2-3-2; 3-0-5;3-2-6; 4-0-2;4-2-3;4-3-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Die C-Dur-Form der C-Dur Tonleiter sieht schlicht und ergreifend wie die C-Durtonleiter aus. </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (C-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #4 % \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \break d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung C-Form 12. Bund ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;C-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-12-7;2-13-1;2-15-2; 3-12-5;3-14-6; 4-12-2;4-14-3;4-15-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 12. Bund setzen, dann würde man die Melodie vom Fingersatz her wie C-Dur spielen. In C-Dur spielt man diese II-V-I-Verbindung Dm7 G7 C. Der Startton ist schlicht die D-Saite im 12. Bund. </div> {{clear}} Gerade noch hatten wir einen Lagewechsel nach links. Jetzt aber hebt sich der Lagewechsel nach links vom 3. Fingersatz mit dem Lagewechsel zwischen der G- und H-Saite auf. Es hört sich beim ersten Durchlesen kompliziert an, aber du hast nur 4 Lektionen zu lernen. Den 1. bis 3. Fingersatz und den Lagewechsel zwischen der G- und H-Saite. Das Auffinden der Töne und welche Akkorde zu welcher Tonart gehört, und wie man einen Capo benutzt, sollte eigentlich nichts neues für dich sein. Rein technisch gesehen vereinfacht sich der Fingersatz. Doch es kostet ein wenig Überlegung, wie sich die beiden Lagewechsel auf den 3. Fingersatz auswirken. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (C-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> Sollte es im 12 Bund unbequem zu spielen sein, weil du kein Cutaway hast (Aussparung für die hohen Bünde), übe die C-Form ein paar Bünde zurück in einer anderen Tonart. ==== 3. Fingersatz II-V-I-Verbindung F-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;F-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 1-7-7; 1-8-1;1-10-2; 2-8-5; 2-10-6; 3-7-2; 3-9-3; 3-10-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 6. Bund setzen, dann würde man die Melodie vom Fingersatz her wie F-Dur spielen. In C-Dur spielt man diese II-V-I-Verbindung Gm7 C7 F. Wenn du den C wie ein F-Barré im 8. Bund greifst, dindest du den Grundton (1) auf der hohen E-Saite. Von dem wanderst du runter zum Startton (2). </div> {{clear}} Auch hier hebt sich der Lagewechsel zwischen der G- und H-Saite mit dem Lagewechsel des 3. Fingersatz gegeneinander auf, was den Fingersatz grifftechnisch wieder vereinfacht. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (F-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> == Wie geht es weiter? == Solltest du als Quereinsteiger in diese Lektion gestolpert sein, dann schaue dir die erste Lektion zum [[Gitarre: Aufbau der CAGED-Skalenformen|Aufbau der CAGED-Skalenformen]] an. Insbesondere die Abschnitte, die hier übergangen wurden. Dannach kannst du mit der ersten CAGED-Skala in der D-Dur-Form weitermachen. <noinclude> {{Navigation zurückhochvor |zurücklink=Gitarre: CAGED-Skala G-Dur-Form |zurücktext=CAGED-Skala G-Dur-Form |hochlink=Gitarre: Die Major-Patterns |hochtext=Einführung: Major-Patterns |vorlink=Gitarre: CAGED-Skala D-Dur-Form |vortext=CAGED-Skala D-Dur-Form }} </noinclude> bsk01pim4yrv5tbt2hpvqgu5881qzm4 1090590 1090589 2026-09-08T19:27:00Z Mjchael 2222 /* 1. Fingersatz • D-Form */ 1090590 wikitext text/x-wiki {{:Gitarre/ Navi|Sologitarre| {{:Gitarre: Sologitarre/ Navi Improvisation in Dur und Moll}}| img=Guitar 1.svg |bg=#F8f8f8|border=darkorange|color=dark|px=80|navi=Einführung in die Sologitarre}} = Wiederholung der Fingersätze = ; mit Schwerpunkt auf den Stammtönen Diese Wiederholung ist zum einen dafür gedacht, die vorhergehenden Übungen auf jeder Saitenlage zu machen, und auch in jeder Bundlage, gleichgültig ob die Finger eng beieinander oder weit auseinander stehen. Zum andern sind diese als Vorbereitung in die Sologitarre gedacht. Beispielsweise als Auflockerungsübung zwischen den Barré-Akkorden. Besonderen Augenmerk wollen wir hier auf die Notennamen legen. Diese können hier mitgelernt werden. Solltest du meinen, das sei noch nicht für dich dran und kann warten, dann springe zur ersten CAGED-Skala. Du kannst beim Kapitel Longform nochmal hierrauf zurückkommen. * [[Gitarre: CAGED-Skala D-Dur-Form|CAGED-Skala D-Dur-Form]] Lassen wir die [[Gitarre: Aufbau der CAGED-Skalenformen|erste Lektion]] (insbesondere für die Quereinsteiger) noch einmal Revue passieren. Die folgenden Übungen enthalten oft eine Folge von ein- oder zweitaktigen Sequenzen. Eine Sequenz ist ein Motiv, dass sich auf verschiedenen Tonhöhen wiederholt. Auch ohne Notenkenntnisse kannst du den Verlauf und die Wiederholungen der Sequenzen einfacher im Notenbild verfolgen, als in der Tabulatur; insbesondere wenn du dir gleichzeitig die Übung anhörst. Es kommen auch Ausschnitte aus klassischen Stücken, Folksongs, Kinderlieder o.ä. vor. Die einfache Struktur oder der Bekanntheitsgrad der Melodien sollen dir das Üben erleichtern. Die Finger finden so leichter ihre Position, als wenn du erstmal jede einzelne Note aus der Tabulatur entschlüsseln musst. Jede Übung wird auf allen Saitenlagen geübt. Vorher blieben wir in den mittleren Lagen. Jetzt gehen wir auch in die ersten Bünde, wo man die Finger etwas mehr spreizen muss, und in die höheren Lagen, wo es ein wenig eng wird. Die Stücke wiederholen sich in dieser Lektion in der selben Tonart, doch auf verschiedenen Bünden. Du spielst immer die selbe Tonfolge, nur auf verschiedenen Tonhöhen bzw. auf verschiedenen Saitenlagen. Lediglich zwischen der G- und H-Saite musst du dir jedesmal überlegen, wie sich der Lagewechsel auf den Fingersatz auswirkt. Doch der Fingersatz in den anderen höheren Lagen bleibt immer gleich. Wie die Tonfolgen mit dem CAGED-System zusammenhängen, das muss dich nur am Rande interessieren. Es wird in den folgenden Lektionen näher und ausführlicher erleutert. :[[Datei:Scala Griffbrett.svg]] Wir hatten uns bei den vorhergehenden Übungen weitestgehend an den Intervallen (1-j7) und an der Tabulatur orientiert. Diese sind in allen Tonarten gleich. Suche zuerst das Karré! Daran orientierst du dich. :[[Image:Scala Carree.svg]] {{Tipp|Lerne bei der C-Dur-Tonleiter nicht nur die Intervalle <br> 2 - 3 4 - 5<br> 6 - j7 1 - 2<br> sondern benenne auch jede einzelne Note. <br> D - E F - G<br> A - H C - D<br> So bekommst du einen recht einfachen Überblick über das Griffbrett.}} == Töne der C-Dur Tonleiter auf dem Griffbrett == Wir wollen uns in dieser Lektion auf die Töne bzw. die Notennamen konzentrieren. Allerdings sparen wir uns vorerst alle Töne mit Vorzeichen aus. Die [[Gitarre: Aufbau der CAGED-Skalenformen|ersten Übungen zum 1. und 2. Fingersatz]] werden auf die Tonart C-Dur bzw. A-Moll übertragen und wir spiele sie in den hier gezeigten Positionen. Wir fangen mit dem zweiten Fingersatz an, wo wir entweder den Ton C oder den Ton A der C-Dur- bzw. Am-Tonleiter als Orientierung nutzen :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] Du hast vermutlich allerlei Akkordformen des CAGED-System gesehen. <div class="noprint"> ;Animation [[Image:Crd Grundtonschema ani.gif]] </div> <score> << \new ChordNames { \chordmode { c1 c c c c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 e-2 g c'-1 e' > < c-1\5 g-3\4 c'-3\3 e'-4\2 g'-1 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 e-2\5 g-1\4 c'-1\3 e'-1\2 c''-4\1> < c-1\6 g-2\5 c'-3\4 e'-4\3 g'-1\2 c''-1\1> \once \override FretBoard.fret-diagram-details.dot-color = #'white < c'-1\4 g'-2\3 c''-4\2 e''-3\1 > < c'-4\5 e'-3\4 g'-1\3 c''-2\2 e''-1\1 > } >> </score> Wenn du schon Fingerstyle oder Jazz spielst, mögen dir viele der Formen bekannt vorkommen. Doch selbst wenn du bis jetzt nur das [[Gitarre: Rockdiplom|Rockdiplom]] gemacht hast und mit den dort vorkommenden Barré-Akkorden vertraut bist, wirst du sehen, dass die einfachen Barré-Akkorde ausreichen, um sich auf dem Griffbrett zu zurechtzufinden. Die [[Gitarre: C-Dur-Tonleiter Workshop|C-Dur-Tonleiter in den ersten drei Bünden]] setze ich als bekannt voraus und es sollte dir nicht allzu schwer fallen, diese in den 12. Bund zu übertragen. :[[Datei:Scala C-Am.svg|150px]][[Datei:C-Dur_Majorpattern_III.jpg|150px]] C-Dur als Barré im 3. Bund kennst du vom Rockdiplom, und C-Dur im 8. Bund ist auch kein Hexenwerk. Dazwischen liegt nach dem CAGED-System die G-Form, die dir vermutlich noch nicht untergekommen ist (hier mit weißem Fingersatz). Statt uns die Töne von der G-Form abzuleiten, machen wir es uns einfacher und leiten uns die Töne zur Orientierung vom Am im 5. Bund ab. Du erinnerst dich noch an die Dur- und Mollparallelen? (C- \ Am-Tonleiter bzw. G- \ Em-Form). Oder du nutzt die Grundtöne des C-Barré im 8. Bund. <score> << \new ChordNames { \chordmode { c1 c c a:m c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 e-2 g c'-1 e' > < c-1\5 g-3\4 c'-3\3 e'-4\2 g'-1 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 e-2\5 g-1\4 c'-1\3 e'-1\2 c''-4\1> < a,-1\6 e-3\5 a-4\4 c'-1\3 e'-1\2 a'-1\1 > < c-1\6 g-2\5 c'-3\4 e'-4\3 g'-1\2 c''-1\1> < c'-4\5 e'-3\4 g'-1\3 c''-2\2 e''-1\1 > } >> </score> Leite dir also die Grundtöne C und A von den dir bekannten Barré-Akkorden ab und spare dir die ungewöhnlicheren Akkordformen auf, bis sie dir später beim Fingerstyle oder Jazz begegnen. Es macht dabei garnichts aus, wenn du zum Auffinden der Grundtöne und zum Finden des Starttons ein paar Sekunden brauchst. Du wirst sehen, dass die Wiederholungen der bekannten Übungen auf den verschiedenen Bünden und in verschiedenen Oktavebereichen leicht von der Hand gehen. Lediglich beim Lagewechsel zwischen der G- und H-Saite musst du etwas überlegen. <score> << \new ChordNames { \chordmode { c1 c c a c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 c'-1 > < c-1\5 c'-3\3 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 c'-1\3 c''-4\1> < a,-1\6 a-4\4 a'-1\1 > < c-1\6 c'-3\4 c''-1\1> < c'-4\5 c''-2\2 > } >> </score> Diese wenigen"Eckpunkte" reichen aus, um dich grob auf dem Griffbrett zurechtzufinden. Suche sie noch einmal in der Skala und natürlich auch auf deinem Griffbrett. :[[Datei:C-Major-Scale on the fretboard.svg]] == Zweiter Fingersatz == :[[Datei:Scala 6_71-2_34.svg]] Zuerst suchen wir uns in der C-Dur-Tonleiter überall den zweiten Fingersatz heraus. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] Zur leichteren Orientierung wird die Grafik bei jeder neuen Melodie wiederholt. === Rondeau (Auszug) === Die eintaktige Sequenzen wurde aus einem Rondeau von J.S. Bach entnommen, dass beliebig wiederholt werden kann. Der Grundton C, welcher im letzten Takt rot eingefärbt wurde, wird mit dem kleinen Finger gegriffen. Du kannst tatsächlich die Noten nutzen (sofern du es schon kannst) oder aber du orientierst dich an den Notennamen. Am Anfang des Griffbrettes brauchen wir den zweiten Fingersatz nicht vollständig. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #5 % \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> In der A-(Bb-)Form müssen wir den Lagewechsel zwischen der G- und H-Saite beachten. Übrigens werden hier die Töne in der englischen Form angegeben. (Bb-Form und der Ton B statt des deutschen H.) Nur der erste Bund wird bis zur letzten Note in der dritten Lage gespielt. Der Rest bis zur letzten Note in der zweiten Lage. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (A-, Bb-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e-4 d-2 c d e d c b d c b c d c b a c b a b c d b c d-1 } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Statt in der G-Form das C zu suchen, suche lieber das A im 5. Bund (hier grün hervorgehoben). Oder du leitest dir das C vom Barré im 8. Bund ab. Der Startton E ist auf der A Saite im 7. Bund unter dem Ringfinger. Ansonsten stellt der Fingersatz keine Herausforderung mehr dar. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (G-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b \once \override NoteHead #'color = #green a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Der kleine Finger des C-Barré im 8. Bund in der E- bzw. F-Form gibt gleichzeitig das C des zweiten Fingersatz an. Du siehst, dass ab jetzt alles leichter geworden ist, weil sich ansonsten nichts mehr am Fingersatz ändert. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (E- F-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Für den Grundton C müssen wir uns die D-Form gar nicht so genau ins Gedächtnis rufen, wenn uns die C-Form viel vertrauter ist. Diese hohe Lage ist für E-Gitarristen oder Gitarren mit Cutaway gedacht. Auf der Konzertgitarre ist die sehr hohe Lage schlecht zu spielen. Gehe ggf. einen Kompromiss ein, und spiele diese hohe Saitenlage ein paar Bünde tiefer als Übung nur für den Fingersatz aber nicht für die Notennamen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Noten über dem hohen C (der mit zwei Hilfslinien) wird dir seltener begegnen, da in dem Fall bevorzugt die Noten nach unten oktaviert werden. (Beachte die 8 im Notensystem.) Bei den weiteren Übungen werden jedoch die Versionen mit den vielen Hilfslinien angezeigt. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { \ottava #1 e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Mit der C-Form in den ersten drei Bünden im Hinterkopf ist der 12. Bund leicht zu bewältigen. Wieder eine Übung, die weniger für Konzertgitarren geeignet ist. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === "Das häßliche Entlein" oder "Alle meine Entchen"<ref>Anspielung auf ein Märchen der Gebrüder Grimm nebst einem bekannten deutschen Kinderlied.</ref> in A-Moll === Die vorherige Übung war in Dur, und hier verwenden wir ein und den selben Fingersatz in Moll. Wie du siehst und hörst, lässt sich ein Fingersatz oder ein Pattern nicht eindeutig einer einzigen Tonart zuordnen. Der Schlusston oder der Schlussakkord (hier der Ton A bzw. der Akkord Am) bestimmt die Tonart. Der Grundton A ist hier die Sexte (6) des zugrunde liegenden C-Major-Pattern. Es bleibt dir überlassen, ob du zur Orientierung lieber den Grundton A (grün) bestimmst, oder das C aus dem Karré (rot). Wenn in einer Tabulatur über einer Ziffer zwei Notenhälse stehen, so ist das ein Zeichen für eine halbe Note, die zwei Schläge dauert. Da dieses für viele Gitarristen sehr ungewöhnlich aussieht, verzichtet man oft auf Taktstriche in der Tabulatur. In dem Fall lässt sich die Tondauer allein an den Notenwerten ablesen. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-/Am-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #5 % \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Der Lagewechsel zwischen der G- und H-Saite ist hier leicht zu bewältigen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Gm-/Bb-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d-1 e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2-4 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Auch hier ist es wieder einfacher das A (grün) zu suchen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Em-/G-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (E- / F-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Statt lange nach dem Grundton der D-Form zu suchen, erinneren wir uns kurz, wo der Grundton C auf der H- (B-)Saite sein muß (13. Bund). <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> === Die Moldau (Hauptmotiv) === Die Abfolge der Töne der folgenden Übung unterscheidet sich kaum von der vorhergehenden. Doch mit dem anderen Rhythmus haben wir das Hauptmotiv von der Komposition {{Youtube-Suche|Smetana+Die+Moldau|"Die Moldau" von Bedrich Smetana}} (ohne Auftakt und rhythmisch vereinfacht). Auch wenn es hier (wie in der 7. Übung) nur die Molltonleiter rauf und runter geht, merkst du hoffentlich, wieviel der Takt und Rhythmus an der Wirkung ausmacht. Wenn du später mal meinst, deine Improvisationen hören sich langweilig an, dann solltest du dich mehr mit Rhythmus beschäftigen. Dazu kannst du dich auch ein wenig mit Schlagmustern beschäftigen. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Am-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Warum die Form hier Gm-Form genannt wird, das wird dir in den nachfolgenden Lektionen klarer werden. Auf Fingersatzangaben können wir hier verzichten, wenn du vorher "Alle meine Entchen in Am" gespielt hast. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Bb- /Gm-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier bietet sich besonders an, den Am-Barré zur Orientierung zu verwenden. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Em-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Auch hier gibt dir der kleine Finger des Am-Barrés den Grundton an. Du kannst dir die Dm-Form aber auch über die F-Form (C im 8. Bund) ableiten. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (F- /Dm-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Zähle vom C (H-Saite, 13. Bund) rückwärts zum A. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D- /Bm7-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier wird die erste Übung in den 12. Bund verschoben. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C- /Am-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==1. Fingersatz== Dir wird wohl aufgefallen sein, dass beim zweiten Fingersatz der Ton G fehlt. Den üben wir mit dem ersten Fingersatz. :[[Datei:Scala 71_2-34_5.svg]] Beachte, dass der Grundton (1) unter dem Ringfinger (also im zweiten Bund dieses Fingersatzes) ist, und dass du deine freie Improvisationsübung in Dur günstigerweise mit der (1) beginnen oder zumindest enden sollte. Diesen Fingersatz suchen wir in der C-Dur-Tonleiter auf dem Griffbrett. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] === Eintaktige Sequenzen === Die erste Lage mit leeren Saiten stellt noch keine Herausforderung dar. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • A- (Bb-)Form ==== Du musst noch nicht einmal den C-Barré im 3. Bund bemühen, um den Grundton zu finden. Die C-Dur-Tonleiter in den ersten drei Bünden reicht. Natürlich kannst du auch den Startton G suchen. Die Tabulatur sagt dir "D-Saite 5. Bund". Erinnere dich daran, dass dies der Stimmton der D-Saite ist (beim Stimmen nach Bünden). Auch hier ist der Fingersatz leicht. <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • A- (Bb-)Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 4 2 3 darkgrey ) (place-fret 4 3 4 yellow3 ) (place-fret 4 5 5 darkgrey ) (place-fret 5 2 "j7" yellow3 ) (place-fret 5 3 1 black ) (place-fret 5 5 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb)-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • G-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • G-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 2 5 3 darkgrey ) (place-fret 2 6 4 yellow3 ) (place-fret 2 8 5 darkgrey ) (place-fret 3 4 "j7" yellow3 ) (place-fret 3 5 1 black ) (place-fret 3 7 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Bei der G-Form kommt es zwischen der G- und H-Saite zu einem Lagewechsel. Du musst dir jedesmal eine Strategie zurechtlegen, wann und wie du am besten den Lagewechsel durchführst. Wenn du Glück hast, findest du im Notenbild einen Hinweis, wie man günstig die Lage wechseln kann. Ich empfehle dir dort wo die 2 über den Noten steht, den Mittelfinger zu nehmen. *(1 = Z, 2 = M, 3 = R, 4 = K, 0 = leere Saite) Betrachte solche Hinweis nur als Vorschlag, denn es gibt keine verbindliche Regel, wie der Lagewechsel zu erfolgen hat. Übst du die gleiche Sequenzen ein paar Saiten höher oder tiefer, geht es leichter von der Hand. Beachte den Lagewechsel zwischen der G- und H-Saite. Den Grundton C kannst du dir auch vom Ringfinger auf der G-Saite des C-Barrés ableiten. Du musst dir hier eine Strategie zurechtlegen, wann du den Lagewechsel durchführen möchtest. Ich empfehle hier, den Lagewechsel so früh wie möglich zu machen, damit du den Zeigefinger frei hast, um gleich hintereinander zwei Töne in einem Bund zu spielen. Betrachte die Angaben zum Fingersatz nur als Vorschlag. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d-4 e-2 f-3 d e f e d c d e c-1 d-4 e-2 d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier eine alternative Lösung. Du kannst einen kleinen Barré über die Noten C und E legen, und den Lagewechsel später ausführen. Das V unter dem C zeigt hier den 5. Bund an, und nicht etwa Abschläge. Der Lagewechsel erfolgt hier im letzten Takt. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d e f d e f e d-2 \textSpannerDown \override TextSpanner.bound-details.left.text = "V" c-1\startTextSpan d e-1 c-1 d e-1\stopTextSpan d-4 c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • E- (F-)Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • E- (F-)Form <score raw="1"> \version "2.24.4" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 5 7 3 darkgrey ) (place-fret 5 8 4 yellow3 ) (place-fret 5 10 5 darkgrey ) (place-fret 6 7 "j7" yellow3 ) (place-fret 6 8 1 black ) (place-fret 6 10 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Den Grundton C auf der E-Saite kannst du dir vom C-Barré der E-Form (wie ein F- Barré) im 8. Bund ableiten. Der Fingersatz ist wieder einfach. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E-(F)-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • D-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • D-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 3 9 3 darkgrey ) (place-fret 3 10 4 yellow3 ) (place-fret 3 12 5 darkgrey ) (place-fret 4 9 "j7" yellow3 ) (place-fret 4 10 1 black ) (place-fret 4 12 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div>Die Tonhöhe ist die selbe, wie in der G-Form, wo wir uns komplizierte Strategien für den Fingersatz zurechtlegen mussten. In dieser Lage ist alles einfacher. Wenn du später mal einen herausfordernden Lick zwischen der G- und H-Saite hast, wäre eine weitere gangbare Strategie den Lick in eine fingertechnisch günstigere Lage zu verlegen. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • C-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • C-Form <score raw="1"> \version "2.24.4" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 1 12 3 darkgrey ) (place-fret 1 13 4 yellow3 ) (place-fret 1 15 5 darkgrey ) (place-fret 2 12 "j7" yellow3 ) (place-fret 2 13 1 black ) (place-fret 2 15 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Hier wurde die C-Durtonleiter in den 12. Bund verlegt. Der Grundton ist auf der H-Saite im 13. Bund. (Eine Oktave höher als bei der C-Dur Tonleiter in den ersten drei Bünden.) Wer keine E-Gitarre hat oder wer keine Akkustik mit Cutaway hat, der kann die C-Form auch in einem niedrigeren Bund üben. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c''' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Halbtaktige Sequenzen === Diesmal hast du halbtaktige Sequenzen, die einmal wiederholt werden. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== A- (Bb-)Form • 1. Fingersatz ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • A- (Bb-)Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 4 2 "E" darkgrey ) (place-fret 4 3 "F" yellow3 ) (place-fret 4 5 "G" darkgrey ) (place-fret 5 2 "B" yellow3 ) (place-fret 5 3 "C" black ) (place-fret 5 5 "D" darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Leite dir den Grundton vom C-Dur-Akkord, oder vom C-Barré im 3. Bund ab. Lerne nicht nur die Intervlle, sondern auch die Notennamen. (Zumindest bei den einfachen Tonarten F-, G- und C-Dur). Andere Tonarten kommen später dran. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- / Bb-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== G-Form • 1. Fingersatz ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • G-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 2 5 "E" darkgrey ) (place-fret 2 6 "F" yellow3 ) (place-fret 2 8 "G" darkgrey ) (place-fret 3 4 "B" yellow3 ) (place-fret 3 5 "C" black ) (place-fret 3 7 "D" darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div>Du kannst die beiden hintereinander folgenden Noten im 5. Bund mit einem Mini-Barré ausführen, und die Lagewechsel mittels Slide (=&nbsp;Glissando) durchführen, oder wie in der Wiederholung ohne Slide durchführen. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major c8-1 g' f e d f e d c-1 e-1 d c-1(\glissando b-1) d c b-1(\glissando c1-1) c8-2 g' f e d f e d c-1 e-2 d-4 c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== E- (F-)Form • 1. Fingersatz ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • E- (F-)Form <score raw="1"> \version "2.24.4" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 5 7 "E" darkgrey ) (place-fret 5 8 "F" yellow3 ) (place-fret 5 10 "G" darkgrey ) (place-fret 6 7 "B" yellow3 ) (place-fret 6 8 "C" black ) (place-fret 6 10 "D" darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Fingersatztechnisch wieder problemlos. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== D-Form • 1. Fingersatz ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • D-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 3 9 "E" darkgrey ) (place-fret 3 10 "F" yellow3 ) (place-fret 3 12 "G" darkgrey ) (place-fret 4 9 "B" yellow3 ) (place-fret 4 10 "C" black ) (place-fret 4 12 "D" darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • C-Form ==== <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> === Ein Vogel wollte Hochzeit machen === Hier habe ich ein relativ bekanntes Kinderlied gefunden, dass perfekt zum 1. Fingersatz passt. Die Tondauern sind für Ungeübte in Sachen Noten schwer herauszulesen. Kennst du aber das Stück, oder hörst du es dir mehrmals an, so ist es keine unüberwindbare Schwierigkeit. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] Folgt das G nach dem D, greifst du den besser mit dem kleinen Finger. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d-3( g-4) g g16 e | c8 8 8 g'16 e d8 d d-3 g16-4 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier ist es wohl am einfachsten, dass du den kleinen Finger umlegst, wenn du nach dem D den G greifen willst. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb-)Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d-3( g-4) g g16 e | c8 8 8 g'16 e d8-3 d d g16-4 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Wenn der Ton C auf ein E-folgt, kann man entweder ein <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e-2 c-1 g' e d( g) g g16 e-2 | c8-1 8 8 g'16 e d8 d d g16 f | e8-2 c-1 d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Halbtaktige Sequenzen (2) === :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Bei der G-Form kommt es zwischen der G- und H-Saite zu einem Lagewechsel. Du musst dir jedesmal eine Strategie zurechtlegen, wann und wie du am besten den Lagewechsel durchführst. Wenn du Glück hast, findest du im Notenbild einen Hinweis, wie man günstig die Lage wechseln kann. Ich empfehle dir dort wo die 2 über den Noten steht, den Mittelfinger zu nehmen. *(1 = Z, 2 = M, 3 = R, 4 = K, 0 = leere Saite) Betrachte solche Hinweis nur als Vorschlag, denn es gibt keine verbindliche Regel, wie der Lagewechsel zu erfolgen hat. Übst du die gleiche Sequenzen ein paar Saiten höher oder tiefer, geht es leichter von der Hand. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c''' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Einsingen === Diese beiden Motive kennen viele, die schon einmal in einem Chor gesungen haben. Leider entsprechen viele Lieder in ihrem Tonumfang nicht genau einem der vollständigen drei Fingersätze oder der später folgenden Skalen. Zumeist werden nur Ausschnitte aus den Patterns gebraucht. Im ersten Motiv fehlt beispielsweise die große Septime (j7) vor dem Grundton. Dafür enthält das zweite Motiv die große Septime (j7). Das zweite Motiv eicht den Chor auf die gerade geforderte Tonart. Hier werden nur Akkordtöne in einer auf oder absteigenden Tonfolge gespielt (auch Arpeggios genannt). Der A7-Akkord enthält sowohl den Leitton (j7) der zum Grundton (1) hin leitet, als auch den Strebeton (4) die zur Durterz (3) hin strebt. Mit den zwei spannungsreichen Tönen, die sich zum Grundakkord auflösen wollen, wird der Chor auf die Durtonart eingenordet. Hier brauche ich dir nicht zu erklären, wo der Grundton D ist. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A-(Bb-)Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E-(F-)Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==Erste über den zweiten Fingersatz== Wie du siehst, kommt hier jedesmal zuerst der erste Fingersatz mit dem "Karree" rechts, und dannach kommt der Fingersatz mit dem "Karree" links. Sie sind immer untereinander. Nur zwischen der G- und B-Saite verschiebt sich alles um einen Bund. <div style="float:left; padding:5px; border:black solid 1px; "> ;F-Form <score raw="1"> \version "2.14.2" \paper{ indent=0\mm line-width=120\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% 4-o zeigt 4. Saite offen \fret-diagram #"s:2;f:1; 3-3-2;3-5-3;3-6-4; 4-3-6;4-5-7;4-6-1; 5-3-3;5-4-4;5-6-5; 6-3-7;6-4-1;6-6-2;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;Bb-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:2;f:1; 2-4-2;2-6-3;2-7-4; 3-3-6;3-5-7;3-6-1; 4-3-3;4-4-4;4-6-5; 5-3-7;5-4-1;5-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;D-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:2;f:1; 1-4-2;1-6-3;1-7-4; 2-4-6;2-6-2;2-7-1; 3-3-3;3-4-4;3-6-5; 4-3-7;4-4-1;4-6-2;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} === Jamaica Farewell === Die Melodie von [[Liederbuch/ Jamaica Farwell|Jamaica Farwell]] wurde erheblich vereinfacht, damit du dir nicht zu viele Gedanken um den Rhythmus machen musst. Wenn du dich am Quintillo (dem Rhythmus vom Lagerfeuerschlag} orientierst, solltest du wenige Probleme haben. Es gibt recht viele Wiederholung. Die Strophe wurde bei der Wiederholung in die Oktave verschoben, damit das Stück exakt in den Skalenausschnitt passt. Du musst dir für die Fingersätze ggf. Strategien zurechtlegen, damit du die Finger bequem sortiert bekommst. Das Stück beginnt mit dem Ton G. Der (5) in 1. Fingersatz. ;Bb-Form Greife den C wie ein Bb-Barré im 3. Bund. Leite dir von diesem Akkord den Grundton (1) ab, und wandere beim 1. Fingersatz rauf zum Startton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-4-2;2-6-3;2-7-4; 3-3-6;3-5-7;3-6-1; 4-3-3;4-4-4;4-6-5; 5-3-7;5-4-1;5-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (A-, Bb-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ; F-Form Greife den C wie ein F-Barré im 8. Bund. Leite dir von diesem Akkord den Grundton (1) ab, und wandere beim 1. Fingersatz rauf zum Startton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 3-7-2;3-9-3;3-10-4; 4-7-6;4-9-7;4-10-1; 5-7-3;5-8-4;5-10-5; 6-7-7;6-8-1;6-10-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (E-, F-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ;D-Form Schiebe den D-Dur-Akkord in den 12. Bund. Ein D im 12. Bund verschoben ergibt ein C. Leite dir von diesem Akkord den Grundton (1) ab. Orientiere dich kurz im 2. Fingersatz und wandere zurück zum ersten Fingersatz zum Ton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 1-10-2;1-12-3;1-13-4; 2-10-6;2-12-7;2-13-1; 3-9-3;3-10-4;3-12-5; 4-9-7;4-10-1;4-12-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (D-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==3. Fingersatz== Es fällt auf, dass der 3. Fingersatz kein "Karré" hat. {| !Fingersatz !width="30px"| !Intervalle |- |[[Image:Scala Z RK-Z K-ZM K.svg]] !width="30px"| |[[Image:Scala 2 34-5 6-71 2.svg]] |} Der 3. Fingersatz ist gar kein eigenständiger Fingersatz. Der obere Teil des 3. Fingersatzes ist eigentlich schon der untere Teil des 2. Fingersatzes. Ebenso ist der untere Teil des 3. Fingersatzes gleichzeitig der Anfang des 1. Fingersatzes. Du musst dir Strategien zurechtlegen, wie du den Übergang vom Ende des 2. Fingersatzes über die 5 und die 6 hin zum 1. Fingersatz gestaltest. Es kommt beim 3. Fingersatz zu einem Lagewechsel nach links. Übe den 3. Fingersatz zuerst in den obersten Saitenlagen (E A D G x x) === Eine II-V-I-Verbindung === Wir spielen eine einfache Tonfolge über einer 2-5-1-Verbindung. Die Akkordtöne liegen zumeist auf den schweren Zählzeiten. * D, F, A, C gehören zum Dm7 * G, B, D, F gehören zum G7 * C, E, G gehören zum C-Dur-Akkord. Wir nutzen das CAGED-System, um uns grob auf dem Griffbrett zurechtzufinden. ==== Exkurs: Skalenformen ==== Die Namen der Skalen leiten sich übrigens von folgenden einfachen Tonleitern in den ersten Bünden ab: [[Image:Scala C-Am.svg|100px]] [[Image:Scala Bb-Gm.svg|100px]] [[Image:Scala G-Em.svg|100px]] [[Image:Scala F-Dm.svg|100px]] [[Image:Scala D-Hm.svg|100px]] Alle Akkorde die man aus diesen einfachen Tonarten kennt, Bassläufe und ähnliches lassen sich zum großen Teil auf die entsprechenden 5 CAGED-Skalen übertragen, fast so als habe man die Tonleiter mittels Kapodaster in eine höhere Lage verschoben. Wie du siehst, nennen wir die Skalen entgegen des reinen CAGED-System nicht E-Dur-Form (Shape) und nicht die A-Dur-Form (Shape), sondern F- und Bb-Dur-Form. <div style="float:left; padding:5px; border:black solid 1px; "> ;E-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-1;1-2-2;1-4-3; 2-0-5;2-2-6;2-4-7; 3-1-3;3-2-4;3-4-5; 4-1-7;4-2-1;4-4-2; 5-0-4;5-2-5;5-4-6; 6-0-1;6-2-2;6-4-3;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;F-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-3; 1-1-1; 1-3-2; 2-1-5; 2-3-6; 3-0-2; 3-2-3; 3-3-4; 4-0-6; 4-2-7; 4-3-1; 5-0-3; 5-1-4; 5-3-5; 6-0-7; 6-1-1; 6-3-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;G-Dur-Tonleiter <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-3-3; 1-4-1; 1-6-2; 2-4-5; 2-6-6; 3-3-2; 3-5-3; 3-6-4; 4-3-6; 4-5-7; 4-6-1; 5-3-3; 5-4-4; 5-6-5; 6-3-7; 6-4-1; 6-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Du siehst selbst, dass die G-Dur-Tonleiter von der Form her eher wie die F-Dur-Tonleiter als wie die E-Dur-Tonleiter aussieht. <div style="float:left; padding:5px; border:black solid 1px; "> ;A-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-5;1-2-6;1-4-7; 2-0-2;2-2-3;2-3-4; 3-1-7;3-2-1;3-4-2; 4-0-4;4-2-5;4-4-6; 5-0-1;5-2-2;5-4-3; 6-0-5;6-2-6;6-4-7;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;Bb-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-1-5; 1-3-6; 2-1-2; 2-3-3; 2-4-4; 3-0-6; 3-2-7; 3-3-1; 4-0-3; 4-1-4; 4-3-5; 5-0-7; 5-1-1; 5-3-2; 6-1-5; 6-3-6;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;C-Dur-Tonleiter <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-3-5; 1-5-6; 2-3-2; 2-5-3; 2-6-4; 3-2-6; 3-4-7; 3-5-1; 4-2-3; 4-3-4; 4-5-5; 5-2-7; 5-3-1; 5-5-2; 6-3-5; 6-5-6;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Du siehst selbst, dass die C-Dur-Tonleiter von der Form her eher wie die Bb-Dur-Tonleiter als wie die A-Dur-Tonleiter aussieht. ==== 3. Fingersatz II-V-I-Verbindung D-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;D-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:3;f:1; 4-9-7;4-10-1;4-12-2; 5-10-5;5-12-6; 6-10-2;6-12-3;6-13-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Wir beginnen oben bei der D-Form, wo sich der Lagewechsel des 3. Fingersatz noch nicht mit dem Lagewechsel zwischen der G und H-Saite (engl. B-Saite) aufhebt. Würde ich ein Capo in den 10. Bund setzen, dann würde ich die Melodie vom Fingersatz her wie D-Dur spielen. In D-Dur spiele ich diese II-V-I-Verbindung Em7 A7 D. Nehme ich das Capo weg, dann greife ich den Dm(7) als einen Barré der Em-Form im 10. Bund. Von diesem kann ich mir das D als Grundton ableiten. Alternativ siehst du in den Noten, dass die Übung mit dem Ton D anfängt. Dass die oberste Tiefe E-Saite im 12. Bund ebenfalls ein E ergibt, setze ich als bekannt voraus. Falls nicht, beschäftige dich noch einmal mit dem [[Gitarre: Lagerfeueranhang 2c|Stimmen der Gitarre]]. Ein Ganztonschritt bzw. zwei Bünde vor dem E ist der Ton D. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (D-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g-1 a-4 b-1 c4 | b8^\markup { \bold {G7} } a-4 g4-1 f8 e d4 | e8^\markup { \bold {C} } f g4-1 a8-4 b-1 c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung G-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;G-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 3-4-7;3-5-1;3-7-2; 4-5-5;4-7-6; 5-5-2;5-7-3;5-8-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 5. Bund setzen, dann würde man die Melodie vom Fingersatz her wie G-Dur spielen. In G-Dur spielt man diese II-V-I-Verbindung Am7 D7 G. Nimmt man das Capo weg, dann greift man den Dm(7) als einen Barré der Am-Form. Von diesem kannst du dir den D als Grundton ableiten. Einfacher geht es natürlich, wenn du weißt, dass der D im 5. Bund der A-Saite der Stimmton der D-Saite ist. </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (G-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g-1 a-4 b-1 c4 | b8^\markup { \bold {G7} } a-4 g4-1 f8 e d4 | e8^\markup { \bold {C} } f g4-1 a8-4 b-1 c d | c b c2. | \break d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung C-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;C-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-0-7;2-1-1;2-3-2; 3-0-5;3-2-6; 4-0-2;4-2-3;4-3-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Die C-Dur-Form der C-Dur Tonleiter sieht schlicht und ergreifend wie die C-Durtonleiter aus. </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (C-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #4 % \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \break d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung C-Form 12. Bund ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;C-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-12-7;2-13-1;2-15-2; 3-12-5;3-14-6; 4-12-2;4-14-3;4-15-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 12. Bund setzen, dann würde man die Melodie vom Fingersatz her wie C-Dur spielen. In C-Dur spielt man diese II-V-I-Verbindung Dm7 G7 C. Der Startton ist schlicht die D-Saite im 12. Bund. </div> {{clear}} Gerade noch hatten wir einen Lagewechsel nach links. Jetzt aber hebt sich der Lagewechsel nach links vom 3. Fingersatz mit dem Lagewechsel zwischen der G- und H-Saite auf. Es hört sich beim ersten Durchlesen kompliziert an, aber du hast nur 4 Lektionen zu lernen. Den 1. bis 3. Fingersatz und den Lagewechsel zwischen der G- und H-Saite. Das Auffinden der Töne und welche Akkorde zu welcher Tonart gehört, und wie man einen Capo benutzt, sollte eigentlich nichts neues für dich sein. Rein technisch gesehen vereinfacht sich der Fingersatz. Doch es kostet ein wenig Überlegung, wie sich die beiden Lagewechsel auf den 3. Fingersatz auswirken. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (C-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> Sollte es im 12 Bund unbequem zu spielen sein, weil du kein Cutaway hast (Aussparung für die hohen Bünde), übe die C-Form ein paar Bünde zurück in einer anderen Tonart. ==== 3. Fingersatz II-V-I-Verbindung F-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;F-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 1-7-7; 1-8-1;1-10-2; 2-8-5; 2-10-6; 3-7-2; 3-9-3; 3-10-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 6. Bund setzen, dann würde man die Melodie vom Fingersatz her wie F-Dur spielen. In C-Dur spielt man diese II-V-I-Verbindung Gm7 C7 F. Wenn du den C wie ein F-Barré im 8. Bund greifst, dindest du den Grundton (1) auf der hohen E-Saite. Von dem wanderst du runter zum Startton (2). </div> {{clear}} Auch hier hebt sich der Lagewechsel zwischen der G- und H-Saite mit dem Lagewechsel des 3. Fingersatz gegeneinander auf, was den Fingersatz grifftechnisch wieder vereinfacht. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (F-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> == Wie geht es weiter? == Solltest du als Quereinsteiger in diese Lektion gestolpert sein, dann schaue dir die erste Lektion zum [[Gitarre: Aufbau der CAGED-Skalenformen|Aufbau der CAGED-Skalenformen]] an. Insbesondere die Abschnitte, die hier übergangen wurden. Dannach kannst du mit der ersten CAGED-Skala in der D-Dur-Form weitermachen. <noinclude> {{Navigation zurückhochvor |zurücklink=Gitarre: CAGED-Skala G-Dur-Form |zurücktext=CAGED-Skala G-Dur-Form |hochlink=Gitarre: Die Major-Patterns |hochtext=Einführung: Major-Patterns |vorlink=Gitarre: CAGED-Skala D-Dur-Form |vortext=CAGED-Skala D-Dur-Form }} </noinclude> dm0ym425k4a35aw2ep6brmh6lun7iq6 1090591 1090590 2026-09-08T19:33:11Z Mjchael 2222 /* D-Form • 1. Fingersatz */ + 1090591 wikitext text/x-wiki {{:Gitarre/ Navi|Sologitarre| {{:Gitarre: Sologitarre/ Navi Improvisation in Dur und Moll}}| img=Guitar 1.svg |bg=#F8f8f8|border=darkorange|color=dark|px=80|navi=Einführung in die Sologitarre}} = Wiederholung der Fingersätze = ; mit Schwerpunkt auf den Stammtönen Diese Wiederholung ist zum einen dafür gedacht, die vorhergehenden Übungen auf jeder Saitenlage zu machen, und auch in jeder Bundlage, gleichgültig ob die Finger eng beieinander oder weit auseinander stehen. Zum andern sind diese als Vorbereitung in die Sologitarre gedacht. Beispielsweise als Auflockerungsübung zwischen den Barré-Akkorden. Besonderen Augenmerk wollen wir hier auf die Notennamen legen. Diese können hier mitgelernt werden. Solltest du meinen, das sei noch nicht für dich dran und kann warten, dann springe zur ersten CAGED-Skala. Du kannst beim Kapitel Longform nochmal hierrauf zurückkommen. * [[Gitarre: CAGED-Skala D-Dur-Form|CAGED-Skala D-Dur-Form]] Lassen wir die [[Gitarre: Aufbau der CAGED-Skalenformen|erste Lektion]] (insbesondere für die Quereinsteiger) noch einmal Revue passieren. Die folgenden Übungen enthalten oft eine Folge von ein- oder zweitaktigen Sequenzen. Eine Sequenz ist ein Motiv, dass sich auf verschiedenen Tonhöhen wiederholt. Auch ohne Notenkenntnisse kannst du den Verlauf und die Wiederholungen der Sequenzen einfacher im Notenbild verfolgen, als in der Tabulatur; insbesondere wenn du dir gleichzeitig die Übung anhörst. Es kommen auch Ausschnitte aus klassischen Stücken, Folksongs, Kinderlieder o.ä. vor. Die einfache Struktur oder der Bekanntheitsgrad der Melodien sollen dir das Üben erleichtern. Die Finger finden so leichter ihre Position, als wenn du erstmal jede einzelne Note aus der Tabulatur entschlüsseln musst. Jede Übung wird auf allen Saitenlagen geübt. Vorher blieben wir in den mittleren Lagen. Jetzt gehen wir auch in die ersten Bünde, wo man die Finger etwas mehr spreizen muss, und in die höheren Lagen, wo es ein wenig eng wird. Die Stücke wiederholen sich in dieser Lektion in der selben Tonart, doch auf verschiedenen Bünden. Du spielst immer die selbe Tonfolge, nur auf verschiedenen Tonhöhen bzw. auf verschiedenen Saitenlagen. Lediglich zwischen der G- und H-Saite musst du dir jedesmal überlegen, wie sich der Lagewechsel auf den Fingersatz auswirkt. Doch der Fingersatz in den anderen höheren Lagen bleibt immer gleich. Wie die Tonfolgen mit dem CAGED-System zusammenhängen, das muss dich nur am Rande interessieren. Es wird in den folgenden Lektionen näher und ausführlicher erleutert. :[[Datei:Scala Griffbrett.svg]] Wir hatten uns bei den vorhergehenden Übungen weitestgehend an den Intervallen (1-j7) und an der Tabulatur orientiert. Diese sind in allen Tonarten gleich. Suche zuerst das Karré! Daran orientierst du dich. :[[Image:Scala Carree.svg]] {{Tipp|Lerne bei der C-Dur-Tonleiter nicht nur die Intervalle <br> 2 - 3 4 - 5<br> 6 - j7 1 - 2<br> sondern benenne auch jede einzelne Note. <br> D - E F - G<br> A - H C - D<br> So bekommst du einen recht einfachen Überblick über das Griffbrett.}} == Töne der C-Dur Tonleiter auf dem Griffbrett == Wir wollen uns in dieser Lektion auf die Töne bzw. die Notennamen konzentrieren. Allerdings sparen wir uns vorerst alle Töne mit Vorzeichen aus. Die [[Gitarre: Aufbau der CAGED-Skalenformen|ersten Übungen zum 1. und 2. Fingersatz]] werden auf die Tonart C-Dur bzw. A-Moll übertragen und wir spiele sie in den hier gezeigten Positionen. Wir fangen mit dem zweiten Fingersatz an, wo wir entweder den Ton C oder den Ton A der C-Dur- bzw. Am-Tonleiter als Orientierung nutzen :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] Du hast vermutlich allerlei Akkordformen des CAGED-System gesehen. <div class="noprint"> ;Animation [[Image:Crd Grundtonschema ani.gif]] </div> <score> << \new ChordNames { \chordmode { c1 c c c c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 e-2 g c'-1 e' > < c-1\5 g-3\4 c'-3\3 e'-4\2 g'-1 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 e-2\5 g-1\4 c'-1\3 e'-1\2 c''-4\1> < c-1\6 g-2\5 c'-3\4 e'-4\3 g'-1\2 c''-1\1> \once \override FretBoard.fret-diagram-details.dot-color = #'white < c'-1\4 g'-2\3 c''-4\2 e''-3\1 > < c'-4\5 e'-3\4 g'-1\3 c''-2\2 e''-1\1 > } >> </score> Wenn du schon Fingerstyle oder Jazz spielst, mögen dir viele der Formen bekannt vorkommen. Doch selbst wenn du bis jetzt nur das [[Gitarre: Rockdiplom|Rockdiplom]] gemacht hast und mit den dort vorkommenden Barré-Akkorden vertraut bist, wirst du sehen, dass die einfachen Barré-Akkorde ausreichen, um sich auf dem Griffbrett zu zurechtzufinden. Die [[Gitarre: C-Dur-Tonleiter Workshop|C-Dur-Tonleiter in den ersten drei Bünden]] setze ich als bekannt voraus und es sollte dir nicht allzu schwer fallen, diese in den 12. Bund zu übertragen. :[[Datei:Scala C-Am.svg|150px]][[Datei:C-Dur_Majorpattern_III.jpg|150px]] C-Dur als Barré im 3. Bund kennst du vom Rockdiplom, und C-Dur im 8. Bund ist auch kein Hexenwerk. Dazwischen liegt nach dem CAGED-System die G-Form, die dir vermutlich noch nicht untergekommen ist (hier mit weißem Fingersatz). Statt uns die Töne von der G-Form abzuleiten, machen wir es uns einfacher und leiten uns die Töne zur Orientierung vom Am im 5. Bund ab. Du erinnerst dich noch an die Dur- und Mollparallelen? (C- \ Am-Tonleiter bzw. G- \ Em-Form). Oder du nutzt die Grundtöne des C-Barré im 8. Bund. <score> << \new ChordNames { \chordmode { c1 c c a:m c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 e-2 g c'-1 e' > < c-1\5 g-3\4 c'-3\3 e'-4\2 g'-1 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 e-2\5 g-1\4 c'-1\3 e'-1\2 c''-4\1> < a,-1\6 e-3\5 a-4\4 c'-1\3 e'-1\2 a'-1\1 > < c-1\6 g-2\5 c'-3\4 e'-4\3 g'-1\2 c''-1\1> < c'-4\5 e'-3\4 g'-1\3 c''-2\2 e''-1\1 > } >> </score> Leite dir also die Grundtöne C und A von den dir bekannten Barré-Akkorden ab und spare dir die ungewöhnlicheren Akkordformen auf, bis sie dir später beim Fingerstyle oder Jazz begegnen. Es macht dabei garnichts aus, wenn du zum Auffinden der Grundtöne und zum Finden des Starttons ein paar Sekunden brauchst. Du wirst sehen, dass die Wiederholungen der bekannten Übungen auf den verschiedenen Bünden und in verschiedenen Oktavebereichen leicht von der Hand gehen. Lediglich beim Lagewechsel zwischen der G- und H-Saite musst du etwas überlegen. <score> << \new ChordNames { \chordmode { c1 c c a c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 c'-1 > < c-1\5 c'-3\3 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 c'-1\3 c''-4\1> < a,-1\6 a-4\4 a'-1\1 > < c-1\6 c'-3\4 c''-1\1> < c'-4\5 c''-2\2 > } >> </score> Diese wenigen"Eckpunkte" reichen aus, um dich grob auf dem Griffbrett zurechtzufinden. Suche sie noch einmal in der Skala und natürlich auch auf deinem Griffbrett. :[[Datei:C-Major-Scale on the fretboard.svg]] == Zweiter Fingersatz == :[[Datei:Scala 6_71-2_34.svg]] Zuerst suchen wir uns in der C-Dur-Tonleiter überall den zweiten Fingersatz heraus. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] Zur leichteren Orientierung wird die Grafik bei jeder neuen Melodie wiederholt. === Rondeau (Auszug) === Die eintaktige Sequenzen wurde aus einem Rondeau von J.S. Bach entnommen, dass beliebig wiederholt werden kann. Der Grundton C, welcher im letzten Takt rot eingefärbt wurde, wird mit dem kleinen Finger gegriffen. Du kannst tatsächlich die Noten nutzen (sofern du es schon kannst) oder aber du orientierst dich an den Notennamen. Am Anfang des Griffbrettes brauchen wir den zweiten Fingersatz nicht vollständig. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #5 % \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> In der A-(Bb-)Form müssen wir den Lagewechsel zwischen der G- und H-Saite beachten. Übrigens werden hier die Töne in der englischen Form angegeben. (Bb-Form und der Ton B statt des deutschen H.) Nur der erste Bund wird bis zur letzten Note in der dritten Lage gespielt. Der Rest bis zur letzten Note in der zweiten Lage. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (A-, Bb-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e-4 d-2 c d e d c b d c b c d c b a c b a b c d b c d-1 } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Statt in der G-Form das C zu suchen, suche lieber das A im 5. Bund (hier grün hervorgehoben). Oder du leitest dir das C vom Barré im 8. Bund ab. Der Startton E ist auf der A Saite im 7. Bund unter dem Ringfinger. Ansonsten stellt der Fingersatz keine Herausforderung mehr dar. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (G-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b \once \override NoteHead #'color = #green a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Der kleine Finger des C-Barré im 8. Bund in der E- bzw. F-Form gibt gleichzeitig das C des zweiten Fingersatz an. Du siehst, dass ab jetzt alles leichter geworden ist, weil sich ansonsten nichts mehr am Fingersatz ändert. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (E- F-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Für den Grundton C müssen wir uns die D-Form gar nicht so genau ins Gedächtnis rufen, wenn uns die C-Form viel vertrauter ist. Diese hohe Lage ist für E-Gitarristen oder Gitarren mit Cutaway gedacht. Auf der Konzertgitarre ist die sehr hohe Lage schlecht zu spielen. Gehe ggf. einen Kompromiss ein, und spiele diese hohe Saitenlage ein paar Bünde tiefer als Übung nur für den Fingersatz aber nicht für die Notennamen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Noten über dem hohen C (der mit zwei Hilfslinien) wird dir seltener begegnen, da in dem Fall bevorzugt die Noten nach unten oktaviert werden. (Beachte die 8 im Notensystem.) Bei den weiteren Übungen werden jedoch die Versionen mit den vielen Hilfslinien angezeigt. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { \ottava #1 e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Mit der C-Form in den ersten drei Bünden im Hinterkopf ist der 12. Bund leicht zu bewältigen. Wieder eine Übung, die weniger für Konzertgitarren geeignet ist. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === "Das häßliche Entlein" oder "Alle meine Entchen"<ref>Anspielung auf ein Märchen der Gebrüder Grimm nebst einem bekannten deutschen Kinderlied.</ref> in A-Moll === Die vorherige Übung war in Dur, und hier verwenden wir ein und den selben Fingersatz in Moll. Wie du siehst und hörst, lässt sich ein Fingersatz oder ein Pattern nicht eindeutig einer einzigen Tonart zuordnen. Der Schlusston oder der Schlussakkord (hier der Ton A bzw. der Akkord Am) bestimmt die Tonart. Der Grundton A ist hier die Sexte (6) des zugrunde liegenden C-Major-Pattern. Es bleibt dir überlassen, ob du zur Orientierung lieber den Grundton A (grün) bestimmst, oder das C aus dem Karré (rot). Wenn in einer Tabulatur über einer Ziffer zwei Notenhälse stehen, so ist das ein Zeichen für eine halbe Note, die zwei Schläge dauert. Da dieses für viele Gitarristen sehr ungewöhnlich aussieht, verzichtet man oft auf Taktstriche in der Tabulatur. In dem Fall lässt sich die Tondauer allein an den Notenwerten ablesen. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-/Am-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #5 % \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Der Lagewechsel zwischen der G- und H-Saite ist hier leicht zu bewältigen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Gm-/Bb-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d-1 e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2-4 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Auch hier ist es wieder einfacher das A (grün) zu suchen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Em-/G-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (E- / F-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Statt lange nach dem Grundton der D-Form zu suchen, erinneren wir uns kurz, wo der Grundton C auf der H- (B-)Saite sein muß (13. Bund). <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> === Die Moldau (Hauptmotiv) === Die Abfolge der Töne der folgenden Übung unterscheidet sich kaum von der vorhergehenden. Doch mit dem anderen Rhythmus haben wir das Hauptmotiv von der Komposition {{Youtube-Suche|Smetana+Die+Moldau|"Die Moldau" von Bedrich Smetana}} (ohne Auftakt und rhythmisch vereinfacht). Auch wenn es hier (wie in der 7. Übung) nur die Molltonleiter rauf und runter geht, merkst du hoffentlich, wieviel der Takt und Rhythmus an der Wirkung ausmacht. Wenn du später mal meinst, deine Improvisationen hören sich langweilig an, dann solltest du dich mehr mit Rhythmus beschäftigen. Dazu kannst du dich auch ein wenig mit Schlagmustern beschäftigen. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Am-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Warum die Form hier Gm-Form genannt wird, das wird dir in den nachfolgenden Lektionen klarer werden. Auf Fingersatzangaben können wir hier verzichten, wenn du vorher "Alle meine Entchen in Am" gespielt hast. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Bb- /Gm-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier bietet sich besonders an, den Am-Barré zur Orientierung zu verwenden. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Em-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Auch hier gibt dir der kleine Finger des Am-Barrés den Grundton an. Du kannst dir die Dm-Form aber auch über die F-Form (C im 8. Bund) ableiten. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (F- /Dm-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Zähle vom C (H-Saite, 13. Bund) rückwärts zum A. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D- /Bm7-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier wird die erste Übung in den 12. Bund verschoben. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C- /Am-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==1. Fingersatz== Dir wird wohl aufgefallen sein, dass beim zweiten Fingersatz der Ton G fehlt. Den üben wir mit dem ersten Fingersatz. :[[Datei:Scala 71_2-34_5.svg]] Beachte, dass der Grundton (1) unter dem Ringfinger (also im zweiten Bund dieses Fingersatzes) ist, und dass du deine freie Improvisationsübung in Dur günstigerweise mit der (1) beginnen oder zumindest enden sollte. Diesen Fingersatz suchen wir in der C-Dur-Tonleiter auf dem Griffbrett. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] === Eintaktige Sequenzen === Die erste Lage mit leeren Saiten stellt noch keine Herausforderung dar. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • A- (Bb-)Form ==== Du musst noch nicht einmal den C-Barré im 3. Bund bemühen, um den Grundton zu finden. Die C-Dur-Tonleiter in den ersten drei Bünden reicht. Natürlich kannst du auch den Startton G suchen. Die Tabulatur sagt dir "D-Saite 5. Bund". Erinnere dich daran, dass dies der Stimmton der D-Saite ist (beim Stimmen nach Bünden). Auch hier ist der Fingersatz leicht. <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • A- (Bb-)Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 4 2 3 darkgrey ) (place-fret 4 3 4 yellow3 ) (place-fret 4 5 5 darkgrey ) (place-fret 5 2 "j7" yellow3 ) (place-fret 5 3 1 black ) (place-fret 5 5 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb)-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • G-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • G-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 2 5 3 darkgrey ) (place-fret 2 6 4 yellow3 ) (place-fret 2 8 5 darkgrey ) (place-fret 3 4 "j7" yellow3 ) (place-fret 3 5 1 black ) (place-fret 3 7 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Bei der G-Form kommt es zwischen der G- und H-Saite zu einem Lagewechsel. Du musst dir jedesmal eine Strategie zurechtlegen, wann und wie du am besten den Lagewechsel durchführst. Wenn du Glück hast, findest du im Notenbild einen Hinweis, wie man günstig die Lage wechseln kann. Ich empfehle dir dort wo die 2 über den Noten steht, den Mittelfinger zu nehmen. *(1 = Z, 2 = M, 3 = R, 4 = K, 0 = leere Saite) Betrachte solche Hinweis nur als Vorschlag, denn es gibt keine verbindliche Regel, wie der Lagewechsel zu erfolgen hat. Übst du die gleiche Sequenzen ein paar Saiten höher oder tiefer, geht es leichter von der Hand. Beachte den Lagewechsel zwischen der G- und H-Saite. Den Grundton C kannst du dir auch vom Ringfinger auf der G-Saite des C-Barrés ableiten. Du musst dir hier eine Strategie zurechtlegen, wann du den Lagewechsel durchführen möchtest. Ich empfehle hier, den Lagewechsel so früh wie möglich zu machen, damit du den Zeigefinger frei hast, um gleich hintereinander zwei Töne in einem Bund zu spielen. Betrachte die Angaben zum Fingersatz nur als Vorschlag. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d-4 e-2 f-3 d e f e d c d e c-1 d-4 e-2 d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier eine alternative Lösung. Du kannst einen kleinen Barré über die Noten C und E legen, und den Lagewechsel später ausführen. Das V unter dem C zeigt hier den 5. Bund an, und nicht etwa Abschläge. Der Lagewechsel erfolgt hier im letzten Takt. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d e f d e f e d-2 \textSpannerDown \override TextSpanner.bound-details.left.text = "V" c-1\startTextSpan d e-1 c-1 d e-1\stopTextSpan d-4 c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • E- (F-)Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • E- (F-)Form <score raw="1"> \version "2.24.4" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 5 7 3 darkgrey ) (place-fret 5 8 4 yellow3 ) (place-fret 5 10 5 darkgrey ) (place-fret 6 7 "j7" yellow3 ) (place-fret 6 8 1 black ) (place-fret 6 10 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Den Grundton C auf der E-Saite kannst du dir vom C-Barré der E-Form (wie ein F- Barré) im 8. Bund ableiten. Der Fingersatz ist wieder einfach. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E-(F)-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • D-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • D-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 3 9 3 darkgrey ) (place-fret 3 10 4 yellow3 ) (place-fret 3 12 5 darkgrey ) (place-fret 4 9 "j7" yellow3 ) (place-fret 4 10 1 black ) (place-fret 4 12 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div>Die Tonhöhe ist die selbe, wie in der G-Form, wo wir uns komplizierte Strategien für den Fingersatz zurechtlegen mussten. In dieser Lage ist alles einfacher. Wenn du später mal einen herausfordernden Lick zwischen der G- und H-Saite hast, wäre eine weitere gangbare Strategie den Lick in eine fingertechnisch günstigere Lage zu verlegen. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • C-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • C-Form <score raw="1"> \version "2.24.4" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 1 12 3 darkgrey ) (place-fret 1 13 4 yellow3 ) (place-fret 1 15 5 darkgrey ) (place-fret 2 12 "j7" yellow3 ) (place-fret 2 13 1 black ) (place-fret 2 15 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Hier wurde die C-Durtonleiter in den 12. Bund verlegt. Der Grundton ist auf der H-Saite im 13. Bund. (Eine Oktave höher als bei der C-Dur Tonleiter in den ersten drei Bünden.) Wer keine E-Gitarre hat oder wer keine Akkustik mit Cutaway hat, der kann die C-Form auch in einem niedrigeren Bund üben. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c''' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Halbtaktige Sequenzen === Diesmal hast du halbtaktige Sequenzen, die einmal wiederholt werden. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== A- (Bb-)Form • 1. Fingersatz ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • A- (Bb-)Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 4 2 "E" darkgrey ) (place-fret 4 3 "F" yellow3 ) (place-fret 4 5 "G" darkgrey ) (place-fret 5 2 "B" yellow3 ) (place-fret 5 3 "C" black ) (place-fret 5 5 "D" darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Leite dir den Grundton vom C-Dur-Akkord, oder vom C-Barré im 3. Bund ab. Lerne nicht nur die Intervlle, sondern auch die Notennamen. (Zumindest bei den einfachen Tonarten F-, G- und C-Dur). Andere Tonarten kommen später dran. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- / Bb-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== G-Form • 1. Fingersatz ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • G-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 2 5 "E" darkgrey ) (place-fret 2 6 "F" yellow3 ) (place-fret 2 8 "G" darkgrey ) (place-fret 3 4 "B" yellow3 ) (place-fret 3 5 "C" black ) (place-fret 3 7 "D" darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div>Du kannst die beiden hintereinander folgenden Noten im 5. Bund mit einem Mini-Barré ausführen, und die Lagewechsel mittels Slide (=&nbsp;Glissando) durchführen, oder wie in der Wiederholung ohne Slide durchführen. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major c8-1 g' f e d f e d c-1 e-1 d c-1(\glissando b-1) d c b-1(\glissando c1-1) c8-2 g' f e d f e d c-1 e-2 d-4 c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== E- (F-)Form • 1. Fingersatz ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • E- (F-)Form <score raw="1"> \version "2.24.4" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 5 7 "E" darkgrey ) (place-fret 5 8 "F" yellow3 ) (place-fret 5 10 "G" darkgrey ) (place-fret 6 7 "B" yellow3 ) (place-fret 6 8 "C" black ) (place-fret 6 10 "D" darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Fingersatztechnisch wieder problemlos. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== D-Form • 1. Fingersatz ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • D-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 3 9 "E" darkgrey ) (place-fret 3 10 "F" yellow3 ) (place-fret 3 12 "G" darkgrey ) (place-fret 4 9 "B" yellow3 ) (place-fret 4 10 "C" black ) (place-fret 4 12 "D" darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Wieder klingt diese Lage genau so, wie die G-Form, ist abervim Fingersatz her einfacher. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • C-Form ==== <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> === Ein Vogel wollte Hochzeit machen === Hier habe ich ein relativ bekanntes Kinderlied gefunden, dass perfekt zum 1. Fingersatz passt. Die Tondauern sind für Ungeübte in Sachen Noten schwer herauszulesen. Kennst du aber das Stück, oder hörst du es dir mehrmals an, so ist es keine unüberwindbare Schwierigkeit. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] Folgt das G nach dem D, greifst du den besser mit dem kleinen Finger. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d-3( g-4) g g16 e | c8 8 8 g'16 e d8 d d-3 g16-4 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier ist es wohl am einfachsten, dass du den kleinen Finger umlegst, wenn du nach dem D den G greifen willst. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb-)Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d-3( g-4) g g16 e | c8 8 8 g'16 e d8-3 d d g16-4 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Wenn der Ton C auf ein E-folgt, kann man entweder ein <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e-2 c-1 g' e d( g) g g16 e-2 | c8-1 8 8 g'16 e d8 d d g16 f | e8-2 c-1 d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Halbtaktige Sequenzen (2) === :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Bei der G-Form kommt es zwischen der G- und H-Saite zu einem Lagewechsel. Du musst dir jedesmal eine Strategie zurechtlegen, wann und wie du am besten den Lagewechsel durchführst. Wenn du Glück hast, findest du im Notenbild einen Hinweis, wie man günstig die Lage wechseln kann. Ich empfehle dir dort wo die 2 über den Noten steht, den Mittelfinger zu nehmen. *(1 = Z, 2 = M, 3 = R, 4 = K, 0 = leere Saite) Betrachte solche Hinweis nur als Vorschlag, denn es gibt keine verbindliche Regel, wie der Lagewechsel zu erfolgen hat. Übst du die gleiche Sequenzen ein paar Saiten höher oder tiefer, geht es leichter von der Hand. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c''' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Einsingen === Diese beiden Motive kennen viele, die schon einmal in einem Chor gesungen haben. Leider entsprechen viele Lieder in ihrem Tonumfang nicht genau einem der vollständigen drei Fingersätze oder der später folgenden Skalen. Zumeist werden nur Ausschnitte aus den Patterns gebraucht. Im ersten Motiv fehlt beispielsweise die große Septime (j7) vor dem Grundton. Dafür enthält das zweite Motiv die große Septime (j7). Das zweite Motiv eicht den Chor auf die gerade geforderte Tonart. Hier werden nur Akkordtöne in einer auf oder absteigenden Tonfolge gespielt (auch Arpeggios genannt). Der A7-Akkord enthält sowohl den Leitton (j7) der zum Grundton (1) hin leitet, als auch den Strebeton (4) die zur Durterz (3) hin strebt. Mit den zwei spannungsreichen Tönen, die sich zum Grundakkord auflösen wollen, wird der Chor auf die Durtonart eingenordet. Hier brauche ich dir nicht zu erklären, wo der Grundton D ist. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A-(Bb-)Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E-(F-)Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==Erste über den zweiten Fingersatz== Wie du siehst, kommt hier jedesmal zuerst der erste Fingersatz mit dem "Karree" rechts, und dannach kommt der Fingersatz mit dem "Karree" links. Sie sind immer untereinander. Nur zwischen der G- und B-Saite verschiebt sich alles um einen Bund. <div style="float:left; padding:5px; border:black solid 1px; "> ;F-Form <score raw="1"> \version "2.14.2" \paper{ indent=0\mm line-width=120\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% 4-o zeigt 4. Saite offen \fret-diagram #"s:2;f:1; 3-3-2;3-5-3;3-6-4; 4-3-6;4-5-7;4-6-1; 5-3-3;5-4-4;5-6-5; 6-3-7;6-4-1;6-6-2;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;Bb-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:2;f:1; 2-4-2;2-6-3;2-7-4; 3-3-6;3-5-7;3-6-1; 4-3-3;4-4-4;4-6-5; 5-3-7;5-4-1;5-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;D-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:2;f:1; 1-4-2;1-6-3;1-7-4; 2-4-6;2-6-2;2-7-1; 3-3-3;3-4-4;3-6-5; 4-3-7;4-4-1;4-6-2;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} === Jamaica Farewell === Die Melodie von [[Liederbuch/ Jamaica Farwell|Jamaica Farwell]] wurde erheblich vereinfacht, damit du dir nicht zu viele Gedanken um den Rhythmus machen musst. Wenn du dich am Quintillo (dem Rhythmus vom Lagerfeuerschlag} orientierst, solltest du wenige Probleme haben. Es gibt recht viele Wiederholung. Die Strophe wurde bei der Wiederholung in die Oktave verschoben, damit das Stück exakt in den Skalenausschnitt passt. Du musst dir für die Fingersätze ggf. Strategien zurechtlegen, damit du die Finger bequem sortiert bekommst. Das Stück beginnt mit dem Ton G. Der (5) in 1. Fingersatz. ;Bb-Form Greife den C wie ein Bb-Barré im 3. Bund. Leite dir von diesem Akkord den Grundton (1) ab, und wandere beim 1. Fingersatz rauf zum Startton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-4-2;2-6-3;2-7-4; 3-3-6;3-5-7;3-6-1; 4-3-3;4-4-4;4-6-5; 5-3-7;5-4-1;5-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (A-, Bb-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ; F-Form Greife den C wie ein F-Barré im 8. Bund. Leite dir von diesem Akkord den Grundton (1) ab, und wandere beim 1. Fingersatz rauf zum Startton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 3-7-2;3-9-3;3-10-4; 4-7-6;4-9-7;4-10-1; 5-7-3;5-8-4;5-10-5; 6-7-7;6-8-1;6-10-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (E-, F-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ;D-Form Schiebe den D-Dur-Akkord in den 12. Bund. Ein D im 12. Bund verschoben ergibt ein C. Leite dir von diesem Akkord den Grundton (1) ab. Orientiere dich kurz im 2. Fingersatz und wandere zurück zum ersten Fingersatz zum Ton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 1-10-2;1-12-3;1-13-4; 2-10-6;2-12-7;2-13-1; 3-9-3;3-10-4;3-12-5; 4-9-7;4-10-1;4-12-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (D-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==3. Fingersatz== Es fällt auf, dass der 3. Fingersatz kein "Karré" hat. {| !Fingersatz !width="30px"| !Intervalle |- |[[Image:Scala Z RK-Z K-ZM K.svg]] !width="30px"| |[[Image:Scala 2 34-5 6-71 2.svg]] |} Der 3. Fingersatz ist gar kein eigenständiger Fingersatz. Der obere Teil des 3. Fingersatzes ist eigentlich schon der untere Teil des 2. Fingersatzes. Ebenso ist der untere Teil des 3. Fingersatzes gleichzeitig der Anfang des 1. Fingersatzes. Du musst dir Strategien zurechtlegen, wie du den Übergang vom Ende des 2. Fingersatzes über die 5 und die 6 hin zum 1. Fingersatz gestaltest. Es kommt beim 3. Fingersatz zu einem Lagewechsel nach links. Übe den 3. Fingersatz zuerst in den obersten Saitenlagen (E A D G x x) === Eine II-V-I-Verbindung === Wir spielen eine einfache Tonfolge über einer 2-5-1-Verbindung. Die Akkordtöne liegen zumeist auf den schweren Zählzeiten. * D, F, A, C gehören zum Dm7 * G, B, D, F gehören zum G7 * C, E, G gehören zum C-Dur-Akkord. Wir nutzen das CAGED-System, um uns grob auf dem Griffbrett zurechtzufinden. ==== Exkurs: Skalenformen ==== Die Namen der Skalen leiten sich übrigens von folgenden einfachen Tonleitern in den ersten Bünden ab: [[Image:Scala C-Am.svg|100px]] [[Image:Scala Bb-Gm.svg|100px]] [[Image:Scala G-Em.svg|100px]] [[Image:Scala F-Dm.svg|100px]] [[Image:Scala D-Hm.svg|100px]] Alle Akkorde die man aus diesen einfachen Tonarten kennt, Bassläufe und ähnliches lassen sich zum großen Teil auf die entsprechenden 5 CAGED-Skalen übertragen, fast so als habe man die Tonleiter mittels Kapodaster in eine höhere Lage verschoben. Wie du siehst, nennen wir die Skalen entgegen des reinen CAGED-System nicht E-Dur-Form (Shape) und nicht die A-Dur-Form (Shape), sondern F- und Bb-Dur-Form. <div style="float:left; padding:5px; border:black solid 1px; "> ;E-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-1;1-2-2;1-4-3; 2-0-5;2-2-6;2-4-7; 3-1-3;3-2-4;3-4-5; 4-1-7;4-2-1;4-4-2; 5-0-4;5-2-5;5-4-6; 6-0-1;6-2-2;6-4-3;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;F-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-3; 1-1-1; 1-3-2; 2-1-5; 2-3-6; 3-0-2; 3-2-3; 3-3-4; 4-0-6; 4-2-7; 4-3-1; 5-0-3; 5-1-4; 5-3-5; 6-0-7; 6-1-1; 6-3-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;G-Dur-Tonleiter <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-3-3; 1-4-1; 1-6-2; 2-4-5; 2-6-6; 3-3-2; 3-5-3; 3-6-4; 4-3-6; 4-5-7; 4-6-1; 5-3-3; 5-4-4; 5-6-5; 6-3-7; 6-4-1; 6-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Du siehst selbst, dass die G-Dur-Tonleiter von der Form her eher wie die F-Dur-Tonleiter als wie die E-Dur-Tonleiter aussieht. <div style="float:left; padding:5px; border:black solid 1px; "> ;A-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-5;1-2-6;1-4-7; 2-0-2;2-2-3;2-3-4; 3-1-7;3-2-1;3-4-2; 4-0-4;4-2-5;4-4-6; 5-0-1;5-2-2;5-4-3; 6-0-5;6-2-6;6-4-7;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;Bb-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-1-5; 1-3-6; 2-1-2; 2-3-3; 2-4-4; 3-0-6; 3-2-7; 3-3-1; 4-0-3; 4-1-4; 4-3-5; 5-0-7; 5-1-1; 5-3-2; 6-1-5; 6-3-6;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;C-Dur-Tonleiter <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-3-5; 1-5-6; 2-3-2; 2-5-3; 2-6-4; 3-2-6; 3-4-7; 3-5-1; 4-2-3; 4-3-4; 4-5-5; 5-2-7; 5-3-1; 5-5-2; 6-3-5; 6-5-6;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Du siehst selbst, dass die C-Dur-Tonleiter von der Form her eher wie die Bb-Dur-Tonleiter als wie die A-Dur-Tonleiter aussieht. ==== 3. Fingersatz II-V-I-Verbindung D-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;D-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:3;f:1; 4-9-7;4-10-1;4-12-2; 5-10-5;5-12-6; 6-10-2;6-12-3;6-13-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Wir beginnen oben bei der D-Form, wo sich der Lagewechsel des 3. Fingersatz noch nicht mit dem Lagewechsel zwischen der G und H-Saite (engl. B-Saite) aufhebt. Würde ich ein Capo in den 10. Bund setzen, dann würde ich die Melodie vom Fingersatz her wie D-Dur spielen. In D-Dur spiele ich diese II-V-I-Verbindung Em7 A7 D. Nehme ich das Capo weg, dann greife ich den Dm(7) als einen Barré der Em-Form im 10. Bund. Von diesem kann ich mir das D als Grundton ableiten. Alternativ siehst du in den Noten, dass die Übung mit dem Ton D anfängt. Dass die oberste Tiefe E-Saite im 12. Bund ebenfalls ein E ergibt, setze ich als bekannt voraus. Falls nicht, beschäftige dich noch einmal mit dem [[Gitarre: Lagerfeueranhang 2c|Stimmen der Gitarre]]. Ein Ganztonschritt bzw. zwei Bünde vor dem E ist der Ton D. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (D-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g-1 a-4 b-1 c4 | b8^\markup { \bold {G7} } a-4 g4-1 f8 e d4 | e8^\markup { \bold {C} } f g4-1 a8-4 b-1 c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung G-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;G-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 3-4-7;3-5-1;3-7-2; 4-5-5;4-7-6; 5-5-2;5-7-3;5-8-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 5. Bund setzen, dann würde man die Melodie vom Fingersatz her wie G-Dur spielen. In G-Dur spielt man diese II-V-I-Verbindung Am7 D7 G. Nimmt man das Capo weg, dann greift man den Dm(7) als einen Barré der Am-Form. Von diesem kannst du dir den D als Grundton ableiten. Einfacher geht es natürlich, wenn du weißt, dass der D im 5. Bund der A-Saite der Stimmton der D-Saite ist. </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (G-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g-1 a-4 b-1 c4 | b8^\markup { \bold {G7} } a-4 g4-1 f8 e d4 | e8^\markup { \bold {C} } f g4-1 a8-4 b-1 c d | c b c2. | \break d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung C-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;C-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-0-7;2-1-1;2-3-2; 3-0-5;3-2-6; 4-0-2;4-2-3;4-3-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Die C-Dur-Form der C-Dur Tonleiter sieht schlicht und ergreifend wie die C-Durtonleiter aus. </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (C-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #4 % \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \break d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung C-Form 12. Bund ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;C-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-12-7;2-13-1;2-15-2; 3-12-5;3-14-6; 4-12-2;4-14-3;4-15-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 12. Bund setzen, dann würde man die Melodie vom Fingersatz her wie C-Dur spielen. In C-Dur spielt man diese II-V-I-Verbindung Dm7 G7 C. Der Startton ist schlicht die D-Saite im 12. Bund. </div> {{clear}} Gerade noch hatten wir einen Lagewechsel nach links. Jetzt aber hebt sich der Lagewechsel nach links vom 3. Fingersatz mit dem Lagewechsel zwischen der G- und H-Saite auf. Es hört sich beim ersten Durchlesen kompliziert an, aber du hast nur 4 Lektionen zu lernen. Den 1. bis 3. Fingersatz und den Lagewechsel zwischen der G- und H-Saite. Das Auffinden der Töne und welche Akkorde zu welcher Tonart gehört, und wie man einen Capo benutzt, sollte eigentlich nichts neues für dich sein. Rein technisch gesehen vereinfacht sich der Fingersatz. Doch es kostet ein wenig Überlegung, wie sich die beiden Lagewechsel auf den 3. Fingersatz auswirken. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (C-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> Sollte es im 12 Bund unbequem zu spielen sein, weil du kein Cutaway hast (Aussparung für die hohen Bünde), übe die C-Form ein paar Bünde zurück in einer anderen Tonart. ==== 3. Fingersatz II-V-I-Verbindung F-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;F-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 1-7-7; 1-8-1;1-10-2; 2-8-5; 2-10-6; 3-7-2; 3-9-3; 3-10-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 6. Bund setzen, dann würde man die Melodie vom Fingersatz her wie F-Dur spielen. In C-Dur spielt man diese II-V-I-Verbindung Gm7 C7 F. Wenn du den C wie ein F-Barré im 8. Bund greifst, dindest du den Grundton (1) auf der hohen E-Saite. Von dem wanderst du runter zum Startton (2). </div> {{clear}} Auch hier hebt sich der Lagewechsel zwischen der G- und H-Saite mit dem Lagewechsel des 3. Fingersatz gegeneinander auf, was den Fingersatz grifftechnisch wieder vereinfacht. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (F-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> == Wie geht es weiter? == Solltest du als Quereinsteiger in diese Lektion gestolpert sein, dann schaue dir die erste Lektion zum [[Gitarre: Aufbau der CAGED-Skalenformen|Aufbau der CAGED-Skalenformen]] an. Insbesondere die Abschnitte, die hier übergangen wurden. Dannach kannst du mit der ersten CAGED-Skala in der D-Dur-Form weitermachen. <noinclude> {{Navigation zurückhochvor |zurücklink=Gitarre: CAGED-Skala G-Dur-Form |zurücktext=CAGED-Skala G-Dur-Form |hochlink=Gitarre: Die Major-Patterns |hochtext=Einführung: Major-Patterns |vorlink=Gitarre: CAGED-Skala D-Dur-Form |vortext=CAGED-Skala D-Dur-Form }} </noinclude> o52elqaw90fr3qgei1cak0eg8jsm3an 1090592 1090591 2026-09-08T19:35:54Z Mjchael 2222 /* D-Form • 1. Fingersatz */ size 4 1090592 wikitext text/x-wiki {{:Gitarre/ Navi|Sologitarre| {{:Gitarre: Sologitarre/ Navi Improvisation in Dur und Moll}}| img=Guitar 1.svg |bg=#F8f8f8|border=darkorange|color=dark|px=80|navi=Einführung in die Sologitarre}} = Wiederholung der Fingersätze = ; mit Schwerpunkt auf den Stammtönen Diese Wiederholung ist zum einen dafür gedacht, die vorhergehenden Übungen auf jeder Saitenlage zu machen, und auch in jeder Bundlage, gleichgültig ob die Finger eng beieinander oder weit auseinander stehen. Zum andern sind diese als Vorbereitung in die Sologitarre gedacht. Beispielsweise als Auflockerungsübung zwischen den Barré-Akkorden. Besonderen Augenmerk wollen wir hier auf die Notennamen legen. Diese können hier mitgelernt werden. Solltest du meinen, das sei noch nicht für dich dran und kann warten, dann springe zur ersten CAGED-Skala. Du kannst beim Kapitel Longform nochmal hierrauf zurückkommen. * [[Gitarre: CAGED-Skala D-Dur-Form|CAGED-Skala D-Dur-Form]] Lassen wir die [[Gitarre: Aufbau der CAGED-Skalenformen|erste Lektion]] (insbesondere für die Quereinsteiger) noch einmal Revue passieren. Die folgenden Übungen enthalten oft eine Folge von ein- oder zweitaktigen Sequenzen. Eine Sequenz ist ein Motiv, dass sich auf verschiedenen Tonhöhen wiederholt. Auch ohne Notenkenntnisse kannst du den Verlauf und die Wiederholungen der Sequenzen einfacher im Notenbild verfolgen, als in der Tabulatur; insbesondere wenn du dir gleichzeitig die Übung anhörst. Es kommen auch Ausschnitte aus klassischen Stücken, Folksongs, Kinderlieder o.ä. vor. Die einfache Struktur oder der Bekanntheitsgrad der Melodien sollen dir das Üben erleichtern. Die Finger finden so leichter ihre Position, als wenn du erstmal jede einzelne Note aus der Tabulatur entschlüsseln musst. Jede Übung wird auf allen Saitenlagen geübt. Vorher blieben wir in den mittleren Lagen. Jetzt gehen wir auch in die ersten Bünde, wo man die Finger etwas mehr spreizen muss, und in die höheren Lagen, wo es ein wenig eng wird. Die Stücke wiederholen sich in dieser Lektion in der selben Tonart, doch auf verschiedenen Bünden. Du spielst immer die selbe Tonfolge, nur auf verschiedenen Tonhöhen bzw. auf verschiedenen Saitenlagen. Lediglich zwischen der G- und H-Saite musst du dir jedesmal überlegen, wie sich der Lagewechsel auf den Fingersatz auswirkt. Doch der Fingersatz in den anderen höheren Lagen bleibt immer gleich. Wie die Tonfolgen mit dem CAGED-System zusammenhängen, das muss dich nur am Rande interessieren. Es wird in den folgenden Lektionen näher und ausführlicher erleutert. :[[Datei:Scala Griffbrett.svg]] Wir hatten uns bei den vorhergehenden Übungen weitestgehend an den Intervallen (1-j7) und an der Tabulatur orientiert. Diese sind in allen Tonarten gleich. Suche zuerst das Karré! Daran orientierst du dich. :[[Image:Scala Carree.svg]] {{Tipp|Lerne bei der C-Dur-Tonleiter nicht nur die Intervalle <br> 2 - 3 4 - 5<br> 6 - j7 1 - 2<br> sondern benenne auch jede einzelne Note. <br> D - E F - G<br> A - H C - D<br> So bekommst du einen recht einfachen Überblick über das Griffbrett.}} == Töne der C-Dur Tonleiter auf dem Griffbrett == Wir wollen uns in dieser Lektion auf die Töne bzw. die Notennamen konzentrieren. Allerdings sparen wir uns vorerst alle Töne mit Vorzeichen aus. Die [[Gitarre: Aufbau der CAGED-Skalenformen|ersten Übungen zum 1. und 2. Fingersatz]] werden auf die Tonart C-Dur bzw. A-Moll übertragen und wir spiele sie in den hier gezeigten Positionen. Wir fangen mit dem zweiten Fingersatz an, wo wir entweder den Ton C oder den Ton A der C-Dur- bzw. Am-Tonleiter als Orientierung nutzen :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] Du hast vermutlich allerlei Akkordformen des CAGED-System gesehen. <div class="noprint"> ;Animation [[Image:Crd Grundtonschema ani.gif]] </div> <score> << \new ChordNames { \chordmode { c1 c c c c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 e-2 g c'-1 e' > < c-1\5 g-3\4 c'-3\3 e'-4\2 g'-1 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 e-2\5 g-1\4 c'-1\3 e'-1\2 c''-4\1> < c-1\6 g-2\5 c'-3\4 e'-4\3 g'-1\2 c''-1\1> \once \override FretBoard.fret-diagram-details.dot-color = #'white < c'-1\4 g'-2\3 c''-4\2 e''-3\1 > < c'-4\5 e'-3\4 g'-1\3 c''-2\2 e''-1\1 > } >> </score> Wenn du schon Fingerstyle oder Jazz spielst, mögen dir viele der Formen bekannt vorkommen. Doch selbst wenn du bis jetzt nur das [[Gitarre: Rockdiplom|Rockdiplom]] gemacht hast und mit den dort vorkommenden Barré-Akkorden vertraut bist, wirst du sehen, dass die einfachen Barré-Akkorde ausreichen, um sich auf dem Griffbrett zu zurechtzufinden. Die [[Gitarre: C-Dur-Tonleiter Workshop|C-Dur-Tonleiter in den ersten drei Bünden]] setze ich als bekannt voraus und es sollte dir nicht allzu schwer fallen, diese in den 12. Bund zu übertragen. :[[Datei:Scala C-Am.svg|150px]][[Datei:C-Dur_Majorpattern_III.jpg|150px]] C-Dur als Barré im 3. Bund kennst du vom Rockdiplom, und C-Dur im 8. Bund ist auch kein Hexenwerk. Dazwischen liegt nach dem CAGED-System die G-Form, die dir vermutlich noch nicht untergekommen ist (hier mit weißem Fingersatz). Statt uns die Töne von der G-Form abzuleiten, machen wir es uns einfacher und leiten uns die Töne zur Orientierung vom Am im 5. Bund ab. Du erinnerst dich noch an die Dur- und Mollparallelen? (C- \ Am-Tonleiter bzw. G- \ Em-Form). Oder du nutzt die Grundtöne des C-Barré im 8. Bund. <score> << \new ChordNames { \chordmode { c1 c c a:m c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 e-2 g c'-1 e' > < c-1\5 g-3\4 c'-3\3 e'-4\2 g'-1 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 e-2\5 g-1\4 c'-1\3 e'-1\2 c''-4\1> < a,-1\6 e-3\5 a-4\4 c'-1\3 e'-1\2 a'-1\1 > < c-1\6 g-2\5 c'-3\4 e'-4\3 g'-1\2 c''-1\1> < c'-4\5 e'-3\4 g'-1\3 c''-2\2 e''-1\1 > } >> </score> Leite dir also die Grundtöne C und A von den dir bekannten Barré-Akkorden ab und spare dir die ungewöhnlicheren Akkordformen auf, bis sie dir später beim Fingerstyle oder Jazz begegnen. Es macht dabei garnichts aus, wenn du zum Auffinden der Grundtöne und zum Finden des Starttons ein paar Sekunden brauchst. Du wirst sehen, dass die Wiederholungen der bekannten Übungen auf den verschiedenen Bünden und in verschiedenen Oktavebereichen leicht von der Hand gehen. Lediglich beim Lagewechsel zwischen der G- und H-Saite musst du etwas überlegen. <score> << \new ChordNames { \chordmode { c1 c c a c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 c'-1 > < c-1\5 c'-3\3 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 c'-1\3 c''-4\1> < a,-1\6 a-4\4 a'-1\1 > < c-1\6 c'-3\4 c''-1\1> < c'-4\5 c''-2\2 > } >> </score> Diese wenigen"Eckpunkte" reichen aus, um dich grob auf dem Griffbrett zurechtzufinden. Suche sie noch einmal in der Skala und natürlich auch auf deinem Griffbrett. :[[Datei:C-Major-Scale on the fretboard.svg]] == Zweiter Fingersatz == :[[Datei:Scala 6_71-2_34.svg]] Zuerst suchen wir uns in der C-Dur-Tonleiter überall den zweiten Fingersatz heraus. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] Zur leichteren Orientierung wird die Grafik bei jeder neuen Melodie wiederholt. === Rondeau (Auszug) === Die eintaktige Sequenzen wurde aus einem Rondeau von J.S. Bach entnommen, dass beliebig wiederholt werden kann. Der Grundton C, welcher im letzten Takt rot eingefärbt wurde, wird mit dem kleinen Finger gegriffen. Du kannst tatsächlich die Noten nutzen (sofern du es schon kannst) oder aber du orientierst dich an den Notennamen. Am Anfang des Griffbrettes brauchen wir den zweiten Fingersatz nicht vollständig. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #5 % \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> In der A-(Bb-)Form müssen wir den Lagewechsel zwischen der G- und H-Saite beachten. Übrigens werden hier die Töne in der englischen Form angegeben. (Bb-Form und der Ton B statt des deutschen H.) Nur der erste Bund wird bis zur letzten Note in der dritten Lage gespielt. Der Rest bis zur letzten Note in der zweiten Lage. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (A-, Bb-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e-4 d-2 c d e d c b d c b c d c b a c b a b c d b c d-1 } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Statt in der G-Form das C zu suchen, suche lieber das A im 5. Bund (hier grün hervorgehoben). Oder du leitest dir das C vom Barré im 8. Bund ab. Der Startton E ist auf der A Saite im 7. Bund unter dem Ringfinger. Ansonsten stellt der Fingersatz keine Herausforderung mehr dar. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (G-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b \once \override NoteHead #'color = #green a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Der kleine Finger des C-Barré im 8. Bund in der E- bzw. F-Form gibt gleichzeitig das C des zweiten Fingersatz an. Du siehst, dass ab jetzt alles leichter geworden ist, weil sich ansonsten nichts mehr am Fingersatz ändert. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (E- F-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Für den Grundton C müssen wir uns die D-Form gar nicht so genau ins Gedächtnis rufen, wenn uns die C-Form viel vertrauter ist. Diese hohe Lage ist für E-Gitarristen oder Gitarren mit Cutaway gedacht. Auf der Konzertgitarre ist die sehr hohe Lage schlecht zu spielen. Gehe ggf. einen Kompromiss ein, und spiele diese hohe Saitenlage ein paar Bünde tiefer als Übung nur für den Fingersatz aber nicht für die Notennamen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Noten über dem hohen C (der mit zwei Hilfslinien) wird dir seltener begegnen, da in dem Fall bevorzugt die Noten nach unten oktaviert werden. (Beachte die 8 im Notensystem.) Bei den weiteren Übungen werden jedoch die Versionen mit den vielen Hilfslinien angezeigt. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { \ottava #1 e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Mit der C-Form in den ersten drei Bünden im Hinterkopf ist der 12. Bund leicht zu bewältigen. Wieder eine Übung, die weniger für Konzertgitarren geeignet ist. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === "Das häßliche Entlein" oder "Alle meine Entchen"<ref>Anspielung auf ein Märchen der Gebrüder Grimm nebst einem bekannten deutschen Kinderlied.</ref> in A-Moll === Die vorherige Übung war in Dur, und hier verwenden wir ein und den selben Fingersatz in Moll. Wie du siehst und hörst, lässt sich ein Fingersatz oder ein Pattern nicht eindeutig einer einzigen Tonart zuordnen. Der Schlusston oder der Schlussakkord (hier der Ton A bzw. der Akkord Am) bestimmt die Tonart. Der Grundton A ist hier die Sexte (6) des zugrunde liegenden C-Major-Pattern. Es bleibt dir überlassen, ob du zur Orientierung lieber den Grundton A (grün) bestimmst, oder das C aus dem Karré (rot). Wenn in einer Tabulatur über einer Ziffer zwei Notenhälse stehen, so ist das ein Zeichen für eine halbe Note, die zwei Schläge dauert. Da dieses für viele Gitarristen sehr ungewöhnlich aussieht, verzichtet man oft auf Taktstriche in der Tabulatur. In dem Fall lässt sich die Tondauer allein an den Notenwerten ablesen. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-/Am-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #5 % \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Der Lagewechsel zwischen der G- und H-Saite ist hier leicht zu bewältigen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Gm-/Bb-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d-1 e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2-4 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Auch hier ist es wieder einfacher das A (grün) zu suchen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Em-/G-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (E- / F-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Statt lange nach dem Grundton der D-Form zu suchen, erinneren wir uns kurz, wo der Grundton C auf der H- (B-)Saite sein muß (13. Bund). <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> === Die Moldau (Hauptmotiv) === Die Abfolge der Töne der folgenden Übung unterscheidet sich kaum von der vorhergehenden. Doch mit dem anderen Rhythmus haben wir das Hauptmotiv von der Komposition {{Youtube-Suche|Smetana+Die+Moldau|"Die Moldau" von Bedrich Smetana}} (ohne Auftakt und rhythmisch vereinfacht). Auch wenn es hier (wie in der 7. Übung) nur die Molltonleiter rauf und runter geht, merkst du hoffentlich, wieviel der Takt und Rhythmus an der Wirkung ausmacht. Wenn du später mal meinst, deine Improvisationen hören sich langweilig an, dann solltest du dich mehr mit Rhythmus beschäftigen. Dazu kannst du dich auch ein wenig mit Schlagmustern beschäftigen. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Am-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Warum die Form hier Gm-Form genannt wird, das wird dir in den nachfolgenden Lektionen klarer werden. Auf Fingersatzangaben können wir hier verzichten, wenn du vorher "Alle meine Entchen in Am" gespielt hast. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Bb- /Gm-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier bietet sich besonders an, den Am-Barré zur Orientierung zu verwenden. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Em-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Auch hier gibt dir der kleine Finger des Am-Barrés den Grundton an. Du kannst dir die Dm-Form aber auch über die F-Form (C im 8. Bund) ableiten. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (F- /Dm-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Zähle vom C (H-Saite, 13. Bund) rückwärts zum A. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D- /Bm7-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier wird die erste Übung in den 12. Bund verschoben. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C- /Am-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==1. Fingersatz== Dir wird wohl aufgefallen sein, dass beim zweiten Fingersatz der Ton G fehlt. Den üben wir mit dem ersten Fingersatz. :[[Datei:Scala 71_2-34_5.svg]] Beachte, dass der Grundton (1) unter dem Ringfinger (also im zweiten Bund dieses Fingersatzes) ist, und dass du deine freie Improvisationsübung in Dur günstigerweise mit der (1) beginnen oder zumindest enden sollte. Diesen Fingersatz suchen wir in der C-Dur-Tonleiter auf dem Griffbrett. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] === Eintaktige Sequenzen === Die erste Lage mit leeren Saiten stellt noch keine Herausforderung dar. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • A- (Bb-)Form ==== Du musst noch nicht einmal den C-Barré im 3. Bund bemühen, um den Grundton zu finden. Die C-Dur-Tonleiter in den ersten drei Bünden reicht. Natürlich kannst du auch den Startton G suchen. Die Tabulatur sagt dir "D-Saite 5. Bund". Erinnere dich daran, dass dies der Stimmton der D-Saite ist (beim Stimmen nach Bünden). Auch hier ist der Fingersatz leicht. <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • A- (Bb-)Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 4 2 3 darkgrey ) (place-fret 4 3 4 yellow3 ) (place-fret 4 5 5 darkgrey ) (place-fret 5 2 "j7" yellow3 ) (place-fret 5 3 1 black ) (place-fret 5 5 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb)-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • G-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • G-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 2 5 3 darkgrey ) (place-fret 2 6 4 yellow3 ) (place-fret 2 8 5 darkgrey ) (place-fret 3 4 "j7" yellow3 ) (place-fret 3 5 1 black ) (place-fret 3 7 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Bei der G-Form kommt es zwischen der G- und H-Saite zu einem Lagewechsel. Du musst dir jedesmal eine Strategie zurechtlegen, wann und wie du am besten den Lagewechsel durchführst. Wenn du Glück hast, findest du im Notenbild einen Hinweis, wie man günstig die Lage wechseln kann. Ich empfehle dir dort wo die 2 über den Noten steht, den Mittelfinger zu nehmen. *(1 = Z, 2 = M, 3 = R, 4 = K, 0 = leere Saite) Betrachte solche Hinweis nur als Vorschlag, denn es gibt keine verbindliche Regel, wie der Lagewechsel zu erfolgen hat. Übst du die gleiche Sequenzen ein paar Saiten höher oder tiefer, geht es leichter von der Hand. Beachte den Lagewechsel zwischen der G- und H-Saite. Den Grundton C kannst du dir auch vom Ringfinger auf der G-Saite des C-Barrés ableiten. Du musst dir hier eine Strategie zurechtlegen, wann du den Lagewechsel durchführen möchtest. Ich empfehle hier, den Lagewechsel so früh wie möglich zu machen, damit du den Zeigefinger frei hast, um gleich hintereinander zwei Töne in einem Bund zu spielen. Betrachte die Angaben zum Fingersatz nur als Vorschlag. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d-4 e-2 f-3 d e f e d c d e c-1 d-4 e-2 d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier eine alternative Lösung. Du kannst einen kleinen Barré über die Noten C und E legen, und den Lagewechsel später ausführen. Das V unter dem C zeigt hier den 5. Bund an, und nicht etwa Abschläge. Der Lagewechsel erfolgt hier im letzten Takt. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d e f d e f e d-2 \textSpannerDown \override TextSpanner.bound-details.left.text = "V" c-1\startTextSpan d e-1 c-1 d e-1\stopTextSpan d-4 c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • E- (F-)Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • E- (F-)Form <score raw="1"> \version "2.24.4" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 5 7 3 darkgrey ) (place-fret 5 8 4 yellow3 ) (place-fret 5 10 5 darkgrey ) (place-fret 6 7 "j7" yellow3 ) (place-fret 6 8 1 black ) (place-fret 6 10 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Den Grundton C auf der E-Saite kannst du dir vom C-Barré der E-Form (wie ein F- Barré) im 8. Bund ableiten. Der Fingersatz ist wieder einfach. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E-(F)-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • D-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • D-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 3 9 3 darkgrey ) (place-fret 3 10 4 yellow3 ) (place-fret 3 12 5 darkgrey ) (place-fret 4 9 "j7" yellow3 ) (place-fret 4 10 1 black ) (place-fret 4 12 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div>Die Tonhöhe ist die selbe, wie in der G-Form, wo wir uns komplizierte Strategien für den Fingersatz zurechtlegen mussten. In dieser Lage ist alles einfacher. Wenn du später mal einen herausfordernden Lick zwischen der G- und H-Saite hast, wäre eine weitere gangbare Strategie den Lick in eine fingertechnisch günstigere Lage zu verlegen. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • C-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • C-Form <score raw="1"> \version "2.24.4" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 1 12 3 darkgrey ) (place-fret 1 13 4 yellow3 ) (place-fret 1 15 5 darkgrey ) (place-fret 2 12 "j7" yellow3 ) (place-fret 2 13 1 black ) (place-fret 2 15 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Hier wurde die C-Durtonleiter in den 12. Bund verlegt. Der Grundton ist auf der H-Saite im 13. Bund. (Eine Oktave höher als bei der C-Dur Tonleiter in den ersten drei Bünden.) Wer keine E-Gitarre hat oder wer keine Akkustik mit Cutaway hat, der kann die C-Form auch in einem niedrigeren Bund üben. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c''' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Halbtaktige Sequenzen === Diesmal hast du halbtaktige Sequenzen, die einmal wiederholt werden. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== A- (Bb-)Form • 1. Fingersatz ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • A- (Bb-)Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 4 2 "E" darkgrey ) (place-fret 4 3 "F" yellow3 ) (place-fret 4 5 "G" darkgrey ) (place-fret 5 2 "B" yellow3 ) (place-fret 5 3 "C" black ) (place-fret 5 5 "D" darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Leite dir den Grundton vom C-Dur-Akkord, oder vom C-Barré im 3. Bund ab. Lerne nicht nur die Intervlle, sondern auch die Notennamen. (Zumindest bei den einfachen Tonarten F-, G- und C-Dur). Andere Tonarten kommen später dran. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- / Bb-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== G-Form • 1. Fingersatz ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • G-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 2 5 "E" darkgrey ) (place-fret 2 6 "F" yellow3 ) (place-fret 2 8 "G" darkgrey ) (place-fret 3 4 "B" yellow3 ) (place-fret 3 5 "C" black ) (place-fret 3 7 "D" darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div>Du kannst die beiden hintereinander folgenden Noten im 5. Bund mit einem Mini-Barré ausführen, und die Lagewechsel mittels Slide (=&nbsp;Glissando) durchführen, oder wie in der Wiederholung ohne Slide durchführen. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major c8-1 g' f e d f e d c-1 e-1 d c-1(\glissando b-1) d c b-1(\glissando c1-1) c8-2 g' f e d f e d c-1 e-2 d-4 c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== E- (F-)Form • 1. Fingersatz ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • E- (F-)Form <score raw="1"> \version "2.24.4" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 5 7 "E" darkgrey ) (place-fret 5 8 "F" yellow3 ) (place-fret 5 10 "G" darkgrey ) (place-fret 6 7 "B" yellow3 ) (place-fret 6 8 "C" black ) (place-fret 6 10 "D" darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Fingersatztechnisch wieder problemlos. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== D-Form • 1. Fingersatz ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • D-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 3 9 "E" darkgrey ) (place-fret 3 10 "F" yellow3 ) (place-fret 3 12 "G" darkgrey ) (place-fret 4 9 "B" yellow3 ) (place-fret 4 10 "C" black ) (place-fret 4 12 "D" darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Wieder klingt diese Lage genau so, wie die G-Form, ist abervim Fingersatz her einfacher. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • C-Form ==== <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> === Ein Vogel wollte Hochzeit machen === Hier habe ich ein relativ bekanntes Kinderlied gefunden, dass perfekt zum 1. Fingersatz passt. Die Tondauern sind für Ungeübte in Sachen Noten schwer herauszulesen. Kennst du aber das Stück, oder hörst du es dir mehrmals an, so ist es keine unüberwindbare Schwierigkeit. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] Folgt das G nach dem D, greifst du den besser mit dem kleinen Finger. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d-3( g-4) g g16 e | c8 8 8 g'16 e d8 d d-3 g16-4 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier ist es wohl am einfachsten, dass du den kleinen Finger umlegst, wenn du nach dem D den G greifen willst. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb-)Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d-3( g-4) g g16 e | c8 8 8 g'16 e d8-3 d d g16-4 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Wenn der Ton C auf ein E-folgt, kann man entweder ein <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e-2 c-1 g' e d( g) g g16 e-2 | c8-1 8 8 g'16 e d8 d d g16 f | e8-2 c-1 d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Halbtaktige Sequenzen (2) === :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Bei der G-Form kommt es zwischen der G- und H-Saite zu einem Lagewechsel. Du musst dir jedesmal eine Strategie zurechtlegen, wann und wie du am besten den Lagewechsel durchführst. Wenn du Glück hast, findest du im Notenbild einen Hinweis, wie man günstig die Lage wechseln kann. Ich empfehle dir dort wo die 2 über den Noten steht, den Mittelfinger zu nehmen. *(1 = Z, 2 = M, 3 = R, 4 = K, 0 = leere Saite) Betrachte solche Hinweis nur als Vorschlag, denn es gibt keine verbindliche Regel, wie der Lagewechsel zu erfolgen hat. Übst du die gleiche Sequenzen ein paar Saiten höher oder tiefer, geht es leichter von der Hand. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c''' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Einsingen === Diese beiden Motive kennen viele, die schon einmal in einem Chor gesungen haben. Leider entsprechen viele Lieder in ihrem Tonumfang nicht genau einem der vollständigen drei Fingersätze oder der später folgenden Skalen. Zumeist werden nur Ausschnitte aus den Patterns gebraucht. Im ersten Motiv fehlt beispielsweise die große Septime (j7) vor dem Grundton. Dafür enthält das zweite Motiv die große Septime (j7). Das zweite Motiv eicht den Chor auf die gerade geforderte Tonart. Hier werden nur Akkordtöne in einer auf oder absteigenden Tonfolge gespielt (auch Arpeggios genannt). Der A7-Akkord enthält sowohl den Leitton (j7) der zum Grundton (1) hin leitet, als auch den Strebeton (4) die zur Durterz (3) hin strebt. Mit den zwei spannungsreichen Tönen, die sich zum Grundakkord auflösen wollen, wird der Chor auf die Durtonart eingenordet. Hier brauche ich dir nicht zu erklären, wo der Grundton D ist. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A-(Bb-)Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E-(F-)Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==Erste über den zweiten Fingersatz== Wie du siehst, kommt hier jedesmal zuerst der erste Fingersatz mit dem "Karree" rechts, und dannach kommt der Fingersatz mit dem "Karree" links. Sie sind immer untereinander. Nur zwischen der G- und B-Saite verschiebt sich alles um einen Bund. <div style="float:left; padding:5px; border:black solid 1px; "> ;F-Form <score raw="1"> \version "2.14.2" \paper{ indent=0\mm line-width=120\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% 4-o zeigt 4. Saite offen \fret-diagram #"s:2;f:1; 3-3-2;3-5-3;3-6-4; 4-3-6;4-5-7;4-6-1; 5-3-3;5-4-4;5-6-5; 6-3-7;6-4-1;6-6-2;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;Bb-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:2;f:1; 2-4-2;2-6-3;2-7-4; 3-3-6;3-5-7;3-6-1; 4-3-3;4-4-4;4-6-5; 5-3-7;5-4-1;5-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;D-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:2;f:1; 1-4-2;1-6-3;1-7-4; 2-4-6;2-6-2;2-7-1; 3-3-3;3-4-4;3-6-5; 4-3-7;4-4-1;4-6-2;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} === Jamaica Farewell === Die Melodie von [[Liederbuch/ Jamaica Farwell|Jamaica Farwell]] wurde erheblich vereinfacht, damit du dir nicht zu viele Gedanken um den Rhythmus machen musst. Wenn du dich am Quintillo (dem Rhythmus vom Lagerfeuerschlag} orientierst, solltest du wenige Probleme haben. Es gibt recht viele Wiederholung. Die Strophe wurde bei der Wiederholung in die Oktave verschoben, damit das Stück exakt in den Skalenausschnitt passt. Du musst dir für die Fingersätze ggf. Strategien zurechtlegen, damit du die Finger bequem sortiert bekommst. Das Stück beginnt mit dem Ton G. Der (5) in 1. Fingersatz. ;Bb-Form Greife den C wie ein Bb-Barré im 3. Bund. Leite dir von diesem Akkord den Grundton (1) ab, und wandere beim 1. Fingersatz rauf zum Startton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-4-2;2-6-3;2-7-4; 3-3-6;3-5-7;3-6-1; 4-3-3;4-4-4;4-6-5; 5-3-7;5-4-1;5-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (A-, Bb-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ; F-Form Greife den C wie ein F-Barré im 8. Bund. Leite dir von diesem Akkord den Grundton (1) ab, und wandere beim 1. Fingersatz rauf zum Startton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 3-7-2;3-9-3;3-10-4; 4-7-6;4-9-7;4-10-1; 5-7-3;5-8-4;5-10-5; 6-7-7;6-8-1;6-10-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (E-, F-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ;D-Form Schiebe den D-Dur-Akkord in den 12. Bund. Ein D im 12. Bund verschoben ergibt ein C. Leite dir von diesem Akkord den Grundton (1) ab. Orientiere dich kurz im 2. Fingersatz und wandere zurück zum ersten Fingersatz zum Ton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 1-10-2;1-12-3;1-13-4; 2-10-6;2-12-7;2-13-1; 3-9-3;3-10-4;3-12-5; 4-9-7;4-10-1;4-12-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (D-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==3. Fingersatz== Es fällt auf, dass der 3. Fingersatz kein "Karré" hat. {| !Fingersatz !width="30px"| !Intervalle |- |[[Image:Scala Z RK-Z K-ZM K.svg]] !width="30px"| |[[Image:Scala 2 34-5 6-71 2.svg]] |} Der 3. Fingersatz ist gar kein eigenständiger Fingersatz. Der obere Teil des 3. Fingersatzes ist eigentlich schon der untere Teil des 2. Fingersatzes. Ebenso ist der untere Teil des 3. Fingersatzes gleichzeitig der Anfang des 1. Fingersatzes. Du musst dir Strategien zurechtlegen, wie du den Übergang vom Ende des 2. Fingersatzes über die 5 und die 6 hin zum 1. Fingersatz gestaltest. Es kommt beim 3. Fingersatz zu einem Lagewechsel nach links. Übe den 3. Fingersatz zuerst in den obersten Saitenlagen (E A D G x x) === Eine II-V-I-Verbindung === Wir spielen eine einfache Tonfolge über einer 2-5-1-Verbindung. Die Akkordtöne liegen zumeist auf den schweren Zählzeiten. * D, F, A, C gehören zum Dm7 * G, B, D, F gehören zum G7 * C, E, G gehören zum C-Dur-Akkord. Wir nutzen das CAGED-System, um uns grob auf dem Griffbrett zurechtzufinden. ==== Exkurs: Skalenformen ==== Die Namen der Skalen leiten sich übrigens von folgenden einfachen Tonleitern in den ersten Bünden ab: [[Image:Scala C-Am.svg|100px]] [[Image:Scala Bb-Gm.svg|100px]] [[Image:Scala G-Em.svg|100px]] [[Image:Scala F-Dm.svg|100px]] [[Image:Scala D-Hm.svg|100px]] Alle Akkorde die man aus diesen einfachen Tonarten kennt, Bassläufe und ähnliches lassen sich zum großen Teil auf die entsprechenden 5 CAGED-Skalen übertragen, fast so als habe man die Tonleiter mittels Kapodaster in eine höhere Lage verschoben. Wie du siehst, nennen wir die Skalen entgegen des reinen CAGED-System nicht E-Dur-Form (Shape) und nicht die A-Dur-Form (Shape), sondern F- und Bb-Dur-Form. <div style="float:left; padding:5px; border:black solid 1px; "> ;E-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-1;1-2-2;1-4-3; 2-0-5;2-2-6;2-4-7; 3-1-3;3-2-4;3-4-5; 4-1-7;4-2-1;4-4-2; 5-0-4;5-2-5;5-4-6; 6-0-1;6-2-2;6-4-3;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;F-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-3; 1-1-1; 1-3-2; 2-1-5; 2-3-6; 3-0-2; 3-2-3; 3-3-4; 4-0-6; 4-2-7; 4-3-1; 5-0-3; 5-1-4; 5-3-5; 6-0-7; 6-1-1; 6-3-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;G-Dur-Tonleiter <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-3-3; 1-4-1; 1-6-2; 2-4-5; 2-6-6; 3-3-2; 3-5-3; 3-6-4; 4-3-6; 4-5-7; 4-6-1; 5-3-3; 5-4-4; 5-6-5; 6-3-7; 6-4-1; 6-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Du siehst selbst, dass die G-Dur-Tonleiter von der Form her eher wie die F-Dur-Tonleiter als wie die E-Dur-Tonleiter aussieht. <div style="float:left; padding:5px; border:black solid 1px; "> ;A-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-5;1-2-6;1-4-7; 2-0-2;2-2-3;2-3-4; 3-1-7;3-2-1;3-4-2; 4-0-4;4-2-5;4-4-6; 5-0-1;5-2-2;5-4-3; 6-0-5;6-2-6;6-4-7;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;Bb-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-1-5; 1-3-6; 2-1-2; 2-3-3; 2-4-4; 3-0-6; 3-2-7; 3-3-1; 4-0-3; 4-1-4; 4-3-5; 5-0-7; 5-1-1; 5-3-2; 6-1-5; 6-3-6;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;C-Dur-Tonleiter <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-3-5; 1-5-6; 2-3-2; 2-5-3; 2-6-4; 3-2-6; 3-4-7; 3-5-1; 4-2-3; 4-3-4; 4-5-5; 5-2-7; 5-3-1; 5-5-2; 6-3-5; 6-5-6;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Du siehst selbst, dass die C-Dur-Tonleiter von der Form her eher wie die Bb-Dur-Tonleiter als wie die A-Dur-Tonleiter aussieht. ==== 3. Fingersatz II-V-I-Verbindung D-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;D-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:3;f:1; 4-9-7;4-10-1;4-12-2; 5-10-5;5-12-6; 6-10-2;6-12-3;6-13-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Wir beginnen oben bei der D-Form, wo sich der Lagewechsel des 3. Fingersatz noch nicht mit dem Lagewechsel zwischen der G und H-Saite (engl. B-Saite) aufhebt. Würde ich ein Capo in den 10. Bund setzen, dann würde ich die Melodie vom Fingersatz her wie D-Dur spielen. In D-Dur spiele ich diese II-V-I-Verbindung Em7 A7 D. Nehme ich das Capo weg, dann greife ich den Dm(7) als einen Barré der Em-Form im 10. Bund. Von diesem kann ich mir das D als Grundton ableiten. Alternativ siehst du in den Noten, dass die Übung mit dem Ton D anfängt. Dass die oberste Tiefe E-Saite im 12. Bund ebenfalls ein E ergibt, setze ich als bekannt voraus. Falls nicht, beschäftige dich noch einmal mit dem [[Gitarre: Lagerfeueranhang 2c|Stimmen der Gitarre]]. Ein Ganztonschritt bzw. zwei Bünde vor dem E ist der Ton D. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (D-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g-1 a-4 b-1 c4 | b8^\markup { \bold {G7} } a-4 g4-1 f8 e d4 | e8^\markup { \bold {C} } f g4-1 a8-4 b-1 c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung G-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;G-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 3-4-7;3-5-1;3-7-2; 4-5-5;4-7-6; 5-5-2;5-7-3;5-8-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 5. Bund setzen, dann würde man die Melodie vom Fingersatz her wie G-Dur spielen. In G-Dur spielt man diese II-V-I-Verbindung Am7 D7 G. Nimmt man das Capo weg, dann greift man den Dm(7) als einen Barré der Am-Form. Von diesem kannst du dir den D als Grundton ableiten. Einfacher geht es natürlich, wenn du weißt, dass der D im 5. Bund der A-Saite der Stimmton der D-Saite ist. </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (G-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g-1 a-4 b-1 c4 | b8^\markup { \bold {G7} } a-4 g4-1 f8 e d4 | e8^\markup { \bold {C} } f g4-1 a8-4 b-1 c d | c b c2. | \break d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung C-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;C-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-0-7;2-1-1;2-3-2; 3-0-5;3-2-6; 4-0-2;4-2-3;4-3-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Die C-Dur-Form der C-Dur Tonleiter sieht schlicht und ergreifend wie die C-Durtonleiter aus. </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (C-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #4 % \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \break d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung C-Form 12. Bund ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;C-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-12-7;2-13-1;2-15-2; 3-12-5;3-14-6; 4-12-2;4-14-3;4-15-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 12. Bund setzen, dann würde man die Melodie vom Fingersatz her wie C-Dur spielen. In C-Dur spielt man diese II-V-I-Verbindung Dm7 G7 C. Der Startton ist schlicht die D-Saite im 12. Bund. </div> {{clear}} Gerade noch hatten wir einen Lagewechsel nach links. Jetzt aber hebt sich der Lagewechsel nach links vom 3. Fingersatz mit dem Lagewechsel zwischen der G- und H-Saite auf. Es hört sich beim ersten Durchlesen kompliziert an, aber du hast nur 4 Lektionen zu lernen. Den 1. bis 3. Fingersatz und den Lagewechsel zwischen der G- und H-Saite. Das Auffinden der Töne und welche Akkorde zu welcher Tonart gehört, und wie man einen Capo benutzt, sollte eigentlich nichts neues für dich sein. Rein technisch gesehen vereinfacht sich der Fingersatz. Doch es kostet ein wenig Überlegung, wie sich die beiden Lagewechsel auf den 3. Fingersatz auswirken. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (C-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> Sollte es im 12 Bund unbequem zu spielen sein, weil du kein Cutaway hast (Aussparung für die hohen Bünde), übe die C-Form ein paar Bünde zurück in einer anderen Tonart. ==== 3. Fingersatz II-V-I-Verbindung F-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;F-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 1-7-7; 1-8-1;1-10-2; 2-8-5; 2-10-6; 3-7-2; 3-9-3; 3-10-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 6. Bund setzen, dann würde man die Melodie vom Fingersatz her wie F-Dur spielen. In C-Dur spielt man diese II-V-I-Verbindung Gm7 C7 F. Wenn du den C wie ein F-Barré im 8. Bund greifst, dindest du den Grundton (1) auf der hohen E-Saite. Von dem wanderst du runter zum Startton (2). </div> {{clear}} Auch hier hebt sich der Lagewechsel zwischen der G- und H-Saite mit dem Lagewechsel des 3. Fingersatz gegeneinander auf, was den Fingersatz grifftechnisch wieder vereinfacht. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (F-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> == Wie geht es weiter? == Solltest du als Quereinsteiger in diese Lektion gestolpert sein, dann schaue dir die erste Lektion zum [[Gitarre: Aufbau der CAGED-Skalenformen|Aufbau der CAGED-Skalenformen]] an. Insbesondere die Abschnitte, die hier übergangen wurden. Dannach kannst du mit der ersten CAGED-Skala in der D-Dur-Form weitermachen. <noinclude> {{Navigation zurückhochvor |zurücklink=Gitarre: CAGED-Skala G-Dur-Form |zurücktext=CAGED-Skala G-Dur-Form |hochlink=Gitarre: Die Major-Patterns |hochtext=Einführung: Major-Patterns |vorlink=Gitarre: CAGED-Skala D-Dur-Form |vortext=CAGED-Skala D-Dur-Form }} </noinclude> e6t9knkp4dnqke7umqz6r63ud74b4ib 1090593 1090592 2026-09-08T19:46:40Z Mjchael 2222 /* 1. Fingersatz • C-Form */ 1090593 wikitext text/x-wiki {{:Gitarre/ Navi|Sologitarre| {{:Gitarre: Sologitarre/ Navi Improvisation in Dur und Moll}}| img=Guitar 1.svg |bg=#F8f8f8|border=darkorange|color=dark|px=80|navi=Einführung in die Sologitarre}} = Wiederholung der Fingersätze = ; mit Schwerpunkt auf den Stammtönen Diese Wiederholung ist zum einen dafür gedacht, die vorhergehenden Übungen auf jeder Saitenlage zu machen, und auch in jeder Bundlage, gleichgültig ob die Finger eng beieinander oder weit auseinander stehen. Zum andern sind diese als Vorbereitung in die Sologitarre gedacht. Beispielsweise als Auflockerungsübung zwischen den Barré-Akkorden. Besonderen Augenmerk wollen wir hier auf die Notennamen legen. Diese können hier mitgelernt werden. Solltest du meinen, das sei noch nicht für dich dran und kann warten, dann springe zur ersten CAGED-Skala. Du kannst beim Kapitel Longform nochmal hierrauf zurückkommen. * [[Gitarre: CAGED-Skala D-Dur-Form|CAGED-Skala D-Dur-Form]] Lassen wir die [[Gitarre: Aufbau der CAGED-Skalenformen|erste Lektion]] (insbesondere für die Quereinsteiger) noch einmal Revue passieren. Die folgenden Übungen enthalten oft eine Folge von ein- oder zweitaktigen Sequenzen. Eine Sequenz ist ein Motiv, dass sich auf verschiedenen Tonhöhen wiederholt. Auch ohne Notenkenntnisse kannst du den Verlauf und die Wiederholungen der Sequenzen einfacher im Notenbild verfolgen, als in der Tabulatur; insbesondere wenn du dir gleichzeitig die Übung anhörst. Es kommen auch Ausschnitte aus klassischen Stücken, Folksongs, Kinderlieder o.ä. vor. Die einfache Struktur oder der Bekanntheitsgrad der Melodien sollen dir das Üben erleichtern. Die Finger finden so leichter ihre Position, als wenn du erstmal jede einzelne Note aus der Tabulatur entschlüsseln musst. Jede Übung wird auf allen Saitenlagen geübt. Vorher blieben wir in den mittleren Lagen. Jetzt gehen wir auch in die ersten Bünde, wo man die Finger etwas mehr spreizen muss, und in die höheren Lagen, wo es ein wenig eng wird. Die Stücke wiederholen sich in dieser Lektion in der selben Tonart, doch auf verschiedenen Bünden. Du spielst immer die selbe Tonfolge, nur auf verschiedenen Tonhöhen bzw. auf verschiedenen Saitenlagen. Lediglich zwischen der G- und H-Saite musst du dir jedesmal überlegen, wie sich der Lagewechsel auf den Fingersatz auswirkt. Doch der Fingersatz in den anderen höheren Lagen bleibt immer gleich. Wie die Tonfolgen mit dem CAGED-System zusammenhängen, das muss dich nur am Rande interessieren. Es wird in den folgenden Lektionen näher und ausführlicher erleutert. :[[Datei:Scala Griffbrett.svg]] Wir hatten uns bei den vorhergehenden Übungen weitestgehend an den Intervallen (1-j7) und an der Tabulatur orientiert. Diese sind in allen Tonarten gleich. Suche zuerst das Karré! Daran orientierst du dich. :[[Image:Scala Carree.svg]] {{Tipp|Lerne bei der C-Dur-Tonleiter nicht nur die Intervalle <br> 2 - 3 4 - 5<br> 6 - j7 1 - 2<br> sondern benenne auch jede einzelne Note. <br> D - E F - G<br> A - H C - D<br> So bekommst du einen recht einfachen Überblick über das Griffbrett.}} == Töne der C-Dur Tonleiter auf dem Griffbrett == Wir wollen uns in dieser Lektion auf die Töne bzw. die Notennamen konzentrieren. Allerdings sparen wir uns vorerst alle Töne mit Vorzeichen aus. Die [[Gitarre: Aufbau der CAGED-Skalenformen|ersten Übungen zum 1. und 2. Fingersatz]] werden auf die Tonart C-Dur bzw. A-Moll übertragen und wir spiele sie in den hier gezeigten Positionen. Wir fangen mit dem zweiten Fingersatz an, wo wir entweder den Ton C oder den Ton A der C-Dur- bzw. Am-Tonleiter als Orientierung nutzen :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] Du hast vermutlich allerlei Akkordformen des CAGED-System gesehen. <div class="noprint"> ;Animation [[Image:Crd Grundtonschema ani.gif]] </div> <score> << \new ChordNames { \chordmode { c1 c c c c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 e-2 g c'-1 e' > < c-1\5 g-3\4 c'-3\3 e'-4\2 g'-1 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 e-2\5 g-1\4 c'-1\3 e'-1\2 c''-4\1> < c-1\6 g-2\5 c'-3\4 e'-4\3 g'-1\2 c''-1\1> \once \override FretBoard.fret-diagram-details.dot-color = #'white < c'-1\4 g'-2\3 c''-4\2 e''-3\1 > < c'-4\5 e'-3\4 g'-1\3 c''-2\2 e''-1\1 > } >> </score> Wenn du schon Fingerstyle oder Jazz spielst, mögen dir viele der Formen bekannt vorkommen. Doch selbst wenn du bis jetzt nur das [[Gitarre: Rockdiplom|Rockdiplom]] gemacht hast und mit den dort vorkommenden Barré-Akkorden vertraut bist, wirst du sehen, dass die einfachen Barré-Akkorde ausreichen, um sich auf dem Griffbrett zu zurechtzufinden. Die [[Gitarre: C-Dur-Tonleiter Workshop|C-Dur-Tonleiter in den ersten drei Bünden]] setze ich als bekannt voraus und es sollte dir nicht allzu schwer fallen, diese in den 12. Bund zu übertragen. :[[Datei:Scala C-Am.svg|150px]][[Datei:C-Dur_Majorpattern_III.jpg|150px]] C-Dur als Barré im 3. Bund kennst du vom Rockdiplom, und C-Dur im 8. Bund ist auch kein Hexenwerk. Dazwischen liegt nach dem CAGED-System die G-Form, die dir vermutlich noch nicht untergekommen ist (hier mit weißem Fingersatz). Statt uns die Töne von der G-Form abzuleiten, machen wir es uns einfacher und leiten uns die Töne zur Orientierung vom Am im 5. Bund ab. Du erinnerst dich noch an die Dur- und Mollparallelen? (C- \ Am-Tonleiter bzw. G- \ Em-Form). Oder du nutzt die Grundtöne des C-Barré im 8. Bund. <score> << \new ChordNames { \chordmode { c1 c c a:m c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 e-2 g c'-1 e' > < c-1\5 g-3\4 c'-3\3 e'-4\2 g'-1 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 e-2\5 g-1\4 c'-1\3 e'-1\2 c''-4\1> < a,-1\6 e-3\5 a-4\4 c'-1\3 e'-1\2 a'-1\1 > < c-1\6 g-2\5 c'-3\4 e'-4\3 g'-1\2 c''-1\1> < c'-4\5 e'-3\4 g'-1\3 c''-2\2 e''-1\1 > } >> </score> Leite dir also die Grundtöne C und A von den dir bekannten Barré-Akkorden ab und spare dir die ungewöhnlicheren Akkordformen auf, bis sie dir später beim Fingerstyle oder Jazz begegnen. Es macht dabei garnichts aus, wenn du zum Auffinden der Grundtöne und zum Finden des Starttons ein paar Sekunden brauchst. Du wirst sehen, dass die Wiederholungen der bekannten Übungen auf den verschiedenen Bünden und in verschiedenen Oktavebereichen leicht von der Hand gehen. Lediglich beim Lagewechsel zwischen der G- und H-Saite musst du etwas überlegen. <score> << \new ChordNames { \chordmode { c1 c c a c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 c'-1 > < c-1\5 c'-3\3 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 c'-1\3 c''-4\1> < a,-1\6 a-4\4 a'-1\1 > < c-1\6 c'-3\4 c''-1\1> < c'-4\5 c''-2\2 > } >> </score> Diese wenigen"Eckpunkte" reichen aus, um dich grob auf dem Griffbrett zurechtzufinden. Suche sie noch einmal in der Skala und natürlich auch auf deinem Griffbrett. :[[Datei:C-Major-Scale on the fretboard.svg]] == Zweiter Fingersatz == :[[Datei:Scala 6_71-2_34.svg]] Zuerst suchen wir uns in der C-Dur-Tonleiter überall den zweiten Fingersatz heraus. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] Zur leichteren Orientierung wird die Grafik bei jeder neuen Melodie wiederholt. === Rondeau (Auszug) === Die eintaktige Sequenzen wurde aus einem Rondeau von J.S. Bach entnommen, dass beliebig wiederholt werden kann. Der Grundton C, welcher im letzten Takt rot eingefärbt wurde, wird mit dem kleinen Finger gegriffen. Du kannst tatsächlich die Noten nutzen (sofern du es schon kannst) oder aber du orientierst dich an den Notennamen. Am Anfang des Griffbrettes brauchen wir den zweiten Fingersatz nicht vollständig. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #5 % \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> In der A-(Bb-)Form müssen wir den Lagewechsel zwischen der G- und H-Saite beachten. Übrigens werden hier die Töne in der englischen Form angegeben. (Bb-Form und der Ton B statt des deutschen H.) Nur der erste Bund wird bis zur letzten Note in der dritten Lage gespielt. Der Rest bis zur letzten Note in der zweiten Lage. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (A-, Bb-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e-4 d-2 c d e d c b d c b c d c b a c b a b c d b c d-1 } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Statt in der G-Form das C zu suchen, suche lieber das A im 5. Bund (hier grün hervorgehoben). Oder du leitest dir das C vom Barré im 8. Bund ab. Der Startton E ist auf der A Saite im 7. Bund unter dem Ringfinger. Ansonsten stellt der Fingersatz keine Herausforderung mehr dar. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (G-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b \once \override NoteHead #'color = #green a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Der kleine Finger des C-Barré im 8. Bund in der E- bzw. F-Form gibt gleichzeitig das C des zweiten Fingersatz an. Du siehst, dass ab jetzt alles leichter geworden ist, weil sich ansonsten nichts mehr am Fingersatz ändert. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (E- F-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Für den Grundton C müssen wir uns die D-Form gar nicht so genau ins Gedächtnis rufen, wenn uns die C-Form viel vertrauter ist. Diese hohe Lage ist für E-Gitarristen oder Gitarren mit Cutaway gedacht. Auf der Konzertgitarre ist die sehr hohe Lage schlecht zu spielen. Gehe ggf. einen Kompromiss ein, und spiele diese hohe Saitenlage ein paar Bünde tiefer als Übung nur für den Fingersatz aber nicht für die Notennamen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Noten über dem hohen C (der mit zwei Hilfslinien) wird dir seltener begegnen, da in dem Fall bevorzugt die Noten nach unten oktaviert werden. (Beachte die 8 im Notensystem.) Bei den weiteren Übungen werden jedoch die Versionen mit den vielen Hilfslinien angezeigt. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { \ottava #1 e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Mit der C-Form in den ersten drei Bünden im Hinterkopf ist der 12. Bund leicht zu bewältigen. Wieder eine Übung, die weniger für Konzertgitarren geeignet ist. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === "Das häßliche Entlein" oder "Alle meine Entchen"<ref>Anspielung auf ein Märchen der Gebrüder Grimm nebst einem bekannten deutschen Kinderlied.</ref> in A-Moll === Die vorherige Übung war in Dur, und hier verwenden wir ein und den selben Fingersatz in Moll. Wie du siehst und hörst, lässt sich ein Fingersatz oder ein Pattern nicht eindeutig einer einzigen Tonart zuordnen. Der Schlusston oder der Schlussakkord (hier der Ton A bzw. der Akkord Am) bestimmt die Tonart. Der Grundton A ist hier die Sexte (6) des zugrunde liegenden C-Major-Pattern. Es bleibt dir überlassen, ob du zur Orientierung lieber den Grundton A (grün) bestimmst, oder das C aus dem Karré (rot). Wenn in einer Tabulatur über einer Ziffer zwei Notenhälse stehen, so ist das ein Zeichen für eine halbe Note, die zwei Schläge dauert. Da dieses für viele Gitarristen sehr ungewöhnlich aussieht, verzichtet man oft auf Taktstriche in der Tabulatur. In dem Fall lässt sich die Tondauer allein an den Notenwerten ablesen. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-/Am-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #5 % \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Der Lagewechsel zwischen der G- und H-Saite ist hier leicht zu bewältigen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Gm-/Bb-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d-1 e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2-4 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Auch hier ist es wieder einfacher das A (grün) zu suchen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Em-/G-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (E- / F-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Statt lange nach dem Grundton der D-Form zu suchen, erinneren wir uns kurz, wo der Grundton C auf der H- (B-)Saite sein muß (13. Bund). <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> === Die Moldau (Hauptmotiv) === Die Abfolge der Töne der folgenden Übung unterscheidet sich kaum von der vorhergehenden. Doch mit dem anderen Rhythmus haben wir das Hauptmotiv von der Komposition {{Youtube-Suche|Smetana+Die+Moldau|"Die Moldau" von Bedrich Smetana}} (ohne Auftakt und rhythmisch vereinfacht). Auch wenn es hier (wie in der 7. Übung) nur die Molltonleiter rauf und runter geht, merkst du hoffentlich, wieviel der Takt und Rhythmus an der Wirkung ausmacht. Wenn du später mal meinst, deine Improvisationen hören sich langweilig an, dann solltest du dich mehr mit Rhythmus beschäftigen. Dazu kannst du dich auch ein wenig mit Schlagmustern beschäftigen. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Am-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Warum die Form hier Gm-Form genannt wird, das wird dir in den nachfolgenden Lektionen klarer werden. Auf Fingersatzangaben können wir hier verzichten, wenn du vorher "Alle meine Entchen in Am" gespielt hast. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Bb- /Gm-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier bietet sich besonders an, den Am-Barré zur Orientierung zu verwenden. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Em-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Auch hier gibt dir der kleine Finger des Am-Barrés den Grundton an. Du kannst dir die Dm-Form aber auch über die F-Form (C im 8. Bund) ableiten. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (F- /Dm-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Zähle vom C (H-Saite, 13. Bund) rückwärts zum A. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D- /Bm7-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier wird die erste Übung in den 12. Bund verschoben. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C- /Am-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==1. Fingersatz== Dir wird wohl aufgefallen sein, dass beim zweiten Fingersatz der Ton G fehlt. Den üben wir mit dem ersten Fingersatz. :[[Datei:Scala 71_2-34_5.svg]] Beachte, dass der Grundton (1) unter dem Ringfinger (also im zweiten Bund dieses Fingersatzes) ist, und dass du deine freie Improvisationsübung in Dur günstigerweise mit der (1) beginnen oder zumindest enden sollte. Diesen Fingersatz suchen wir in der C-Dur-Tonleiter auf dem Griffbrett. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] === Eintaktige Sequenzen === Die erste Lage mit leeren Saiten stellt noch keine Herausforderung dar. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • A- (Bb-)Form ==== Du musst noch nicht einmal den C-Barré im 3. Bund bemühen, um den Grundton zu finden. Die C-Dur-Tonleiter in den ersten drei Bünden reicht. Natürlich kannst du auch den Startton G suchen. Die Tabulatur sagt dir "D-Saite 5. Bund". Erinnere dich daran, dass dies der Stimmton der D-Saite ist (beim Stimmen nach Bünden). Auch hier ist der Fingersatz leicht. <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • A- (Bb-)Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 4 2 3 darkgrey ) (place-fret 4 3 4 yellow3 ) (place-fret 4 5 5 darkgrey ) (place-fret 5 2 "j7" yellow3 ) (place-fret 5 3 1 black ) (place-fret 5 5 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb)-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • G-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • G-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 2 5 3 darkgrey ) (place-fret 2 6 4 yellow3 ) (place-fret 2 8 5 darkgrey ) (place-fret 3 4 "j7" yellow3 ) (place-fret 3 5 1 black ) (place-fret 3 7 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Bei der G-Form kommt es zwischen der G- und H-Saite zu einem Lagewechsel. Du musst dir jedesmal eine Strategie zurechtlegen, wann und wie du am besten den Lagewechsel durchführst. Wenn du Glück hast, findest du im Notenbild einen Hinweis, wie man günstig die Lage wechseln kann. Ich empfehle dir dort wo die 2 über den Noten steht, den Mittelfinger zu nehmen. *(1 = Z, 2 = M, 3 = R, 4 = K, 0 = leere Saite) Betrachte solche Hinweis nur als Vorschlag, denn es gibt keine verbindliche Regel, wie der Lagewechsel zu erfolgen hat. Übst du die gleiche Sequenzen ein paar Saiten höher oder tiefer, geht es leichter von der Hand. Beachte den Lagewechsel zwischen der G- und H-Saite. Den Grundton C kannst du dir auch vom Ringfinger auf der G-Saite des C-Barrés ableiten. Du musst dir hier eine Strategie zurechtlegen, wann du den Lagewechsel durchführen möchtest. Ich empfehle hier, den Lagewechsel so früh wie möglich zu machen, damit du den Zeigefinger frei hast, um gleich hintereinander zwei Töne in einem Bund zu spielen. Betrachte die Angaben zum Fingersatz nur als Vorschlag. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d-4 e-2 f-3 d e f e d c d e c-1 d-4 e-2 d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier eine alternative Lösung. Du kannst einen kleinen Barré über die Noten C und E legen, und den Lagewechsel später ausführen. Das V unter dem C zeigt hier den 5. Bund an, und nicht etwa Abschläge. Der Lagewechsel erfolgt hier im letzten Takt. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d e f d e f e d-2 \textSpannerDown \override TextSpanner.bound-details.left.text = "V" c-1\startTextSpan d e-1 c-1 d e-1\stopTextSpan d-4 c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • E- (F-)Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • E- (F-)Form <score raw="1"> \version "2.24.4" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 5 7 3 darkgrey ) (place-fret 5 8 4 yellow3 ) (place-fret 5 10 5 darkgrey ) (place-fret 6 7 "j7" yellow3 ) (place-fret 6 8 1 black ) (place-fret 6 10 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Den Grundton C auf der E-Saite kannst du dir vom C-Barré der E-Form (wie ein F- Barré) im 8. Bund ableiten. Der Fingersatz ist wieder einfach. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E-(F)-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • D-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • D-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 3 9 3 darkgrey ) (place-fret 3 10 4 yellow3 ) (place-fret 3 12 5 darkgrey ) (place-fret 4 9 "j7" yellow3 ) (place-fret 4 10 1 black ) (place-fret 4 12 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div>Die Tonhöhe ist die selbe, wie in der G-Form, wo wir uns komplizierte Strategien für den Fingersatz zurechtlegen mussten. In dieser Lage ist alles einfacher. Wenn du später mal einen herausfordernden Lick zwischen der G- und H-Saite hast, wäre eine weitere gangbare Strategie den Lick in eine fingertechnisch günstigere Lage zu verlegen. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • C-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • C-Form <score raw="1"> \version "2.24.4" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 1 12 3 darkgrey ) (place-fret 1 13 4 yellow3 ) (place-fret 1 15 5 darkgrey ) (place-fret 2 12 "j7" yellow3 ) (place-fret 2 13 1 black ) (place-fret 2 15 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Hier wurde die C-Durtonleiter in den 12. Bund verlegt. Der Grundton ist auf der H-Saite im 13. Bund. (Eine Oktave höher als bei der C-Dur Tonleiter in den ersten drei Bünden.) Wer keine E-Gitarre hat oder wer keine Akkustik mit Cutaway hat, der kann die C-Form auch in einem niedrigeren Bund üben. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c''' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Halbtaktige Sequenzen === Diesmal hast du halbtaktige Sequenzen, die einmal wiederholt werden. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== A- (Bb-)Form • 1. Fingersatz ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • A- (Bb-)Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 4 2 "E" darkgrey ) (place-fret 4 3 "F" yellow3 ) (place-fret 4 5 "G" darkgrey ) (place-fret 5 2 "B" yellow3 ) (place-fret 5 3 "C" black ) (place-fret 5 5 "D" darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Leite dir den Grundton vom C-Dur-Akkord, oder vom C-Barré im 3. Bund ab. Lerne nicht nur die Intervlle, sondern auch die Notennamen. (Zumindest bei den einfachen Tonarten F-, G- und C-Dur). Andere Tonarten kommen später dran. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- / Bb-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== G-Form • 1. Fingersatz ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • G-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 2 5 "E" darkgrey ) (place-fret 2 6 "F" yellow3 ) (place-fret 2 8 "G" darkgrey ) (place-fret 3 4 "B" yellow3 ) (place-fret 3 5 "C" black ) (place-fret 3 7 "D" darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div>Du kannst die beiden hintereinander folgenden Noten im 5. Bund mit einem Mini-Barré ausführen, und die Lagewechsel mittels Slide (=&nbsp;Glissando) durchführen, oder wie in der Wiederholung ohne Slide durchführen. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major c8-1 g' f e d f e d c-1 e-1 d c-1(\glissando b-1) d c b-1(\glissando c1-1) c8-2 g' f e d f e d c-1 e-2 d-4 c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== E- (F-)Form • 1. Fingersatz ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • E- (F-)Form <score raw="1"> \version "2.24.4" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 5 7 "E" darkgrey ) (place-fret 5 8 "F" yellow3 ) (place-fret 5 10 "G" darkgrey ) (place-fret 6 7 "B" yellow3 ) (place-fret 6 8 "C" black ) (place-fret 6 10 "D" darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Fingersatztechnisch wieder problemlos. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== D-Form • 1. Fingersatz ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • D-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 3 9 "E" darkgrey ) (place-fret 3 10 "F" yellow3 ) (place-fret 3 12 "G" darkgrey ) (place-fret 4 9 "B" yellow3 ) (place-fret 4 10 "C" black ) (place-fret 4 12 "D" darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Wieder klingt diese Lage genau so, wie die G-Form, ist abervim Fingersatz her einfacher. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • C-Form ==== <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> === Ein Vogel wollte Hochzeit machen === Hier habe ich ein relativ bekanntes Kinderlied gefunden, dass perfekt zum 1. Fingersatz passt. Die Tondauern sind für Ungeübte in Sachen Noten schwer herauszulesen. Kennst du aber das Stück, oder hörst du es dir mehrmals an, so ist es keine unüberwindbare Schwierigkeit. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] Folgt das G nach dem D, greifst du den besser mit dem kleinen Finger. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d-3( g-4) g g16 e | c8 8 8 g'16 e d8 d d-3 g16-4 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier ist es wohl am einfachsten, dass du den kleinen Finger umlegst, wenn du nach dem D den G greifen willst. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb-)Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d-3( g-4) g g16 e | c8 8 8 g'16 e d8-3 d d g16-4 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Wenn der Ton C auf ein E-folgt, kann man entweder ein <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e-2 c-1 g' e d( g) g g16 e-2 | c8-1 8 8 g'16 e d8 d d g16 f | e8-2 c-1 d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Halbtaktige Sequenzen (2) === :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Bei der G-Form kommt es zwischen der G- und H-Saite zu einem Lagewechsel. Du musst dir jedesmal eine Strategie zurechtlegen, wann und wie du am besten den Lagewechsel durchführst. Wenn du Glück hast, findest du im Notenbild einen Hinweis, wie man günstig die Lage wechseln kann. Ich empfehle dir dort wo die 2 über den Noten steht, den Mittelfinger zu nehmen. *(1 = Z, 2 = M, 3 = R, 4 = K, 0 = leere Saite) Betrachte solche Hinweis nur als Vorschlag, denn es gibt keine verbindliche Regel, wie der Lagewechsel zu erfolgen hat. Übst du die gleiche Sequenzen ein paar Saiten höher oder tiefer, geht es leichter von der Hand. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c''' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Einsingen === Diese beiden Motive kennen viele, die schon einmal in einem Chor gesungen haben. Leider entsprechen viele Lieder in ihrem Tonumfang nicht genau einem der vollständigen drei Fingersätze oder der später folgenden Skalen. Zumeist werden nur Ausschnitte aus den Patterns gebraucht. Im ersten Motiv fehlt beispielsweise die große Septime (j7) vor dem Grundton. Dafür enthält das zweite Motiv die große Septime (j7). Das zweite Motiv eicht den Chor auf die gerade geforderte Tonart. Hier werden nur Akkordtöne in einer auf oder absteigenden Tonfolge gespielt (auch Arpeggios genannt). Der A7-Akkord enthält sowohl den Leitton (j7) der zum Grundton (1) hin leitet, als auch den Strebeton (4) die zur Durterz (3) hin strebt. Mit den zwei spannungsreichen Tönen, die sich zum Grundakkord auflösen wollen, wird der Chor auf die Durtonart eingenordet. Hier brauche ich dir nicht zu erklären, wo der Grundton D ist. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A-(Bb-)Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E-(F-)Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==Erste über den zweiten Fingersatz== Wie du siehst, kommt hier jedesmal zuerst der erste Fingersatz mit dem "Karree" rechts, und dannach kommt der Fingersatz mit dem "Karree" links. Sie sind immer untereinander. Nur zwischen der G- und B-Saite verschiebt sich alles um einen Bund. <div style="float:left; padding:5px; border:black solid 1px; "> ;F-Form <score raw="1"> \version "2.14.2" \paper{ indent=0\mm line-width=120\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% 4-o zeigt 4. Saite offen \fret-diagram #"s:2;f:1; 3-3-2;3-5-3;3-6-4; 4-3-6;4-5-7;4-6-1; 5-3-3;5-4-4;5-6-5; 6-3-7;6-4-1;6-6-2;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;Bb-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:2;f:1; 2-4-2;2-6-3;2-7-4; 3-3-6;3-5-7;3-6-1; 4-3-3;4-4-4;4-6-5; 5-3-7;5-4-1;5-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;D-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:2;f:1; 1-4-2;1-6-3;1-7-4; 2-4-6;2-6-2;2-7-1; 3-3-3;3-4-4;3-6-5; 4-3-7;4-4-1;4-6-2;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} === Jamaica Farewell === Die Melodie von [[Liederbuch/ Jamaica Farwell|Jamaica Farwell]] wurde erheblich vereinfacht, damit du dir nicht zu viele Gedanken um den Rhythmus machen musst. Wenn du dich am Quintillo (dem Rhythmus vom Lagerfeuerschlag} orientierst, solltest du wenige Probleme haben. Es gibt recht viele Wiederholung. Die Strophe wurde bei der Wiederholung in die Oktave verschoben, damit das Stück exakt in den Skalenausschnitt passt. Du musst dir für die Fingersätze ggf. Strategien zurechtlegen, damit du die Finger bequem sortiert bekommst. Das Stück beginnt mit dem Ton G. Der (5) in 1. Fingersatz. ;Bb-Form Greife den C wie ein Bb-Barré im 3. Bund. Leite dir von diesem Akkord den Grundton (1) ab, und wandere beim 1. Fingersatz rauf zum Startton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-4-2;2-6-3;2-7-4; 3-3-6;3-5-7;3-6-1; 4-3-3;4-4-4;4-6-5; 5-3-7;5-4-1;5-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (A-, Bb-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ; F-Form Greife den C wie ein F-Barré im 8. Bund. Leite dir von diesem Akkord den Grundton (1) ab, und wandere beim 1. Fingersatz rauf zum Startton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 3-7-2;3-9-3;3-10-4; 4-7-6;4-9-7;4-10-1; 5-7-3;5-8-4;5-10-5; 6-7-7;6-8-1;6-10-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (E-, F-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ;D-Form Schiebe den D-Dur-Akkord in den 12. Bund. Ein D im 12. Bund verschoben ergibt ein C. Leite dir von diesem Akkord den Grundton (1) ab. Orientiere dich kurz im 2. Fingersatz und wandere zurück zum ersten Fingersatz zum Ton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 1-10-2;1-12-3;1-13-4; 2-10-6;2-12-7;2-13-1; 3-9-3;3-10-4;3-12-5; 4-9-7;4-10-1;4-12-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (D-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==3. Fingersatz== Es fällt auf, dass der 3. Fingersatz kein "Karré" hat. {| !Fingersatz !width="30px"| !Intervalle |- |[[Image:Scala Z RK-Z K-ZM K.svg]] !width="30px"| |[[Image:Scala 2 34-5 6-71 2.svg]] |} Der 3. Fingersatz ist gar kein eigenständiger Fingersatz. Der obere Teil des 3. Fingersatzes ist eigentlich schon der untere Teil des 2. Fingersatzes. Ebenso ist der untere Teil des 3. Fingersatzes gleichzeitig der Anfang des 1. Fingersatzes. Du musst dir Strategien zurechtlegen, wie du den Übergang vom Ende des 2. Fingersatzes über die 5 und die 6 hin zum 1. Fingersatz gestaltest. Es kommt beim 3. Fingersatz zu einem Lagewechsel nach links. Übe den 3. Fingersatz zuerst in den obersten Saitenlagen (E A D G x x) === Eine II-V-I-Verbindung === Wir spielen eine einfache Tonfolge über einer 2-5-1-Verbindung. Die Akkordtöne liegen zumeist auf den schweren Zählzeiten. * D, F, A, C gehören zum Dm7 * G, B, D, F gehören zum G7 * C, E, G gehören zum C-Dur-Akkord. Wir nutzen das CAGED-System, um uns grob auf dem Griffbrett zurechtzufinden. ==== Exkurs: Skalenformen ==== Die Namen der Skalen leiten sich übrigens von folgenden einfachen Tonleitern in den ersten Bünden ab: [[Image:Scala C-Am.svg|100px]] [[Image:Scala Bb-Gm.svg|100px]] [[Image:Scala G-Em.svg|100px]] [[Image:Scala F-Dm.svg|100px]] [[Image:Scala D-Hm.svg|100px]] Alle Akkorde die man aus diesen einfachen Tonarten kennt, Bassläufe und ähnliches lassen sich zum großen Teil auf die entsprechenden 5 CAGED-Skalen übertragen, fast so als habe man die Tonleiter mittels Kapodaster in eine höhere Lage verschoben. Wie du siehst, nennen wir die Skalen entgegen des reinen CAGED-System nicht E-Dur-Form (Shape) und nicht die A-Dur-Form (Shape), sondern F- und Bb-Dur-Form. <div style="float:left; padding:5px; border:black solid 1px; "> ;E-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-1;1-2-2;1-4-3; 2-0-5;2-2-6;2-4-7; 3-1-3;3-2-4;3-4-5; 4-1-7;4-2-1;4-4-2; 5-0-4;5-2-5;5-4-6; 6-0-1;6-2-2;6-4-3;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;F-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-3; 1-1-1; 1-3-2; 2-1-5; 2-3-6; 3-0-2; 3-2-3; 3-3-4; 4-0-6; 4-2-7; 4-3-1; 5-0-3; 5-1-4; 5-3-5; 6-0-7; 6-1-1; 6-3-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;G-Dur-Tonleiter <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-3-3; 1-4-1; 1-6-2; 2-4-5; 2-6-6; 3-3-2; 3-5-3; 3-6-4; 4-3-6; 4-5-7; 4-6-1; 5-3-3; 5-4-4; 5-6-5; 6-3-7; 6-4-1; 6-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Du siehst selbst, dass die G-Dur-Tonleiter von der Form her eher wie die F-Dur-Tonleiter als wie die E-Dur-Tonleiter aussieht. <div style="float:left; padding:5px; border:black solid 1px; "> ;A-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-5;1-2-6;1-4-7; 2-0-2;2-2-3;2-3-4; 3-1-7;3-2-1;3-4-2; 4-0-4;4-2-5;4-4-6; 5-0-1;5-2-2;5-4-3; 6-0-5;6-2-6;6-4-7;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;Bb-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-1-5; 1-3-6; 2-1-2; 2-3-3; 2-4-4; 3-0-6; 3-2-7; 3-3-1; 4-0-3; 4-1-4; 4-3-5; 5-0-7; 5-1-1; 5-3-2; 6-1-5; 6-3-6;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;C-Dur-Tonleiter <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-3-5; 1-5-6; 2-3-2; 2-5-3; 2-6-4; 3-2-6; 3-4-7; 3-5-1; 4-2-3; 4-3-4; 4-5-5; 5-2-7; 5-3-1; 5-5-2; 6-3-5; 6-5-6;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Du siehst selbst, dass die C-Dur-Tonleiter von der Form her eher wie die Bb-Dur-Tonleiter als wie die A-Dur-Tonleiter aussieht. ==== 3. Fingersatz II-V-I-Verbindung D-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;D-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:3;f:1; 4-9-7;4-10-1;4-12-2; 5-10-5;5-12-6; 6-10-2;6-12-3;6-13-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Wir beginnen oben bei der D-Form, wo sich der Lagewechsel des 3. Fingersatz noch nicht mit dem Lagewechsel zwischen der G und H-Saite (engl. B-Saite) aufhebt. Würde ich ein Capo in den 10. Bund setzen, dann würde ich die Melodie vom Fingersatz her wie D-Dur spielen. In D-Dur spiele ich diese II-V-I-Verbindung Em7 A7 D. Nehme ich das Capo weg, dann greife ich den Dm(7) als einen Barré der Em-Form im 10. Bund. Von diesem kann ich mir das D als Grundton ableiten. Alternativ siehst du in den Noten, dass die Übung mit dem Ton D anfängt. Dass die oberste Tiefe E-Saite im 12. Bund ebenfalls ein E ergibt, setze ich als bekannt voraus. Falls nicht, beschäftige dich noch einmal mit dem [[Gitarre: Lagerfeueranhang 2c|Stimmen der Gitarre]]. Ein Ganztonschritt bzw. zwei Bünde vor dem E ist der Ton D. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (D-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g-1 a-4 b-1 c4 | b8^\markup { \bold {G7} } a-4 g4-1 f8 e d4 | e8^\markup { \bold {C} } f g4-1 a8-4 b-1 c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung G-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;G-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 3-4-7;3-5-1;3-7-2; 4-5-5;4-7-6; 5-5-2;5-7-3;5-8-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 5. Bund setzen, dann würde man die Melodie vom Fingersatz her wie G-Dur spielen. In G-Dur spielt man diese II-V-I-Verbindung Am7 D7 G. Nimmt man das Capo weg, dann greift man den Dm(7) als einen Barré der Am-Form. Von diesem kannst du dir den D als Grundton ableiten. Einfacher geht es natürlich, wenn du weißt, dass der D im 5. Bund der A-Saite der Stimmton der D-Saite ist. </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (G-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g-1 a-4 b-1 c4 | b8^\markup { \bold {G7} } a-4 g4-1 f8 e d4 | e8^\markup { \bold {C} } f g4-1 a8-4 b-1 c d | c b c2. | \break d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung C-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;C-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-0-7;2-1-1;2-3-2; 3-0-5;3-2-6; 4-0-2;4-2-3;4-3-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Die C-Dur-Form der C-Dur Tonleiter sieht schlicht und ergreifend wie die C-Durtonleiter aus. </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (C-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #4 % \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \break d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung C-Form 12. Bund ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;C-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-12-7;2-13-1;2-15-2; 3-12-5;3-14-6; 4-12-2;4-14-3;4-15-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 12. Bund setzen, dann würde man die Melodie vom Fingersatz her wie C-Dur spielen. In C-Dur spielt man diese II-V-I-Verbindung Dm7 G7 C. Der Startton ist schlicht die D-Saite im 12. Bund. </div> {{clear}} Gerade noch hatten wir einen Lagewechsel nach links. Jetzt aber hebt sich der Lagewechsel nach links vom 3. Fingersatz mit dem Lagewechsel zwischen der G- und H-Saite auf. Es hört sich beim ersten Durchlesen kompliziert an, aber du hast nur 4 Lektionen zu lernen. Den 1. bis 3. Fingersatz und den Lagewechsel zwischen der G- und H-Saite. Das Auffinden der Töne und welche Akkorde zu welcher Tonart gehört, und wie man einen Capo benutzt, sollte eigentlich nichts neues für dich sein. Rein technisch gesehen vereinfacht sich der Fingersatz. Doch es kostet ein wenig Überlegung, wie sich die beiden Lagewechsel auf den 3. Fingersatz auswirken. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (C-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> Sollte es im 12 Bund unbequem zu spielen sein, weil du kein Cutaway hast (Aussparung für die hohen Bünde), übe die C-Form ein paar Bünde zurück in einer anderen Tonart. ==== 3. Fingersatz II-V-I-Verbindung F-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;F-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 1-7-7; 1-8-1;1-10-2; 2-8-5; 2-10-6; 3-7-2; 3-9-3; 3-10-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 6. Bund setzen, dann würde man die Melodie vom Fingersatz her wie F-Dur spielen. In C-Dur spielt man diese II-V-I-Verbindung Gm7 C7 F. Wenn du den C wie ein F-Barré im 8. Bund greifst, dindest du den Grundton (1) auf der hohen E-Saite. Von dem wanderst du runter zum Startton (2). </div> {{clear}} Auch hier hebt sich der Lagewechsel zwischen der G- und H-Saite mit dem Lagewechsel des 3. Fingersatz gegeneinander auf, was den Fingersatz grifftechnisch wieder vereinfacht. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (F-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> == Wie geht es weiter? == Solltest du als Quereinsteiger in diese Lektion gestolpert sein, dann schaue dir die erste Lektion zum [[Gitarre: Aufbau der CAGED-Skalenformen|Aufbau der CAGED-Skalenformen]] an. Insbesondere die Abschnitte, die hier übergangen wurden. Dannach kannst du mit der ersten CAGED-Skala in der D-Dur-Form weitermachen. <noinclude> {{Navigation zurückhochvor |zurücklink=Gitarre: CAGED-Skala G-Dur-Form |zurücktext=CAGED-Skala G-Dur-Form |hochlink=Gitarre: Die Major-Patterns |hochtext=Einführung: Major-Patterns |vorlink=Gitarre: CAGED-Skala D-Dur-Form |vortext=CAGED-Skala D-Dur-Form }} </noinclude> 6k0a6p1t3an99grf2d02nyvpvv8slsq 1090594 1090593 2026-09-08T19:53:04Z Mjchael 2222 /* 1. Fingersatz • C-Form */ 1090594 wikitext text/x-wiki {{:Gitarre/ Navi|Sologitarre| {{:Gitarre: Sologitarre/ Navi Improvisation in Dur und Moll}}| img=Guitar 1.svg |bg=#F8f8f8|border=darkorange|color=dark|px=80|navi=Einführung in die Sologitarre}} = Wiederholung der Fingersätze = ; mit Schwerpunkt auf den Stammtönen Diese Wiederholung ist zum einen dafür gedacht, die vorhergehenden Übungen auf jeder Saitenlage zu machen, und auch in jeder Bundlage, gleichgültig ob die Finger eng beieinander oder weit auseinander stehen. Zum andern sind diese als Vorbereitung in die Sologitarre gedacht. Beispielsweise als Auflockerungsübung zwischen den Barré-Akkorden. Besonderen Augenmerk wollen wir hier auf die Notennamen legen. Diese können hier mitgelernt werden. Solltest du meinen, das sei noch nicht für dich dran und kann warten, dann springe zur ersten CAGED-Skala. Du kannst beim Kapitel Longform nochmal hierrauf zurückkommen. * [[Gitarre: CAGED-Skala D-Dur-Form|CAGED-Skala D-Dur-Form]] Lassen wir die [[Gitarre: Aufbau der CAGED-Skalenformen|erste Lektion]] (insbesondere für die Quereinsteiger) noch einmal Revue passieren. Die folgenden Übungen enthalten oft eine Folge von ein- oder zweitaktigen Sequenzen. Eine Sequenz ist ein Motiv, dass sich auf verschiedenen Tonhöhen wiederholt. Auch ohne Notenkenntnisse kannst du den Verlauf und die Wiederholungen der Sequenzen einfacher im Notenbild verfolgen, als in der Tabulatur; insbesondere wenn du dir gleichzeitig die Übung anhörst. Es kommen auch Ausschnitte aus klassischen Stücken, Folksongs, Kinderlieder o.ä. vor. Die einfache Struktur oder der Bekanntheitsgrad der Melodien sollen dir das Üben erleichtern. Die Finger finden so leichter ihre Position, als wenn du erstmal jede einzelne Note aus der Tabulatur entschlüsseln musst. Jede Übung wird auf allen Saitenlagen geübt. Vorher blieben wir in den mittleren Lagen. Jetzt gehen wir auch in die ersten Bünde, wo man die Finger etwas mehr spreizen muss, und in die höheren Lagen, wo es ein wenig eng wird. Die Stücke wiederholen sich in dieser Lektion in der selben Tonart, doch auf verschiedenen Bünden. Du spielst immer die selbe Tonfolge, nur auf verschiedenen Tonhöhen bzw. auf verschiedenen Saitenlagen. Lediglich zwischen der G- und H-Saite musst du dir jedesmal überlegen, wie sich der Lagewechsel auf den Fingersatz auswirkt. Doch der Fingersatz in den anderen höheren Lagen bleibt immer gleich. Wie die Tonfolgen mit dem CAGED-System zusammenhängen, das muss dich nur am Rande interessieren. Es wird in den folgenden Lektionen näher und ausführlicher erleutert. :[[Datei:Scala Griffbrett.svg]] Wir hatten uns bei den vorhergehenden Übungen weitestgehend an den Intervallen (1-j7) und an der Tabulatur orientiert. Diese sind in allen Tonarten gleich. Suche zuerst das Karré! Daran orientierst du dich. :[[Image:Scala Carree.svg]] {{Tipp|Lerne bei der C-Dur-Tonleiter nicht nur die Intervalle <br> 2 - 3 4 - 5<br> 6 - j7 1 - 2<br> sondern benenne auch jede einzelne Note. <br> D - E F - G<br> A - H C - D<br> So bekommst du einen recht einfachen Überblick über das Griffbrett.}} == Töne der C-Dur Tonleiter auf dem Griffbrett == Wir wollen uns in dieser Lektion auf die Töne bzw. die Notennamen konzentrieren. Allerdings sparen wir uns vorerst alle Töne mit Vorzeichen aus. Die [[Gitarre: Aufbau der CAGED-Skalenformen|ersten Übungen zum 1. und 2. Fingersatz]] werden auf die Tonart C-Dur bzw. A-Moll übertragen und wir spiele sie in den hier gezeigten Positionen. Wir fangen mit dem zweiten Fingersatz an, wo wir entweder den Ton C oder den Ton A der C-Dur- bzw. Am-Tonleiter als Orientierung nutzen :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] Du hast vermutlich allerlei Akkordformen des CAGED-System gesehen. <div class="noprint"> ;Animation [[Image:Crd Grundtonschema ani.gif]] </div> <score> << \new ChordNames { \chordmode { c1 c c c c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 e-2 g c'-1 e' > < c-1\5 g-3\4 c'-3\3 e'-4\2 g'-1 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 e-2\5 g-1\4 c'-1\3 e'-1\2 c''-4\1> < c-1\6 g-2\5 c'-3\4 e'-4\3 g'-1\2 c''-1\1> \once \override FretBoard.fret-diagram-details.dot-color = #'white < c'-1\4 g'-2\3 c''-4\2 e''-3\1 > < c'-4\5 e'-3\4 g'-1\3 c''-2\2 e''-1\1 > } >> </score> Wenn du schon Fingerstyle oder Jazz spielst, mögen dir viele der Formen bekannt vorkommen. Doch selbst wenn du bis jetzt nur das [[Gitarre: Rockdiplom|Rockdiplom]] gemacht hast und mit den dort vorkommenden Barré-Akkorden vertraut bist, wirst du sehen, dass die einfachen Barré-Akkorde ausreichen, um sich auf dem Griffbrett zu zurechtzufinden. Die [[Gitarre: C-Dur-Tonleiter Workshop|C-Dur-Tonleiter in den ersten drei Bünden]] setze ich als bekannt voraus und es sollte dir nicht allzu schwer fallen, diese in den 12. Bund zu übertragen. :[[Datei:Scala C-Am.svg|150px]][[Datei:C-Dur_Majorpattern_III.jpg|150px]] C-Dur als Barré im 3. Bund kennst du vom Rockdiplom, und C-Dur im 8. Bund ist auch kein Hexenwerk. Dazwischen liegt nach dem CAGED-System die G-Form, die dir vermutlich noch nicht untergekommen ist (hier mit weißem Fingersatz). Statt uns die Töne von der G-Form abzuleiten, machen wir es uns einfacher und leiten uns die Töne zur Orientierung vom Am im 5. Bund ab. Du erinnerst dich noch an die Dur- und Mollparallelen? (C- \ Am-Tonleiter bzw. G- \ Em-Form). Oder du nutzt die Grundtöne des C-Barré im 8. Bund. <score> << \new ChordNames { \chordmode { c1 c c a:m c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 e-2 g c'-1 e' > < c-1\5 g-3\4 c'-3\3 e'-4\2 g'-1 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 e-2\5 g-1\4 c'-1\3 e'-1\2 c''-4\1> < a,-1\6 e-3\5 a-4\4 c'-1\3 e'-1\2 a'-1\1 > < c-1\6 g-2\5 c'-3\4 e'-4\3 g'-1\2 c''-1\1> < c'-4\5 e'-3\4 g'-1\3 c''-2\2 e''-1\1 > } >> </score> Leite dir also die Grundtöne C und A von den dir bekannten Barré-Akkorden ab und spare dir die ungewöhnlicheren Akkordformen auf, bis sie dir später beim Fingerstyle oder Jazz begegnen. Es macht dabei garnichts aus, wenn du zum Auffinden der Grundtöne und zum Finden des Starttons ein paar Sekunden brauchst. Du wirst sehen, dass die Wiederholungen der bekannten Übungen auf den verschiedenen Bünden und in verschiedenen Oktavebereichen leicht von der Hand gehen. Lediglich beim Lagewechsel zwischen der G- und H-Saite musst du etwas überlegen. <score> << \new ChordNames { \chordmode { c1 c c a c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 c'-1 > < c-1\5 c'-3\3 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 c'-1\3 c''-4\1> < a,-1\6 a-4\4 a'-1\1 > < c-1\6 c'-3\4 c''-1\1> < c'-4\5 c''-2\2 > } >> </score> Diese wenigen"Eckpunkte" reichen aus, um dich grob auf dem Griffbrett zurechtzufinden. Suche sie noch einmal in der Skala und natürlich auch auf deinem Griffbrett. :[[Datei:C-Major-Scale on the fretboard.svg]] == Zweiter Fingersatz == :[[Datei:Scala 6_71-2_34.svg]] Zuerst suchen wir uns in der C-Dur-Tonleiter überall den zweiten Fingersatz heraus. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] Zur leichteren Orientierung wird die Grafik bei jeder neuen Melodie wiederholt. === Rondeau (Auszug) === Die eintaktige Sequenzen wurde aus einem Rondeau von J.S. Bach entnommen, dass beliebig wiederholt werden kann. Der Grundton C, welcher im letzten Takt rot eingefärbt wurde, wird mit dem kleinen Finger gegriffen. Du kannst tatsächlich die Noten nutzen (sofern du es schon kannst) oder aber du orientierst dich an den Notennamen. Am Anfang des Griffbrettes brauchen wir den zweiten Fingersatz nicht vollständig. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #5 % \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> In der A-(Bb-)Form müssen wir den Lagewechsel zwischen der G- und H-Saite beachten. Übrigens werden hier die Töne in der englischen Form angegeben. (Bb-Form und der Ton B statt des deutschen H.) Nur der erste Bund wird bis zur letzten Note in der dritten Lage gespielt. Der Rest bis zur letzten Note in der zweiten Lage. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (A-, Bb-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e-4 d-2 c d e d c b d c b c d c b a c b a b c d b c d-1 } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Statt in der G-Form das C zu suchen, suche lieber das A im 5. Bund (hier grün hervorgehoben). Oder du leitest dir das C vom Barré im 8. Bund ab. Der Startton E ist auf der A Saite im 7. Bund unter dem Ringfinger. Ansonsten stellt der Fingersatz keine Herausforderung mehr dar. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (G-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b \once \override NoteHead #'color = #green a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Der kleine Finger des C-Barré im 8. Bund in der E- bzw. F-Form gibt gleichzeitig das C des zweiten Fingersatz an. Du siehst, dass ab jetzt alles leichter geworden ist, weil sich ansonsten nichts mehr am Fingersatz ändert. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (E- F-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Für den Grundton C müssen wir uns die D-Form gar nicht so genau ins Gedächtnis rufen, wenn uns die C-Form viel vertrauter ist. Diese hohe Lage ist für E-Gitarristen oder Gitarren mit Cutaway gedacht. Auf der Konzertgitarre ist die sehr hohe Lage schlecht zu spielen. Gehe ggf. einen Kompromiss ein, und spiele diese hohe Saitenlage ein paar Bünde tiefer als Übung nur für den Fingersatz aber nicht für die Notennamen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Noten über dem hohen C (der mit zwei Hilfslinien) wird dir seltener begegnen, da in dem Fall bevorzugt die Noten nach unten oktaviert werden. (Beachte die 8 im Notensystem.) Bei den weiteren Übungen werden jedoch die Versionen mit den vielen Hilfslinien angezeigt. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { \ottava #1 e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Mit der C-Form in den ersten drei Bünden im Hinterkopf ist der 12. Bund leicht zu bewältigen. Wieder eine Übung, die weniger für Konzertgitarren geeignet ist. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === "Das häßliche Entlein" oder "Alle meine Entchen"<ref>Anspielung auf ein Märchen der Gebrüder Grimm nebst einem bekannten deutschen Kinderlied.</ref> in A-Moll === Die vorherige Übung war in Dur, und hier verwenden wir ein und den selben Fingersatz in Moll. Wie du siehst und hörst, lässt sich ein Fingersatz oder ein Pattern nicht eindeutig einer einzigen Tonart zuordnen. Der Schlusston oder der Schlussakkord (hier der Ton A bzw. der Akkord Am) bestimmt die Tonart. Der Grundton A ist hier die Sexte (6) des zugrunde liegenden C-Major-Pattern. Es bleibt dir überlassen, ob du zur Orientierung lieber den Grundton A (grün) bestimmst, oder das C aus dem Karré (rot). Wenn in einer Tabulatur über einer Ziffer zwei Notenhälse stehen, so ist das ein Zeichen für eine halbe Note, die zwei Schläge dauert. Da dieses für viele Gitarristen sehr ungewöhnlich aussieht, verzichtet man oft auf Taktstriche in der Tabulatur. In dem Fall lässt sich die Tondauer allein an den Notenwerten ablesen. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-/Am-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #5 % \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Der Lagewechsel zwischen der G- und H-Saite ist hier leicht zu bewältigen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Gm-/Bb-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d-1 e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2-4 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Auch hier ist es wieder einfacher das A (grün) zu suchen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Em-/G-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (E- / F-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Statt lange nach dem Grundton der D-Form zu suchen, erinneren wir uns kurz, wo der Grundton C auf der H- (B-)Saite sein muß (13. Bund). <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> === Die Moldau (Hauptmotiv) === Die Abfolge der Töne der folgenden Übung unterscheidet sich kaum von der vorhergehenden. Doch mit dem anderen Rhythmus haben wir das Hauptmotiv von der Komposition {{Youtube-Suche|Smetana+Die+Moldau|"Die Moldau" von Bedrich Smetana}} (ohne Auftakt und rhythmisch vereinfacht). Auch wenn es hier (wie in der 7. Übung) nur die Molltonleiter rauf und runter geht, merkst du hoffentlich, wieviel der Takt und Rhythmus an der Wirkung ausmacht. Wenn du später mal meinst, deine Improvisationen hören sich langweilig an, dann solltest du dich mehr mit Rhythmus beschäftigen. Dazu kannst du dich auch ein wenig mit Schlagmustern beschäftigen. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Am-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Warum die Form hier Gm-Form genannt wird, das wird dir in den nachfolgenden Lektionen klarer werden. Auf Fingersatzangaben können wir hier verzichten, wenn du vorher "Alle meine Entchen in Am" gespielt hast. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Bb- /Gm-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier bietet sich besonders an, den Am-Barré zur Orientierung zu verwenden. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Em-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Auch hier gibt dir der kleine Finger des Am-Barrés den Grundton an. Du kannst dir die Dm-Form aber auch über die F-Form (C im 8. Bund) ableiten. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (F- /Dm-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Zähle vom C (H-Saite, 13. Bund) rückwärts zum A. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D- /Bm7-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier wird die erste Übung in den 12. Bund verschoben. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C- /Am-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==1. Fingersatz== Dir wird wohl aufgefallen sein, dass beim zweiten Fingersatz der Ton G fehlt. Den üben wir mit dem ersten Fingersatz. :[[Datei:Scala 71_2-34_5.svg]] Beachte, dass der Grundton (1) unter dem Ringfinger (also im zweiten Bund dieses Fingersatzes) ist, und dass du deine freie Improvisationsübung in Dur günstigerweise mit der (1) beginnen oder zumindest enden sollte. Diesen Fingersatz suchen wir in der C-Dur-Tonleiter auf dem Griffbrett. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] === Eintaktige Sequenzen === Die erste Lage mit leeren Saiten stellt noch keine Herausforderung dar. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • A- (Bb-)Form ==== Du musst noch nicht einmal den C-Barré im 3. Bund bemühen, um den Grundton zu finden. Die C-Dur-Tonleiter in den ersten drei Bünden reicht. Natürlich kannst du auch den Startton G suchen. Die Tabulatur sagt dir "D-Saite 5. Bund". Erinnere dich daran, dass dies der Stimmton der D-Saite ist (beim Stimmen nach Bünden). Auch hier ist der Fingersatz leicht. <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • A- (Bb-)Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 4 2 3 darkgrey ) (place-fret 4 3 4 yellow3 ) (place-fret 4 5 5 darkgrey ) (place-fret 5 2 "j7" yellow3 ) (place-fret 5 3 1 black ) (place-fret 5 5 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb)-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • G-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • G-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 2 5 3 darkgrey ) (place-fret 2 6 4 yellow3 ) (place-fret 2 8 5 darkgrey ) (place-fret 3 4 "j7" yellow3 ) (place-fret 3 5 1 black ) (place-fret 3 7 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Bei der G-Form kommt es zwischen der G- und H-Saite zu einem Lagewechsel. Du musst dir jedesmal eine Strategie zurechtlegen, wann und wie du am besten den Lagewechsel durchführst. Wenn du Glück hast, findest du im Notenbild einen Hinweis, wie man günstig die Lage wechseln kann. Ich empfehle dir dort wo die 2 über den Noten steht, den Mittelfinger zu nehmen. *(1 = Z, 2 = M, 3 = R, 4 = K, 0 = leere Saite) Betrachte solche Hinweis nur als Vorschlag, denn es gibt keine verbindliche Regel, wie der Lagewechsel zu erfolgen hat. Übst du die gleiche Sequenzen ein paar Saiten höher oder tiefer, geht es leichter von der Hand. Beachte den Lagewechsel zwischen der G- und H-Saite. Den Grundton C kannst du dir auch vom Ringfinger auf der G-Saite des C-Barrés ableiten. Du musst dir hier eine Strategie zurechtlegen, wann du den Lagewechsel durchführen möchtest. Ich empfehle hier, den Lagewechsel so früh wie möglich zu machen, damit du den Zeigefinger frei hast, um gleich hintereinander zwei Töne in einem Bund zu spielen. Betrachte die Angaben zum Fingersatz nur als Vorschlag. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d-4 e-2 f-3 d e f e d c d e c-1 d-4 e-2 d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier eine alternative Lösung. Du kannst einen kleinen Barré über die Noten C und E legen, und den Lagewechsel später ausführen. Das V unter dem C zeigt hier den 5. Bund an, und nicht etwa Abschläge. Der Lagewechsel erfolgt hier im letzten Takt. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d e f d e f e d-2 \textSpannerDown \override TextSpanner.bound-details.left.text = "V" c-1\startTextSpan d e-1 c-1 d e-1\stopTextSpan d-4 c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • E- (F-)Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • E- (F-)Form <score raw="1"> \version "2.24.4" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 5 7 3 darkgrey ) (place-fret 5 8 4 yellow3 ) (place-fret 5 10 5 darkgrey ) (place-fret 6 7 "j7" yellow3 ) (place-fret 6 8 1 black ) (place-fret 6 10 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Den Grundton C auf der E-Saite kannst du dir vom C-Barré der E-Form (wie ein F- Barré) im 8. Bund ableiten. Der Fingersatz ist wieder einfach. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E-(F)-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • D-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • D-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 3 9 3 darkgrey ) (place-fret 3 10 4 yellow3 ) (place-fret 3 12 5 darkgrey ) (place-fret 4 9 "j7" yellow3 ) (place-fret 4 10 1 black ) (place-fret 4 12 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div>Die Tonhöhe ist die selbe, wie in der G-Form, wo wir uns komplizierte Strategien für den Fingersatz zurechtlegen mussten. In dieser Lage ist alles einfacher. Wenn du später mal einen herausfordernden Lick zwischen der G- und H-Saite hast, wäre eine weitere gangbare Strategie den Lick in eine fingertechnisch günstigere Lage zu verlegen. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • C-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • C-Form <score raw="1"> \version "2.24.4" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 1 12 3 darkgrey ) (place-fret 1 13 4 yellow3 ) (place-fret 1 15 5 darkgrey ) (place-fret 2 12 "j7" yellow3 ) (place-fret 2 13 1 black ) (place-fret 2 15 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Hier wurde die C-Durtonleiter in den 12. Bund verlegt. Der Grundton ist auf der H-Saite im 13. Bund. (Eine Oktave höher als bei der C-Dur Tonleiter in den ersten drei Bünden.) Wer keine E-Gitarre hat oder wer keine Akkustik mit Cutaway hat, der kann die C-Form auch in einem niedrigeren Bund üben. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c''' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Halbtaktige Sequenzen === Diesmal hast du halbtaktige Sequenzen, die einmal wiederholt werden. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== A- (Bb-)Form • 1. Fingersatz ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • A- (Bb-)Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 4 2 "E" darkgrey ) (place-fret 4 3 "F" yellow3 ) (place-fret 4 5 "G" darkgrey ) (place-fret 5 2 "B" yellow3 ) (place-fret 5 3 "C" black ) (place-fret 5 5 "D" darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Leite dir den Grundton vom C-Dur-Akkord, oder vom C-Barré im 3. Bund ab. Lerne nicht nur die Intervlle, sondern auch die Notennamen. (Zumindest bei den einfachen Tonarten F-, G- und C-Dur). Andere Tonarten kommen später dran. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- / Bb-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== G-Form • 1. Fingersatz ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • G-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 2 5 "E" darkgrey ) (place-fret 2 6 "F" yellow3 ) (place-fret 2 8 "G" darkgrey ) (place-fret 3 4 "B" yellow3 ) (place-fret 3 5 "C" black ) (place-fret 3 7 "D" darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div>Du kannst die beiden hintereinander folgenden Noten im 5. Bund mit einem Mini-Barré ausführen, und die Lagewechsel mittels Slide (=&nbsp;Glissando) durchführen, oder wie in der Wiederholung ohne Slide durchführen. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major c8-1 g' f e d f e d c-1 e-1 d c-1(\glissando b-1) d c b-1(\glissando c1-1) c8-2 g' f e d f e d c-1 e-2 d-4 c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== E- (F-)Form • 1. Fingersatz ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • E- (F-)Form <score raw="1"> \version "2.24.4" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 5 7 "E" darkgrey ) (place-fret 5 8 "F" yellow3 ) (place-fret 5 10 "G" darkgrey ) (place-fret 6 7 "B" yellow3 ) (place-fret 6 8 "C" black ) (place-fret 6 10 "D" darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Fingersatztechnisch wieder problemlos. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== D-Form • 1. Fingersatz ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • D-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 3 9 "E" darkgrey ) (place-fret 3 10 "F" yellow3 ) (place-fret 3 12 "G" darkgrey ) (place-fret 4 9 "B" yellow3 ) (place-fret 4 10 "C" black ) (place-fret 4 12 "D" darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Wieder klingt diese Lage genau so, wie die G-Form, ist abervim Fingersatz her einfacher. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== C-Form • 1. Fingersatz ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • C-Form <score raw="1"> \version "2.24.4" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 1 12 "E" darkgrey ) (place-fret 1 13 "F" yellow3 ) (place-fret 1 15 "G" darkgrey ) (place-fret 2 12 "B" yellow3 ) (place-fret 2 13 "C" black ) (place-fret 2 15 "D" darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Die H-Saite heißt auch im 12. Bund H, also ist im 13. Bund das C. Wer keine E-Gitarre hat oder wer keine Akkustik mit Cutaway hat, der kann die C-Form auch in einem niedrigeren Bund üben. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> === Ein Vogel wollte Hochzeit machen === Hier habe ich ein relativ bekanntes Kinderlied gefunden, dass perfekt zum 1. Fingersatz passt. Die Tondauern sind für Ungeübte in Sachen Noten schwer herauszulesen. Kennst du aber das Stück, oder hörst du es dir mehrmals an, so ist es keine unüberwindbare Schwierigkeit. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] Folgt das G nach dem D, greifst du den besser mit dem kleinen Finger. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d-3( g-4) g g16 e | c8 8 8 g'16 e d8 d d-3 g16-4 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier ist es wohl am einfachsten, dass du den kleinen Finger umlegst, wenn du nach dem D den G greifen willst. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb-)Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d-3( g-4) g g16 e | c8 8 8 g'16 e d8-3 d d g16-4 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Wenn der Ton C auf ein E-folgt, kann man entweder ein <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e-2 c-1 g' e d( g) g g16 e-2 | c8-1 8 8 g'16 e d8 d d g16 f | e8-2 c-1 d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Halbtaktige Sequenzen (2) === :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Bei der G-Form kommt es zwischen der G- und H-Saite zu einem Lagewechsel. Du musst dir jedesmal eine Strategie zurechtlegen, wann und wie du am besten den Lagewechsel durchführst. Wenn du Glück hast, findest du im Notenbild einen Hinweis, wie man günstig die Lage wechseln kann. Ich empfehle dir dort wo die 2 über den Noten steht, den Mittelfinger zu nehmen. *(1 = Z, 2 = M, 3 = R, 4 = K, 0 = leere Saite) Betrachte solche Hinweis nur als Vorschlag, denn es gibt keine verbindliche Regel, wie der Lagewechsel zu erfolgen hat. Übst du die gleiche Sequenzen ein paar Saiten höher oder tiefer, geht es leichter von der Hand. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c''' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Einsingen === Diese beiden Motive kennen viele, die schon einmal in einem Chor gesungen haben. Leider entsprechen viele Lieder in ihrem Tonumfang nicht genau einem der vollständigen drei Fingersätze oder der später folgenden Skalen. Zumeist werden nur Ausschnitte aus den Patterns gebraucht. Im ersten Motiv fehlt beispielsweise die große Septime (j7) vor dem Grundton. Dafür enthält das zweite Motiv die große Septime (j7). Das zweite Motiv eicht den Chor auf die gerade geforderte Tonart. Hier werden nur Akkordtöne in einer auf oder absteigenden Tonfolge gespielt (auch Arpeggios genannt). Der A7-Akkord enthält sowohl den Leitton (j7) der zum Grundton (1) hin leitet, als auch den Strebeton (4) die zur Durterz (3) hin strebt. Mit den zwei spannungsreichen Tönen, die sich zum Grundakkord auflösen wollen, wird der Chor auf die Durtonart eingenordet. Hier brauche ich dir nicht zu erklären, wo der Grundton D ist. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A-(Bb-)Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E-(F-)Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==Erste über den zweiten Fingersatz== Wie du siehst, kommt hier jedesmal zuerst der erste Fingersatz mit dem "Karree" rechts, und dannach kommt der Fingersatz mit dem "Karree" links. Sie sind immer untereinander. Nur zwischen der G- und B-Saite verschiebt sich alles um einen Bund. <div style="float:left; padding:5px; border:black solid 1px; "> ;F-Form <score raw="1"> \version "2.14.2" \paper{ indent=0\mm line-width=120\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% 4-o zeigt 4. Saite offen \fret-diagram #"s:2;f:1; 3-3-2;3-5-3;3-6-4; 4-3-6;4-5-7;4-6-1; 5-3-3;5-4-4;5-6-5; 6-3-7;6-4-1;6-6-2;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;Bb-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:2;f:1; 2-4-2;2-6-3;2-7-4; 3-3-6;3-5-7;3-6-1; 4-3-3;4-4-4;4-6-5; 5-3-7;5-4-1;5-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;D-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:2;f:1; 1-4-2;1-6-3;1-7-4; 2-4-6;2-6-2;2-7-1; 3-3-3;3-4-4;3-6-5; 4-3-7;4-4-1;4-6-2;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} === Jamaica Farewell === Die Melodie von [[Liederbuch/ Jamaica Farwell|Jamaica Farwell]] wurde erheblich vereinfacht, damit du dir nicht zu viele Gedanken um den Rhythmus machen musst. Wenn du dich am Quintillo (dem Rhythmus vom Lagerfeuerschlag} orientierst, solltest du wenige Probleme haben. Es gibt recht viele Wiederholung. Die Strophe wurde bei der Wiederholung in die Oktave verschoben, damit das Stück exakt in den Skalenausschnitt passt. Du musst dir für die Fingersätze ggf. Strategien zurechtlegen, damit du die Finger bequem sortiert bekommst. Das Stück beginnt mit dem Ton G. Der (5) in 1. Fingersatz. ;Bb-Form Greife den C wie ein Bb-Barré im 3. Bund. Leite dir von diesem Akkord den Grundton (1) ab, und wandere beim 1. Fingersatz rauf zum Startton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-4-2;2-6-3;2-7-4; 3-3-6;3-5-7;3-6-1; 4-3-3;4-4-4;4-6-5; 5-3-7;5-4-1;5-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (A-, Bb-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ; F-Form Greife den C wie ein F-Barré im 8. Bund. Leite dir von diesem Akkord den Grundton (1) ab, und wandere beim 1. Fingersatz rauf zum Startton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 3-7-2;3-9-3;3-10-4; 4-7-6;4-9-7;4-10-1; 5-7-3;5-8-4;5-10-5; 6-7-7;6-8-1;6-10-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (E-, F-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ;D-Form Schiebe den D-Dur-Akkord in den 12. Bund. Ein D im 12. Bund verschoben ergibt ein C. Leite dir von diesem Akkord den Grundton (1) ab. Orientiere dich kurz im 2. Fingersatz und wandere zurück zum ersten Fingersatz zum Ton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 1-10-2;1-12-3;1-13-4; 2-10-6;2-12-7;2-13-1; 3-9-3;3-10-4;3-12-5; 4-9-7;4-10-1;4-12-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (D-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==3. Fingersatz== Es fällt auf, dass der 3. Fingersatz kein "Karré" hat. {| !Fingersatz !width="30px"| !Intervalle |- |[[Image:Scala Z RK-Z K-ZM K.svg]] !width="30px"| |[[Image:Scala 2 34-5 6-71 2.svg]] |} Der 3. Fingersatz ist gar kein eigenständiger Fingersatz. Der obere Teil des 3. Fingersatzes ist eigentlich schon der untere Teil des 2. Fingersatzes. Ebenso ist der untere Teil des 3. Fingersatzes gleichzeitig der Anfang des 1. Fingersatzes. Du musst dir Strategien zurechtlegen, wie du den Übergang vom Ende des 2. Fingersatzes über die 5 und die 6 hin zum 1. Fingersatz gestaltest. Es kommt beim 3. Fingersatz zu einem Lagewechsel nach links. Übe den 3. Fingersatz zuerst in den obersten Saitenlagen (E A D G x x) === Eine II-V-I-Verbindung === Wir spielen eine einfache Tonfolge über einer 2-5-1-Verbindung. Die Akkordtöne liegen zumeist auf den schweren Zählzeiten. * D, F, A, C gehören zum Dm7 * G, B, D, F gehören zum G7 * C, E, G gehören zum C-Dur-Akkord. Wir nutzen das CAGED-System, um uns grob auf dem Griffbrett zurechtzufinden. ==== Exkurs: Skalenformen ==== Die Namen der Skalen leiten sich übrigens von folgenden einfachen Tonleitern in den ersten Bünden ab: [[Image:Scala C-Am.svg|100px]] [[Image:Scala Bb-Gm.svg|100px]] [[Image:Scala G-Em.svg|100px]] [[Image:Scala F-Dm.svg|100px]] [[Image:Scala D-Hm.svg|100px]] Alle Akkorde die man aus diesen einfachen Tonarten kennt, Bassläufe und ähnliches lassen sich zum großen Teil auf die entsprechenden 5 CAGED-Skalen übertragen, fast so als habe man die Tonleiter mittels Kapodaster in eine höhere Lage verschoben. Wie du siehst, nennen wir die Skalen entgegen des reinen CAGED-System nicht E-Dur-Form (Shape) und nicht die A-Dur-Form (Shape), sondern F- und Bb-Dur-Form. <div style="float:left; padding:5px; border:black solid 1px; "> ;E-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-1;1-2-2;1-4-3; 2-0-5;2-2-6;2-4-7; 3-1-3;3-2-4;3-4-5; 4-1-7;4-2-1;4-4-2; 5-0-4;5-2-5;5-4-6; 6-0-1;6-2-2;6-4-3;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;F-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-3; 1-1-1; 1-3-2; 2-1-5; 2-3-6; 3-0-2; 3-2-3; 3-3-4; 4-0-6; 4-2-7; 4-3-1; 5-0-3; 5-1-4; 5-3-5; 6-0-7; 6-1-1; 6-3-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;G-Dur-Tonleiter <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-3-3; 1-4-1; 1-6-2; 2-4-5; 2-6-6; 3-3-2; 3-5-3; 3-6-4; 4-3-6; 4-5-7; 4-6-1; 5-3-3; 5-4-4; 5-6-5; 6-3-7; 6-4-1; 6-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Du siehst selbst, dass die G-Dur-Tonleiter von der Form her eher wie die F-Dur-Tonleiter als wie die E-Dur-Tonleiter aussieht. <div style="float:left; padding:5px; border:black solid 1px; "> ;A-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-5;1-2-6;1-4-7; 2-0-2;2-2-3;2-3-4; 3-1-7;3-2-1;3-4-2; 4-0-4;4-2-5;4-4-6; 5-0-1;5-2-2;5-4-3; 6-0-5;6-2-6;6-4-7;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;Bb-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-1-5; 1-3-6; 2-1-2; 2-3-3; 2-4-4; 3-0-6; 3-2-7; 3-3-1; 4-0-3; 4-1-4; 4-3-5; 5-0-7; 5-1-1; 5-3-2; 6-1-5; 6-3-6;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;C-Dur-Tonleiter <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-3-5; 1-5-6; 2-3-2; 2-5-3; 2-6-4; 3-2-6; 3-4-7; 3-5-1; 4-2-3; 4-3-4; 4-5-5; 5-2-7; 5-3-1; 5-5-2; 6-3-5; 6-5-6;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Du siehst selbst, dass die C-Dur-Tonleiter von der Form her eher wie die Bb-Dur-Tonleiter als wie die A-Dur-Tonleiter aussieht. ==== 3. Fingersatz II-V-I-Verbindung D-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;D-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:3;f:1; 4-9-7;4-10-1;4-12-2; 5-10-5;5-12-6; 6-10-2;6-12-3;6-13-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Wir beginnen oben bei der D-Form, wo sich der Lagewechsel des 3. Fingersatz noch nicht mit dem Lagewechsel zwischen der G und H-Saite (engl. B-Saite) aufhebt. Würde ich ein Capo in den 10. Bund setzen, dann würde ich die Melodie vom Fingersatz her wie D-Dur spielen. In D-Dur spiele ich diese II-V-I-Verbindung Em7 A7 D. Nehme ich das Capo weg, dann greife ich den Dm(7) als einen Barré der Em-Form im 10. Bund. Von diesem kann ich mir das D als Grundton ableiten. Alternativ siehst du in den Noten, dass die Übung mit dem Ton D anfängt. Dass die oberste Tiefe E-Saite im 12. Bund ebenfalls ein E ergibt, setze ich als bekannt voraus. Falls nicht, beschäftige dich noch einmal mit dem [[Gitarre: Lagerfeueranhang 2c|Stimmen der Gitarre]]. Ein Ganztonschritt bzw. zwei Bünde vor dem E ist der Ton D. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (D-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g-1 a-4 b-1 c4 | b8^\markup { \bold {G7} } a-4 g4-1 f8 e d4 | e8^\markup { \bold {C} } f g4-1 a8-4 b-1 c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung G-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;G-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 3-4-7;3-5-1;3-7-2; 4-5-5;4-7-6; 5-5-2;5-7-3;5-8-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 5. Bund setzen, dann würde man die Melodie vom Fingersatz her wie G-Dur spielen. In G-Dur spielt man diese II-V-I-Verbindung Am7 D7 G. Nimmt man das Capo weg, dann greift man den Dm(7) als einen Barré der Am-Form. Von diesem kannst du dir den D als Grundton ableiten. Einfacher geht es natürlich, wenn du weißt, dass der D im 5. Bund der A-Saite der Stimmton der D-Saite ist. </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (G-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g-1 a-4 b-1 c4 | b8^\markup { \bold {G7} } a-4 g4-1 f8 e d4 | e8^\markup { \bold {C} } f g4-1 a8-4 b-1 c d | c b c2. | \break d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung C-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;C-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-0-7;2-1-1;2-3-2; 3-0-5;3-2-6; 4-0-2;4-2-3;4-3-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Die C-Dur-Form der C-Dur Tonleiter sieht schlicht und ergreifend wie die C-Durtonleiter aus. </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (C-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #4 % \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \break d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung C-Form 12. Bund ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;C-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-12-7;2-13-1;2-15-2; 3-12-5;3-14-6; 4-12-2;4-14-3;4-15-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 12. Bund setzen, dann würde man die Melodie vom Fingersatz her wie C-Dur spielen. In C-Dur spielt man diese II-V-I-Verbindung Dm7 G7 C. Der Startton ist schlicht die D-Saite im 12. Bund. </div> {{clear}} Gerade noch hatten wir einen Lagewechsel nach links. Jetzt aber hebt sich der Lagewechsel nach links vom 3. Fingersatz mit dem Lagewechsel zwischen der G- und H-Saite auf. Es hört sich beim ersten Durchlesen kompliziert an, aber du hast nur 4 Lektionen zu lernen. Den 1. bis 3. Fingersatz und den Lagewechsel zwischen der G- und H-Saite. Das Auffinden der Töne und welche Akkorde zu welcher Tonart gehört, und wie man einen Capo benutzt, sollte eigentlich nichts neues für dich sein. Rein technisch gesehen vereinfacht sich der Fingersatz. Doch es kostet ein wenig Überlegung, wie sich die beiden Lagewechsel auf den 3. Fingersatz auswirken. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (C-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> Sollte es im 12 Bund unbequem zu spielen sein, weil du kein Cutaway hast (Aussparung für die hohen Bünde), übe die C-Form ein paar Bünde zurück in einer anderen Tonart. ==== 3. Fingersatz II-V-I-Verbindung F-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;F-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 1-7-7; 1-8-1;1-10-2; 2-8-5; 2-10-6; 3-7-2; 3-9-3; 3-10-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 6. Bund setzen, dann würde man die Melodie vom Fingersatz her wie F-Dur spielen. In C-Dur spielt man diese II-V-I-Verbindung Gm7 C7 F. Wenn du den C wie ein F-Barré im 8. Bund greifst, dindest du den Grundton (1) auf der hohen E-Saite. Von dem wanderst du runter zum Startton (2). </div> {{clear}} Auch hier hebt sich der Lagewechsel zwischen der G- und H-Saite mit dem Lagewechsel des 3. Fingersatz gegeneinander auf, was den Fingersatz grifftechnisch wieder vereinfacht. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (F-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> == Wie geht es weiter? == Solltest du als Quereinsteiger in diese Lektion gestolpert sein, dann schaue dir die erste Lektion zum [[Gitarre: Aufbau der CAGED-Skalenformen|Aufbau der CAGED-Skalenformen]] an. Insbesondere die Abschnitte, die hier übergangen wurden. Dannach kannst du mit der ersten CAGED-Skala in der D-Dur-Form weitermachen. <noinclude> {{Navigation zurückhochvor |zurücklink=Gitarre: CAGED-Skala G-Dur-Form |zurücktext=CAGED-Skala G-Dur-Form |hochlink=Gitarre: Die Major-Patterns |hochtext=Einführung: Major-Patterns |vorlink=Gitarre: CAGED-Skala D-Dur-Form |vortext=CAGED-Skala D-Dur-Form }} </noinclude> 52za7bztvz8gn5m7o2j0fkit5l7mywv 1090595 1090594 2026-09-08T20:01:43Z Mjchael 2222 /* D-Form • 1. Fingersatz */ typo 1090595 wikitext text/x-wiki {{:Gitarre/ Navi|Sologitarre| {{:Gitarre: Sologitarre/ Navi Improvisation in Dur und Moll}}| img=Guitar 1.svg |bg=#F8f8f8|border=darkorange|color=dark|px=80|navi=Einführung in die Sologitarre}} = Wiederholung der Fingersätze = ; mit Schwerpunkt auf den Stammtönen Diese Wiederholung ist zum einen dafür gedacht, die vorhergehenden Übungen auf jeder Saitenlage zu machen, und auch in jeder Bundlage, gleichgültig ob die Finger eng beieinander oder weit auseinander stehen. Zum andern sind diese als Vorbereitung in die Sologitarre gedacht. Beispielsweise als Auflockerungsübung zwischen den Barré-Akkorden. Besonderen Augenmerk wollen wir hier auf die Notennamen legen. Diese können hier mitgelernt werden. Solltest du meinen, das sei noch nicht für dich dran und kann warten, dann springe zur ersten CAGED-Skala. Du kannst beim Kapitel Longform nochmal hierrauf zurückkommen. * [[Gitarre: CAGED-Skala D-Dur-Form|CAGED-Skala D-Dur-Form]] Lassen wir die [[Gitarre: Aufbau der CAGED-Skalenformen|erste Lektion]] (insbesondere für die Quereinsteiger) noch einmal Revue passieren. Die folgenden Übungen enthalten oft eine Folge von ein- oder zweitaktigen Sequenzen. Eine Sequenz ist ein Motiv, dass sich auf verschiedenen Tonhöhen wiederholt. Auch ohne Notenkenntnisse kannst du den Verlauf und die Wiederholungen der Sequenzen einfacher im Notenbild verfolgen, als in der Tabulatur; insbesondere wenn du dir gleichzeitig die Übung anhörst. Es kommen auch Ausschnitte aus klassischen Stücken, Folksongs, Kinderlieder o.ä. vor. Die einfache Struktur oder der Bekanntheitsgrad der Melodien sollen dir das Üben erleichtern. Die Finger finden so leichter ihre Position, als wenn du erstmal jede einzelne Note aus der Tabulatur entschlüsseln musst. Jede Übung wird auf allen Saitenlagen geübt. Vorher blieben wir in den mittleren Lagen. Jetzt gehen wir auch in die ersten Bünde, wo man die Finger etwas mehr spreizen muss, und in die höheren Lagen, wo es ein wenig eng wird. Die Stücke wiederholen sich in dieser Lektion in der selben Tonart, doch auf verschiedenen Bünden. Du spielst immer die selbe Tonfolge, nur auf verschiedenen Tonhöhen bzw. auf verschiedenen Saitenlagen. Lediglich zwischen der G- und H-Saite musst du dir jedesmal überlegen, wie sich der Lagewechsel auf den Fingersatz auswirkt. Doch der Fingersatz in den anderen höheren Lagen bleibt immer gleich. Wie die Tonfolgen mit dem CAGED-System zusammenhängen, das muss dich nur am Rande interessieren. Es wird in den folgenden Lektionen näher und ausführlicher erleutert. :[[Datei:Scala Griffbrett.svg]] Wir hatten uns bei den vorhergehenden Übungen weitestgehend an den Intervallen (1-j7) und an der Tabulatur orientiert. Diese sind in allen Tonarten gleich. Suche zuerst das Karré! Daran orientierst du dich. :[[Image:Scala Carree.svg]] {{Tipp|Lerne bei der C-Dur-Tonleiter nicht nur die Intervalle <br> 2 - 3 4 - 5<br> 6 - j7 1 - 2<br> sondern benenne auch jede einzelne Note. <br> D - E F - G<br> A - H C - D<br> So bekommst du einen recht einfachen Überblick über das Griffbrett.}} == Töne der C-Dur Tonleiter auf dem Griffbrett == Wir wollen uns in dieser Lektion auf die Töne bzw. die Notennamen konzentrieren. Allerdings sparen wir uns vorerst alle Töne mit Vorzeichen aus. Die [[Gitarre: Aufbau der CAGED-Skalenformen|ersten Übungen zum 1. und 2. Fingersatz]] werden auf die Tonart C-Dur bzw. A-Moll übertragen und wir spiele sie in den hier gezeigten Positionen. Wir fangen mit dem zweiten Fingersatz an, wo wir entweder den Ton C oder den Ton A der C-Dur- bzw. Am-Tonleiter als Orientierung nutzen :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] Du hast vermutlich allerlei Akkordformen des CAGED-System gesehen. <div class="noprint"> ;Animation [[Image:Crd Grundtonschema ani.gif]] </div> <score> << \new ChordNames { \chordmode { c1 c c c c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 e-2 g c'-1 e' > < c-1\5 g-3\4 c'-3\3 e'-4\2 g'-1 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 e-2\5 g-1\4 c'-1\3 e'-1\2 c''-4\1> < c-1\6 g-2\5 c'-3\4 e'-4\3 g'-1\2 c''-1\1> \once \override FretBoard.fret-diagram-details.dot-color = #'white < c'-1\4 g'-2\3 c''-4\2 e''-3\1 > < c'-4\5 e'-3\4 g'-1\3 c''-2\2 e''-1\1 > } >> </score> Wenn du schon Fingerstyle oder Jazz spielst, mögen dir viele der Formen bekannt vorkommen. Doch selbst wenn du bis jetzt nur das [[Gitarre: Rockdiplom|Rockdiplom]] gemacht hast und mit den dort vorkommenden Barré-Akkorden vertraut bist, wirst du sehen, dass die einfachen Barré-Akkorde ausreichen, um sich auf dem Griffbrett zu zurechtzufinden. Die [[Gitarre: C-Dur-Tonleiter Workshop|C-Dur-Tonleiter in den ersten drei Bünden]] setze ich als bekannt voraus und es sollte dir nicht allzu schwer fallen, diese in den 12. Bund zu übertragen. :[[Datei:Scala C-Am.svg|150px]][[Datei:C-Dur_Majorpattern_III.jpg|150px]] C-Dur als Barré im 3. Bund kennst du vom Rockdiplom, und C-Dur im 8. Bund ist auch kein Hexenwerk. Dazwischen liegt nach dem CAGED-System die G-Form, die dir vermutlich noch nicht untergekommen ist (hier mit weißem Fingersatz). Statt uns die Töne von der G-Form abzuleiten, machen wir es uns einfacher und leiten uns die Töne zur Orientierung vom Am im 5. Bund ab. Du erinnerst dich noch an die Dur- und Mollparallelen? (C- \ Am-Tonleiter bzw. G- \ Em-Form). Oder du nutzt die Grundtöne des C-Barré im 8. Bund. <score> << \new ChordNames { \chordmode { c1 c c a:m c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 e-2 g c'-1 e' > < c-1\5 g-3\4 c'-3\3 e'-4\2 g'-1 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 e-2\5 g-1\4 c'-1\3 e'-1\2 c''-4\1> < a,-1\6 e-3\5 a-4\4 c'-1\3 e'-1\2 a'-1\1 > < c-1\6 g-2\5 c'-3\4 e'-4\3 g'-1\2 c''-1\1> < c'-4\5 e'-3\4 g'-1\3 c''-2\2 e''-1\1 > } >> </score> Leite dir also die Grundtöne C und A von den dir bekannten Barré-Akkorden ab und spare dir die ungewöhnlicheren Akkordformen auf, bis sie dir später beim Fingerstyle oder Jazz begegnen. Es macht dabei garnichts aus, wenn du zum Auffinden der Grundtöne und zum Finden des Starttons ein paar Sekunden brauchst. Du wirst sehen, dass die Wiederholungen der bekannten Übungen auf den verschiedenen Bünden und in verschiedenen Oktavebereichen leicht von der Hand gehen. Lediglich beim Lagewechsel zwischen der G- und H-Saite musst du etwas überlegen. <score> << \new ChordNames { \chordmode { c1 c c a c c }} \new FretBoards { % \override FretBoards.FretBoard.size = #'1.5 \override FretBoard.fret-diagram-details.finger-code = #'in-dot % \override FretBoard.fret-diagram-details.dot-color = #'white \override FretBoard.fret-diagram-details.orientation = #'landscape < c-3 c'-1 > < c-1\5 c'-3\3 > \once \override FretBoard.fret-diagram-details.dot-color = #'white < c-3\6 c'-1\3 c''-4\1> < a,-1\6 a-4\4 a'-1\1 > < c-1\6 c'-3\4 c''-1\1> < c'-4\5 c''-2\2 > } >> </score> Diese wenigen"Eckpunkte" reichen aus, um dich grob auf dem Griffbrett zurechtzufinden. Suche sie noch einmal in der Skala und natürlich auch auf deinem Griffbrett. :[[Datei:C-Major-Scale on the fretboard.svg]] == Zweiter Fingersatz == :[[Datei:Scala 6_71-2_34.svg]] Zuerst suchen wir uns in der C-Dur-Tonleiter überall den zweiten Fingersatz heraus. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] Zur leichteren Orientierung wird die Grafik bei jeder neuen Melodie wiederholt. === Rondeau (Auszug) === Die eintaktige Sequenzen wurde aus einem Rondeau von J.S. Bach entnommen, dass beliebig wiederholt werden kann. Der Grundton C, welcher im letzten Takt rot eingefärbt wurde, wird mit dem kleinen Finger gegriffen. Du kannst tatsächlich die Noten nutzen (sofern du es schon kannst) oder aber du orientierst dich an den Notennamen. Am Anfang des Griffbrettes brauchen wir den zweiten Fingersatz nicht vollständig. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #5 % \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> In der A-(Bb-)Form müssen wir den Lagewechsel zwischen der G- und H-Saite beachten. Übrigens werden hier die Töne in der englischen Form angegeben. (Bb-Form und der Ton B statt des deutschen H.) Nur der erste Bund wird bis zur letzten Note in der dritten Lage gespielt. Der Rest bis zur letzten Note in der zweiten Lage. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (A-, Bb-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e-4 d-2 c d e d c b d c b c d c b a c b a b c d b c d-1 } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Statt in der G-Form das C zu suchen, suche lieber das A im 5. Bund (hier grün hervorgehoben). Oder du leitest dir das C vom Barré im 8. Bund ab. Der Startton E ist auf der A Saite im 7. Bund unter dem Ringfinger. Ansonsten stellt der Fingersatz keine Herausforderung mehr dar. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (G-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b \once \override NoteHead #'color = #green a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Der kleine Finger des C-Barré im 8. Bund in der E- bzw. F-Form gibt gleichzeitig das C des zweiten Fingersatz an. Du siehst, dass ab jetzt alles leichter geworden ist, weil sich ansonsten nichts mehr am Fingersatz ändert. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (E- F-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Für den Grundton C müssen wir uns die D-Form gar nicht so genau ins Gedächtnis rufen, wenn uns die C-Form viel vertrauter ist. Diese hohe Lage ist für E-Gitarristen oder Gitarren mit Cutaway gedacht. Auf der Konzertgitarre ist die sehr hohe Lage schlecht zu spielen. Gehe ggf. einen Kompromiss ein, und spiele diese hohe Saitenlage ein paar Bünde tiefer als Übung nur für den Fingersatz aber nicht für die Notennamen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Noten über dem hohen C (der mit zwei Hilfslinien) wird dir seltener begegnen, da in dem Fall bevorzugt die Noten nach unten oktaviert werden. (Beachte die 8 im Notensystem.) Bei den weiteren Übungen werden jedoch die Versionen mit den vielen Hilfslinien angezeigt. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { \ottava #1 e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Mit der C-Form in den ersten drei Bünden im Hinterkopf ist der 12. Bund leicht zu bewältigen. Wieder eine Übung, die weniger für Konzertgitarren geeignet ist. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in C-Dur" subtitle="Rondeau (Auszug)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major \repeat volta 2 { e8-2 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d } \once \override NoteHead #'color = #red c1^\markup { \bold {(C)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 d e f e d c e d c d e d c b d c b c d c b a c b a b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === "Das häßliche Entlein" oder "Alle meine Entchen"<ref>Anspielung auf ein Märchen der Gebrüder Grimm nebst einem bekannten deutschen Kinderlied.</ref> in A-Moll === Die vorherige Übung war in Dur, und hier verwenden wir ein und den selben Fingersatz in Moll. Wie du siehst und hörst, lässt sich ein Fingersatz oder ein Pattern nicht eindeutig einer einzigen Tonart zuordnen. Der Schlusston oder der Schlussakkord (hier der Ton A bzw. der Akkord Am) bestimmt die Tonart. Der Grundton A ist hier die Sexte (6) des zugrunde liegenden C-Major-Pattern. Es bleibt dir überlassen, ob du zur Orientierung lieber den Grundton A (grün) bestimmst, oder das C aus dem Karré (rot). Wenn in einer Tabulatur über einer Ziffer zwei Notenhälse stehen, so ist das ein Zeichen für eine halbe Note, die zwei Schläge dauert. Da dieses für viele Gitarristen sehr ungewöhnlich aussieht, verzichtet man oft auf Taktstriche in der Tabulatur. In dem Fall lässt sich die Tondauer allein an den Notenwerten ablesen. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-/Am-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #5 % \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Der Lagewechsel zwischen der G- und H-Saite ist hier leicht zu bewältigen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Gm-/Bb-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d-1 e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2-4 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Auch hier ist es wieder einfacher das A (grün) zu suchen. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Em-/G-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (E- / F-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Statt lange nach dem Grundton der D-Form zu suchen, erinneren wir uns kurz, wo der Grundton C auf der H- (B-)Saite sein muß (13. Bund). <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C-Form) in Am" subtitle="Das häßliche Entlein" subsubtitle="oder: Alle meine Entchen in Moll" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4-1 b \once \override NoteHead #'color = #red c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b c d e2 e f4 f f f e1 f4 f f f e1 d4 d d d c2 c b4 b b b a1 } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> === Die Moldau (Hauptmotiv) === Die Abfolge der Töne der folgenden Übung unterscheidet sich kaum von der vorhergehenden. Doch mit dem anderen Rhythmus haben wir das Hauptmotiv von der Komposition {{Youtube-Suche|Smetana+Die+Moldau|"Die Moldau" von Bedrich Smetana}} (ohne Auftakt und rhythmisch vereinfacht). Auch wenn es hier (wie in der 7. Übung) nur die Molltonleiter rauf und runter geht, merkst du hoffentlich, wieviel der Takt und Rhythmus an der Wirkung ausmacht. Wenn du später mal meinst, deine Improvisationen hören sich langweilig an, dann solltest du dich mehr mit Rhythmus beschäftigen. Dazu kannst du dich auch ein wenig mit Schlagmustern beschäftigen. :[[Datei:C-Major-Scale_on_the_fretboard_second_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Am-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Warum die Form hier Gm-Form genannt wird, das wird dir in den nachfolgenden Lektionen klarer werden. Auf Fingersatzangaben können wir hier verzichten, wenn du vorher "Alle meine Entchen in Am" gespielt hast. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Bb- /Gm-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier bietet sich besonders an, den Am-Barré zur Orientierung zu verwenden. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (Em-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #5 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Auch hier gibt dir der kleine Finger des Am-Barrés den Grundton an. Du kannst dir die Dm-Form aber auch über die F-Form (C im 8. Bund) ableiten. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (F- /Dm-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Zähle vom C (H-Saite, 13. Bund) rückwärts zum A. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (D- /Bm7-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier wird die erste Übung in den 12. Bund verschoben. <score sound="1" raw="1"> \version "2.20.0" \header { title="2. Fingersatz (C- /Am-Form) in Am" subtitle="Die Moldau (Hauptmotiv)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key a \minor \once \override NoteHead #'color = #green a4 b8 \once \override NoteHead #'color = #red c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 6/8 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { a4 b8 c4 d8 e4. e4. f4. f4. e2. d4. d4. c4 d8 c4. b4. b4. a2. } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==1. Fingersatz== Dir wird wohl aufgefallen sein, dass beim zweiten Fingersatz der Ton G fehlt. Den üben wir mit dem ersten Fingersatz. :[[Datei:Scala 71_2-34_5.svg]] Beachte, dass der Grundton (1) unter dem Ringfinger (also im zweiten Bund dieses Fingersatzes) ist, und dass du deine freie Improvisationsübung in Dur günstigerweise mit der (1) beginnen oder zumindest enden sollte. Diesen Fingersatz suchen wir in der C-Dur-Tonleiter auf dem Griffbrett. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] === Eintaktige Sequenzen === Die erste Lage mit leeren Saiten stellt noch keine Herausforderung dar. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • A- (Bb-)Form ==== Du musst noch nicht einmal den C-Barré im 3. Bund bemühen, um den Grundton zu finden. Die C-Dur-Tonleiter in den ersten drei Bünden reicht. Natürlich kannst du auch den Startton G suchen. Die Tabulatur sagt dir "D-Saite 5. Bund". Erinnere dich daran, dass dies der Stimmton der D-Saite ist (beim Stimmen nach Bünden). Auch hier ist der Fingersatz leicht. <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • A- (Bb-)Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 3.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 4 2 3 darkgrey ) (place-fret 4 3 4 yellow3 ) (place-fret 4 5 5 darkgrey ) (place-fret 5 2 "j7" yellow3 ) (place-fret 5 3 1 black ) (place-fret 5 5 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb)-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • G-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • G-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 2 5 3 darkgrey ) (place-fret 2 6 4 yellow3 ) (place-fret 2 8 5 darkgrey ) (place-fret 3 4 "j7" yellow3 ) (place-fret 3 5 1 black ) (place-fret 3 7 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Bei der G-Form kommt es zwischen der G- und H-Saite zu einem Lagewechsel. Du musst dir jedesmal eine Strategie zurechtlegen, wann und wie du am besten den Lagewechsel durchführst. Wenn du Glück hast, findest du im Notenbild einen Hinweis, wie man günstig die Lage wechseln kann. Ich empfehle dir dort wo die 2 über den Noten steht, den Mittelfinger zu nehmen. *(1 = Z, 2 = M, 3 = R, 4 = K, 0 = leere Saite) Betrachte solche Hinweis nur als Vorschlag, denn es gibt keine verbindliche Regel, wie der Lagewechsel zu erfolgen hat. Übst du die gleiche Sequenzen ein paar Saiten höher oder tiefer, geht es leichter von der Hand. Beachte den Lagewechsel zwischen der G- und H-Saite. Den Grundton C kannst du dir auch vom Ringfinger auf der G-Saite des C-Barrés ableiten. Du musst dir hier eine Strategie zurechtlegen, wann du den Lagewechsel durchführen möchtest. Ich empfehle hier, den Lagewechsel so früh wie möglich zu machen, damit du den Zeigefinger frei hast, um gleich hintereinander zwei Töne in einem Bund zu spielen. Betrachte die Angaben zum Fingersatz nur als Vorschlag. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d-4 e-2 f-3 d e f e d c d e c-1 d-4 e-2 d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier eine alternative Lösung. Du kannst einen kleinen Barré über die Noten C und E legen, und den Lagewechsel später ausführen. Das V unter dem C zeigt hier den 5. Bund an, und nicht etwa Abschläge. Der Lagewechsel erfolgt hier im letzten Takt. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8-4 f e f g e f g f e d e f d e f e d-2 \textSpannerDown \override TextSpanner.bound-details.left.text = "V" c-1\startTextSpan d e-1 c-1 d e-1\stopTextSpan d-4 c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • E- (F-)Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • E- (F-)Form <score raw="1"> \version "2.24.4" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 5 7 3 darkgrey ) (place-fret 5 8 4 yellow3 ) (place-fret 5 10 5 darkgrey ) (place-fret 6 7 "j7" yellow3 ) (place-fret 6 8 1 black ) (place-fret 6 10 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Den Grundton C auf der E-Saite kannst du dir vom C-Barré der E-Form (wie ein F- Barré) im 8. Bund ableiten. Der Fingersatz ist wieder einfach. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E-(F)-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 1. Fingersatz • D-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • D-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 3 9 3 darkgrey ) (place-fret 3 10 4 yellow3 ) (place-fret 3 12 5 darkgrey ) (place-fret 4 9 "j7" yellow3 ) (place-fret 4 10 1 black ) (place-fret 4 12 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div>Die Tonhöhe ist die selbe, wie in der G-Form, wo wir uns komplizierte Strategien für den Fingersatz zurechtlegen mussten. In dieser Lage ist alles einfacher. Wenn du später mal einen herausfordernden Lick zwischen der G- und H-Saite hast, wäre eine weitere gangbare Strategie den Lick in eine fingertechnisch günstigere Lage zu verlegen. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== 1. Fingersatz • C-Form ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • C-Form <score raw="1"> \version "2.24.4" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 1 12 3 darkgrey ) (place-fret 1 13 4 yellow3 ) (place-fret 1 15 5 darkgrey ) (place-fret 2 12 "j7" yellow3 ) (place-fret 2 13 1 black ) (place-fret 2 15 2 darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Hier wurde die C-Durtonleiter in den 12. Bund verlegt. Der Grundton ist auf der H-Saite im 13. Bund. (Eine Oktave höher als bei der C-Dur Tonleiter in den ersten drei Bünden.) Wer keine E-Gitarre hat oder wer keine Akkustik mit Cutaway hat, der kann die C-Form auch in einem niedrigeren Bund üben. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Eintaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c''' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 f e f g e f g f e d e f d e f e d c d e c d e d c b c d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Halbtaktige Sequenzen === Diesmal hast du halbtaktige Sequenzen, die einmal wiederholt werden. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==== A- (Bb-)Form • 1. Fingersatz ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • A- (Bb-)Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 4 2 "E" darkgrey ) (place-fret 4 3 "F" yellow3 ) (place-fret 4 5 "G" darkgrey ) (place-fret 5 2 "B" yellow3 ) (place-fret 5 3 "C" black ) (place-fret 5 5 "D" darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Leite dir den Grundton vom C-Dur-Akkord, oder vom C-Barré im 3. Bund ab. Lerne nicht nur die Intervlle, sondern auch die Notennamen. (Zumindest bei den einfachen Tonarten F-, G- und C-Dur). Andere Tonarten kommen später dran. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- / Bb-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== G-Form • 1. Fingersatz ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • G-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 2 5 "E" darkgrey ) (place-fret 2 6 "F" yellow3 ) (place-fret 2 8 "G" darkgrey ) (place-fret 3 4 "B" yellow3 ) (place-fret 3 5 "C" black ) (place-fret 3 7 "D" darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div>Du kannst die beiden hintereinander folgenden Noten im 5. Bund mit einem Mini-Barré ausführen, und die Lagewechsel mittels Slide (=&nbsp;Glissando) durchführen, oder wie in der Wiederholung ohne Slide durchführen. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major c8-1 g' f e d f e d c-1 e-1 d c-1(\glissando b-1) d c b-1(\glissando c1-1) c8-2 g' f e d f e d c-1 e-2 d-4 c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== E- (F-)Form • 1. Fingersatz ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • E- (F-)Form <score raw="1"> \version "2.24.4" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 5 7 "E" darkgrey ) (place-fret 5 8 "F" yellow3 ) (place-fret 5 10 "G" darkgrey ) (place-fret 6 7 "B" yellow3 ) (place-fret 6 8 "C" black ) (place-fret 6 10 "D" darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Fingersatztechnisch wieder problemlos. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== D-Form • 1. Fingersatz ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • D-Form <score raw="1"> \version "2.14.2" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 3 9 "E" darkgrey ) (place-fret 3 10 "F" yellow3 ) (place-fret 3 12 "G" darkgrey ) (place-fret 4 9 "B" yellow3 ) (place-fret 4 10 "C" black ) (place-fret 4 12 "D" darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Wieder klingt diese Lage genau so, wie die G-Form, ist aber vom Fingersatz her einfacher. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== C-Form • 1. Fingersatz ==== <div style="float:left; padding:5px;margin:5px; border:black solid 1px; "> ;1. Fingersatz • C-Form <score raw="1"> \version "2.24.4" \markup { \override #'(size . 4.0) { \override #'(fret-diagram-details . ( (orientation . landscape ) (finger-code . in-dot ) (dot-color . #'black) (dot-radius . 0.4) (dot-position . 0.5) (top-fret-thickness . 6) (fret-count . 3) (number-type . roman-upper) )) \fret-diagram-verbose #'( (place-fret 1 12 "E" darkgrey ) (place-fret 1 13 "F" yellow3 ) (place-fret 1 15 "G" darkgrey ) (place-fret 2 12 "B" yellow3 ) (place-fret 2 13 "C" black ) (place-fret 2 15 "D" darkgreen ) ) }} \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> Die H-Saite heißt auch im 12. Bund H, also ist im 13. Bund das C. Wer keine E-Gitarre hat oder wer keine Akkustik mit Cutaway hat, der kann die C-Form auch in einem niedrigeren Bund üben. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b \once \override NoteHead #'color = #red c1 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 g' f e d f e d c e d c b d c b c1 c8 g' f e d f e d c e d c b d c b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> === Ein Vogel wollte Hochzeit machen === Hier habe ich ein relativ bekanntes Kinderlied gefunden, dass perfekt zum 1. Fingersatz passt. Die Tondauern sind für Ungeübte in Sachen Noten schwer herauszulesen. Kennst du aber das Stück, oder hörst du es dir mehrmals an, so ist es keine unüberwindbare Schwierigkeit. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] Folgt das G nach dem D, greifst du den besser mit dem kleinen Finger. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d-3( g-4) g g16 e | c8 8 8 g'16 e d8 d d-3 g16-4 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Hier ist es wohl am einfachsten, dass du den kleinen Finger umlegst, wenn du nach dem D den G greifen willst. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb-)Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d-3( g-4) g g16 e | c8 8 8 g'16 e d8-3 d d g16-4 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Wenn der Ton C auf ein E-folgt, kann man entweder ein <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e-2 c-1 g' e d( g) g g16 e-2 | c8-1 8 8 g'16 e d8 d d g16 f | e8-2 c-1 d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Ein Vogel wollte Hochzeit machen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major r2. r8 e8 | g8 e g e f d f d | e c g' e d( g) g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b \once \override NoteHead #'color = #red c4 r4 \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { e8 | g8 e g e f d f d | e c g' e d_g g g16 e | c8 8 8 g'16 e d8 d d g16 f | e8 c d b c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Halbtaktige Sequenzen (2) === :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A- (Bb-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> Bei der G-Form kommt es zwischen der G- und H-Saite zu einem Lagewechsel. Du musst dir jedesmal eine Strategie zurechtlegen, wann und wie du am besten den Lagewechsel durchführst. Wenn du Glück hast, findest du im Notenbild einen Hinweis, wie man günstig die Lage wechseln kann. Ich empfehle dir dort wo die 2 über den Noten steht, den Mittelfinger zu nehmen. *(1 = Z, 2 = M, 3 = R, 4 = K, 0 = leere Saite) Betrachte solche Hinweis nur als Vorschlag, denn es gibt keine verbindliche Regel, wie der Lagewechsel zu erfolgen hat. Übst du die gleiche Sequenzen ein paar Saiten höher oder tiefer, geht es leichter von der Hand. <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E- (F-)Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Halbtaktige Sequenzen (2)" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c''' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major g8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1 g'8 e f g f d e f e c-2 d e d b c d \once \override NoteHead #'color = #red c1^\markup { \bold {(C5)} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { g8 e f g f d e f e c-2 d e d b c d c g'8 e f g f d e f e c-2 d e d b c d c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> === Einsingen === Diese beiden Motive kennen viele, die schon einmal in einem Chor gesungen haben. Leider entsprechen viele Lieder in ihrem Tonumfang nicht genau einem der vollständigen drei Fingersätze oder der später folgenden Skalen. Zumeist werden nur Ausschnitte aus den Patterns gebraucht. Im ersten Motiv fehlt beispielsweise die große Septime (j7) vor dem Grundton. Dafür enthält das zweite Motiv die große Septime (j7). Das zweite Motiv eicht den Chor auf die gerade geforderte Tonart. Hier werden nur Akkordtöne in einer auf oder absteigenden Tonfolge gespielt (auch Arpeggios genannt). Der A7-Akkord enthält sowohl den Leitton (j7) der zum Grundton (1) hin leitet, als auch den Strebeton (4) die zur Durterz (3) hin strebt. Mit den zwei spannungsreichen Tönen, die sich zum Grundakkord auflösen wollen, wird der Chor auf die Durtonart eingenordet. Hier brauche ich dir nicht zu erklären, wo der Grundton D ist. :[[Datei:C-Major-Scale_on_the_fretboard_first_fingering.svg]] <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { % \set TabStaff.minimumFret = #2 % \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (A-(Bb-)Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (G-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (E-(F-)Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (D-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> <score sound="1" raw="1"> \version "2.20.0" \header { title="1. Fingersatz (C-Form) in C-Dur" subtitle="Einsingen" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major c8^\markup { \bold {C} } d e f g f e d | c1 c8 d e f g f e d | \once \override NoteHead #'color = #red c1 \break c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | c1^\markup { \bold {C} } c4^\markup { \bold {C} } e8 g | f4^\markup { \bold {G7} } d8 b | \set TabStaff.minimumFret = #0 \once \override NoteHead #'color = #red c1^\markup { \bold {C} } \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant \addlyrics { c8 d e f g f e d | c1 c8 d e f g f e d c1 \break c4 e8 g | f4 d8 b | c1 c4 e8 g | f4 d8 b | c } } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> <br> ==Erste über den zweiten Fingersatz== Wie du siehst, kommt hier jedesmal zuerst der erste Fingersatz mit dem "Karree" rechts, und dannach kommt der Fingersatz mit dem "Karree" links. Sie sind immer untereinander. Nur zwischen der G- und B-Saite verschiebt sich alles um einen Bund. <div style="float:left; padding:5px; border:black solid 1px; "> ;F-Form <score raw="1"> \version "2.14.2" \paper{ indent=0\mm line-width=120\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% 4-o zeigt 4. Saite offen \fret-diagram #"s:2;f:1; 3-3-2;3-5-3;3-6-4; 4-3-6;4-5-7;4-6-1; 5-3-3;5-4-4;5-6-5; 6-3-7;6-4-1;6-6-2;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;Bb-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:2;f:1; 2-4-2;2-6-3;2-7-4; 3-3-6;3-5-7;3-6-1; 4-3-3;4-4-4;4-6-5; 5-3-7;5-4-1;5-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;D-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:2;f:1; 1-4-2;1-6-3;1-7-4; 2-4-6;2-6-2;2-7-1; 3-3-3;3-4-4;3-6-5; 4-3-7;4-4-1;4-6-2;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} === Jamaica Farewell === Die Melodie von [[Liederbuch/ Jamaica Farwell|Jamaica Farwell]] wurde erheblich vereinfacht, damit du dir nicht zu viele Gedanken um den Rhythmus machen musst. Wenn du dich am Quintillo (dem Rhythmus vom Lagerfeuerschlag} orientierst, solltest du wenige Probleme haben. Es gibt recht viele Wiederholung. Die Strophe wurde bei der Wiederholung in die Oktave verschoben, damit das Stück exakt in den Skalenausschnitt passt. Du musst dir für die Fingersätze ggf. Strategien zurechtlegen, damit du die Finger bequem sortiert bekommst. Das Stück beginnt mit dem Ton G. Der (5) in 1. Fingersatz. ;Bb-Form Greife den C wie ein Bb-Barré im 3. Bund. Leite dir von diesem Akkord den Grundton (1) ab, und wandere beim 1. Fingersatz rauf zum Startton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-4-2;2-6-3;2-7-4; 3-3-6;3-5-7;3-6-1; 4-3-3;4-4-4;4-6-5; 5-3-7;5-4-1;5-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (A-, Bb-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #2 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ; F-Form Greife den C wie ein F-Barré im 8. Bund. Leite dir von diesem Akkord den Grundton (1) ab, und wandere beim 1. Fingersatz rauf zum Startton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 3-7-2;3-9-3;3-10-4; 4-7-6;4-9-7;4-10-1; 5-7-3;5-8-4;5-10-5; 6-7-7;6-8-1;6-10-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (E-, F-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ;D-Form Schiebe den D-Dur-Akkord in den 12. Bund. Ein D im 12. Bund verschoben ergibt ein C. Leite dir von diesem Akkord den Grundton (1) ab. Orientiere dich kurz im 2. Fingersatz und wandere zurück zum ersten Fingersatz zum Ton G (5). <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 1-10-2;1-12-3;1-13-4; 2-10-6;2-12-7;2-13-1; 3-9-3;3-10-4;3-12-5; 4-9-7;4-10-1;4-12-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> {{clear}} <score sound="1" raw="1"> \version "2.20.0" \header { title="Jamaica Farewell (vereinfacht)" subtitle="1. und 2. Fingersatz (D-Form) in C-Dur" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c'' { \key c \major \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } \repeat volta 2 { c8 4 e4. 4 | d8 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g'8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8-1~ 2 } } \repeat volta 2 { c'8-3 4 e4.-4 4 | d8-1 e4 f8~2 | } \alternative { { b,8 4 d4. 4 | c8 d4 e8~2 | } { e8 4. d4 e8 d | d c4 8~ 2 } } \repeat volta 2 { g8 4 4 8 4 | a8 b4 c c8 b a | g8 g4 f4 e8 d4 | } \alternative { { e8 f4 g8~ 2 } { e8 d4 c8~ 2 } } } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==3. Fingersatz== Es fällt auf, dass der 3. Fingersatz kein "Karré" hat. {| !Fingersatz !width="30px"| !Intervalle |- |[[Image:Scala Z RK-Z K-ZM K.svg]] !width="30px"| |[[Image:Scala 2 34-5 6-71 2.svg]] |} Der 3. Fingersatz ist gar kein eigenständiger Fingersatz. Der obere Teil des 3. Fingersatzes ist eigentlich schon der untere Teil des 2. Fingersatzes. Ebenso ist der untere Teil des 3. Fingersatzes gleichzeitig der Anfang des 1. Fingersatzes. Du musst dir Strategien zurechtlegen, wie du den Übergang vom Ende des 2. Fingersatzes über die 5 und die 6 hin zum 1. Fingersatz gestaltest. Es kommt beim 3. Fingersatz zu einem Lagewechsel nach links. Übe den 3. Fingersatz zuerst in den obersten Saitenlagen (E A D G x x) === Eine II-V-I-Verbindung === Wir spielen eine einfache Tonfolge über einer 2-5-1-Verbindung. Die Akkordtöne liegen zumeist auf den schweren Zählzeiten. * D, F, A, C gehören zum Dm7 * G, B, D, F gehören zum G7 * C, E, G gehören zum C-Dur-Akkord. Wir nutzen das CAGED-System, um uns grob auf dem Griffbrett zurechtzufinden. ==== Exkurs: Skalenformen ==== Die Namen der Skalen leiten sich übrigens von folgenden einfachen Tonleitern in den ersten Bünden ab: [[Image:Scala C-Am.svg|100px]] [[Image:Scala Bb-Gm.svg|100px]] [[Image:Scala G-Em.svg|100px]] [[Image:Scala F-Dm.svg|100px]] [[Image:Scala D-Hm.svg|100px]] Alle Akkorde die man aus diesen einfachen Tonarten kennt, Bassläufe und ähnliches lassen sich zum großen Teil auf die entsprechenden 5 CAGED-Skalen übertragen, fast so als habe man die Tonleiter mittels Kapodaster in eine höhere Lage verschoben. Wie du siehst, nennen wir die Skalen entgegen des reinen CAGED-System nicht E-Dur-Form (Shape) und nicht die A-Dur-Form (Shape), sondern F- und Bb-Dur-Form. <div style="float:left; padding:5px; border:black solid 1px; "> ;E-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-1;1-2-2;1-4-3; 2-0-5;2-2-6;2-4-7; 3-1-3;3-2-4;3-4-5; 4-1-7;4-2-1;4-4-2; 5-0-4;5-2-5;5-4-6; 6-0-1;6-2-2;6-4-3;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;F-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-3; 1-1-1; 1-3-2; 2-1-5; 2-3-6; 3-0-2; 3-2-3; 3-3-4; 4-0-6; 4-2-7; 4-3-1; 5-0-3; 5-1-4; 5-3-5; 6-0-7; 6-1-1; 6-3-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;G-Dur-Tonleiter <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-3-3; 1-4-1; 1-6-2; 2-4-5; 2-6-6; 3-3-2; 3-5-3; 3-6-4; 4-3-6; 4-5-7; 4-6-1; 5-3-3; 5-4-4; 5-6-5; 6-3-7; 6-4-1; 6-6-2; " } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Du siehst selbst, dass die G-Dur-Tonleiter von der Form her eher wie die F-Dur-Tonleiter als wie die E-Dur-Tonleiter aussieht. <div style="float:left; padding:5px; border:black solid 1px; "> ;A-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-0-5;1-2-6;1-4-7; 2-0-2;2-2-3;2-3-4; 3-1-7;3-2-1;3-4-2; 4-0-4;4-2-5;4-4-6; 5-0-1;5-2-2;5-4-3; 6-0-5;6-2-6;6-4-7;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;Bb-Dur-Tonleiter <br> <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-1-5; 1-3-6; 2-1-2; 2-3-3; 2-4-4; 3-0-6; 3-2-7; 3-3-1; 4-0-3; 4-1-4; 4-3-5; 5-0-7; 5-1-1; 5-3-2; 6-1-5; 6-3-6;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; border:black solid 1px; "> ;C-Dur-Tonleiter <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { %% s:3 = 3x so groß %% f:1 zeigt Finger als Kreise %% f:2 zeigt Finger neben den Saiten %% 6-3-2 Saite-Bund-Finger %% oder %% 6-3-2 Saite-Bund-Intervall %% 4-o zeigt 4. Saite offen \fret-diagram #"s:3;f:1; 1-3-5; 1-5-6; 2-3-2; 2-5-3; 2-6-4; 3-2-6; 3-4-7; 3-5-1; 4-2-3; 4-3-4; 4-5-5; 5-2-7; 5-3-1; 5-5-2; 6-3-5; 6-5-6;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Du siehst selbst, dass die C-Dur-Tonleiter von der Form her eher wie die Bb-Dur-Tonleiter als wie die A-Dur-Tonleiter aussieht. ==== 3. Fingersatz II-V-I-Verbindung D-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;D-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:3;f:1; 4-9-7;4-10-1;4-12-2; 5-10-5;5-12-6; 6-10-2;6-12-3;6-13-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> {{clear}} Wir beginnen oben bei der D-Form, wo sich der Lagewechsel des 3. Fingersatz noch nicht mit dem Lagewechsel zwischen der G und H-Saite (engl. B-Saite) aufhebt. Würde ich ein Capo in den 10. Bund setzen, dann würde ich die Melodie vom Fingersatz her wie D-Dur spielen. In D-Dur spiele ich diese II-V-I-Verbindung Em7 A7 D. Nehme ich das Capo weg, dann greife ich den Dm(7) als einen Barré der Em-Form im 10. Bund. Von diesem kann ich mir das D als Grundton ableiten. Alternativ siehst du in den Noten, dass die Übung mit dem Ton D anfängt. Dass die oberste Tiefe E-Saite im 12. Bund ebenfalls ein E ergibt, setze ich als bekannt voraus. Falls nicht, beschäftige dich noch einmal mit dem [[Gitarre: Lagerfeueranhang 2c|Stimmen der Gitarre]]. Ein Ganztonschritt bzw. zwei Bünde vor dem E ist der Ton D. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (D-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #9 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g-1 a-4 b-1 c4 | b8^\markup { \bold {G7} } a-4 g4-1 f8 e d4 | e8^\markup { \bold {C} } f g4-1 a8-4 b-1 c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung G-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;G-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 3-4-7;3-5-1;3-7-2; 4-5-5;4-7-6; 5-5-2;5-7-3;5-8-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 5. Bund setzen, dann würde man die Melodie vom Fingersatz her wie G-Dur spielen. In G-Dur spielt man diese II-V-I-Verbindung Am7 D7 G. Nimmt man das Capo weg, dann greift man den Dm(7) als einen Barré der Am-Form. Von diesem kannst du dir den D als Grundton ableiten. Einfacher geht es natürlich, wenn du weißt, dass der D im 5. Bund der A-Saite der Stimmton der D-Saite ist. </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (G-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { \set TabStaff.minimumFret = #4 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g-1 a-4 b-1 c4 | b8^\markup { \bold {G7} } a-4 g4-1 f8 e d4 | e8^\markup { \bold {C} } f g4-1 a8-4 b-1 c d | c b c2. | \break d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung C-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;C-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-0-7;2-1-1;2-3-2; 3-0-5;3-2-6; 4-0-2;4-2-3;4-3-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Die C-Dur-Form der C-Dur Tonleiter sieht schlicht und ergreifend wie die C-Durtonleiter aus. </div> <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (C-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c { % \set TabStaff.minimumFret = #4 % \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \break d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> ==== 3. Fingersatz II-V-I-Verbindung C-Form 12. Bund ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;C-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 2-12-7;2-13-1;2-15-2; 3-12-5;3-14-6; 4-12-2;4-14-3;4-15-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 12. Bund setzen, dann würde man die Melodie vom Fingersatz her wie C-Dur spielen. In C-Dur spielt man diese II-V-I-Verbindung Dm7 G7 C. Der Startton ist schlicht die D-Saite im 12. Bund. </div> {{clear}} Gerade noch hatten wir einen Lagewechsel nach links. Jetzt aber hebt sich der Lagewechsel nach links vom 3. Fingersatz mit dem Lagewechsel zwischen der G- und H-Saite auf. Es hört sich beim ersten Durchlesen kompliziert an, aber du hast nur 4 Lektionen zu lernen. Den 1. bis 3. Fingersatz und den Lagewechsel zwischen der G- und H-Saite. Das Auffinden der Töne und welche Akkorde zu welcher Tonart gehört, und wie man einen Capo benutzt, sollte eigentlich nichts neues für dich sein. Rein technisch gesehen vereinfacht sich der Fingersatz. Doch es kostet ein wenig Überlegung, wie sich die beiden Lagewechsel auf den 3. Fingersatz auswirken. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (C-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #12 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> Sollte es im 12 Bund unbequem zu spielen sein, weil du kein Cutaway hast (Aussparung für die hohen Bünde), übe die C-Form ein paar Bünde zurück in einer anderen Tonart. ==== 3. Fingersatz II-V-I-Verbindung F-Form ==== <div style="float:left; padding:5px; margin:5px; border:black solid 1px; "> ;F-Form <score raw="1"> \version "2.14.2" \markup \override #'(fret-diagram-details . ( (number-type . roman-upper) (finger-code . in-dot) (orientation . landscape))) { \fret-diagram #"s:1.5;f:1; 1-7-7; 1-8-1;1-10-2; 2-8-5; 2-10-6; 3-7-2; 3-9-3; 3-10-4;" } \paper{ indent=0\mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f bookTitleMarkup = ##f scoreTitleMarkup = ##f} </score> </div> <div style="float:left; padding:5px; margin:5px; <!-- border:black solid 1px; --> "> Würde man ein Capo in den 6. Bund setzen, dann würde man die Melodie vom Fingersatz her wie F-Dur spielen. In C-Dur spielt man diese II-V-I-Verbindung Gm7 C7 F. Wenn du den C wie ein F-Barré im 8. Bund greifst, dindest du den Grundton (1) auf der hohen E-Saite. Von dem wanderst du runter zum Startton (2). </div> {{clear}} Auch hier hebt sich der Lagewechsel zwischen der G- und H-Saite mit dem Lagewechsel des 3. Fingersatz gegeneinander auf, was den Fingersatz grifftechnisch wieder vereinfacht. <score sound="1" raw="1"> \version "2.20.0" \header { title="3. Fingersatz (F-Form) in C-Dur" subtitle="Eine II-V-I-Verbindung" } %% Diskant- bzw. Melodiesaiten Diskant = \relative c' { \set TabStaff.minimumFret = #7 \set TabStaff.restrainOpenStrings = ##t \key c \major d8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | d,8^\markup { \bold {Dm7} } e f g a b c4 | b8^\markup { \bold {G7} } a g4 f8 e d4 | e8^\markup { \bold {C} } f g4 a8 b c d | c b c2. | \bar "|." } %% Layout- bzw. Bildausgabe \score { << \new Voice { \clef "treble_8" \time 4/4 \tempo 4 = 120 \set Score.tempoHideNote = ##t \Diskant } \new TabStaff { \tabFullNotation \Diskant } >> \layout {} } %% Midiausgabe mit Wiederholungen, ohne Akkorde \score { << \unfoldRepeats { \new Staff << \tempo 4 = 120 \time 4/4 \set Staff.midiInstrument = #"acoustic guitar (nylon)" \clef "G_8" \Diskant >> } >> \midi {} } %% unterdrückt im raw="!"-Modus das DinA4-Format. \paper { indent=0\mm %% DinA4 = 210mm - 10mm Rand - 20mm Lochrand = 180mm line-width=180\mm oddFooterMarkup=##f oddHeaderMarkup=##f % bookTitleMarkup=##f scoreTitleMarkup=##f } </score> == Wie geht es weiter? == Solltest du als Quereinsteiger in diese Lektion gestolpert sein, dann schaue dir die erste Lektion zum [[Gitarre: Aufbau der CAGED-Skalenformen|Aufbau der CAGED-Skalenformen]] an. Insbesondere die Abschnitte, die hier übergangen wurden. Dannach kannst du mit der ersten CAGED-Skala in der D-Dur-Form weitermachen. <noinclude> {{Navigation zurückhochvor |zurücklink=Gitarre: CAGED-Skala G-Dur-Form |zurücktext=CAGED-Skala G-Dur-Form |hochlink=Gitarre: Die Major-Patterns |hochtext=Einführung: Major-Patterns |vorlink=Gitarre: CAGED-Skala D-Dur-Form |vortext=CAGED-Skala D-Dur-Form }} </noinclude> r4b8c4k0tml6opgzkximttninmk3yuz Gödel 0 117878 1090596 1090413 2026-09-08T23:55:54Z Santiago 19191 /* Kurt GÖDEL und der sog. ‚ontologische Gottesbeweis‘ */ ::ist:: hinzugefügt 1090596 wikitext text/x-wiki [[Kategorie: Buch]] {{Regal|ort=Philosophie}} {{Vorlage:StatusBuch|9}} ==<div class="center"><span style="color:#660066">'''Kurt GÖDEL und der sog. ‚ontologische Gottesbeweis‘'''</span></div>== <span style="font-family: Times;"><big><div class="center">לַמְנַצֵּ֗חַ לְדָ֫וִ֥ד אָ֘מַ֤ר נָבָ֣ל בְּ֭לִבּוֹ אֵ֣ין אֱלֹהִ֑ים הִֽשְׁחִ֗יתוּ הִֽתְעִ֥יבוּ עֲלִילָ֗ה אֵ֣ין עֹֽשֵׂה־טֽוֹב׃ (Psalm 14,1)</div></big></span> ---- ===<div class="center"><span style="color:#660066">Vorwort</span></div>=== Zur Orientierung ''':''' Die Diskussion um GOTT läuft schon über zweitausend Jahren. Vor etwa tausend Jahren hat sich ein gewisser ANSELM gesagt ''':''' <span style="color:#FF6000">»''Ich glaube an GOTT'' … <span style="color:#00B000">[ sonst wäre er sicher nicht Erzbischof von Canterbury geworden ]</span> … ''aber ich möchte auch wissen und verstehen, ob das stimmt und sinnvoll ist, was ich da glaube '''!''''' «</span> Dann hat er seine Überlegungen dazu aufgeschrieben, und das kann man in seinen Schriften auch heute noch lesen. Der sehr geschätzte deutsche Professor und Philosoph aus Königsberg, Immanuel KANT, hat das, was ANSELM da aufgeschrieben hat, gelesen, <span style="color:#00B000">(vermittelt durch CARTESIUS)</span>, und das dann den <span style="color:#FF6000">„ontologischen Gottesbeweis“</span> genannt, <span style="color:#00B000">(obwohl es in Wirklichkeit gar kein Gottesbeweis ist; genauer ''':''' es ist kein Beweis für die Existenz GOTTES)</span>, und dieser große KANT hat dann großartig bewiesen, das, was ANSELM da aufgeschrieben hat, sei falsch. Es sei <span style="color:#FF6000">„ja gar kein“</span> Gottesbeweis '''!''' <span style="color:#00B000">( Naja, was denn sonst '''?''' )</span> Wobei er den Fehler gemacht hat, dass er den, an sich, unvergleichbaren GOTT mit hundert Talern in seinem Vermögenszustande verglichen hat. <span style="color:#00B000">(Das ist aber eine andere Geschichte.)</span> Hundert Taler und GOTT haben ,an sich‘ nichts gemeinsam, außer, wenn KANT ,wirklich‘ hundert Taler hat, und GOTT auch ,wirklich‘ existiert, <span style="color:#00B000">(wie ANSELM und gläubige Menschen glauben)</span>, dann gibt es GOTT und die Taler eben ,wirklich‘. Aber damit ist man nicht schlauer geworden. Seit KANT läuft die ganze Diskussion um GOTT immer nur als Diskussion um den <span style="color:#00B000">(von KANT)</span> so genannten <span style="color:#FF6000">„ontologischen, <span style="color:#00B000">[ kosmologischen, teleologischen etc. ]</span> Gottesbeweis“</span> —, obwohl es niemals einen Beweis für die Existenz GOTTES geben kann und niemals geben wird. <span style="color:#00B000">(Das haben Wissenschaftler jeder Richtung und Philosophen aller Weltanschauungen uns immer wieder nachdrücklich versucht zu sagen, weil keiner dieser sog. Beweise für die Existenz eines GOTTES stringent ist.)</span> Beweisen kann man die Existenz von Naturgesetzen. Die sind unveränderlich und fix, immer und überall. Jeder vernünftige Mensch muss sie akzeptieren. Man kann darüber nicht diskutieren und sie dann mit Mehrheitenbeschlüsse verändern. Wenn GOTT ebenso bewiesen werden könnte, dann wäre jeder vernünftige Mensch gezwungen, die Existenz GOTTES wie ein Naturgesetz anzunehmen. Gott ist aber kein Naturgesetz. GOTT ist <span style="color:#FF6000">„Person“</span>, — für Christgläubige ''':''' <span style="color:#FF6000">„ein GOTT in drei Personen“</span>. Und GOTT ist <span style="color:#FF6000">„Geist“</span>. Das besagt, dass GOTT nicht mit materiellen Dingen aus unserer Welt verglichen werden darf; <span style="color:#00B000">(was sowohl THOMAS von Aquin als auch Immanuel KANT doch getan haben)</span>. Und ganz wesentlich ''':''' der Zugang zu GOTT läuft nicht über den Beweis, sondern immer nur über den Glauben. Wer an GOTT glauben will, dem antwortet GOTT auf seine Weise — nämlich <span style="color:#FF6000">„geistig“</span> bzw. <span style="color:#FF6000">„geistlich“</span>. Wer nicht an GOTT glauben will, dessen Entscheidung respektiert GOTT, und drängt sich nicht auf. Glaube ist immer eine freie Entscheidung des Menschen für GOTT. Niemand darf gezwungen werden. Wenn es einen Beweis für GOTT gäbe, wäre jeder vernünftige Mensch gezwungen, an GOTT zu glauben. Und das widerspricht ganz entschieden der Freiheit des Glaubens. Daher gibt es nie und nimmermehr einen Existenzbeweis für GOTT '''!!!''' ... Daher darf man das Kalkül des Logiker GÖDEL, <span style="color:#00B000">(und damit auch das Theorem ANSELMS)</span>, nicht als einen Existenzbeweis für GOTT lesen. Sowohl ANSELM als auch GÖDEL setzen die Existenz GOTTES notwendig als gegeben schon voraus. Das GÖDEL-System, und auch das Theorem ANSELMS, sind bloß die logische Bestätigung der Widerspruchsfreiheit der Glaubensüberzeugung eines Menschen, der sich schon entschieden hat, an GOTT zu glauben; und nicht der Grund für seine Entscheidung. Alle sogenannten ,Gottesbeweise‘, sind in Wirklichkeit nichts anderes, als nachträgliche Evaluierungen eines GOTT-Glaubens, bzw. ,Wege‘, <span style="color:#00B000">(bei THOMAS von Aquin)</span>, die aufzeigen, dass der GOTT-Glaube widerspruchsfrei, sinnvoll, und <span style="color:#FF6000">»''mit allen bekannten Tatsachen durchaus vereinbar ist''«</span>, wie GÖDEL sagt. GOTT hat es nicht nötig, ,bewiesen‘ <span style="color:#00B000">( ╞ )</span> zu werden. ===<div class="center"><span style="color:#660066">Einleitung</span></div>=== Eine Studie zum GÖDEL-Kalkül. Der Logiker Kurt GÖDEL <span style="color:#00B000">(1906-1978)</span> hat mit diesem Kalkül eine moderne Rekonstruktion des, <span style="color:#00B000">(von KANT)</span>, so genannten ‚ontologischen Gottesbeweises‘ nach ANSELM von Canterbury auf modal-logischer Basis vorgelegt. Damit hat er die <span style="color:#FF6000">„Rede von GOTT“</span> auf eine ‚vernünftige Basis‘ gestellt, d.h. sie soll für jeden Menschen nachvollziehbar sein, <span style="color:#FF6000">»''rein verstandesmäßig, (ohne sich auf den Glauben an irgendeine Religion zu stützen)''«</span>, wie er sagt. GÖDEL ,nimmt‘ als Logiker, angeregt durch den Philosophen und Mathematiker Gottfried Wilhelm LEIBNIZ, rein theoretisch, fürs Erste, einmal ‚an‘, <span style="color:#00B000">(als Prämisse, d.i. der Term :01: im 3. Beweisgang zum Theorem ANSELMS im Anhang)</span>, dass es GOTT gibt ''':''' d.i. ein sog. ,methodologischer GOTT-Glaube‘, und untersucht die logischen Konsequenzen. Dabei zeigt sich, beim genaueren Hinsehen, dass der ‚Nicht-GOTT-Glaube‘, der ‚dezidierte‘ Atheismus, <span style="color:#00B000">(im Beweisgang ,Widerlegung‘ im Anhang)</span>, überraschender Weise, zu einem Widerspruch führt, und damit logisch ,falsch‘ ist. Jedoch, GÖDEL kann und will mit seinem Kalkül keinen ,GOTT-Glauben‘ ,erzeugen‘, d.h. das GÖDEL-Kalkül ist kein <span style="color:#FF6000">„Existenz-Beweis"</span> für den GOTT der Bibel, sondern, es setzt die Existenz eines GOTTES, einfach als gegeben, schon voraus. GÖDEL beweist dann mit seinem System, dass der traditionelle abendländische ,GOTT-Glaube‘, <span style="color:#FF6000">»''die theologische Weltanschauung''«</span>, <span style="color:#00B000">(d.i. die Kalkül-Prämisse, und das, daraus ,regulär‘ (├ ) abgeleitete, Theorem ANSELMS)</span>, mit den Maßstäben der modernen Logik <span style="color:#FF6000">»''durchaus vereinbar''«</span> <span style="color:#00B000">(d.h. logisch ,richtig‘)</span> ist, im Gegensatz zum ,Nicht-GOTT-Glauben‘, der davon ausgeht, dass es keinen GOTT gibt. GÖDEL beweist mit seinem System ''':''' der traditionelle GOTT-Glaube ist, — mit mathematisch-logischer Evidenz —, widerspruchfrei und wahr. <span style="color:#00B000">(Der Beweis aus dem Widerspruch des Gegenteils ist ein ,indirekter Beweis‘ und kein ,Zirkelbeweis‘ '''!''' )</span> GÖDEL blieb bis zu seinem Tod ohne ein dezidiertes religiöses Bekenntnis. <span style="color:#00B000">(Das Leben ist nicht immer ,logisch‘.)</span> Entsprechend der <span style="color:#FF6000">»''theologischen Weltanschauung''«</span> ist GOTT der Größte, <span style="color:#FF6000">»''über dem nichts Größeres mehr gedacht werden kann''«</span>, <span style="color:#00B000">(ANSELM)</span>; bzw. <span style="color:#FF6000">»''GOTT ist ein Wesen von äußerster Größe und Vollkommenheit, das alle Grade derselben in sich schließt''«</span>, <span style="color:#00B000">(LEIBNIZ)</span>, und der für uns immer schon ,da‘ ist. Das ist die methodologische Prämisse des GÖDEL-Kalküls. Davon ausgehend, zeigen seine Axiome und Definitionen, dass es zu einem Widerspruch führt, falls man ,annimmt‘, es sei nicht möglich, dass es <span style="color:#FF6000">„GOTT“</span>, <span style="color:#4C58FF">— ‚'''G'''‘ —</span> gibt. Aus dem Widerspruch des Gegenteils wird von GÖDEL, mit dem <span style="color:#4C58FF">[ Modus tollendo tollens ] :: [ A → B, ¬B ├ ¬A ]</span>, dann ,bewiesen‘ <span style="color:#00B000">( ╞ )</span> ''':''' es ist doch möglich, dass es <span style="color:#FF6000">„GOTT“</span> wirklich gibt. Somit ist der Glaube an <span style="color:#FF6000">„GOTT“</span>, — weil widerspruchsfrei —, mit den Worten GÖDELS ''':''' <span style="color:#FF6000">»''mit allen bekannten Tatsachen durchaus vereinbar''«</span>. Immanuel KANT <span style="color:#00B000">(1724-1804)</span> scheint diesen Fall vorausgesehen zu haben, dass versucht werden könnte, die ,Möglichkeit‘ GOTTES aus einem Widerspruch zu ,beweisen‘ ''':''' ::<span style="color:#FF6000">»</span> <span style="color:#00B000">[ Angenommen, es gibt ]</span> ''doch einen und zwar nur diesen '''Einen''' Begriff'' <span style="color:#00B000">[ ,GOTT‘, so dass ]</span> ''das Nichtsein oder das Aufheben seines Gegenstandes'' <span style="color:#00B000">[ GOTT ]</span>, ''in ,sich selbst‘ widersprechend sei; und dieses ist der Begriff des allerrealsten Wesens. Es hat, sagt ihr, alle Realität'', <span style="color:#00B000">[ bzw. alle Vollkommenheit ]</span>, ''und ihr seid berechtigt, ein solches Wesen als ,möglich‘ anzunehmen'' ... <span style="color:#00B000">[ denn das GÖDEL-Kalkül ,beweist‘ ( ╞ ) in der ,Widerlegung‘ im Anhang, wie auch im 1. Beweisgang, aus einem Widerspruch, dass die Existenz GOTTES definitiv logisch ,möglich‘ ist. ]</span> … ''obgleich der sich nicht widersprechende'', <span style="color:#00B000">[ ,mögliche‘ ]</span>, ''Begriff'', <span style="color:#00B000">[ ,GOTT‘ ]</span>, ''noch lange nicht die'' <span style="color:#00B000">[ reale ]</span> ''Möglichkeit des Gegenstandes'', <span style="color:#00B000">[ GOTT ]</span>, ''beweiset. … Das ist eine Warnung, von der Möglichkeit der Begriffe (logische)'', <span style="color:#4C58FF">— '''◇''' —</span>, ''nicht sofort auf die Möglichkeit der Dinge (reale)'', <span style="color:#4C58FF">— '''□''' —</span>, ''zu schließen''<ref>vgl. ‚''<span style="font-family: Times;"><big>Kritik der reinen Vernunft</big></span>''‘, Seite 399; https://www.korpora.org/kant/aa03/399.html</ref>. <span style="color:#00B000">[ Trotz dieser Warnung, wird dieser Schluss dennoch im Theorem ANSELMS vollzogen, bzw. mit GÖDEL im 3. Beweisgang ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx→□∃xGx'''‘ —</span> '''!''' ]</span>. <span style="color:#FF6000">«</span> Warum das <span style="color:#FF6000">»''mit allen bekannten Tatsachen durchaus vereinbar''«</span> ist, und inwieweit KANT sich irrt, wird in dieser Studie gezeigt. ===<div class="center"><span style="color:#660066">Der Schlüsselbegriff im Kalkül</span></div>=== Der ‚Schlüsselbegriff‘ in diesem Kalkül ist <span style="color:#FF6000">„positive Eigenschaft“</span>, bzw. <span style="color:#FF6000">„Perfektion“, „Vollkommenheit“</span> ''':''' <span style="color:#4C58FF">— ‚'''P'''‘ —</span>. Für diesen wichtigen Begriff gibt es aber im Kalkül selbst keine explizite Definition, sondern er wird nur durch seine Verwendung innerhalb des Kalküls indirekt ‚definiert‘. <span style="color:#00B000">(Das heißt ''':''' <span style="color:#4C58FF"> — ‚'''P'''‘ — </span> bezeichnet ein System von ,Eigenschaften‘, die ,positiv‘, bzw. ,vollkommen‘ | ,perfekt‘ | genannt werden, von denen im Kalkül wohl beweisbar ist, dass sie sich gegenseitig ,nicht widersprechen‘, weil sie im System als solche ,gleichwertig‘, bzw. gleich ,wahr‘ sind, jedoch ohne sie erschöpfend aufzählen zu können, oder auch nur sagen zu können, was sie alle im einzelnen bedeuten, außer, dass sie kompatibel sind.)</span> Mit der Wahl dieses Schlüsselbegriffes hat GÖDEL eine wesentliche Vorentscheidung für die Ergebnisse des Kalküls getroffen '''!''' In seinen Notizen zum ‚ontologischen Beweis‘ vom 10. Februar 1970 gibt GÖDEL, — für die nachträgliche Interpretation dieses Begriffes <span style="color:#00B000">(und auch für das Kalkül selbst)</span> —, die richtungsweisende Erklärung ''':''' ::<span style="color:#FF6000">»''Positiv bedeutet positiv im moralisch ästhetischen Sinne...''«</span> ::Und er fügt in Klammer hinzu ''':''' ::<span style="color:#FF6000">»...''(unabhängig von der zufälligen Struktur der Welt). Nur dann sind die Axiome wahr''.«</span><ref>GÖDEL, Kurt, ''<span style="font-family: Times;"><big>‚Ontological proof‘</big></span>'' in ''<span style="font-family: Times;"><big>‚Collected Works‘</big></span>'', vol. III, ed. S.FEFERMAN et al., Oxford (U.P.), 1995; 403–404.</ref> GÖDEL-Axiom-1 ''':''' <span style="color:#4C58FF">— ‚('''PX <small><math>{ \color{Blue} \dot\lor}</math></small> P¬X''')‘ ↔<span style="color:#00B000"> ‚('''¬PX ↔ P¬X''')‘</span> — </span> ''':''' <span style="color:#FF6000"> »''Entweder die Eigenschaft'' <span style="color:#4C58FF">‚'''X'''‘</span> ''oder ihre Negation'' <span style="color:#4C58FF">‚'''¬X'''‘</span> ''ist positiv''«</span>. Hier ist der Hauptkritikpunkt, dass es Eigenschaften gibt, die ,an sich‘ weder positiv noch negativ sind. Beispiele wären ''':''' ‚rothaarig‘ oder ‚schwerwiegend‘; solche Eigenschaften können aber ,für mich‘ entweder positiv oder negativ sein, abhängig von meiner Betrachtungsweise und subjektiven Vorlieben. Diese Eigenschaften, wie ‚rothaarig‘ an sich, oder meine positiv-negativen ‚Betrachtungsweisen‘, sind jedoch der <span style="color:#FF6000">»''zufälligen Struktur der Welt''«</span> entnommen und treffen nicht den <span style="color:#FF6000">»''moralisch ästhetischen Sinn''«</span> von <span style="color:#FF6000">»''positiv''«</span> bei GÖDEL. Er orientierte sich an LEIBNIZ, welcher im Bezug zum ‚ontologischen Beweis‘ definiert ''':''' ::<span style="color:#FF6000">»''Vollkommenheit'' <span style="color:#00B000">[ GOTTES ]</span> ''nenne ich jede einfache Eigenschaft, die sowohl positiv als auch absolut ist, oder dasjenige, was sie ausdrückt, ohne jede Begrenzung ausdrückt''.«</span><ref>Zitiert nach Thomas GAWLICK, in ''<span style="font-family: Times;"><big>‚Was sind und was sollen mathematische Gottesbeweise ?‘</big></span>'', Predigt vom 8.1.2012 in der Kreuzkirche zu Hannover. https://web.archive.org/web/20130524164359/http://www.idmp.uni-hannover.de/fileadmin/institut/IDMP-Studium-Mathematik/downloads/Gawlick/Predigt_Gawlick_Gottesbeweise.pdf</ref> Die Seins-Eigentümlichkeiten <span style="color:#00B000">(Daseinsmodi, Perfektionen)</span> wie ‚wahr‘, ‚gut‘, ‚edel‘ usw. entsprechen dem <span style="color:#FF6000">»''moralisch ästhetischen Sinn''«</span> von <span style="color:#FF6000">»''positiv''«</span> bei GÖDEL. Das sind Beispiele für ‚absolut‘ positive Begriffe aus der Lehre der Seinsanalogie ''':''' <span style="font-family: Times;"><big>‚verissimum‘, ‚optimum‘, ‚nobilissimum‘</big></span>, usw., die, an sich, <span style="color:#FF6000">»''ohne jede Begrenzung gelten''«</span>; zu finden in der <span style="font-family: Times;"><big>‚Via quarta‘</big></span>, bei THOMAS von Aquin, über die <span style="color:#FF6000">„analoge"</span> Abstufung im ‚Sein‘ der Dinge. Diese <span style="color:#FF6000">„analoge"</span> ‚Abstufung‘ ist dann die faktische Begrenztheit <span style="color:#00B000">(d.h. Unvollkommenheit)</span> im <span style="color:#FF6000">»''zufälligen''«</span> ‚Sein‘ der Dinge —. Die <span style="color:#FF6000">„positiven Eigenschaften“</span> GÖDELS ''':''' <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, wie Wahrheit, Einheit, Gutheit, <span style="color:#00B000">(von ,Güte‘)</span>, Schönheit, Adel, <span style="color:#00B000">(von ,edel‘)</span>, Gleichheit, Andersheit, Wirklichkeit, ,Sein‘ im Sinne von Etwas-sein, etc. werden <span style="color:#FF6000">„Perfektionen“</span>, oder auch <span style="color:#FF6000">„Transzendentalia“</span> genannt, <span style="color:#00B000">(von lateinisch ''':''' <span style="font-family: Times;"><big>transcendere</big></span>, <span style="color:#FF6000">„übersteigen“</span>)</span>. In der mittelalterlichen Scholastik sind Transzendentalien die Grundbegriffe, die allem Seienden als <span style="color:#FF6000">„Modus“</span>, <span style="color:#00B000">(d.h. ,Eigentümlichkeit‘, als allgemeine Seinsweisen)</span>, zukommen. Wegen ihrer Allgemeinheit ,übersteigen‘ sie die besonderen Seinsweisen, welche ARISTOTELES die ,Kategorien‘ nannte. Ontologisch betrachtet, werden die Transzendentalien als das allem Seienden Gemeinsame aufgefasst, da sie von allem ausgesagt werden können. Von der KI werden sie, nicht unpassend, als <span style="color:#FF6000">„ultimative Eigenschaften des Seins“</span> bezeichnet, die <span style="color:#FF6000">„jenseits der materiellen Welt existieren“</span>, <span style="color:#00B000">(da sie ,ultimativ‘ nur von GOTT, als den unbegrenzt Vollkommenen, ausgesagt werden können, die jedoch, auch von allen übrigen Seienden, wegen deren seinsmäßigen Unvollkommenheit und Begrenztheit, abgestuft, d.h. <span style="color:#FF6000">„analog"</span>, ausgesagt werden)</span>. Diese Transzendentalien sind ,inakzident‘, das heißt, sie entstehen nicht aus anderen Begriffen, sondern sind erste, unteilbare Bestimmungen <span style="color:#4C58FF">— ‚'''X'''‘ —</span> des Denkens und des Seins, die allen Seienden ''':''' <span style="color:#4C58FF">— ‚'''□∀xXx'''‘ —</span>, unabhängig von ihren speziellen Eigenschaften, als ,relative‘ Vollkommenheiten, <span style="color:#00B000">(bzw. Unvollkommenheiten)</span>, mit ,modaler‘ Notwendigkeit, <span style="color:#4C58FF">— ‚□‘ —</span>, <span style="color:#FF6000">„analogisch"</span> zukommen, d.h. sie sind in allen Seienden, seinsmäßig abgestuft und abgegrenzt, ,relativ‘ zum unbegrenzt Unendlichen ihrer selbst, und <span style="color:#FF6000">»''dasjenige, was sie ausdrücken, drücken sie ohne jede Begrenzung aus''«</span>, <span style="color:#00B000">(LEIBNIZ)</span>; und damit stehen sie ontologisch in einer <span style="color:#FF6000">„analogen"</span> ,Beziehung‘ zu GOTT, dem absolut Vollkommenen und unbegrenzt Unendlichen. In der Erkenntnisordnung wirken sie als die ersten Begriffe des menschlichen Verstehens, die eine Basis für alle weiteren wissenschaftlichen Erkenntnisse bilden. In der Seinsordnung sind die Transzendentalien ontologisch eins, gleichwertig, <span style="color:#00B000">(,mathematisch äquivalent‘)</span>, und daher konvertierbar, d.h. austauschbar, <span style="color:#00B000">(vgl. z. B. den scholastischen ,Merksatz‘ ''':''' <span style="font-family: Times;"><big>,ens et verum convertuntur‘</big></span>)</span>. Damit sind sie auch von einander abhängig, was GÖDEL sowohl im Axiom-2 ''':''' <span style="color:#4C58FF">— ‚'''PX ∧ □∀x(Xx→Yx)→PY'''‘ —</span>, für positive Eigenschaften, als auch in der Definition-2 ''':''' <span style="color:#4C58FF">— ‚'''X'''<sub>ess</sub>'''x ↔ Xx ∧ ∀Y(Yx→ □∀y(Xy→Yy))'''‘ —</span>, für die Wesenseigenschaften, syntaktisch formalisiert hat mit dem Term-Element ''':''' <span style="color:#4C58FF">— ‚'''□∀x(Xx→Yx)'''‘ —</span>, weil sie sich gegenseitig, — mit ,modaler‘ Notwendigkeit —, gleichwertig ,implizieren‘, d.h. einschließen, <span style="color:#00B000">(im Axiom-2 mit der Individuum-Variable <span style="color:#4C58FF"> — ‚'''x'''‘ —</span>, und in der Definition-2 mit der Individuum-Variable <span style="color:#4C58FF"> — ‚'''y'''‘ — </span>)</span>. Man kann die Transzendentalia, <span style="color:#00B000">(wie GÖDEL)</span>, auch ,Wesenseigenschaften‘ ''':''' <span style="color:#4C58FF"> — ‚'''X'''<sub>ess</sub>‘ —</span>, nennen, weil sie allem Seienden <span style="color:#FF6000">„wesentlich analog"</span> zukommen. Weil Transzendentalien miteinander austauschbar sind, sind sie auch widerspruchsfrei, was GÖDEL mit Axiom-1 syntaktisch darstellt. Die Gültigkeit und Wahrheit, d.h. die mathematisch-logische Evidenz von Axiom-1 und Axiom-2, beruht auf der ontologischen Allgemeinheit und Gültigkeit der Transzendentalia, die GÖDEL mit Definition-2, in sein Kalkül explizit eingeführt und als Wesenseigenschaften ,bestimmt‘ hat. <span style="color:#00B000">(Definitionen werden formal-syntaktisch durch das Äquivalenzzeichen <span style="color:#4C58FF">,'''↔'''‘</span> angezeigt, gelesen als <span style="color:#FF6000">„...ist genau dann ... wenn...“</span>)</span> Die GÖDEL-Axiome und -Definitionen werden jedoch sofort <span style="color:#FF6000">„modal falsch"</span>, wenn ihre Eigenschafts-Variablen, <span style="color:#4C58FF">— ‚'''X'''‘ —</span> und <span style="color:#4C58FF">— ‚'''Y'''‘ —</span>, mit ,Nicht-Transzendentalia‘, wie z. B. ,rot‘ oder ,schwer‘, belegt werden. <span style="color:#00B000">(Dieser ,Sachverhalt‘ wird von Kritikern des GÖDEL-Systems, — zu vorschnell —, verwendet, um ihre Behauptungen zu ,belegen‘, das GÖDEL-Kalkül und seine Konsequenzen seien ,falsch‘.)</span> Zum Überblick ''':''' <span style="color:#FF6000">„Transzendentalia“</span> sind universale, alles Seiende charakterisierende Begriffe, die über kategoriale Einteilungen hinausgehen, und sowohl in der klassischen Scholastik, als auch in der modernen Philosophie, <span style="color:#00B000">(KANT, Uwe MEIXNER<ref>vgl. die ,transzendentalen‘ Bedingungen möglicher Erkenntnisse bei KANT; und auch in der ,Axiomatischen Ontologie‘ bei Uwe MEIXNER</ref>)</span>, als Grundlage der Metaphysik und Erkenntnistheorie dienen. Sie sind die <span style="color:#FF6000">„ersten Begriffe des Seins“</span>, die jedem Ding als ,relative‘ Vollkommenheiten, <span style="color:#00B000">(Perfektionen)</span>, inhärent sind, <span style="color:#FF6000">„analogisch"</span> abgestuft, auf einen ,ultimativ‘-unbegrenzten Bezugspunkt ausgerichtet, und die sich im Denken, <span style="color:#00B000">(für uns als wahr)</span>, und in der moralischen Wertung, <span style="color:#00B000">(für uns als gut und edel)</span>, manifestieren, relativ zum ,ultimativ‘-unbegrenzten Bezugspunkt ihrer selbst. Die faktische, zusätzliche Unvollkommenheit, die sich generell in der notwendigen, und unausweichlichen Vergänglichkeit aller Dinge zeigt, ist einem ontologischen Defekt ,geschuldet‘, der stark zeitabhängig ist, d.h. der einen Anfang und ein Ende hat. Das GÖDEL-Axiom-5 ''':''' <span style="color:#4C58FF"> — ‚'''PE'''<sub>not</sub>‘ —</span> ''':''' <span style="color:#FF6000">»''Notwendige Existenz ist eine positive Eigenschaft''«</span>, ist immer falsch, wenn es auf etwas aus der <span style="color:#FF6000">»''zufälligen Struktur der Welt''«</span> angewendet wird, wie z. B. auf einen <span style="color:#FF6000">„Tsunami“</span>, dessen ‚Existenz‘ für uns nicht ‚positiv‘ ist. KANT hat schon festgestellt ''':''' <span style="color:#FF6000">„Existenz ist keine Eigenschaft“</span>. Das gilt für alles, was <span style="color:#FF6000">„existiert“</span>. Das Axiom-5 hat nur dann seine Gültigkeit, ist nur dann ,wahr‘, wenn <span style="color:#FF6000">„Dasein“</span> <span style="color:#00B000">(Existenz)</span> und <span style="color:#FF6000">„Wesenseigenschaften“</span> <span style="color:#00B000">(Essenz)</span> in eins zusammenfallen. Bei allen Dingen, die ‚da‘ sind, ist ihr ‚Da-Sein‘ ontologisch immer verschieden zu dem ‚was‘ sie sind ''':''' zu ihrem ,Was-Sein‘. In der philosophischen Tradition, seit ARISTOTELES, wird die ontologische Identität, d.i. die Koinzidenz, der innere Zusammenhang von ‚Sein‘ und ‚Wesen‘ allein nur dem <span style="color:#FF6000">„selbst ‚unbewegten‘ Erstbewegenden“</span> zugeschrieben, dem <span style="color:#FF6000">„<span style="font-family: Times;"><big>πρῶτον κινοῦν ἀκίνητον</big></span>“</span><span style="color:#00B000"> | ,prôton kinoûn akinêton‘</span>, von dem ARISTOTELES etwas später sagt ''':''' <span style="color:#FF6000">»''denn dies ist der Gott''«</span> und dann hinzufügt ''':''' <span style="color:#FF6000">»''so sagen wir ja''«</span>; d.h. das ist eine Interpretation aus dem Glaubenskontext des ARISTOTELES. Er war ein Gott-gläubiger Grieche. Wer an GOTT glaubt, kann das nachvollziehen. GÖDEL musste dieses Axiom-5 postulieren, sonst wäre sein Kalkül nicht aufgegangen, ohne dass er deswegen schon an GOTT glauben müsste. Er hat für sein Kalkül das ontologische Theorem von der Identität von ‚Sein‘ und ‚Wesen‘ im ‚unbewegten Erstbeweger‘ des ARISTOTELES benutzt, ohne diese Herkunft explizit referenziert zu haben. <span style="color:#00B000">(Gilt auch für Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span> ''':''' <span style="color:#FF6000">»''Göttlichkeit, das GOTT-Sein, das ‚Dasein‘ GOTTES, ist eine positive Wesenseigenschaft, eine Perfektion; d.h. ist das ‚Wesen‘ GOTTES ''':''' GOTT ist perfekt''«</span>)</span>. Die ontologische Identität von Sein und Wesen, Existenz und Essenz, wie auch die Koinzidenz von Möglichkeit und Wirklichkeit, von Ursache und Wirkung, sowie auch die ontologische Einheit von <span style="color:#00B000">(Erkenntnis-)</span>Subjekt und <span style="color:#00B000">(Erkenntnis-)</span>Objekt im <span style="color:#FF6000">»''Erkennen seiner Erkenntnis''<span style="color:#00B000">[-Tätigkeit ]</span>«<span style="color:#00B000"> | </span>„<span style="font-family: Times;"><big>νοήσεως νόησις</big></span>“</span><span style="color:#00B000"> | ,noêseôs noêsis‘ <small>(<span style="font-family: Times;"><big>,''Metaphysik''‘</big></span> XII 9, 1074b34)</small></span>, und der innere Zusammenhang der <span style="color:#FF6000">„ultimativen Transzendentalia“</span>, gilt nur in der <span style="color:#FF6000">„unverursachten Letztursache"</span>, auf die ARISTOTELES bei seiner Prinzipienforschung gestoßen ist. Es gibt verschiedene Versuche, die GÖDEL-Axiome durch sog. ,Modelle‘, relativ zu einfacheren ,Welten‘, zu verifizieren, um damit ihre relative Konsistenz nachzuweisen. Für GÖDEL aber <span style="color:#FF6000">»''sind die Axiome nur dann'' <span style="color:#00B000">[ in unserer ,realen‘ Welt ]</span> ''wahr'' <span style="color:#00B000">[ und annehmbar ]</span>«</span>, wenn sie <span style="color:#FF6000">»''unabhängig von der zufälligen Struktur der Welt'' <span style="color:#00B000">[ d.h. jeder auch nur ,möglichen‘ Welt ]</span> ''sind''«</span>. Diese Bedingung verweist jede Verifikation und jede Interpretation der Axiome auf das ,Nicht-Zufällige‘, das ,Notwendige‘, ,Absolute‘, in dem die Axiome und Definitionen des GÖDEL-Kalküls erst dadurch ihren Sinn und ihre Bedeutung bekommen, wenn sie vom ,Absoluten‘ und ,Unendlichen‘ her erklärt und verstanden werden. Damit insistiert GÖDEL auf eine genuin <span style="color:#4C58FF">,theologische‘</span> Interpretation seines Kalküls, mit der <span style="color:#4C58FF">„Theologie“</span> zum Begriff GOTT, dem unbegrenzt Unendlichen, als Verifikationskriterium. Das entspricht auch der ,methodologischen‘ Prämisse seines Kalküls. Die wichtigsten Axiome und Definitionen im GÖDEL-Kalkül sind jedoch bloße ,Annahmen‘, deren Evidenz, sowohl die ,mathematische‘ als auch die <span style="color:#4C58FF">,theologische‘</span>, erst evaluiert, d.h. ,bewiesen‘ <span style="color:#00B000">( ╞ )</span> werden muss. Das bedeutet ''':''' die logische Verifikation der Axiome und Definitionen von GOTT und seinen Vollkommenheiten kann nur Kalkül-intern durch den Aufweis ihrer Widerspruchsfreiheit erfolgen, d.i. <span style="color:#FF6000">»''unabhängig von der zufälligen Struktur der Welt''«</span>. Logisch evaluierte und verifizierte Axiome und Definitionen sind die ,modal‘ notwendigen, d.h. die ,transzendentalen‘ Voraussetzungen für die Ergebnisse eines Kalküls, damit seine Theoreme und Korollare in unserer ,realen‘ Welt als logisch ,wahr‘ und damit für uns auch als ,annehmbar‘ gelten können, während die Prämissen eines Kalküls, <span style="color:#00B000">(die Argument Einführung, <span style="color:#4C58FF">— '''AE:''' —</span> )</span>, nicht notwendige, und somit ,modal‘ frei gewählte ,Annahmen‘ sind. Jedoch aus diesen ,modal‘ frei gewählten, ,möglichen‘ <span style="color:#00B000">( <span style="color:#4C58FF">'''◇'''</span> )</span> Prämissen folgen mit Hilfe der ,bewiesenen‘ <span style="color:#00B000">( ╞ )</span> Axiome und Definitionen die Ergebnisse mit ,modaler‘ Notwendigkeit <span style="color:#00B000">( <span style="color:#4C58FF">'''□'''</span> )</span>. Die Logik des GÖDEL-Systems ist eine ,Prädikatenlogik‘ zweiter Stufe, in der die Quantoren nicht nur Individuum-Variable, sondern auch Eigenschafts-Variable, <span style="color:#00B000">(als noch ,unbestimmte‘ Prädikate im Allgemeinen)</span>, binden können. Die formale Struktur des GÖDEL-Kalküls besteht aus fünf Axiomen und drei Definitionen, mit deren Hilfe in drei Beweisgängen drei Theoreme und mehrere Korollare aus seiner ,methodologischen‘ Prämisse ,regulär‘ <span style="color:#00B000">(├ )</span> abgeleitet werden können, wobei die beiden ersten Beweisgänge, mit ihren Ergebnissen, den dritten vorbereiten, in dem es dann um das Theorem ANSELMS geht. Die Prämisse des GÖDEL-Kalküls in allen Beweisgängen ist der traditionelle ,GOTT-Glaube‘, in der Formulierung speziell nach LEIBNIZ. Ein Axiom, eine Definition, zwei Theoreme und alle Korollare im GÖDEL-Kalkül sind Aussagen über <span style="color:#FF6000">„GOTT“</span>, <span style="color:#4C58FF">— ‚'''G'''‘ —</span>. Alle fünf Axiome, eine Definition und ein Theorem, <span style="color:#00B000">(und das Korollar aus Axiom-4)</span>, sind auch Aussagen über die Eigenschaft <span style="color:#FF6000">„Vollkommenheit“, „Perfektion“</span>, <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, die in der <span style="color:#FF6000">»''theologischen Weltanschauung''«</span> als die Wesenseigenschaft GOTTES gilt ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, <span style="color:#FF6000">»''GOTT ist vollkommen''«</span> bzw. <span style="color:#FF6000">»''GOTT ist das Vollkommenste der Wesen''«</span>, <span style="color:#00B000">(DESCARTES)</span>. Zwei Definitionen sind Aussagen über die allgemeinen Wesenseigenschaften aller Seienden, <span style="color:#4C58FF">— ‚'''X'''<sub>ess</sub>‘ —</span>, die Transzendentalien, die, als notwendige Existenz, <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>‘ —</span>, auch GOTT zugeordnet werden, mit der Besonderheit bei GOTT, dass sowohl alle Eigenschaften, als auch alle anderen Zuordnungen, wie Sein und Wesen, wie Ursache und Wirkung, usw., im Unendlichen, GOTT, <span style="color:#FF6000">„koinzident“</span> sind, d.h. in GOTT paarweise perspektivisch in ,eins‘ zusammenfallen, und die auch, als Transzendentalia, konvertierbar, d.h. austauschbar sind. Diese Sachverhalte machen deutlich, dass eine spezifische ,Verifikation‘ und sachgerechte ,Evaluierung‘ der GÖDEL-Axiomatik nur genuin <span style="color:#4C58FF">,theologisch‘</span> erfolgen kann. Die Evaluierung der <span style="color:#FF6000">»''mathematischen Evidenz''«</span> des GÖDEL-Systems, im Allgemeinen, muss jedoch entsprechend der Maßstäbe einer modalen Prädikatenlogik zweiter Stufe durchgeführt werden. Das GÖDEL-Kalkül unterscheidet <span style="color:#00B000">(in Definition-3 ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x ↔ ∀X(X'''<sub>ess</sub>'''x →□∃yXy)'''‘ —</span>)</span> formal-syntaktisch zwischen der Eigenschaft ,Existenz‘, <span style="color:#4C58FF"> — ‚'''E'''‘ —</span>, die nur GOTT zugeordnet werden kann, und dem Existenz-Operator, <span style="color:#4C58FF">— ‚'''∃'''‘ —</span>, der auch allem Übrigen, das nicht GOTT ist, zugeordnet wird. Es gibt hier auch den formal-syntaktischen Unterschied zwischen der, <span style="color:#00B000">(von mir notierten, jedoch von GÖDEL schon intendierten und angesprochenen)</span>, speziellen ,Notwendigkeit‘, <span style="color:#4C58FF"> — <sub>not</sub> —</span>, die nur der Existenz GOTTES zugeordnet ist, und der modalen ,Notwendigkeit‘, <span style="color:#4C58FF">— ‚'''□'''‘ —</span>, die auf Verschiedenes bezogen werden kann. Diese Unterschiede sind Hinweise, dass GÖDEL in seiner Kalkül-Logik und -Syntax, die Außerordentlichkeit und Eigenständigkeit GOTTES berücksichtigt, der, als Schöpfer der Welt, prinzipiell und absolut <span style="color:#FF6000">»''unabhängig von der zufälligen Struktur der Welt''«</span> ist, die erst durch GOTT auch das ist, was sie ist. ===<div class="center"><span style="color:#660066">Die Genese des Kalküls</span></div>=== Wie kommt GÖDEL zu seinem Kalkül '''?''' Sein Gewährsmann war Gottfried Wilhelm LEIBNIZ, <span style="color:#00B000">(1646-1716)</span>, den er sehr schätzte. Die rekonstruierbare Genese seines Kalküls findet man in LEIBNIZ ''':''' ''<span style="font-family: Times;"><big>‚Neue Abhandlungen über den menschlichen Verstand‘</big></span>'', <span style="color:#00B000">(1704)</span>‚ ''<span style="font-family: Times;"><big>Viertes Buch, Kapitel X ''':''' ‚Von unserer Erkenntnis des Daseins Gottes‘</big></span>'', Seite 475f. Hier der <span style="color:#00B000">[ kommentierte ]</span> Textausschnitt zum sog. ontologischen ‚Gottesbeweis‘''':''' ::<span style="color:#FF6000">»</span>''Folgendes etwa ist der Gang seines'' <span style="color:#00B000">[ d.h. ANSELMS, Erzbischof von Canterbury; 1033-1109, ]</span> ''Beweises ''':''' GOTT ist das Größte'', <span style="color:#00B000">[ ANSELM spricht vom biblischen GOTT des Glaubens, als ''':''' <span style="color:#FF6000">»''den, über dem ,Größeres‘'' | <span style="font-family: Times;"><big>‚maius‘</big></span> | ''nicht mehr gedacht werden kann''«</span> ]</span>, ''oder, wie DESCARTES es ausdrückt ''':''' das Vollkommenste der Wesen oder auch ein Wesen von äußerster Größe und Vollkommenheit'' ''':''' <span style="color:#00B000"> [ GÖDEL ''':''' </span><span style="color:#4C58FF">‚'''P'''‘</span> <span style="color:#00B000">:= ‚Perfektion‘, ‚positive Eigenschaft‘ ]</span>, ''das alle Grade derselben in sich schließt.''<span style="color:#00B000"> [ GÖDEL-Definition-1 ''':''' <span style="color:#4C58FF">— ‚'''Gx↔∀X(PX→Xx)'''‘ —</span> ''':''' <span style="color:#FF6000">»''Das Individuum'' <span style="color:#4C58FF">,'''x'''‘</span> ''ist genau dann GOTT'', <span style="color:#4C58FF">,'''G'''‘</span>, ''wenn'' <span style="color:#4C58FF">,'''x'''‘</span> ''alle Vollkommenheiten'', <span style="color:#4C58FF">,'''P'''‘</span>, ''in sich schließt''«</span>. Definition-1 bildet die traditionelle Vorstellung von GOTT ab. ]</span> ''Dies also ist der Begriff GOTTES.'' <span style="color:#00B000">[ Der Term <span style="color:#4C58FF">— ,'''G'''‘ —</span> steht hier für den biblischen ‚Begriff‘ <span style="color:#FF6000">„GOTT“</span> als ,Individuumname‘ '''!''' ]</span> ''Sehen wir nun, wie aus diesem Begriff das ‚Dasein’ folgt.''<span style="color:#00B000"> [ GÖDEL ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span> ''':''' <span style="color:#FF6000">»''GOTT ist notwendig aus sich ‚da‘''«</span> ''':''' Term :10:, 1. Hauptergebnis im 3. Beweisgang. ]</span> ''Es ist etwas <u>mehr</u>, ‚da‘ zu sein, als nicht ‚da‘ zu sein, oder auch das ‚Dasein‘ fügt der Größe oder der Vollkommenheit'' <span style="color:#00B000">[ GOTTES ]</span> ''einen Grad hinzu, und wie DESCARTES es ausspricht, das ‚Dasein‘ ist selbst eine Vollkommenheit.''<span style="color:#FF6000">«</span> <span style="color:#00B000">(Diesen Ausspruch DESCARTES übernimmt GÖDEL im Axiom-5 ''':''' <span style="color:#4C58FF"> — ‚'''PE'''<sub>not</sub>‘ —</span> ''':''' <span style="color:#FF6000">»''notwendige Existenz''</span> [ alias ‚Dasein GOTTES’ ] <span style="color:#FF6000">''ist eine positive Eigenschaft''</span> [ alias Vollkommenheit ]<span style="color:#FF6000">«</span>. Dem widerspricht KANT ''':''' <span style="color:#FF6000">„Existenz ist keine Eigenschaft“</span>, bzw. <span style="color:#FF6000">»''Sein ist kein reales Prädikat''«</span>. Das Axiom-5 ist daher nur dann ‚wahr‘, wenn ‚Wirklichsein‘ | <span style="color:#FF6000">„<span style="font-family: Times;"><big>ἐνέργεια οὖσα</big></span>“</span> | ‚enérgeia oúsa‘ | d.h. ‚Dasein‘ und ‚Wesen‘ | <span style="color:#FF6000">„<span style="font-family: Times;"><big>οὐσία</big></span>“</span> | ‚ousía‘ | — genauer ''':''' ‚Wesenseigenschaften’ —, ontologisch ,eins‘ sind, d.h. wenn <span style="color:#FF6000">„Existieren“</span> immer schon die <span style="color:#FF6000">„Wesenseigenschaft“</span> GOTTES ist. Was nach ARISTOTELES nur im <span style="color:#FF6000">„unbewegten Erstbeweger“</span> der Fall ist; bzw. mit LEIBNIZ ''':''' <span style="color:#FF6000">»''was das Privilegium der Gottheit allein ist''«</span> '''!''' Aus der ,methodologischen‘ ,Annahme‘ im 2. Beweisgang GÖDELS ''':''' <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span> ''':''' <span style="color:#FF6000">»''das'' <span style="color:#4C58FF">‚'''x'''‘</span> ''steht für den GOTT der Christen''«</span>, und mit Hilfe von Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span> ''':''' <span style="color:#FF6000">»''Göttlichkeit ist eine positive Eigenschaft''«</span>, bzw. <span style="color:#FF6000">»''GOTT ist perfekt''«</span>, mit Axiom-4 ''':''' <span style="color:#4C58FF">— ‚'''PX → □PX'''‘ —</span> ''':''' <span style="color:#FF6000">»''Positive Eigenschaften sind notwendig aus sich, — von Natur aus —, positiv''«</span>, mit Definition-2 ''':''' <span style="color:#4C58FF">— ‚'''X'''<sub>ess</sub>'''x ↔ Xx ∧ ∀Y(Yx→ □∀y(Xy→Yy))'''‘ —</span> ''':''' <span style="color:#FF6000">»''Zum Wesen gehören notwendig auch alle Konsequenzen aus einer Wesenseigenschaft''«</span>, und mit Axiom-1 und der Definition für GOTT, folgt nach einigen logischen Umformungen das GÖDEL-Theorem-2 ''':''' <span style="color:#4C58FF">— ‚'''Gx↔G'''<sub>ess</sub>'''x'''‘ —</span> ''':''' <span style="color:#FF6000">»''Das'' <span style="color:#4C58FF">‚'''x'''‘</span> ''ist genau dann der GOTT der Christen, wenn das Wesen dieses GOTTES sein eigenes Sein ist''«</span>. Dasein und Wesen sind im Unendlichen, GOTT <span style="color:#FF6000">„koinzident“</span> ,eins‘, übereinstimmend mit dem Theorem des ARISTOTELES. Mit diesem, im Kalkül <u>ohne</u> Axiom-5 ,regulär‘ (├ ) abgeleiteten Theorem, widerlegt er KANT für den individuellen Spezialfall <span style="color:#4C58FF">‚'''G'''‘</span> := <span style="color:#FF6000">„GOTT“</span>. Nachprüfbar im Anhang ''':''' im ‚ontologischen‘ Beweis für das Basis-Theorem-2. Somit ist Axiom-5 ,wahr‘, und KANT, der <span style="color:#FF6000">»''eine Abneigung gegen das Gebet hatte''«</span> und auch <span style="color:#FF6000">»''nie zu den sonntäglichen Kirchgängern zählte''«</span><ref>Uwe SCHULTZ ''':''' ‚''<span style="font-family: Times;"><big>Immanuel Kant</big></span>''‘, Rowohlt Monographie 50659, Seite 12</ref>, hat sich hier, im Bezug auf GOTT, geirrt. <span style="color:#4C58FF">„Theologie“</span>, als Wissenschaft von GOTT, war für KANT nie eine ernstzunehmende Option. Die <span style="color:#4C58FF">„Theologie“</span>, als Wissenschaft von GOTT, die natürlich immer auch verbunden sein muss mit der täglichen ,Erfahrung‘ einer Glaubens-Praxis, im Gebet und in den Gottesdienst-Feiern des <span style="color:#4C58FF">„Theologen“</span>, und die daraus entsteht, ist eine ziemlich ,ausgereifte‘ Disziplin. Es haben sich, durch Jahrhunderte hindurch, viele gläubige und auch gescheite Menschen, schon im Judentum, und dann im Christentum, und ebenfalls im Islam, darum bemüht.)</span> :: <span style="color:#FF6000">»</span>''Darum ist dieser Grad von Größe und Vollkommenheit oder auch diese Vollkommenheit, welche im ‚Dasein‘ besteht, in diesem höchsten, durchaus großen, ganz vollkommenen Wesen, denn sonst würde ihm ein Grad fehlen, was gegen seine Definition wäre. Und folglich ist dies höchste Wesen ‚da‘. Die Scholastiker, ohne selbst ihren'' <span style="font-family: Times;"><big>doctor angelicus</big></span> <span style="color:#00B000">[ := THOMAS von Aquin ]</span> ''auszunehmen, haben diesen Beweis verachtet'', <span style="color:#00B000">[ wie später auch Immanuel KANT ]</span>, ''und ihn als einen Paralogismus'' <span style="color:#00B000">[ := Fehlschluss ]</span> ''betrachtet, worin sie sehr unrecht gehabt haben; und DESCARTES, welcher die scholastische Philosophie im Kolleg der Jesuiten zu La Flèche lange genug studiert hatte, hat sehr recht gehabt, ihn wieder zu Ehren zu bringen. Es ist nicht ein Paralogismus, sondern ein unvollständiger Beweis'', <span style="color:#00B000">[ den GÖDEL vervollständigt hat ]</span>, ''der etwas voraussetzt, was man noch hätte beweisen sollen, um ihm mathematische Evidenz zu verleihen — nämlich, dass man dabei stillschweigend voraussetzt, diese Vorstellung des durchaus großen oder durchaus vollkommenen Wesens sei möglich und enthalte keinen Widerspruch'' <span style="color:#00B000">[ '''::''' <span style="color:#4C58FF">— '''◇''' —</span> '''::''' ,möglich‘, ,konsistent‘, ,denkbar‘; GÖDEL beweist im 1. Beweisgang aus Theorem-1 ''':''' <span style="color:#4C58FF">— ‚'''PX→◇∃xXx'''‘ —</span>, <span style="color:#FF6000">»''positive Eigenschaften'', <span style="color:#00B000">[ die allgemeinen Transzendentalien ]</span>, ''sind widerspruchsfrei''«</span>, mit Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, folgt Korollar-1 ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span>, <span style="color:#FF6000">»''GOTT ist widerspruchsfrei möglich''«</span> ]</span>. ''Und es ist schon etwas, dass man durch diese Bemerkung beweist ''':''' gesetzt, dass GOTT'' <span style="color:#00B000">['' <span style="color:#FF6000">»widerspruchsfrei«</span> '']</span> '',möglich‘ ist, so ‚ist‘ er'' <span style="color:#00B000">[ ,notwendig‘ '''::''' <span style="color:#4C58FF">— '''□''' —</span> '''::''' für jede mögliche Welt auch wirklich aus sich ‚da‘ ]</span>, ''was das Privilegium der Gottheit allein ist'' ''':''' <span style="color:#00B000">[ Im 3. Beweisgang, Theorem-3 ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx→□∃xGx'''‘ —</span> ''':''' ‚ANSELMS Prinzip‘ ''':''' <span style="color:#FF6000">»''Weil GOTT widerspruchsfrei ,möglich‘ ist, darum ist auch der Glaube widerspruchsfrei, der annimmt, dass GOTT aus sich ,notwendig‘ da ist''«</span>; mit Korollar-3 ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx ∧ □∀y(Gy→x=y)'''‘ —</span>, <span style="color:#FF6000">»''Es gibt notwendig nur einen einzigen GOTT''«</span>. Damit ist auch der Monotheïsmus bewiesen. ]</span> ''Man hat recht, die Möglichkeit eines jeden Wesens anzunehmen und vor allem die GOTTES, bis ein anderer das Gegenteil beweist''. <span style="color:#00B000">[ Das Gegenteil besagt, dass GOTT ,unmöglich‘ ist. Hier setzt der Möglichkeitsbeweis im GÖDEL-Kalkül an, und beweist, dass diese Aussage zu einem Widerspruch führt. ]</span> ''Somit gibt dieser metaphysische Beweis schon einen moralischen zwingenden Schluss ab, wonach wir dem gegenwärtigen Stande unserer Erkenntnisse zufolge urteilen müssen, dass GOTT ‚da‘ sei, und demgemäß handeln.'' <span style="color:#00B000">[ Aber nicht logisch zwingend '''!''' Denn die Interpretation <span style="color:#4C58FF">— ‚'''G'''‘ —</span> mit dem GOTT der Bibel, als ,methodologische‘ Kalkül-Prämisse, ist nicht zwingend, jedoch ,modal‘ möglich, <span style="color:#4C58FF">— '''◇''' —</span>, und im christlichen Glaubenskontext sinnvoll, was mit einer stimmigen <span style="color:#4C58FF">„theologischen“</span> Interpretation des GÖDEL-Kalküls gezeigt werden kann. Damit wäre dann auch die Frage beantwortet, ob das GÖDEL-System sich plausibel als eine Theorie von GOTT und seinen Eigenschaften interpretieren lässt, bzw. als eine <span style="color:#FF6000">»''axiomatische''«</span> <span style="color:#4C58FF">„Theologie“</span>, wie sie André FUHRMANN apostrophiert. Das <span style="color:#4C58FF">— ‚'''G'''‘ —</span> ist der ,Individuumname‘ für den GOTT der Bibel, — ,GOTT‘ groß geschrieben —, im monotheïstischen, christlichen Glaubenskontext, den auch LEIBNIZ teilt. Dann steht der ,Name‘ auch synonym für das ,existierende‘ Individuum, d.h. für dessen ,Existenz‘. ]</span> ''Es wäre aber doch zu wünschen, dass gescheite Männer'' <span style="color:#00B000">[ sic ! ]</span> ''den Beweis mit der Strenge einer mathematischen Evidenz vollendeten'', <span style="color:#00B000">[ was GÖDEL veranlasst hat, seine Version eines ‚ontologischen Beweises’ zu kreieren, dessen <span style="color:#FF6000">»''mathematische Evidenz''«</span> man heute mit Computerprogrammen<ref>siehe Fußnote 12</ref> schon nachgewiesen hat ]</span> ... <span style="color:#FF6000">«</span>. Für GÖDEL war dieser Text eine intellektuelle Herausforderung, und er hat sie angenommen. Das war für GÖDEL sicher keine Glaubensangelegenheit. GOTT hat es ja auch nicht nötig, ‚bewiesen‘ zu werden. Wer <span style="color:#4C58FF">— ‚'''G'''‘ —</span> z. B. mit dem sog. ‚Urknall‘ gleich setzt, macht die <span style="color:#FF6000">»''zufällige Struktur der Welt''«</span> im ‚Urknall‘, <span style="color:#00B000">(pantheistisch)</span> zu einem ,Gott‘, was GÖDEL dezidiert für sein Kalkül ausgeschlossen haben wollte. Kurt GÖDEL schreibt 1961 in einem Brief, in Anlehnung an den obigen Text ''':''' ::<span style="color:#FF6000">»...''ich glaube, schon heute dürfte es möglich sein, rein verstandesmäßig ''<span style="color:#00B000">[ sic '''!''' ]</span>, ''(ohne sich auf den Glauben an irgendeine Religion zu stützen) einzusehen, dass die theologische Weltanschauung'', <span style="color:#00B000">[ dass es GOTT gibt ]</span>, ''mit allen bekannten Tatsachen'', <span style="color:#00B000">[ z. B. mit den Maßstäben einer modernen Logik ]</span>, ''durchaus vereinbar ist. Das hat schon vor 250 Jahren der berühmte Philosoph und Mathematiker LEIBNIZ versucht''.«</span><ref>Zitiert nach SCHIMANOVICH-GALIDESCU, M.-E. ''':''' ‚''<span style="font-family: Times;"><big>Princeton–Wien 1946–1966. Briefe an die Mutter</big></span>''‘, in ‚''<span style="font-family: Times;"><big>Kurt Gödel – Leben und Werk</big></span>''‘, Hg. B.BULDT et alia, Wien (HÖLDER–PICHLER–TEMSKY), 2001, Band 1</ref> ===<div class="center"><span style="color:#660066">Die Interpretation des Kalküls</span></div>=== Wenn man sich das GÖDEL-Kalkül ansieht, wie es heute formalisiert vorliegt, stellt sich die Frage ''':''' <span style="color:#FF6000">„Lässt sich dieses System plausibel als eine Theorie von GOTT <span style="color:#00B000">(als eine ‚Rede von GOTT’ := <span style="color:#4C58FF">,Theologie’</span>)</span> und seiner Eigenschaften verstehen '''?''' “ — „Ist hier eine genuin <span style="color:#4C58FF">,theologische’</span> Interpretation möglich '''?''' “</span> Seine Herkunft aus der intellektuellen Auseinandersetzung des Logikers GÖDEL mit dem GOTT-gläubigen Philosophen LEIBNIZ und dem christlichen Theologen und Erzbischof ANSELM rechtfertigt diese Frage. Die <span style="color:#FF6000">„mathematische Evidenz“</span> des GÖDEL-Formalismus, <span style="color:#00B000">(im Anhang nachgestellt)</span>, ist allgemein anerkannt, <span style="color:#00B000">(Vorbehalte dagegen gibt es nur bei der Interpretation seiner Syntax, d.h. ob die Axiome und Definitionen, wie GÖDEL sie konzipiert hat, bzw. ob die Theoreme und Korollare, die aus diesen Axiomen ,regulär’ (├ ) abgeleitet werden, auch in unserer realen Welt ,wahr’ und ,annehmbar’ sind)</span>. Die <span style="color:#FF6000">„theologische Evidenz“</span> des GÖDEL-Systems wird durch eine ,Verankerung’ der Axiome und Definitionen in den <span style="color:#4C58FF">,theologisch’</span>-philosophischen Diskurs über GOTT evaluiert, der schon seit zweieinhalbtausend Jahren läuft. In diesen zweieinhalbtausend Jahren hat sich, — gegen ARISTOTELES und die antike Philosophie —, die Erkenntnis durchgesetzt, dass GOTT <span style="color:#FF6000">»''unabhängig''«</span> von der <span style="color:#FF6000">»''zufälligen''«</span> Raum-Zeit-Struktur unserer vergänglichen Welt ist. In meiner Darstellung des GÖDEL-Kalküls folge ich, <span style="color:#00B000">(im Unterschied zum Autographen GÖDELS, vom 10. Feb 1970)</span>, in der Axiom-Formulierung und -Nummerierung, in der Syntax, und in der Beweis-Struktur, der Arbeit von André FUHRMANN ''':''' ''<span style="font-family: Times;"><big>‚Existenz und Notwendigkeit. Kurt Gödels axiomatische Theologie‘</big></span>'' in ''<span style="font-family: Times;"><big>‚Logik in der Philosophie‘</big></span>'' Hg. SCHROEDER-HEISTER, SPOHN und OLSSON, 2005, Synchron, Heidelberg, Seite 349–374. <span style="color:#00B000">(Die tiefer gestellte Notation der spezifischen ,Eigenschaft‘ einer Eigenschaft ist meine Ergänzung zur formalen Syntax, z. B. ''':''' <span style="color:#4C58FF"> — ‚'''G'''<sub>ess</sub>'''x'''‘ — </span>, angeregt durch die indizierende Schreibweise GÖDELS ''':''' <span style="color:#4C58FF">— ,'''G''' Ess. '''x'''’ —</span>.)</span> Die Erkenntnisse zur Straffung und Präzisierung der GÖDEL-Syntax, <span style="color:#00B000">(besonders im Möglichkeitsbeweis)</span>, stammen aus der Arbeit von Günther J. WIRSCHING ''':''' ,''<span style="font-family: Times;"><big>Der Gödelsche Gottesbeweis</big></span>''‘, im Web <ref>https://edoc.ku.de/id/eprint/10243/1/OntBw.pdf</ref>. <span style="color:#00B000">(Auch der Hinweis auf AVICENNA kommt von WIRSCHING.)</span> Die Zitate von THOMAS von Aquin´s Stellungnahme zum Theorem ANSELMS, und von Georg Wilhelm Friedrich HEGEL zur Immanuel KANTS Ablehnung des Theorem ANSELMS, befinden sich in Franz SCHUPP, ,<span style="font-family: Times;"><big>''Geschichte der Philosophie im Überblick''</big></span>‘, Band 2 ‚<span style="font-family: Times;"><big>''Christliche Antike, Mittelalter''</big></span>‘, Hamburg 2003, Seite 168 und Seite 170. Meines Erachtens ist der entscheidende Ansatzpunkt einer <span style="color:#4C58FF">„theologischen“</span> Interpretation das GÖDEL-Axiom-5 ''':''' <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub>‘ —</span>, <span style="color:#FF6000">»''notwendige Existenz ist eine positive Eigenschaft''«</span>. ‚Frei‘ nach KANT ‚formuliere‘ ich ‚kurz‘ ''':''' <span style="color:#FF6000">„Existenz ist keine Eigenschaft“</span>. Hier die Positionen KANTS zum Thema ‚Existenz‘ und ‚Eigenschaften‘ ''':''' ::<span style="color:#FF6000">»</span>''… unbeschadet der wirklichen Existenz äußerer Dinge'', <span style="color:#00B000">[ kann man ]</span> ''von einer Menge ihrer Prädikate'', <span style="color:#00B000">[ d.h. Eigenschaften ],</span> ''sagen'' … ''':''' ''sie gehöreten nicht zu diesen ‚Dingen an sich selbst‘, sondern nur zu ihren Erscheinungen, und hätten außer unserer Vorstellung'' <span style="color:#00B000">[ ihrer, als ,wirklich‘ gedachten Erscheinung, ]</span> ''keine eigene Existenz, … weil ich finde, dass … '''alle Eigenschaften, die die Anschauung eines Körpers ausmachen''', bloß zu seiner Erscheinung gehören; denn die Existenz des Dinges, was erscheint, wird dadurch nicht … aufgehoben, sondern nur gezeigt, dass wir es'', <span style="color:#00B000">[ das Ding ]</span>, ''wie es ‚an sich selbst‘ sei'', <span style="color:#00B000">[ d.h. existiert ]</span>, ''durch Sinne gar nicht erkennen können''.<span style="color:#FF6000">«</span><ref>vgl. ‚''<span style="font-family: Times;"><big>Prolegomena zu einer jeden künftigen Metaphysik, die als Wissenschaft wird auftreten können</big></span>''‘, Seite 289; https://www.korpora.org/kant/aa04/289.html</ref> <span style="color:#00B000"><small>(Hervorhebung durch KANT.)</small> [ Seine Prädikate, d.h. Eigenschaften, jedoch können wir mit unseren Sinnen ,anschauen‘, aber nur in Kombination mit unserer Vorstellung ihrer, als ,wirklich‘ gedachten Erscheinung, vermittelt durch den sog. ,transzendentalen Schematismus‘ unserer Einbildungskraft ''':'''</span> <span style="color:#FF6000">»</span>''Eine verborgene Kunst in den Tiefen der menschlichen Seele''<span style="color:#FF6000">«</span>, <span style="color:#00B000">jedoch auch eines der ,dunkelsten‘ Kapitel in der K.d.r.V., bedingt durch KANTS Konzept von ,Wirklichkeit‘, bzw. ,Sein‘. ]</span> Mit anderen Worten, man kann die ‚Existenz‘, bzw. das ‚Sein‘ der Dinge, <span style="color:#00B000">(das ‚Ding an sich’ bei KANT)</span>, nicht unter dem Mikroskop finden. Die ‚Existenz‘ bzw. das ‚Sein‘ ist keine sinnlich registrierbare ‚Eigenschaft‘ z. B. des rekonstruierten ‚Stadt-Schlosses‘ in Berlin. <span style="color:#00B000">(‚Sein‘ ist kein reales ‚Prädikat‘.)</span> Dafür haben wir andere Fähigkeiten ''':''' Ich kann seine ‚Existenz‘ mit meinem Verstand einsehen, weil auch ich selbst ‚existiere‘. Seine ‚Ansicht‘, wie ‚gefällig‘ es ist, und auch weitere ‚Eigenschaften‘, die mir auffallen, kann ich mit einem Handy-Foto dokumentieren. Diese ‚Eigenschaften‘ sind nicht die Ursache, dass das ‚Berliner Schloss‘ existiert. Wohl aber die Rekonstruktion dieses Schlosses ist die ‚Ursache‘, dass es ,existiert‘, und jetzt so aussieht. Insofern ist ‚Existenz‘ keine ‚Eigenschaft‘, sondern die ‚Existenz‘ des Dinges ist die Voraussetzung, der ‚Grund‘, dass ich die ‚Eigenschaften‘ des Dinges mit meinen Sinnen feststellen kann. In einer Auseinandersetzung mit CARTESIUS schreibt KANT, philosophisch ‚tiefgründig‘ und logisch ‚exakt‘, über dessen <span style="color:#FF6000"><span style="font-family: Times;"><big>„Cogito, ergo sum“</big></span></span> ''':''' ::<span style="color:#FF6000">»</span>''Das ‚Ich denke‘ ist ein empirischer Satz, und hält den Satz ‚Ich existiere‘ in sich. Ich kann aber nicht sagen ''':''' ‚Alles, was denkt, existiert‘; denn da würde die Eigenschaft des Denkens'', <span style="color:#00B000">[ eine essentielle Eigenschaft ]</span>, ''alle Wesen, die sie besitzen, zu notwendigen'' <span style="color:#00B000">[ d.h. notwendig existierenden ]</span> ''Wesen machen''. <span style="color:#00B000">[ Was allein nur von GOTT ausgesagt werden kann; mit AVICENNA, als anerkannter ARISTOTELES-Kommentator ''':''' <span style="color:#FF6000">»''GOTT ist das einzige Sein, bei dem Essenz'' <span style="color:#00B000">[ ‚Wesenseigenschaften‘ ]</span> ''und Existenz'' <span style="color:#00B000">[ ‚Dasein‘ ]</span> ''nicht zu trennen sind und das daher notwendig an sich da ist''«, <span style="color:#00B000">— konform mit GÖDEL ''':'''</span> »''notwendige Existenz ist eine positive'' <span style="color:#00B000">[ essentielle ]</span> ''Eigenschaft''«</span> ].</span> ''Daher kann meine Existenz auch nicht aus dem Satz, ‚Ich denke‘, als'' <span style="color:#00B000">[ logisch ]</span> ''gefolgert angesehen werden, wie CARTESIUS dafür hielt (weil sonst der Obersatz : ‚Alles, was denkt, existiert‘, vorausgehen müsste), sondern ist mit ihm identisch.'' <span style="color:#00B000">[ Eine einfache Schlussfolgerung ''':''' meine ‚Existenz‘ ist auch nicht von meiner ‚Eigenschaft‘ Denken ‚verursacht‘. ,Existenz‘ ist nicht bloß ein ,Gedanke‘ von mir. ]</span><span style="color:#FF6000">«</span> <span style="color:#00B000">(Aus der Anmerkung 41 zu den ‚''<span style="font-family: Times;"><big>Paralogismen der reinen Vernunft</big></span>''‘, in ‚''<span style="font-family: Times;"><big>Kritik der reinen Vernunft</big></span>''‘, Seite 275,<ref>https://korpora.org/kant/aa03/275.html</ref> mit meinem Einschub des AVICENNA-Zitat aus Wikipedia.<ref>{{w|Avicenna#Metaphysik}}</ref>)</span> Mit anderen Worten ''':''' <span style="color:#FF6000">„Die Eigenschaft, dass ich denken kann, ist nicht die Ursache meiner ‚Existenz‘“</span>, sondern, <span style="color:#FF6000">„Die Liebe meiner Eltern und ihre Entscheidung füreinander ist die Ursache meiner ‚Existenz‘. Daher ‚bin’ ich. Und weil ich ein Mensch ‚bin‘, kann ich denken.“</span> Auch mit diesen Anmerkungen ist leicht einsehbar, dass ‚Existenz‘ keine ‚Eigenschaft‘ ist — außer bei GOTT. In GOTT ist ‚Dasein‘ die ‚Wesenseigenschaft‘ GOTTES, d.h. ‚Dasein‘ und ‚Wesen‘ sind in GOTT untrennbar verbunden; sind <span style="color:#FF6000">„koinzident“</span> ‚eins‘. Das ist die Einzigartigkeit im Wesen GOTTES, dass GOTT immer schon ‚da‘ ist. Die Frage nach dem ‚Wesen‘ GOTTES lautet ''':''' <span style="color:#FF6000">„Was bist du ? “</span>/<span style="color:#CC66FF">„Wer bist Du ? “</span> Antwort, Exodus 3,14 ''':''' <span style="color:#CC66FF">»''Ich bin der ‚Ich-Bin-Da‘'' <span style="color:#00B000">[ für euch und für immer ]</span>«.</span> Weil GOTT für uns immer schon ‚da‘ ist, — <span style="color:#CC66FF">„von Ewigkeit zu Ewigkeit“</span> —, hat GOTT es nicht nötig, ‚bewiesen‘ zu werden. <span style="color:#00B000">(In der Mathematik ist ein ‚Satz‘ erst dann ‚wahr‘ und ‚existent‘, wenn er bewiesen ist. Bei GOTT ist es jedoch nicht so ''':''' GOTTES ‚Existenz‘ ist nicht erst dann ‚wahr‘, wenn seine ‚Existenz‘ von uns ‚bewiesen‘ ist. Sein ‚Dasein‘ ist jedem unserer ‚Beweisversuche‘ immer schon voraus. Der Zugang zu GOTT ist nicht der ,Beweis‘, sondern der ,Glaube‘. Wer an GOTT glauben ,will‘, dem antwortet GOTT. Wer nicht an GOTT glauben ,will‘, dessen Entscheidung respektiert GOTT, und drängt sich nicht auf. Die Glaubens-Entscheidung hat jedoch für jeden Menschen eine existenzielle Konsequenz ''':''' <span style="color:#CC66FF">»''Wer glaubt und sich taufen lässt, wird gerettet; wer aber nicht glaubt'', <span style="color:#00B000">[ und diese Entscheidung auch im Augenblick der ,Wahrheit‘, im Tod, in der sog. ,Endentscheidung‘, nicht widerruft ]</span>, ''wird verurteilt werden''«,</span> <small>({{Bibel | Markus Evangelium |16|16|EU}})</small>. Das Urteil lautet ''':''' <span style="color:#CC66FF">»''zweiter Tod ''':''' der Feuersee''«</span>, <small>({{Bibel | Offenbarung |20|14f|EU}})</small>, ohne Berufungsmöglichkeit. <span style="color:#CC66FF">»''Ohne Glauben aber ist es unmöglich, Gott zu gefallen; denn wer zu Gott kommen will, muss glauben, dass er ist und dass er denen, die ihn suchen, ihren Lohn geben wird''«.</span> <small>({{Bibel | Hebräer Brief |11|6|LUT}})</small>)</span> Das GÖDEL-Axiom-5 ist m.E. der entscheidende Ansatzpunkt einer stimmigen <span style="color:#4C58FF">„theologischen“</span> Interpretation der GÖDEL-Axiomatik. ===<div class="center"><span style="color:#660066">Das Kalkül ist kein Existenz-Beweis für GOTT</span></div>=== Die allgemeine <span style="color:#FF6000">»''mathematische Evidenz''«</span> des GÖDEL-Formalismus, d.h. seine ‚Schlusskraft‘, ist von kompetenten Leuten<ref>„GÖDELS Argumentationskette ist nachweisbar korrekt – so viel hat der Computer nach Ansicht der Wissenschaftler Christoph BENZMÜLLER und Bruno WOLTZENLOGEL-PALEO nun gezeigt;“ vgl. https://www.fu-berlin.de/presse/informationen/fup/2013/fup_13_308/index.html</ref> schon festgestellt worden, <span style="color:#00B000">(im Anhang ‚nachrechenbar‘ mit den Regeln und Gesetzen einer modalen Prädikatenlogik 2. Stufe)</span>. Das GÖDEL-Kalkül ist jedoch kein ‚moderner‘<span style="color:#FF6000">„Existenz-Beweis“</span> für GOTT, wofür es gehalten oder meistens bezweifelt wird, sondern setzt, <span style="color:#00B000">(theoretisch methodisch)</span>, den <span style="color:#FF6000">„Glauben an die Existenz GOTTES“</span> schon voraus, ohne ihn zu hinterfragen. Das <span style="color:#FF6000">„Dasein“</span> bzw. die <span style="color:#FF6000">„Existenz“</span> GOTTES wird mit der Definition-1 für <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, bzw. mit dem Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ — </span>, im Kalkül ‚definitorisch‘ bzw. ‚axiomatisch‘ als Kalkül-,Annahme‘, als <span style="color:#FF6000">„Prämisse“</span>, eingeführt, unter der Voraussetzung, dass die ‚Eigenschaft‘ <span style="color:#4C58FF">‚'''G'''‘ := </span><span style="color:#FF6000">„Göttlichkeit“</span> <span style="color:#00B000">(Essenz)</span> und das <span style="color:#FF6000">„Dasein GOTTES“</span>, <span style="color:#4C58FF">— ‚'''G'''‘ —</span> <span style="color:#00B000">(Existenz)</span>, ontologisch ‚identisch‘, genauer ''':''' <span style="color:#FF6000">„koinzident“</span> sind, was GÖDEL im Axiom-5 definitiv für sein System vorschreibt ''':''' <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub>‘ — </span> ''':''' <span style="color:#FF6000">»''notwendige Existenz ist eine positive Eigenschaft''«</span>. Das <span style="color:#FF6000">„Dasein GOTTES“</span> ist faktisch äquivalent zur <span style="color:#FF6000">„notwendigen Existenz als GOTT“</span>; und <span style="color:#FF6000">„Göttlichkeit“</span> ist die <span style="color:#FF6000">„positive Eigenschaft in GOTT“</span>. Beides ist nach Axiom-5 ‚identisch‘, d.h. dem ‚Sein nach‘ dasselbe, und daher konvertierbar. Beide, <span style="color:#00B000">(sowohl die Essenz, als auch die Existenz GOTTES)</span>, werden daher auch mit demselben Term ''':''' <span style="color:#4C58FF">— ‚'''G'''‘ —</span> im Kalkül dargestellt. Der traditionelle, christliche ,GOTT-Glaube‘ wird zugleich mit diesem Term <span style="color:#4C58FF">‚'''G'''‘ := </span> <span style="color:#FF6000">„GOTT“ <span style="color:#00B000">|</span> „göttlich“</span>, im 2. Beweisgang, dem Basisbeweis, und im 3. Beweisgang für das Theorem ANSELMS, jeweils als ,methodologische‘ Prämisse :01: <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span> regulär <span style="color:#00B000">( ├ )</span> und explizit eingeführt ''':''' <span style="color:#FF6000">»''Das'' <span style="color:#4C58FF">,'''x'''‘</span> ''steht für den GOTT'' <span style="color:#4C58FF">‚'''G'''‘</span> ''der Christen''«</span>. Das ist die ,modal‘-frei gewählte, <span style="color:#4C58FF">„theologische“</span> Kalkül-,Annahme‘, <span style="color:#00B000">(als ,Argument-Einführung‘ := <span style="color:#4C58FF">‚'''AE:'''‘</span> )</span>, und wird dann mit Definition-1 näher ,bestimmt‘ ''':''' <span style="color:#4C58FF">— ‚'''Gx↔∀X(PX→Xx)'''‘ — </span> ''':''' <span style="color:#FF6000"> »''Das'' <span style="color:#4C58FF">,'''x'''‘</span> ''steht genau dann für ‚GOTT‘'' <span style="color:#00B000">|</span> ''‚göttlich‘'', <span style="color:#4C58FF">‚'''G'''‘</span>, ''wenn'' <span style="color:#4C58FF">,'''x'''‘</span> ''alle positiven Eigenschaften, bzw. Vollkommenheiten'', <span style="color:#4C58FF">‚'''PX'''‘</span>, ''hat''«</span>, entsprechend dem ‚Quelltext‘ bei LEIBNIZ. <span style="color:#00B000">(Das ,postulierte‘ Axiom-3 ''':''' <span style="color:#4C58FF"> — ‚'''PG'''‘ —</span>, wird standardmäßig gelesen als <span style="color:#FF6000">»''Göttlichkeit ist eine positive Eigenschaft''«</span>, hat aber auch die alternative Leseart ''':''' <span style="color:#FF6000">»''GOTT ist perfekt d.h. vollkommen''«</span>, was <span style="color:#4C58FF">„theologisch“</span> auch richtig ist; mit <span style="color:#4C58FF">‚'''P'''‘ </span> := <span style="color:#FF6000">„Perfektion“/„Vollkommenheit“</span> ist dann die Summe aller <span style="color:#FF6000">„positiven Eigenschaften“</span>.)</span> Mit Axiom-3, — in dieser <span style="color:#4C58FF">„theologischen“</span> Leseart —, ist der ‚Wenn-Satz‘ in Definition-1 ‚aufgelöst‘ ''':''' <span style="color:#FF6000">»''GOTT hat alle positiven Eigenschaften, weil er ‚perfekt‘ ist''«</span>. In Definition-3 ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x ↔ ∀X(X'''<sub>ess</sub>'''x →□∃yXy)'''‘ —</span>, wird die ,für uns‘ <span style="color:#FF6000">„notwendige Existenz“</span> ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>‘ —, </span> durch die ,aus sich‘ <span style="color:#FF6000">„notwendig“</span> <span style="color:#4C58FF">— '''□''' —</span> instanziierten <span style="color:#FF6000">„Wesenseigenschaften“</span>, <span style="color:#4C58FF">— ‚'''X'''<sub>ess</sub>‘ —</span>, <span style="color:#00B000">(als zu den Transzendentalia gehörig)</span>, bestimmt. Das GÖDEL-Kalkül setzt sowohl in Definition-3 als auch im Axiom-5 das Theorem des ARISTOTELES von der ontologischen ‚Identität‘, d.i. die Koinzidenz von <span style="color:#FF6000">„Dasein“</span>, <span style="color:#00B000">(Existenz)</span> und <span style="color:#FF6000">„Wesenseigenschaften“</span>, <span style="color:#00B000">(Essenz)</span> im prinzipiell <span style="color:#FF6000">„unbewegten Erstbewegenden“</span> voraus. Ohne diese Annahme bzw. ohne Axiom-5, würde das GÖDEL-Kalkül nicht ‚funktionieren‘. Das GÖDEL-Theorem-2.1 ''':''' <span style="color:#4C58FF">— ‚'''Gx→G'''<sub>ess</sub>'''x'''‘ —</span>, kann unter dieser Voraussetzung dann, <span style="color:#4C58FF">„theologisch“</span> richtig und eindeutig, so gelesen werden ''':''' <span style="color:#FF6000">»''Wenn'' <span style="color:#4C58FF">‚'''x'''‘</span> ''für GOTT'', <span style="color:#4C58FF">‚'''G'''‘</span>, ''als Individuum steht, dann ist GOTT-Sein'', <span style="color:#4C58FF">‚'''G'''‘</span>, <span style="color:#00B000">(,Existenz‘)</span>, ''das Wesen'', <span style="color:#4C58FF">—<sub>ess</sub>—, </span> <span style="color:#00B000">(,Essenz‘)</span>, ''GOTTES'' <span style="color:#4C58FF">‚'''x'''‘</span>«</span><ref>vgl. z.B. THOMAS von Aquin ''':''' ,''<span style="font-family: Times;"><big>De Ente et Essentia</big></span>''’, Kapitel 5 ''':''' „Deus, cuius essentia est ipsummet suum esse“ ''':''' „GOTT, dessen Wesen sein eigenes Sein ist“.</ref>, statt der <span style="color:#4C58FF">„theologisch“</span> unrichtigen Lesearten in der Wikipedia ''':''' <span style="color:#FF6000">»''Göttlich ist eine essentielle Eigenschaft jedes göttlichen Wesens''«</span><ref>{{w|Gottesbeweis#Kurt_Gödel|Gottesbeweis 2.1.2, Theorem 2}}; Version vom 10.09.2025</ref>, oder bei Christoph BENZMÜLLER et alia, im sog. ,Theorembeweiser‘ ''':''' <span style="color:#FF6000">»''Gottähnlich zu sein ist eine Essenz von jeder gottähnlichen Entität''«</span><ref>[https://www.fu-berlin.de/presse/informationen/fup/2013/fup_13_308/index.html ‚Gödels „Gottesbeweis“ bestätigt’, Theorem 2]</ref>, mit der suggestiven Annahme, es gäbe polytheïstisch, mehrere ,göttliche Wesen‘, bzw. ,gottähnliche Entitäten‘, was der monotheïstischen, abendländischen Tradition, bzw. dem <span style="color:#4C58FF">„theologischen“</span> Theorem von der ,Unvergleichlichkeit‘ und ,Einzigartigkeit‘ GOTTES widerspricht, das im GÖDEL-Kalkül mit Korollar-3 bestätigt wird. <span style="color:#00B000">(Die Interpretation <span style="color:#4C58FF">‚'''G'''‘ :=</span> <span style="color:#FF6000">„GOTT“</span>, als ,Individuumname‘, ist synonym zum <span style="color:#FF6000">„Dasein <span style="color:#00B000">(Existenz)</span> GOTTES“</span>, und äquivalent zur ‚positiven Eigenschaft‘ <span style="color:#FF6000">„Göttlichkeit“</span>, alias <span style="color:#FF6000">„göttlich zu sein“</span> = <span style="color:#FF6000">„GOTT zu sein“</span> = <span style="color:#FF6000">„GOTT-Sein“</span>; und mit dem GÖDEL-Term ''':''' <span style="color:#4C58FF">‚'''G'''<sub>ess</sub>‘ :=</span> <span style="color:#FF6000">„das Wesen <span style="color:#00B000">(Essenz)</span> GOTTES“</span>.)</span> <div class="center"><span style="color:#FF6000"><span style="color:#4C58FF">‚'''G'''‘ :=</span> „'''G'''öttlichkeit“ <span style="color:#4C58FF">↔</span> „'''G'''OTT“ <span style="color:#4C58FF">↔</span> „'''G'''OTT-Sein“</span> </div> Die Rechtfertigung für diese <span style="color:#4C58FF">„theologische“</span> Dreifach-Äquivalenz für <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, im GÖDEL-Kalkül, gibt Axiom-5 ''':''' <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub>‘ — </span> ''':''' <span style="color:#FF6000">»''die positive <u>Eigenschaft</u>'', <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, ''Göttlichkeit'', <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, ''äquivalent zu GOTT als Individuum-Name'', <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, ''ist auch äquivalent zum Dasein GOTTES'', <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, ''gleichbedeutend mit notwendiger <u>Existenz</u>'', <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>‘ —</span>'', dem <u>Sein</u> GOTTES für uns''«</span>. Hier hat GÖDEL explizit <span style="color:#FF6000">„Eigenschaft“</span> mit <span style="color:#FF6000">„Existenz“</span> bzw. <span style="color:#FF6000">„Sein“</span> gleichgesetzt; <span style="color:#00B000">(was jedoch nach KANT für alles, was in unserer Welt ‚existiert‘, bzw. für alles, was zur <span style="color:#FF6000">»''zufälligen Struktur der Welt''«</span> gehört, wie GÖDEL selbst sagt, in jedem Fall ‚unstatthaft‘ ist ''':''' <span style="color:#FF6000">„Existenz ist keine Eigenschaft“</span>, bzw. <span style="color:#FF6000">»''Sein ist kein reales Prädikat''«</span>)</span>. Jedoch wegen dieser ‚Gleichsetzung‘, die einzig und allein, der aristotelisch-<span style="color:#4C58FF">,theologischen‘</span> Tradition entsprechend, singulär nur in GOTT ‚statthaft‘ ist, kann jetzt die ‚positive Eigenschaft‘ <span style="color:#00B000">(Essenz)</span> <span style="color:#FF6000">„Göttlichkeit“</span> <span style="color:#00B000">(ontologisch korrekt)</span> gelesen werden als <span style="color:#FF6000">„das, was GOTT zu dem macht, ‚was‘ GOTT an sich selbst ist“</span>, nämlich zu seinem <span style="color:#FF6000">„GOTT-Sein“</span> <span style="color:#00B000">(Existenz)</span>, zu seinem <span style="color:#FF6000">„Dasein als GOTT“</span>; zur Tatsache, dass <span style="color:#FF6000">„GOTT GOTT ist“</span>, d.h. dass <span style="color:#FF6000">„GOTT als GOTT ‚da‘ ist“</span>. Das ist, <span style="color:#00B000">(und da folgt ARISTOTELES seinem Lehrer PLATO)</span>, nach traditioneller Auslegung, die übliche, ontologische Funktion des ‚Wesens‘<span style="color:#00B000"> | <span style="color:#FF6000">„<span style="font-family: Times;"><big>οὐσία</big></span>“</span> | ‚ousía‘ |</span> eines Seienden ''':''' es ‚macht‘ das Seiende zu dem, ‚was‘ es ist; es ist die ‚Ursache‘ dafür, dass das Seiende, das ‚ist‘, ‚was‘ es ist | ‚Was-Sein‘ — ‚Wesen‘. <span style="color:#00B000">(ARISTOTELES lokalisiert jedoch das ,Wesen‘ im Seienden, im Gegensatz zu PLATO, der das ,Wesen‘, — ,getrennt‘ vom Seienden —, in den allgemeinen ,Ideen‘ lokalisiert.)</span> Da aber in ‚Gott‘, <span style="color:#00B000">(dem <span style="color:#FF6000">„unbewegten, ‚unverursachten‘ Erstbeweger“</span>)</span>, Prozesshaftes, ‚Ursächliches‘ auszuschließen ist, ist die übliche prozesshafte, ‚ursächliche‘ Funktion von <span style="color:#FF6000">„<span style="font-family: Times;"><big>οὐσία</big></span>“</span><span style="color:#00B000"> | ‚ousía‘ |</span> ,Wesen‘ im <span style="color:#FF6000">„Erstbewegenden“</span> nach ARISTOTELES, sozusagen, schon ‚zum Abschluss‘ gekommen, schon ‚verwirklicht‘, — <span style="color:#FF6000">„<span style="font-family: Times;"><big>ἐν-έργεια οὖσα</big></span>“</span><span style="color:#00B000"> | ‚en-érgeia oúsa‘</span> —, schon ‚ins-Werk‘ gesetzt; <span style="color:#00B000">(<span style="color:#FF6000">„<span style="font-family: Times;"><big>τὸ ἔργον</big></span>“</span> | ‚to érgon‘ | ‚das Werk‘; <span style="color:#FF6000">„<span style="font-family: Times;"><big>ἐνέργεια</big></span>“</span> | ‚enérgeia‘ | ,Wirksamkeit‘, ,Wirklichkeit‘, ,Aktualität‘, ,Energie‘; und <span style="color:#FF6000">„<span style="font-family: Times;"><big>οὖσα</big></span>“</span> | ,oúsa‘ | feminin Nominativ Singular von <span style="color:#FF6000">„<span style="font-family: Times;"><big>ὤν</big></span>“</span> | ‚ón‘ | ‚seiend‘)</span>. Sein ,Wesen‘ ist im ,Dasein‘ vollendet, ist ,wirkliches, verwirklichendes Sein‘, ‚seiende Aktualität‘, <span style="color:#FF6000">„<span style="font-family: Times;"><big>actus purus</big></span>“</span> ''':''' sein Wesen ist ‚reine Tätigkeit‘, ,reine verwirklichende Gegenwärtigkeit‘, d.h. ,existent‘, ohne jede prozesshafte ‚Potenzialität‘. Aus der wichtigen und richtigen Erkenntnis, dass GOTT <span style="color:#FF6000">»''unabhängig von der zufälligen'' <span style="color:#00B000">[ Raum-Zeit-]</span>''Struktur unserer Welt''«</span> ist, folgt mit der ontologischen Identität von ,Dasein‘ und ,Wesen‘ in GOTT ''':''' Der zeitlos ewige GOTT ist <span style="color:#FF6000">»''notwendig aus sich'' <span style="color:#00B000">(von Natur aus)</span> ''immer schon da''«</span>, m.a.W. ist <span style="color:#FF6000">„zeitlos-ursprungslos“</span>. Insofern ist <span style="color:#FF6000">„Göttlichkeit“</span> die <span style="color:#FF6000">„Wesenseigenschaft“</span>, die im <span style="color:#FF6000">„Dasein GOTTES“</span> d.h. in <span style="color:#FF6000">„GOTT“</span>, schon ihr ‚Ziel‘, ihre Vollendung, — <span style="color:#FF6000">„Perfektion“</span>, Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, erreicht hat. GOTT ist <span style="color:#FF6000">»''vollkommen''«</span> und darum auch <span style="color:#FF6000">»''notwendig für uns immer schon ‚da‘''«</span> ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x'''‘ — </span>. GOTT ist in seinem ‚zeitlosen Wesen‘ <span style="color:#FF6000">„unverursacht“</span>, da er <span style="color:#FF6000">»''notwendig aus sich'' <span style="color:#00B000">(von Natur aus)</span> ''vollkommen''«</span> ist ''':''' <span style="color:#4C58FF">— ‚'''□PG'''‘ —</span>, <span style="color:#00B000">(eine Instanz von Axiom-4)</span>. <span style="color:#FF6000">„Vollkommenheit“</span>, <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, ist die <span style="color:#FF6000">„Wesenseigenschaft“</span>, bzw. das <span style="color:#FF6000">„Wesen GOTTES“</span> ''':''' <span style="color:#4C58FF"> — ‚'''G'''<sub>ess</sub>‘ —</span>. <span style="color:#FF6000">»''GOTT ist ,der‘ Vollkommenste''«</span> ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, d.h. <span style="color:#4C58FF">— ‚'''G'''‘ —</span> ''':''' <span style="color:#FF6000">»''GOTT ist die unbegrenzte Summe der unendlichen Vollkommenheiten''«</span>. Und zur absoluten <span style="color:#FF6000">„Vollkommenheit“</span> gehört <span style="color:#FF6000">„notwendig“</span> auch das <span style="color:#FF6000">„Existieren“</span> ''':''' <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub>‘ — </span>. <span style="color:#FF6000">„Notwendige Existenz“</span> gehört zu den ,ultimativen‘ Transzendentalia in GOTT, was GÖDEL mit Definition-3 ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x ↔ ∀X(X'''<sub>ess</sub>'''x →□∃yXy)'''‘ —</span>, syntaktisch formalisiert hat, wenn sowohl das <span style="color:#4C58FF">— ‚'''x'''‘ —</span>, als auch alle <span style="color:#4C58FF">— ‚'''∀y'''‘ —</span> im Kalkül, für den Dreifaltigen GOTT der Christen stehen, was dann im Korollar-3, mit der Identität, <span style="color:#4C58FF">— ‚'''x=y'''‘ —</span>, bzw. der Koinzidenz beider Individuum-Variablen, explizit gezeigt wird. Entscheidend für diese Interpretation des GÖDEL-Systems ist ''':''' nur unter der ,modal‘ notwendigen Voraussetzung der ontologischen ‚Identität‘ von <span style="color:#FF6000">„Sein“</span> und <span style="color:#FF6000">„Wesen“</span> in GOTT, Theorem-2 ''':''' <span style="color:#4C58FF"> — '''Gx↔G'''<sub>ess</sub>'''x'''‘ —</span>, bzw. der ‚Gleichsetzung‘, <span style="color:#00B000">(Koinzidenz)</span>, von <span style="color:#FF6000">„notwendiger Existenz“</span> mit den ‚positiven‘ Wesenseigenschaften, der <span style="color:#FF6000">„Essenz“</span> in GOTT, Axiom-5 ''':''' <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub>‘ —</span>, ‚funktioniert‘ die GÖDEL-Axiomatik '''!''' Diese ‚Identität‘, bzw. ,Koinzidenz‘ wird in ARISTOTELES, ‚''<span style="font-family: Times;"><big>Metaphysik</big></span>''‘, Buch XII 7, in einem Indizienbeweis erbracht, der mit der Methode der philosophischen Induktion zum Ergebnis kommt ''':''' ::<span style="color:#FF6000">» … ''es muss'' <span style="color:#00B000">[ notwendig ]</span> ''etwas geben, das, ohne selbst ‚bewegt‘'' <span style="color:#00B000">[ </span>''worden''<span style="color:#00B000"> ]</span> ''zu sein'', <span style="color:#00B000">[ ‚unentstanden‘ ]</span>, ''alles Übrige wie ein Geliebtes ‚bewegt‘'' <span style="color:#00B000">[ ‚entstehen lässt‘ ]</span>«</span>, das darum selbst ‚zugleich‘ <span style="color:#FF6000">„<span style="font-family: Times;"><big>αἴδιον καί οὐσία καί ἐνέργεια οὖσα</big></span>“ <span style="color:#00B000">| ,aídion kai ousía kai enérgeia oúsa‘ |</span> »<span style="color:#00B000">[ zeitlich-]</span>''ewig, sowohl <u>Wesen</u>'', <span style="color:#00B000">[ etwas Konkretes, Essentielles ]</span>, ''als auch seiende Wirksamkeit — ''<span style="color:#00B000">[ </span>„<span style="font-family: Times;"><big>actus purus</big></span>“, „reine Tätigkeit“<span style="color:#00B000"> ]</span> ''— verwirklichendes, wirkliches <u>Sein</u> ist'', <span style="color:#00B000">[ ein Existierendes, das alles Übrige ,zur Existenz‘ bringen kann ]</span> «</span>, bzw. <span style="color:#FF6000">„<span style="font-family: Times;"><big>ὀρεκτόν καί νοητόν</big></span>“ <span style="color:#00B000"> | ,orektón kai noêtón‘ | </span>»''das ersehnt und erkennbar ist''.«</span> <span style="color:#00B000">(''<span style="font-family: Times;"><big>vgl. ,Metaphysik</big></span>''‘ XII 7, 1072a,23 – 1072b,4)</span> Was <span style="color:#FF6000">»''alles Übrige''«</span> ,zur Existenz‘ bringen kann, bzw. ,verwirklichen‘ kann, ohne selbst ,entstanden‘ zu sein, muß auch selbst, als etwas Konkretes, Essentielles, immer schon ,existieren‘, bzw. ,wirklich sein‘. Die, daraus abgeleitete, und damit ,erkannte‘, ontologische ‚Identität‘, — ,Koinzidenz‘ —, von ‚Wesen‘ und ‚Sein‘, <span style="color:#00B000">(Ziel aller Sehnsucht und jedes Erkenntnisstrebens)</span>, <span style="color:#FF6000">»''ist das Privilegium der Gottheit allein''«</span> ''':''' mit Gottfried Wilhelm LEIBNIZ interpretiert, entsprechend einer adäquaten, aristotelisch-<span style="color:#4C58FF">,theologischen‘</span> Tradition. Dieses induktive, ‚ontologisch‘ a-posteriori Ergebnis aus der ‚Prinzipienforschung‘ des ARISTOTELES ist die metaphysische und logische Voraussetzung, dass GÖDEL seine Axiomatik im Kalkül des sog. ‚ontologischen Gottesbeweises‘ a-priori des ANSELM von Canterbury, und nach LEIBNIZ, deduktiv korrekt formulieren konnte; <span style="color:#00B000">(vgl. 3. Beweisgang)</span>. Angenommen, die Variable <span style="color:#4C58FF">— ‚'''x'''‘ —</span> steht für den <span style="color:#FF6000">„GOTT“</span>, <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, der Christen, <span style="color:#00B000">(siehe Anhang, Term :01: im 2. Beweisgang)</span>, dann ist, — auf Grund von diesem Beweisgang —, in unserer Welt ,wahr‘ und evident ''':''' sowohl die ‚positive Eigenschaft‘ <span style="color:#FF6000">»''Göttlichkeit''«</span>, <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, als auch das faktische <span style="color:#FF6000">»''‚Da‘-Sein'' <span style="color:#00B000">[ Existenz ]</span> ''GOTTES''«</span>, <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, ‚benennen‘, ontologisch ident, denselben Sachverhalt ''':''' nämlich das, was wir das <span style="color:#FF6000">»''Wesen'' <span style="color:#00B000">[ Essenz ]</span> ''GOTTES''«</span>, <span style="color:#4C58FF"> — ‚'''G'''<sub>ess</sub>‘ —</span>, nennen. <span style="color:#FF6000">»''Göttlichkeit'', bzw. ''GOTT-‚Sein‘ ist das Wesen GOTTES''«</span>, <span style="color:#00B000">(Theorem-2.1)</span>, und dann umgedreht und äquivalent ''':''' <span style="color:#FF6000">»''Das Wesen GOTTES ist sein ‚Da‘-Sein als GOTT'', bzw. ''seine Göttlichkeit''«</span>, <span style="color:#00B000">(Theorem-2.2)</span>, m.a.W. ''':''' <span style="color:#FF6000">»''GOTT ist wesentlich ‚grundlos‘'' <span style="color:#00B000">[ d.h. </span> ''notwendig aus sich''<span style="color:#00B000"> ]</span> ''‚da‘''«</span>. Das ist das Einzigartige im <span style="color:#FF6000">»''Wesen GOTTES''«</span> ''':''' GOTT ist ohne zeitlichen Anfang, zeitlos-ewig, für uns immer schon ‚da‘, und das ‚ist‘ sein <span style="color:#FF6000">»''Wesen''«</span>; vorausgesetzt, ,angenommen‘, man glaubt an GOTT ''':''' Term :01:. <span style="color:#00B000">(Der schon von GÖDEL indizierte Term <span style="color:#4C58FF"> — ‚'''G'''<sub>ess</sub>‘ — </span> ,expliziert‘ nur eine der drei Lesearten, die der Term <span style="color:#4C58FF"> — ‚'''G'''‘ — „theologisch“</span> ,impliziert‘.)</span> Theorem-2 hat somit die syntaktische Form einer Definition ''':''' <div class="center"><span style="color:#4C58FF"> — ‚'''Gx↔G'''<sub>ess</sub>'''x'''‘ — </span></div> Somit kann GOTT ‚explizit‘ <span style="color:#00B000">(aus einer bewiesenen Kalkül-Definition)</span> <span style="color:#4C58FF">„theologisch“</span> genauer ‚bestimmt‘ werden ''':''' <span style="color:#FF6000">»''GOTT ist gerade deswegen GOTT, weil sein überzeitlich-ewiges und an sich ‚grundloses‘'' <span style="color:#00B000">[ aber für uns notwendiges ]</span> ''Dasein'' <span style="color:#00B000">[ Existenz ]</span> ''als GOTT, ontologisch, — dem Sein nach —, identisch ist mit seinem persönlichen und für uns liebevollen Wesen'' <span style="color:#00B000">[ Essenz ]</span> ''als GOTT; diese Identität von Dasein und Wesen gilt einzig und allein nur bei GOTT.''«</span> Die philosophische Frage nach dem <span style="color:#FF6000">„Wesen GOTTES“</span> lautet, <span style="color:#00B000">(auf die Person bezogen)</span> ''':''' <span style="color:#FF6000">„Was bist du ? “</span> Sie ist äquivalent zur <span style="color:#4C58FF">,theologisch’</span>-biblischen Frage des MOSE ''':''' <span style="color:#CC66FF">„Wer bist Du ? “</span> Die bekannte Antwort des GOTTES-JHWH aus ‚Exodus 3,14‘, im Dornbusch, thematisiert das persönliche, für uns liebevolle und für immer notwendige <span style="color:#FF6000">„Dasein GOTTES“</span> ''':''' <span style="font-family: Times;"><big>‘אֶֽהְיֶ֖ה אֲשֶׁ֣ר אֶֽהְיֶ֑ה‚</big></span> <span style="color:#00B000">| ‚eh'jeh asher eh'jeh‘ |</span> <span style="color:#CC66FF">»''Ich bin der ‚Ich-Bin-Da‘'', <span style="color:#00B000">[ für euch und für immer ]</span>«.</span> Mit diesem Zitat aus der Bibel ist die GÖDEL-Axiomatik, sozusagen, <span style="color:#4C58FF">„theologisch“</span> ‚verifiziert‘. Sie hat einerseits im Theorem-2 ihren philosophischen ‚Abschluss’ erreicht, und andererseits damit formal-syntaktisch den ‚Anschluss‘ an eine allgemeine Basis-Glaubensaussage gefunden, die ‚an sich‘ für jeden CHRIST-gläubigen Menschen ‚selbstverständlich‘ ist. Was in der Metaphysik des ARISTOTELES das Ergebnis einer philosophischen ,Induktion‘ a-posteriori ist ''':''' <span style="color:#FF6000">„,Dasein‘ ist das ,Wesen‘ GOTTES“</span>, — <span style="color:#00B000">(das mit Theorem-2, auch ein Ergebnis der deduktiven GÖDEL-Axiomatik a-priori ist ''':''' die Beweisgrundlage für den Konsequenz-Teil im Theorem AMSELMS)</span>, — das ist in der Bibel die Grundüberzeugung jedes Menschen, der an GOTT glaubt ''':''' GOTT ist für uns immer schon <span style="color:#FF6000">„da“</span>, weil er uns liebt. Das ist das, <span style="color:#FF6000">„was“</span> GOTT für uns als GOTT ausmacht, — sein Wesen ''':''' <span style="color:#CC66FF">»''Wir haben die Liebe, die GOTT zu uns hat, erkannt und gläubig angenommen. GOTT ist Liebe, und wer in der Liebe bleibt, bleibt in GOTT und GOTT bleibt in ihm''«</span>, <small>({{Bibel | 1. Johannesbrief |4|16|EU}})</small>. Das eigentliche Ergebnis der GÖDEL-Axiomatik ist somit die ‚triviale‘ Erkenntnis, dass GOTT, <span style="color:#FF6000">„unverursacht“ <span style="color:#00B000">|</span> „grundlos“</span>, für uns immer schon ‚da‘ ist, — <span style="color:#CC66FF">„von Ewigkeit zu Ewigkeit“</span> —, vorausgesetzt <span style="color:#00B000">(‚angenommen‘)</span>, man ‚glaubt‘ an den zeitlos-ewigen GOTT ''':''' <span style="color:#CC66FF">»''Ehe die Berge geboren wurden, ehe die Erde entstand und das Weltall erschaffen wurden, bist du, o GOTT, von Ewigkeit zu Ewigkeit''«</span>, <small>({{Bibel | Psalm |90|2|LUT}})</small>. <span style="color:#00B000">(Der Glaube an die Zeitlosigkeit GOTTES ist mit der ‚Annahme‘ von Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span> ''':''' <span style="color:#FF6000">»''GOTT ist perfekt''«</span>, und der ‚Annahme‘ der Definition-1 für <span style="color:#4C58FF"> ‚'''Gx'''‘ := </span> den <span style="color:#FF6000">„GOTT der Christen“</span>, im Kalkül ‚implizit‘ schon eingeführt, da die Axiome und Definitionen, — nach GÖDEL —, nur dann <span style="color:#FF6000">»''wahr''«</span> sind, wenn sie <span style="color:#FF6000">»''unabhängig von der zufälligen''</span> [ Raum-Zeit-]<span style="color:#FF6000">''Struktur''«</span> unserer Welt sind. Das ,impliziert‘ auch, dass der GOTT von Axiom-3 und Definition-1 ebenfalls <span style="color:#FF6000">»''unabhängig''«</span> von Raum und Zeit, d.h. zeitlos-ewig ist '''!''' )</span> Wer an den GOTT der Bibel glaubt, kann sich von der ‚Vernünftigkeit‘ seines Glaubens mit Hilfe des sog. ,ontologischen‘ Gottesbeweises nach ANSELM von Canterbury, mit Kurt GÖDEL <span style="color:#FF6000">»''rein verstandesmäßig''«</span>, überzeugen. <span style="color:#00B000">(Das war auch die Absicht ANSEMS '''!''' )</span> Die Annahme, es sei ‚unmöglich‘, dass es GOTT gibt ''':''' <span style="color:#4C58FF">— ‚'''¬◇∃xGx'''‘ —</span>, <span style="color:#00B000">(dezidierter Atheismus)</span>, führt im GÖDEL-Kalkül formal zu einem logischen Widerspruch; vgl. z. B. ‚''<span style="font-family: Times;"><big>Gödels Möglichkeitsbeweis</big></span>''‘, in ‚''<span style="font-family: Times;"><big>Der Gödelsche Gottesbeweis</big></span>''‘, Seite 17, von Günther J. WIRSCHING; (https://edoc.ku.de/id/eprint/10243/1/OntBw.pdf), d.h. es ist also nicht ‚unmöglich‘, dass es GOTT gibt. Der GOTT-Glaube ist mit den Maßstäben einer modernen Logik <span style="color:#FF6000">»''durchaus vereinbar''«</span> und darum ,vernünftig‘. Damit steht fest ''':''' das GÖDEL-Kalkül ist kein moderner ‚Existenz-Beweis‘ für den GOTT der Bibel, sondern es setzt, <span style="color:#FF6000">»''rein verstandesmäßig''«</span>, ,methodologisch‘, den Glauben an die Existenz eines zeitlos-ewigen GOTTES voraus, der, — <span style="color:#FF6000">»''unabhängig von der zufälligen'' <span style="color:#00B000">[ Raum-Zeit-]</span>''Struktur unserer '' <span style="color:#00B000">[ vergänglichen ]</span> ''Welt''«</span> —, für uns immer schon ‚da‘ ist. Wenn aber einmal als fix ‚angenommen‘ worden ist, <span style="color:#00B000">(als Prämisse)</span>, dass es wahr ist, dass GOTT ‚existiert‘, dann ist natürlich die ‚Annahme‘, dass GOTT ‚nicht existiert‘, falsch. Aber sie ist auch ,unlogisch‘ und ,unsinnig‘, weil die Annahme ''':''' <span style="color:#FF6000">»''Es ist unmöglich, dass es einen GOTT gibt''«</span>, offensichtlich und eindeutig zu einem Widerspruch führt; was z. B. Günther J. WIRSCHING mit seiner Version des <span style="color:#00B000">(nicht umkehrbaren)</span> ‚Möglichkeitsbeweises‘ für ,GOTT‘, explizit vorexerziert hat; <span style="color:#00B000">( nachgestellt im Anhang ''':''' GÖDELS ‚Möglichkeitsbeweis‘ als ,Widerlegung‘ eines Nicht-GOTT-Glaubens; in Entsprechung zu Psalm 14,1 und Psalm 53,2 ''':''' <span style="color:#CC66FF">»''Der'' <span style="color:#00B000">[ ,unvernünftige‘ ]</span> ''Tor sagt in seinem Herzen ''':''' Es gibt keinen Gott. Sie handeln verderbt, handeln abscheulich; da ist keiner, der Gutes tut''«</span>. Historischer Hintergrund zu diesem Psalm-Text ''':''' Die Zerstörung des Tempels in Jerusalem 586 v.Ch. durch die Truppen des NEBUKADNEZAR II.)</span> Der Logiker GÖDEL hat in seinem System zum ,ontologischen Beweis‘ keine ‚formale Unentscheidbarkeit‘ <span style="color:#00B000">(Agnostizismus)</span> feststellen können, wie auf einem anderen Feld seiner Forschungsarbeiten. Das GÖDEL-Konsequenz-Teil von der ‚Notwendigkeit‘ GOTTES ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span>, <span style="color:#00B000">(die ‚Konsequenz’ aus dem ‚widerspruchsfreien‘ Korollar-1 ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —,</span>)</span> im ‚Theorem ANSELMS‘, ist <span style="color:#00B000">(im 3. Beweisgang, Term :10:)</span> dann auch eine weitere Explikation des Basis-Theorems-2 des Kalküls ''':''' <span style="color:#4C58FF"> — ‚'''Gx↔G'''<sub>ess</sub>'''x'''‘ — </span>, über die ‚ontologische Identität‘ vom <span style="color:#FF6000">„Dasein GOTTES“</span> ''':''' <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, mit seinem <span style="color:#FF6000">„Wesen“</span> ''':''' <span style="color:#4C58FF"> — <sub>ess</sub> —</span>, nach einem <span style="color:#4C58FF">[ Modus ponens ]</span>, dargestellt mit Term :09:. <span style="color:#00B000">(Die ontologische Identität von Dasein und Wesen in GOTT, ist die, für uns, <span style="color:#FF6000">„notwendige Präsenz <span style="color:#00B000">[ das Sein, <span style="color:#4C58FF">— ‚'''E'''‘ —</span>]</span> GOTTES“</span> ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x'''‘ —</span>, die äquivalent, bzw. koinzident ist zur <span style="color:#FF6000">„Vollkommenheit <span style="color:#00B000">[ das Wesen, <span style="color:#4C58FF">— ‚'''P'''‘ —</span>]</span> GOTTES“</span> ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>. Diese Identität von Sein und Wesen in GOTT ''':''' <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub> —</span>, bedeutet <span style="color:#4C58FF">,theologisch‘</span> konkret ''':''' die, für uns, notwendige Gegenwärtigkeit GOTTES, [ sein Dasein ], ist verwirklicht worden in der liebevollen [ Wesens-]Zuwendung GOTTES zu uns Menschen, in seiner Kindwerdung in Bethlehem, durch die Jungfrau MARIA ''':''' GOTTES Wesen ist ,Sein-mit-uns‘ ''':''' <span style="color:#CC66FF">»''sein Name'', <span style="color:#00B000">[ sein Wesen ]</span>, ''ist IMMANUEL, das heiß übersetzt ''':''' GOTT-ist-mit-uns''«, <small>({{Bibel | Matthäus Evangelium |1|23|EU}})</small></span>, der unsere Not-,wenden‘-wird, d.h. der uns und die Welt von der Korruption der Sünde und des Todes <span style="color:#4C58FF">,erlösen‘</span> will und wird; jedoch nicht ohne uns. Die <span style="color:#4C58FF">„Menschwerdung“</span> GOTTES in JESUS CHRISTUS, die <span style="color:#4C58FF">„Hypostatische Union“</span>, bzw. diese außergewöhnliche und einzigartige <span style="color:#FF6000">„Koinzidenz“</span> von GOTT und Mensch, ist der wirkliche und historische Beginn der <span style="color:#4C58FF">„Erlösung“</span> des Menschen und der Welt; vergegenwärtigt für jede Generation der Menschen in und durch die <span style="color:#4C58FF">„Kirche“</span> JESU CHRISTI.)</span> Die, von GÖDEL im 1. Beweisgang, als Prämissen schon vorausgesetzten und ,angenommenen‘ Perfektionen, bzw. Vollkommenheiten, <span style="color:#00B000">(das sind die allgemeinen ,Transzendentalia‘ für alles Nicht-Göttliche in der Welt)</span>, werden im ersten Teil des 2. Beweisganges, mit Term :13: <span style="color:#4C58FF">— ‚'''PY'''‘ —</span>, dann auch als <span style="color:#FF6000">„positive Wesenseigenschaften“</span>, <span style="color:#00B000">(als die ultimativen ,Transzendentalia‘)</span>, in GOTT ‚definitiv‘ <span style="color:#00B000">( ╞ )</span> bestätigt; <span style="color:#00B000">(siehe Anhang, 2. Beweisgang, Anmerkung-2)</span>. Im 3. Beweisgang ist das Basis-Theorem-2 die ,modal‘ notwendige, bzw. transzendentale, Voraussetzung, sowohl für das <span style="color:#FF6000">„an sich notwendige Dasein GOTTES“</span>, <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span>, im Term :10:, als auch für die <span style="color:#FF6000">„für uns notwendige Existenz GOTTES“</span>, <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>‘ —</span>, in den Ressourcen dieses Beweisganges ''':''' in der Definition-3, und im Axiom-5; <span style="color:#00B000">(das <span style="color:#4C58FF">— ‚'''E'''‘ —</span> wird nur GOTT zugeordnet; vgl. auch Anhang, 3. Beweisgang, Anmerkung-4)</span>. Dieses Basis-Theorem-2 ist auch zugleich die Antwort auf die Frage nach dem ‚Ursprung‘ GOTTES ''':''' GOTT ist <span style="color:#FF6000">„unverursacht“ <span style="color:#00B000">|</span> „ursprungslos“</span> ‚da‘, von <span style="color:#CC66FF">„Ewigkeit zu Ewigkeit“</span>, denn es ‚ist‘ sein <span style="color:#FF6000">„Wesen“</span>, <span style="color:#00B000">(überzeitlich-ewig)</span> für uns immer schon ‚da‘ zu sein. Weitere ‚Einzelheiten‘ über Wesen und Eigenschaften GOTTES gehören in die Mystik, bzw. in die <span style="color:#4C58FF">„Theologie“</span>. ===<div class="center"><span style="color:#660066">Die Bedeutung des Kalküls</span></div>=== <div class="center">Immanuel KANT und Kurt GÖDEL im ‚Dialog‘</div> KANT sagt ''':''' ::<span style="color:#FF6000">»</span>'''''Sein''' ist offenbar kein reales Prädikat''. ... ''Es ist bloß die'' <span style="color:#00B000">[ gedachte ]</span>'' Position'' <span style="color:#00B000">[ latinisiert, deutsch für ''':''' ,Setzung‘ ]</span> ''eines Dinges ... Nehme ich nun das Subjekt (Gott) mit allen seinen Prädikaten'' <span style="color:#00B000">[ d.h. Eigenschaften ]</span> ''(worunter auch die Allmacht gehört) zusammen, und sage ''':''' ‚'''Gott ist'''‘'', <span style="color:#00B000">[ ,GOTT existiert wirklich‘ ]</span>, ''oder ‚es ist ein Gott‘, so <u>setze</u> ich kein neues Prädikat'' <span style="color:#00B000">[ keine neue Eigenschaft ]</span> ''zum ‚Begriffe‘ von Gott ''':''''' <span style="color:#00B000">[ <span style="color:#0000FF; background-color:#FFFF00">‚Sein’ ist kein ‚reales Prädikat’ in GOTT</span>; ‚Existenz‘ ist in GOTT keine ‚Eigenschaft‘ ],</span> ... ''es kann daher zu dem Begriffe'', <span style="color:#00B000">[ ,GOTT‘ ]</span>, ''der bloß die'' <span style="color:#00B000">[ gedachte ]</span>'' Möglichkeit ausdrückt, darum, dass ich dessen Gegenstand'', <span style="color:#00B000">[ GOTT ]</span>, ''als schlechthin gegeben (durch den Ausdruck ''':''' er ist'', <span style="color:#00B000">[ GOTT ist wirklich ]</span>'' ) <u>denke</u>, nichts weiter hinzukommen.'' <span style="color:#00B000">[ Beides ist ,bloß gedacht‘ '''!''' ]</span> ''Und so enthält das Wirkliche nichts mehr als das bloß Mögliche. Hundert ‚wirkliche‘ Taler enthalten nicht das mindeste <u>mehr</u>, als hundert ‚mögliche‘. Denn, da diese den'' <span style="color:#00B000">[ gedachten ]</span>'' ‚Begriff‘, jene aber den Gegenstand und dessen'' <span style="color:#00B000">[ gedachte ]</span>'' Position an sich selbst bedeuten, so würde, im Fall dieser'', <span style="color:#00B000">[ die 100, als ,wirklich‘ bloß gedachten Taler ]</span>, ''<u>mehr</u> enthielte als jener,'' <span style="color:#00B000">[ als ihr ‚gedachter‘ Begriff im Verstand, wie ΑNSELM von Canterbury für GOTT, als ‚wirklich‘ Existierenden, argumentierte, …''so würde'' ]</span> ''mein ‚Begriff‘'' <span style="color:#00B000">[ die 100 im Verstand ‚gedachten‘ Taler ]</span> ''nicht den ganzen Gegenstand ausdrücken, und also auch <u>nicht der angemessene Begriff</u> von ihm sein. Aber in meinem Vermögenszustande ist <u>mehr</u> bei hundert ‚wirklichen‘ Talern, als bei dem bloßen Begriffe derselben'', <span style="color:#00B000">[ als bei 100 bloß ‚gedachten‘ Talern ]</span> ... <span style="color:#FF6000">«</span> <span style="color:#00B000"><ref>‚''<span style="font-family: Times;"><big>Kritik der reinen Vernunft</big></span>''‘, Seite 401; https://www.korpora.org/kant/aa03/401.html</ref></span>. GÖDEL würde darauf <span style="color:#00B000">(korrespondierend zur aristotelisch-<span style="color:#4C58FF">,theologischen‘</span> Tradition von der Identität von Sein und Wesen in GOTT)</span> antworten ''':''' ::<span style="color:#FF6000">»</span>Die <span style="color:#FF6000">„100 Taler“</span> sind der <span style="color:#FF6000">»''zufälligen Struktur der'' <span style="color:#00B000">[ vergänglichen ]</span> ''Welt''«</span> entnommen, und sind daher nicht mit GOTT vergleichbar, der, <span style="color:#FF6000">»''unabhängig von der zufälligen'' <span style="color:#00B000">[ Raum-Zeit-]</span>''Struktur''«</span> unserer Welt, <span style="color:#FF6000">„über“</span> dieser Welt steht. Einzig und allein nur von GOTT gilt ''':''' Der mit Dingen aus unserer Welt ,nicht vergleichbare‘ GOTT, <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, <span style="color:#FF6000">„existiert notwendig für uns“</span>, <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x'''‘ —</span>, und <span style="color:#FF6000">„notwendiges Existieren, <u>Sein</u>“</span> ,ist‘ eine <span style="color:#FF6000">„positive <u>Wesen</u>seigenschaft“</span> in GOTT, <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub>‘ —</span>, weil GOTT aus sich <span style="color:#FF6000">„vollkommen“ <span style="color:#00B000">|</span> „perfekt“</span> ist, <span style="color:#4C58FF">— ‚'''PG'''‘ —</span> ''':''' <span style="color:#0000FF; background-color:#FFFF00">‚Sein‘ ist in GOTT ein ‚reales Prädikat‘</span>; <span style="color:#00B000">(notwendige ‚Existenz’ ist eine positive ‚Wesenseigenschaft’ in GOTT)</span>, und nur bei GOTT '''!''' Zum zeitlos-ewigen GOTT der Christen ''':''' <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, <span style="color:#00B000">(als methodologische Kalkül-Prämisse)</span>, kann man sagen ''':''' Weil es, wegen Axiom-1 und Axiom-2, <span style="color:#FF6000">„widerspruchsfrei möglich"</span> ist, dass es GOTT gibt ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span>, darum ist GOTT auch das ‚einzige‘ <span style="color:#FF6000">„Wesen“</span>, <span style="color:#4C58FF">— ‚'''x'''‘ —</span>, von dem ein Christ sagen kann, dass es <span style="color:#FF6000">„notwendig aus sich“</span> ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span>, d.h. <span style="color:#FF6000">„grundlos“ <span style="color:#00B000">|</span> „unverursacht“</span>, für uns immer schon ‚da’ ist, und immer ,da’ sein wird; und zusätzlich gilt ''':''' Es gibt für jede mögliche Welt ‚nur‘ diesen einen GOTT ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx ∧ □∀y(Gy→x=y)'''‘ — </span><span style="color:#00B000">(Monotheïsmus, Korollar-3)</span>; vorausgesetzt, man geht von der ,Existenz’ dieses GOTTES aus, wobei diese Annahme für GÖDEL <span style="color:#FF6000">»''mit allen bekannten Tatsachen durchaus vereinbar''«</span> ist.<span style="color:#FF6000">«</span> Eine Beobachtung ''':''' KANT sagt, gleichsam als ,krönenden‘ Abschluss seiner Widerlegung des, — von ihm so genannten —, ,ontologischen Gottesbeweises‘ ''':''' <span style="color:#FF6000">»</span>''Aber in meinem Vermögenszustande ist <u>mehr</u> bei hundert ‚wirklichen‘ Talern, als bei dem bloßen Begriffe derselben, (d.i. ihrer Möglichkeit).''<span style="color:#FF6000">«</span> Diese Feststellung KANTS entspricht jedoch genau der Argumentation ANSELMS ''':''' GOTT <span style="color:#FF6000">„<span style="font-family: Times;"><big>esse et in re</big></span>“</span>, d.h. GOTT ,existiert auch in Wirklichkeit‘, <span style="color:#FF6000">„<span style="font-family: Times;"><big>quod maius est</big></span>“</span>, was <u>mehr</u> ist, als <span style="color:#FF6000">„<span style="font-family: Times;"><big>esse solo in intellectu</big></span>“</span>, als nur ein bloßer Begriff ,im Verstand zu sein‘. Der ,Mehr-Wert‘ ergibt sich in beiden Fällen, sowohl bei den Talern als auch bei GOTT, aus der ,Wirklichkeit‘ ihrer Existenz, im Gegensatz zur bloßen, <span style="color:#00B000">(im Begriff gedachten)</span>, ,Möglichkeit‘ ihrer Existenz, so dass, in jedem Fall, der ,Begriff‘ im Verstand ohne Abstriche <span style="color:#FF6000">»</span>''den ganzen Gegenstand ausdrückt''<span style="color:#FF6000">«</span>, und von diesem auch <span style="color:#FF6000">»</span>''der angemessene Begriff''<span style="color:#FF6000">«</span> ist. Alles andere wäre eine ,Lüge‘. Mit dieser ,Beobachtung‘ ist das implizit ,Widersprüchliche‘ in KANTS Argumentation aufgedeckt ''':''' Das Wirkliche in KANTS Vermögenszustande enthält <span style="color:#FF6000">,doch mehr‘</span> als das bloß Mögliche, konträr zu seiner vorigen Behauptung ''':''' <span style="color:#FF6000">»</span>''das Wirkliche''<span style="color:#FF6000">«</span> enthalte <span style="color:#FF6000">»'',nichts mehr‘</span> als das bloß Mögliche''<span style="color:#FF6000">«</span>. Diese Behauptung ist offensichtlich falsch. Das ist somit ein indirekter Beweis und damit eine Bestätigung für die analoge Argumentation ANSELMS aus dem Wiederspruch des Gegenteils, am Beispiel KANTS <span style="color:#FF6000">»</span>''Vermögenzustandes bei hundert wirklichen Talern''<span style="color:#FF6000">«</span>, in dem in Wirklichkeit <span style="color:#FF6000">,doch mehr‘</span> ist, <span style="color:#FF6000">»</span>''als bei dem bloßen Begriffe derselben''<span style="color:#FF6000">«</span>. <span style="color:#00B000">(Diese ,Beobachtung‘ ist zugleich auch das entscheidende Indiz dafür, dass das systembedingte Konzept KANTS von der ,Existenz‘, bzw. vom ,Sein‘ eines jeden Gegenstandes, als</span> <span style="color:#FF6000">»</span>''dessen bloße Position''<span style="color:#FF6000">«</span>, <span style="color:#00B000">d.i. als seine ,Setzung‘ bloß im- und durch den Verstand, ,falsch‘ ist, — d.h. im Klartext ''':''' für KANT ist das ,Sein‘ eines Gegenstandes bloß ein ,Gedanke‘ in uns, wenn er meint, dass uns ein Gegenstand erst dann wirklich ,gegeben‘ sei, wenn wir uns den</span> <span style="color:#FF6000">»</span>''Gegenstand als schlechthin gegeben (durch den Ausdruck : <u>er ist</u>) <u>denken</u>''<span style="color:#FF6000">«</span>, <span style="color:#00B000">was nur dem Irrtum einer falschen System-Konzeption geschuldet sein kann. Auf Grund dieser Konzeption ist das</span> <span style="color:#FF6000">»</span>''Ding, wie es an sich selbst ist''<span style="color:#FF6000">«</span>, <span style="color:#00B000">für KANT systembedingt weder ,anschaubar‘, noch ,erkennbar‘. Diese falsche Konzeption über die ,Existenz‘, bzw. das ,Sein‘ eines Dinges, als</span> <span style="color:#FF6000">»</span>''dessen bloße Position''<span style="color:#FF6000">«</span>, <span style="color:#00B000">ist für KANT letztendlich auch die Beweisgrundlage und Voraussetzung für seine Ablehnung des ontologischen Argumentes für GOTT im Theorem ANSELMS. Wenn das ,wirkliche‘ Sein eines Dinges nichts anderes ist, als</span> <span style="color:#FF6000">»</span>''dessen'' <span style="color:#00B000">[ bloß gedachte ]</span> ''Position''<span style="color:#FF6000">«</span>, <span style="color:#00B000">d.h. als seine ,mögliche‘ Setzung bloß im- und durch den Verstand, — das ist das, als ,wirklich‘ bloß nur ,gedachte‘ Ding —, dann</span> <span style="color:#FF6000">»</span>''enthält''<span style="color:#FF6000">«</span> <span style="color:#00B000">natürlich</span> <span style="color:#FF6000">»</span>''das Wirkliche''<span style="color:#00B000">, [ als die bloß gedachte Existenz ],</span> ''nichts mehr als das bloß Mögliche''<span style="color:#00B000">, [ als der gedachte Begriff ]<span style="color:#FF6000">«</span>, was offensichtlich unhaltbar ist. <span style="color:#4C58FF">[ Modus tollendo tollens ] </span> ''':''' Wenn die Konsequenz einer Wenn-Dann-Folgerung ,falsch‘ ist, dann ist auch ihre Voraussetzung, das System-Konzept KANTS, ,falsch‘ ''':''' d.i. seine ,Kopernikanische Wende‘ für die Metaphysik, soweit sie KANTS ,Sein’-Konzept betrifft. Korrekt und ,wahr‘ ist in jedem Fall ''':''' Das Wirkliche enthält <span style="color:#FF6000">,doch mehr‘</span> als das bloß Mögliche, und die Dinge ,existieren‘ schon immer unabhängig von unserem Denken. ,Existenz‘, das ,Sein‘, ist <span style="color:#FF6000">,doch mehr‘</span>, als bloß ein ,Gedanke‘ von uns.)</span> Somit ist die Argumentation KANTS gegen den ontologischen Beweis ANSELMS für GOTT ,falsch‘ und unhaltbar, weil sie auf der ,falschen‘ Voraussetzung beruht ''':''' die ,Existenz‘, bzw. das ,Sein‘ eines jeden ,Gegenstandes‘, — wie z. B. auch die Existenz bei GOTT —, sei bloß dessen gedachte ,Position‘ an sich selbst, d.h. bloß seine ,Setzung‘ im- und durch den Verstand. Damit ,macht‘ er GOTT außerdem zu einem ,Ding‘ unter den vielen ,Dingen‘ dieser Welt, und verkennt so, — wie vor ihm THOMAS von Aquin —, auch die Einzigartigkeit und Exklusivität GOTTES im Theorem ANSELMS. <div class="center">Die <span style="color:#FF6000">„Rede von GOTT“</span> in der philosophischen Tradition</div> Wenn man die philosophische Tradition der <span style="color:#FF6000">„Rede von GOTT“</span> im Lichte der Ergebnisse der <span style="color:#4C58FF">„axiomatischen Theologie“</span> GÖDELS liest, dann stellt sie sich am Beispiel bei ARISTOTELES, — AVICENNA, — ANSELM, und bei GÖDEL wie folgt dar ''':''' <span style="color:#FF6000">»''Das Erstbewegende,'' (<span style="font-family: Times;"><big>,πρῶτον κινοῦν‘</big></span>), ''das, ohne selbst ‚bewegt‘ zu sein'', (<span style="font-family: Times;"><big>,ἀκίνητον‘</big></span> <span style="color:#00B000">| ''unverursacht, ,entstehungslos‘'' |</span> ), ''alles Übrige wie ein Geliebtes ‚bewegt‘'', (<span style="font-family: Times;"><big>,κινεῖ δὴ ὡς ἐρώμενον‘</big></span> <span style="color:#00B000"> | ''-verursacht, ,entstehen‘ lässt'' |</span> ), ''ist sowohl'' <span style="color:#00B000">[ zeitlich-]</span>''ewiges ‚Wesen‘'', (<span style="font-family: Times;"><big>,ἀΐδιον καί οὐσία‘</big></span> <span style="color:#00B000">| ''‚Substanz‘'' |</span> ), ''als auch'' <span style="color:#00B000">[ zeitlich-]</span>''ewiges ‚wirksames, verwirklichendes Sein‘'', (<span style="font-family: Times;"><big>‚ἀΐδιον καί ἐνέργεια οὖσα‘ = ‚actus purus‘</big></span><span style="color:#00B000"> | '',reine Tätigkeit‘'' |</span> ), … ''ersehnt'', (<span style="font-family: Times;"><big>,ὀρεκτόν‘</big></span>), ''und erkennbar'', (<span style="font-family: Times;"><big>,νοητόν‘</big></span>), ... ''denn dies ist der ‚Gott‘'', (<span style="font-family: Times;"><big>,τοῦτο γὰρ ὁ θεός‘</big></span>), <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, ''der'' <span style="color:#00B000">[ zeitlich-]</span>''Ewige'', (<span style="font-family: Times;"><big>,ἀΐδιον‘</big></span>), — ''der Unvergleichliche'', (<span style="font-family: Times;"><big>,ἄριστον‘</big></span> <span style="color:#00B000">| ''‚der Beste‘'' |</span> ), — ''der Lebendige'', (<span style="font-family: Times;"><big>,ζῷον‘</big></span> <span style="color:#00B000">| ,''das Leben selbst‘'' |</span> ), — ... ''so sagen wir ja'', (<span style="font-family: Times;"><big>,φαμὲν δὴ‘</big></span>), — ...«</span> ''':''' <span style="color:#00B000">(ARISTOTELES — Grieche)</span>. Der ‚Begriff’ <span style="color:#FF6000">„GOTT“</span>, <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, als ,Individuumname‘, ist synonym mit <span style="color:#FF6000">„göttliches ‚Da-Sein’“</span>, das sowohl <span style="color:#FF6000">„aus sich vollkommen“</span>, als auch <span style="color:#FF6000">„notwendig für uns“</span> ‚da‘ ist; <span style="color:#00B000">(das ist das, an sich, vollkommene ‚Was-Sein‘ GOTTES ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ — </span>, das zugleich, für uns, das notwendige ‚Da-Sein‘ GOTTES ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x'''‘</span> — ist)</span>; <span style="color:#CC66FF">„von Ewigkeit zu Ewigkeit“</span>. Das ist der <u>angemessene Begriff</u> von GOTT, und gilt ‚nur‘ von GOTT. Weil GOTT <span style="color:#FF6000">„vollkommen“</span> ist, ist <span style="color:#FF6000">„Da-Sein“ <span style="color:#00B000">|</span> „GOTT-Sein“ <span style="color:#00B000">|</span> „Göttlichkeit“</span> das <span style="color:#FF6000">„Wesen“</span> GOTTES ''':''' <span style="color:#4C58FF">— ‚'''Gx↔G'''<sub>ess</sub>'''x'''‘ —</span>. Im Unendlichen, GOTT, sind <span style="color:#FF6000">„Essenz“</span> und <span style="color:#FF6000">„Existenz“</span> koinzident ,eins‘, und daher untrennbar, und <span style="color:#FF6000">»''darum ist GOTT das einzige ‚Sein’, das notwendig an sich ‚da‘ ist''«</span> ''':''' <span style="color:#00B000">(ABU ALI SINA alias AVICENNA — Muslim)</span>. Der <span style="color:#00B000">(gedachte)</span> ‚Eigenschafts-Begriff‘ <span style="color:#FF6000">„Vollkommenheit (die Größe) GOTTES“</span>, <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, <span style="color:#00B000">(‚Perfektion‘, die unbegrenzte Summe aller ‚positiven Eigenschaften‘ in GOTT)</span> schließt koinzident die ‚Eigenschaft’ <span style="color:#FF6000">„notwendige Existenz für uns“</span> mit ein ''':''' <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub>‘ —</span>. GOTT wäre nicht <span style="color:#FF6000">„vollkommen“</span>, wenn er nicht auch real für uns ‚da‘ wäre, wenn er nicht ,immer schon’ <span style="color:#FF6000">„existierte“</span>. ‚Sein’ ist <u>mehr</u> als ‚Nicht-Sein’. ,Sein’, bzw. ,Existenz’ gehört in GOTT zu den ,Transzendentalia’. Das sind die <span style="color:#00B000">(ultimativen)</span> ,Wesenseigenschaften’ in GOTT. Der unbegrenzt Unendliche, GOTT, ist daher das <span style="color:#FF6000">»''vollkommenste Wesen, über das nichts ,Größeres‘ d.h. Vollkommeneres <u>mehr</u> ‚gedacht‘ werden kann''«</span> ''':''' <span style="color:#00B000">(ANSELM von Canterbury — Christ)</span>. Der ‚Begriff’ <span style="color:#FF6000">„Perfektion GOTTES“</span>, <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, schließt koinzident das <span style="color:#FF6000">„notwendige Dasein GOTTES“</span>, <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x'''‘</span> —, für uns mit ein, ohne einen zeitlichen Anfang und ohne ein zeitliches Ende. Das ist die ‚zeitlos-ewige‘, an sich absolute, und <span style="color:#FF6000">„für uns notwendige Existenz GOTTES“</span> ''':''' <span style="color:#4C58FF">— ‚'''Gx→E'''<sub>not</sub>'''x'''‘ —</span> ''':''' <span style="color:#00B000">(Das ist ein ,regulär‘-mögliches Korollar im 2. Beweisgang aus Term :16: ''':''' <span style="color:#4C58FF">— ‚'''Gy→Yy'''‘ —</span>, mit der <span style="color:#4C58FF">[ Instanz(Y:=E<sub>not</sub>) ]</span>, und der <span style="color:#4C58FF">[ FUB(y:=x) ]</span>; und auch ein ,regulär‘-mögliches Korollar im 3. Beweisgang ''':''' entsprechend der <span style="color:#FF6000">„logischen Implikation”</span> :: <span style="color:#4C58FF">[├ A ├ B ╞ A → B ]</span> von Term :01: <span style="color:#4C58FF">— ‚'''Gx'''‘ — </span> und Term :05: <span style="color:#4C58FF"> —‚'''E'''<sub>not</sub>'''x'''‘ —</span> aus diesem Beweisgang. In Worten ''':''' <span style="color:#FF6000">»</span>''Angenommen, '' <span style="color:#4C58FF">— ‚'''x'''‘ —</span> ''steht für den GOTT der Christen'' ''':''' <span style="color:#4C58FF">— ‚'''G'''‘ — </span>, ''dann existiert dieser GOTT'', <span style="color:#4C58FF">— ‚'''x'''‘ —</span>, ''für uns notwendig'', <span style="color:#4C58FF">— <sub>not</sub> —</span> <span style="color:#FF6000">«</span>.)</span> Der Unendliche, GOTT, ist <span style="color:#FF6000">»''unabhängig von der zufälligen'' <span style="color:#00B000">[ Raum-Zeit-]</span>''Struktur''«</span> unserer ‚vergänglichen‘, ,endlichen‘ Welt, welche prinzipiell vom dreidimensionalen Raum und von der unwiederbringlich ‚vergehenden‘ Zeit geprägt ist. Der ,GOTT der Christen‘ ist <span style="color:#FF6000">»''unabhängig''«</span> von dieser <span style="color:#FF6600">„vergehenden Raum-Zeit“, — »''jenes rätselhafte und anscheinend in sich widersprüchliche Etwas''« <span style="color:#00B000">(GÖDEL)<ref>Kurt GÖDEL, ‚''<span style="font-family: Times;"><big>Eine Bemerkung über die Beziehungen zwischen der Relativitätstheorie und der idealistischen Philosophie‘</big></span>'', in P.A.SCHILPP (Hg.): ‚''<span style="font-family: Times;"><big>Albert Einstein, Philosoph und Naturforscher‘</big></span>'', Seite 406</ref></span> —</span>. Ohne ‚Zeit‘ gibt es keinen zeitlichen Unterschied zwischen ‚Ursache‘ und ‚Wirkung‘, <span style="color:#00B000">(beides ist zeitlos ,eins‘)</span>, und so ist der zeitlos-ewige GOTT, der <span style="color:#FF6000">»''notwendig aus sich ,existiert‘'' «</span> ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ — </span>, <span style="color:#FF6000">„unverursacht“ <span style="color:#00B000">|</span> „ursprungslos“</span> für uns immer schon ‚da‘ ''':''' <span style="color:#00B000">(GÖDEL — ohne religiöses Bekenntnis)</span>. Mit dem GÖDEL-Kalkül ist die <span style="color:#FF6000">„Rede von GOTT“</span> auf eine ‚vernünftige Basis‘ gestellt worden, und ist somit für jeden Menschen nachvollziehbar, <span style="color:#FF6000">»''rein verstandesmäßig, (ohne sich auf den Glauben an irgendeine Religion zu stützen)''«</span>, wie obige Beispiele zeigen. '''Resümee :''' Das GÖDEL-Kalkül zeigt mit <span style="color:#FF6000">»''mathematischer Evidenz''«</span>, was notwendig folgt, wenn die Axiome ‚wahr‘ sind, <span style="color:#00B000">(die Axiome bilden formal-syntaktisch <span style="color:#FF6000">»''die theologische Weltanschauung''«</span> ab)</span>, unter der Voraussetzung, dass die Axiome <span style="color:#FF6000">»''unabhängig von der zufälligen'' <span style="color:#00B000">[ Raum-Zeit-]</span>'' Struktur''«</span> unserer Welt sind. Die ,Verifikation‘ der Axiome und Definitionen von GOTT und seiner Vollkommenheiten gelingt GÖDEL, — entsprechend seiner Unabhängigkeits-Bedingung —, durch den Aufweis ihrer Widerspruchsfreiheit ''':''' sie sind somit ,wahr‘ und, — im Kontext einer <span style="color:#FF6000">»''theologischen Weltanschauung''«</span> —, auch ,annehmbar‘ in unserer ,realen‘ Welt ''':''' <span style="color:#00B000">(siehe Anhang, 2. Beweisgang und Anmerkung-2)</span>. Er vermeidet damit den Fehler, der immer wieder im Diskurs über Gottesbeweise gemacht wird ''':''' GOTT mit seinen Geschöpfen zu vergleichen. Diese logisch-philosophische Rede von GOTT <span style="color:#00B000">(<span style="color:#FF6000">»''ohne sich auf den Glauben an irgendeine Religion zu stützen''«</span>)</span> hat eine <u>mehr</u> als zweitausendjährige Tradition hinter sich. Der <span style="color:#FF6000">„100-Taler-Gott“</span> des Philosophen KANT, hat heute, nachdem der Logiker und Systemtheoretiker GÖDEL sein System vorgelegt hat, an ‚Strahlkraft‘ verloren. Kurt GÖDEL ''':''' ::<span style="color:#FF6000">» ''Die theologische Weltanschauung'', <span style="color:#00B000">[ dass GOTT für uns immer schon ‚da‘ ist ]</span>, ''ist rein verstandesmäßig mit allen bekannten Tatsachen durchaus vereinbar'';«</span> <span style="color:#00B000">[ d.h. sie ist das ,Resultat‘ der, — vom Glauben geleiteten —, ‚theoretischen Vernunft‘, alias ‚reinen Vernunft‘, und nicht bloß das ‚Postulat‘ einer ‚praktischen Vernunft‘, wie KANT meint ]. <span style="color:#FF6000">»''Der'' <span style="color:#00B000">[ christliche ]</span> ''Glaube ist die ‚Pupille‘ im ‚Auge‘ unseres Verstandes.''«</span> (Heilige KATHARINA von Siena, Lehrerin der Kirche, Patronin Europas<ref>vgl. <span style="font-family: Times;"><big>''Gebet 7 ‚Für die neuen Kardinäle‘, Rom, 21. Dezember 1378,''</big></span> aus <span style="font-family: Times;"><big>''Caterina von Siena ,Die Gebete‘.''</big></span> Kleinhain 2019, online: https://caterina.at/werke/gebete/gebete-detailansicht/gebet-7.html</ref> )</span> Der sonst so rationale KANT, hier doch etwas emotionell, <span style="color:#00B000">(als wolle er die Ergebnisse im GÖDEL-Kalkül nicht wahr haben, die belegen, dass er sich bei GOTT geirrt, und die Funktion des christlichen Glaubens für die Philosophie falsch eingeschätzt hat)</span> ''':''' ::<span style="color:#FF6000">»</span> ''Es war etwas ganz Unnatürliches und eine bloße Neuerung des Schulwitzes, aus einer ganz willkürlich entworfenen Idee das Dasein des ihr entsprechenden Gegenstandes selbst ausklauben zu wollen''<ref>vgl. ‚''<span style="font-family: Times;"><big>Kritik der reinen Vernunft</big></span>''‘, Seite 403. https://www.korpora.org/kant/aa03/403.html</ref>.<span style="color:#FF6000">«</span> Für KANT, für die Scholastiker, <span style="color:#00B000">(und auch für uns)</span>, ist es natürlich ‚logisch‘, dass aus einem als ‚möglich’ gedachten Begriff, <span style="color:#FF6000">»</span>''aus einer ganz willkürlich entworfenen Idee''<span style="color:#FF6000">«</span>, keine Existenzaussage abgeleitet werden kann. <span style="color:#00B000">(Aus dem bloß gedachten Begriff ,goldene Berge‘ folgt natürlich nicht, dass es solche in Wirklichkeit auch gibt.)</span> In der philosophisch-<span style="color:#4C58FF">,theologischen’</span> Tradition, die von ARISTOTELES herkommt, ist der Begriff <span style="color:#FF6000">»''GOTT''«</span> jedoch von allen anderen Begriffen so verschieden, so dass für GOTT diese Logik KANTS nicht mehr gilt. GOTT ist ,unvergleichlich‘ und ,einzigartig‘. Dazu der Kommentar von HEGEL ''':''' ::<span style="color:#FF6000">»''Wenn KANT sagt, man könne aus dem Begriff'' <span style="color:#00B000">[ ‚GOTT‘ ]</span> ''die Realität nicht ,herausklauben‘, so ist da der Begriff als endlich gefasst''.« <span style="color:#00B000">[ In der Endlichkeit unserer Welt trifft die Logik KANTS zu, dass dem ‚Begriff‘ nicht ,notwendig‘ das ‚Sein‘ folgt, denn es gibt in ihr die ,Lüge‘, die das ,Wirklich-Sein‘ im Begriff bloß behauptet, ohne dass es ,in Wirklichkeit‘ zutrifft, was sie behauptet. Es gilt hier nach KANT ''':''' »''Sein ist kein reales Prädikat''«. Somit ist ]</span> »''...der Begriff ohne'' <span style="color:#00B000">[ reales ]</span> ''Sein ein Einseitiges und Unwahres, und ebenso das Sein, in dem kein Begriff ist'', <span style="color:#00B000">[ ist ]</span> ''das begrifflose Sein,'' <span style="color:#00B000">[ d.i. das relative ,Noch-Nicht-Begriffene‘ ]</span>.'' Dieser Gegensatz, der in die Endlichkeit fällt'' <span style="color:#00B000">[ im Endlichen zutrifft ]</span>, ''kann bei dem Unendlichen, GOTT, gar nicht statthaben''<ref>Georg Wilhelm Friedrich HEGEL, ‚<span style="font-family: Times;"><big>''Ausführungen des ontologischen Beweises''</big></span>‘ in den ‚<span style="font-family: Times;"><big>''Vorlesungen über die Philosophie der Religion vom Jahr 1831''</big></span>‘ . Hamburg 1966, Seiten 175 bzw. 174</ref>; <span style="color:#00B000">[ denn ,Begriff‘, bzw. ,Denken‘ und ,Sein‘ sind in dem Unendlichen, GOTT, untrennbar und real immer dasselbe. Auf Grund dieser ontologischen Identität ,personifiziert‘ und ,repräsentiert‘ GOTT die ,Wahrheit‘ ''':''' GOTT ist die ,Wahrheit‘. In GOTT, dem <span style="color:#FF6000">„Schöpfer der Welt“</span>, folgt dem ,Begriff‘ immer ,notwendig‘ das ,Sein‘ ''':''' <span style="color:#CC66FF">»''GOTT sprach ''':''' Es werde ,Licht‘. Und es wurde Licht''«, <small>{{Bibel | Genesis |1|3|EU}}</small>;</span> oder auch ''':''' <span style="color:#CC66FF">»''Der Herr sprach, und sogleich geschah es; er gebot, und alles war da''«,</span> <small>{{Bibel | Psalm |33|9|EU}}</small>.]</span>«</span> Das Entscheidende bei der <span style="color:#4C58FF">„theologischen“</span> Interpretation des GÖDEL-Kalküls ist, dass der <span style="color:#00B000">(Begriff)</span> GOTT der Christen ''':''' <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, nicht auf die Ebene seiner ,endlichen‘ Geschöpfe und unserer Welt gestellt wird, <span style="color:#00B000">(d.i. das ‚Universum‘ im ,Urknall‘, die ‚100-Taler‘, ein ‚Tsunami‘, auch ,einfache Modelle‘ von unserer Welt, etc.)</span>, und damit verglichen wird, sondern, dass der GOTT der Christen in seiner Einzigartigkeit und Besonderheit als <span style="color:#FF6000">»''der Unendliche''«</span> belassen und als <span style="color:#FF6000">»''unabhängig von der zufälligen'' <span style="color:#00B000">[ Raum-Zeit-]</span>''Struktur''«</span> unserer vergänglichen Welt, — als <span style="color:#FF6000">»''der Unvergleichliche''«</span> —, verstanden wird. <span style="color:#00B000">(Alle Kritiken des sog. ,ontologischen‘ Gottesbeweises übersehen die Einzigartigkeit und Besonderheit des <span style="color:#FF6000">»''Unendlichen''«</span>, und/oder wollen diese nicht ,wahr‘ haben.)</span> Auch THOMAS von Aquin ,verortet‘ den GOTT ANSELMS, — in seiner Kritik an dessen Theorem —, irrtümlich unter die ,Dinge‘ der uns umgebenden ,Natur‘, wenn er sagt ''':''' GOTT <span style="color:#FF6000">„<span style="font-family: Times;"><big>esse in rerum natura</big></span>“</span>, d.h. wörtlich, dass der GOTT ANSELMS <span style="color:#FF6000">»</span>''in der Natur der Dinge'' <span style="color:#00B000">(unserer Welt)</span> ''existiert''<span style="color:#FF6000">«</span>, und verkennt somit, — wie nach ihm auch KANT —, die ,Unvergleichlichkeit‘ GOTTES, <span style="color:#00B000">(vgl. STh I q.2 a.1 ad 2<ref>„Deus … illud quo maius cogitari non potest; non tamen propter hoc sequitur quod intelligat id quod significatur per nomen, esse in rerum natura; sed in apprehensione intellectus tantum.“ ——— »''GOTT ist'' (nach ANSELM) ''der, über den Größeres nicht mehr gedacht werden kann. Aber nicht deswegen, weil er'', (der Narr von Psalm 14.1, den ANSELM zitiert), ''das versteht, was durch diesen Namen,'' (d.h. mit dem Begriff ,GOTT‘, als der ,Größte‘, im Theorem ANSELMS), ''bezeichnet wird, folgt daraus'', (wie ANSELM meint), ''dass er auch versteht, dass er'', (der GOTT ANSELMS), ''auch in der ,Natur‘ der Dinge'' (unserer Welt) ''existiert''; <span style="color:#00B000">[ was ANSELM so nie gesagt hat ]</span>. ''Daraus folgt nur, dass er'', (als ,GOTT‘), ''bloß in der Auffassung seines Verstandes'', (d.h. nur im Denken des Narren als ,Begriff‘), ''existiert.''« ——— Hier ,verortet‘ THOMAS einerseits den unendlichen GOTT, von dem das Theorem ANSELMS spricht, irrtümlich unter die endlichen Dinge der uns umgebenden ,Natur‘, was sachlich dem theologischen Theorem der Unvergleichlichkeit GOTTES widerspricht, der nicht unter die Dinge unserer Welt eingereiht werden darf. Anderseits verliert er dadurch auch den ,Blick‘ für die Außerordentlichkeit und Besonderheit GOTTES, dessen Natur völlig verschieden und unabhängig von der ,Natur‘ unserer raum-zeitlichen Welt ist. GÖDEL beweist jedoch, mit ANSELM, weil es notwendig, ohne Widerspruch, (»''bloß in der Auffassung unseres Verstandes''«), möglich ist, dass GOTT existiert, ist es korrekt, daraus auch mit Notwendigkeit zu folgern, dass der Glaube des Erzbischofs ANSELM, und der Glaube seiner Anvertrauten, von der Wirklichkeit GOTTES, widerspruchsfrei, logisch richtig, und damit sinnvoll ist; denn Möglichkeit und Wirklichkeit sind in GOTT koinzident ,eins‘. Das ist das Privilegium GOTTES allein, der einzigartig und unvergleichlich ist. Damit zeigt er auf, dass THOMAS die Unvergleichlichkeit und Einzigartigkeit GOTTES in seinem Vorhalt nicht bedacht hat; und außerdem ANSELM missverstanden hat.</ref>)</span>; jedenfalls hier in der Auseinandersetzung mit ANSELM. Dagegen spricht ANSELM im ,''<span style="font-family: Times;"><big>Proslogion</big></span>''‘, Seite 85f, nur von einem <span style="color:#FF6000">„<span style="font-family: Times;"><big>esse et in re</big></span>“</span> GOTTES, d.h. dass GOTT ,auch in Wirklichkeit existiert‘, <span style="color:#FF6000">„<span style="font-family: Times;"><big>quod maius est</big></span>“</span>, was ,größer‘, bzw. ,mehr‘ ist, als <span style="color:#FF6000">„<span style="font-family: Times;"><big>esse solo in intellectu</big></span>“</span>, als nur ,im Verstand zu sein‘; wobei die ,zeitlose-überzeitliche‘ Wirklichkeit, <span style="color:#00B000">(Natur)</span>, GOTTES jedoch völlig verschieden und <span style="color:#FF6000">»''unabhängig von der zufälligen''«</span> Wirklichkeit <span style="color:#00B000">(die ,Natur‘)</span> der ,raum-zeitlichen‘ Welt der Dinge ist. Daher ist sie mit dieser auch nicht vergleichbar. GOTT ist <span style="color:#FF6000">„vollkommen“</span> und alle <span style="color:#FF6000">„Vollkommenheiten“</span> in GOTT, <span style="color:#00B000">(die ultimativen ,Transzendentalia‘)</span>, sind koinzident ,eins‘, — ,fallen <span style="color:#FF6000">„notwendig“</span> perspektivisch in eins zusammen‘, und sind daher konvertierbar. Darum ist auch die Wirklichkeit, <span style="color:#00B000">(Natur)</span>, GOTTES ,einzigartig‘ und ,unvergleichlich‘. Mit Korollar-3 ist die Exklusivität und Außerordentlichkeit GOTTES definitiv im Kalkül ,bewiesen‘ <span style="color:#00B000">( ╞ )</span>. Der abendländische Monotheïsmus ist somit eine ,logische‘ Konsequenz aus den GÖDEL-Axiomen. <span style="color:#00B000">(Das <span style="color:#4C58FF">„theologische“</span> Theorem von der ,Einzigartigkeit‘ und Exklusivität GOTTES, d.h. hier im Kontext ''':''' die exklusive Einheit von GOTT und Mensch in JESUS CHRISTUS; von Vater, Sohn und Geist im <span style="color:#4C58FF">„Dreifaltigen“</span>; von Essenz und Existenz, von Begriff und Sein, von Ursache und Wirkung, von Subjekt und Objekt, von Möglichkeit und Wirklichkeit, und die unbegrenzte Summeneinheit und Koinzidenz der unendlichen Transzendentalien in GOTT, ist, — mit HEGEL —, die Voraussetzung und Bedingung jeder Philosophie ''':''' <span style="color:#FF6000">»''Die Einheit muss am Anfang der Philosophie stehen''«</span>; und ist zugleich auch ihr gesuchtes und bewiesenes Endergebnis und Ziel ''':''' <span style="color:#FF6000">»''Diese Einheit muss auch das Resultat der Philosophie sein''«</span><ref>https://hegel-system.de/de/gottesbeweis.htm#hegels-kritik-an-kant</ref>, was hier im GÖDEL-Kalkül ,logisch‘ mit Korollar-3 verifiziert wird ''':''' <span style="color:#4C58FF">— ‚'''□(∃xGx ∧ ∀y(Gy→x=y))'''‘ —</span> ''':''' <span style="color:#FF6000">»''GOTT ist exklusiv einzigartig''«</span>.)</span> Die Einzigartigkeit GOTTES bedingt die Koinzidenz, den inneren Zusammenhang aller seiner Vollkommenheiten und Zuschreibungen, <span style="color:#00B000">(Axiom-2)</span>, d.h. ihr paarweise, perspektivisches ,Zusammenfallen in eins‘ im Unendlichen, GOTT. ——— Aus der Notwendigkeit aller positiven Eigenschaften und Zuschreibungen, <span style="color:#00B000">(d.h. aus den, an sich, notwendigen, ultimativen Transzendentalien, Axiom-4)</span>, die in GOTT paarweise, als ,Wesenseigenschaften‘ koinzident ,eins‘ sind, <span style="color:#00B000">(Definition-2)</span>, ist die Einzigkeit GOTTES für uns erschließbar, <span style="color:#00B000">(Korollar-3)</span>. Axiom-4 ist die erste, ,modal‘ <span style="color:#FF6000">„notwendige“</span>, d.h. die transzendentale Voraussetzung für Korollar-3. Wenn im Korollar-3 das <span style="color:#4C58FF">— ‚'''x'''‘ —</span> z. B. für GOTT, dem ,Vater‘ der Christen, und das <span style="color:#4C58FF">— ‚'''y'''‘ —</span> für GOTT, dem ,Sohn‘, d.h. für ,JESUS CHRISTUS‘ steht, oder für den ,HEILIGEN GEIST‘, <span style="color:#00B000">(den ,Dreifaltigen GOTT‘ der Christenheit)</span>; oder auch für die Gottesbezeichnung ,GOTT-ADONAI‘ der Juden, oder für die Gottesbezeichnung ,ALLAH‘ der Muslime steht, dann weist dieses Korollar, für <span style="color:#4C58FF">— ‚'''∀y'''‘ —</span>, mit der ,ontologischen Identität‘ ''':''' <span style="color:#4C58FF">— ‚'''x=y'''‘ —</span>, auf die ,Koinzidenz‘ des <span style="color:#4C58FF">„Dreifaltigen“</span>, und auf die <span style="color:#4C58FF">„Hypostatische Union“</span> der Naturen von GOTT und Mensch in JESUS CHRISTUS, bzw. auch auf den inneren Zusammenhang der drei Buch-Religionen hin. ===<div class="center"><span style="color:#660066">Anhang : das GÖDEL-Kalkül</span></div>=== In der ,Legende zum GÖDEL-Kalkül‘ wird an einige Basics erinnert, und diese für die operative Praxis im anstehenden Kalkül, mit Hilfe von logischen Meta-Terme, adaptiert. Zusätzliche, notwendige Regeln und Gesetze werden dann ,benannt‘, wenn sie in der Kalkül-Durchführung auftreten. {|class="wikitable" |- ! <div class="center"><span style="color:#660066">Legende zum GÖDEL-Kalkül</span></div> |- | <small> <math>\begin{align} {\color{blue}\text{ ◇}} \text{ :: konsistent ↔ widerspruchsfrei ↔ möglich ↔ denkbar, } & {\color{blue}\text{ □}} \text{ :: notwendig ↔ wirklich, für jede mögliche Welt ↔ exklusiv} \\ \text{logischer Meta-Term ::} {\color{blue}\text{ [ A ├ B ]}} \text{ ::} & \text{ „aus A folgt im Kalkül ,regulär‘ (├ ) B.“} \\ \text{ A, B sind Aussagen über Eigenschaften, (A ist keine Eigenschaft);} & \text{ die Aussage, z.B. in der Kalkül-Zeile 10, wird als ,Term :10:‘ bezeichnet} \\ {\color{blue}\text{ AE}} \text{ ::} & \text{ Argument Einführung, Prämisse, Postulat } \\ {\color{blue}\text{ Xx}} \text{ ::} & \text{ „X ist eine Eigenschaft der Individuum-Variable x.“ } \\ {\color{blue}\text{ ¬PX}} \text{ ::} & \text{ „X ist keine positive Eigenschaft, ist keine Perfektion, ist nicht vollkommen.“ } \\ {\color{blue}\text{ Instanz(X := Y)}} \text{ ::} & \text{ Substitution der Eigenschaft X durch die ,bestimmte‘ Eigenschaft Y } \\ \text{ (Eine ,Instanz‘ ist ein Exemplar aus einer Menge gleichartiger Dinge;} & \text{ hier die ,bestimmte‘ Eigenschaft Y, als Ersatz für das unbestimmte X.) } \\ {\color{blue}\text{ FUB(x := y)}} \text{ ::} & \text{ Freie-Um-Benennung der Individuum-Variable x in y } \\ \text{ ,modal‘-frei gewählte Kalkül-Prämisse ::} {\color{blue}\text{ Gx}} \text{ ::} & \text{ „Die Variable x steht für den GOTT der Christen.“ } \\ {\color{blue}\text{ [ G(y) ├ ⱯyG(y) ]}} \text{ ::} & \text{ All-Operator-Einführung der Variable y für GOTT } \\ \text{ „Angenommen, die Variable y steht für GOTT, dann } & \text{folgt ,regulär‘ (├ ), dass auch jedes y im Kalkül für GOTT steht.“}\\ {\color{blue}\text{[ ⱯXA(X) ├ A(X) ]}} \text{ ::} & \text{ All-Operator-Beseitigung für die substituierte Eigenschaft X } \\ \text{ „Wenn X durch eine ,bestimmte‘ Eigenschaft ,instanziiert‘ ist oder } & \text{wird, dann kann der All-Operator von X ,regulär‘ (├ ) beseitigt werden.}\\ {\color{blue}\text{ KOMM(↔)}} \text{ ::} & \;{\color{blue}\text{[ (A↔ B) ↔ (B ↔ A) ]}} \text{ :: Kommutativgesetz für ( ↔ )}\\ {\color{blue}\text{ DIST(□∧)}} \text{ ::} & \;{\color{blue}\text{[ (□A ∧ □B) ↔ □(A ∧ B) ]}} \text{ :: Distributivgesetz für (□∧ )} \\ \text{ (hypothetischer Syllogismus, häufige logische Schlussregel) ::} & \;{\color{blue}\text{[ A → B, A ├ B ]}} \text{ :: (Modus ponendo ponens) :: Abtrennregel.} \\ \text{ „Wenn es wahr ist, dass aus A ein B folgt, und wenn A wahr ist, } & \text{dann ist im Kalkül ,regulär‘ (├ ) ableitbar, dass auch B wahr ist.“} \\ \text{ (negativer hypothetischer Syllogismus) ::} & \;{\color{blue}\text{[ A → B, ¬B ├ ¬A ]}} \text{ :: (Modus tollendo tollens)} \\ \text{ „Wenn es wahr ist, dass aus A ein B folgt, und wenn B falsch ist, } & \text{dann ist im Kalkül ,regulär‘ (├ ) ableitbar, dass auch A falsch ist.“} \\ \text{''KONDITIONALER BEWEIS“ ::} & \;{\color{blue}\text{[ ├ A ├ B ╞ A → B ]}} \text{ :: (logische Implikation)} \\ \text{ „Angenommen, A ist ,regulär‘ Axiom oder Prämisse, und B ist im } & \text{Kalkül ,regulär‘ abgeleitet, dann ist ,bewiesen‘ ( ╞ ) : A impliziert B, ist wahr.“} \\ \text{''INDIREKTER BEWEIS“ ::} & \;{\color{blue}\text{[ ├ ¬A → F ╞ A ]}} \text{ :: (Reductio ad absurdum)} \\ \text{ „Wenn im Kalkül aus ¬A ,regulär‘ eine Kontradiktion } & \text{F folgt, dann ist A ,bewiesen‘ ( ╞ ) : A ist ,wahr‘.“} \\ \end{align}</math> </small> |} A. FUHRMANN ''':''' <span style="color:#FF6000">»</span> ''Eine Prädikatenlogik zweiter Stufe ist eine Logik, in der die Quantoren auch Eigenschaftsausdrücke <span style="color:#00B000">(<span style="color:#FF6000">„Prädikate”</span>)</span> binden können''. <span style="color:#00B000">[ Die ,Prädikate‘ werden in einem Kalkül dieser Logik durch Definitionen ,bestimmt‘ ]</span>. ''Wir werden uns im folgenden recht frei einer dafür geeigneten formalen Sprache bedienen. Äußere Quantoren werden meist weggelassen und wir schreiben kurz'' <span style="color:#4C58FF">— ‚'''Xx'''‘ — </span> ''bzw.'' <span style="color:#4C58FF">— ‚'''PX'''‘ — </span> ''um auszudrücken, dass das Individuum'' <span style="color:#4C58FF">— ‚'''x'''‘ — </span> ''die Eigenschaft'' <span style="color:#4C58FF">— ‚'''X'''‘ — </span> ''hat, bzw. dass die Eigenschaft'' <span style="color:#4C58FF">— ‚'''X'''‘ — </span> ''die höherstufige Eigenschaft'' <span style="color:#4C58FF">— ‚'''P'''‘ — </span> ''<span style="color:#00B000">(für <span style="color:#FF6000">„positiv”</span>)</span> hat;'' <span style="color:#00B000"> [ wobei die Eigenschaft <span style="color:#4C58FF">— ‚'''P'''‘ — </span> als einzige im Kalkül ,unbestimmt‘ bleibt ]</span>. <span style="color:#FF6000">«</span><ref>A. FUHRMANN ‚''<span style="font-family: Times;"><big>‚G‘ wie Gödel. Kurt Gödels axiomatische Theologie</big></span>''‘, Seite 6, Anmerkung 3. Konform mit seinem Artikel in ‚''<span style="font-family: Times;"><big>Logik in der Philosophie</big></span>''‘ hg. v. P. SCHROEDER-HEISTER, W. SPOHN und E. OLSSON. 2005, Synchron, Heidelberg.</ref> Der All-Quantor für Eigenschaften, hier im GÖDEL-Kalkül der ,modalen‘ Prädikatenlogik zweiter Stufe, bindet die ,unbestimmte‘ Eigenschafts-Variable <span style="color:#4C58FF">— ‚'''X'''‘ —</span> ausschließlich nur in den Definitionen im 2. und 3. Beweisgang . <span style="color:#00B000"> (Im ersten Beweisgang gibt es keine Definition.)</span> Dieser All-Quantor wird dann jedes Mal in der Beweis-Durchführung durch die Substitution ''':''' <span style="color:#4C58FF"> [ Instanz(X:= ..) ]</span> mit ,bestimmte‘ Eigenschafts-Konstanten wie <span style="color:#4C58FF">— (X:= G) —</span>, bzw. <span style="color:#4C58FF">— (X:= ¬Y) —</span>, oder <span style="color:#4C58FF">— (X:= E<sub>not</sub>) —</span> ,regulär‘ <span style="color:#00B000">(├ )</span> beseitigt ''':''' <span style="color:#4C58FF"> [ ⱯXA(X) ├ A(X) ]</span>; wobei die Eigenschafts-Konstante im Kalkül entweder als Zwischenergebnis ,regulär‘ abgeleitet, <span style="color:#00B000">(,errechnet‘)</span>, oder mit einer Definition schon ,bestimmt‘ worden ist. Die spezifische ‚Eigenschaft‘ einer Eigenschaft wird hier, in der formalen Syntax der ,modalen‘ Prädikatenlogik zweiter Stufe, als eine tiefer gestellte Abkürzung <span style="color:#00B000">(als Index)</span> an ihre Trägereigenschaft angehängt, wie z. B. ‚wesentlich‘, bzw. ‚essentiell‘ durch <span style="color:#4C58FF"> — <sub>ess</sub> —</span>, oder ‚notwendig‘ durch <span style="color:#4C58FF"> — <sub>not</sub> —</span>. In der Definition-3 steht der Term ''':''' <span style="color:#4C58FF"> —‚'''E'''<sub>not</sub>'''x'''‘ —</span>, um auszudrücken, dass das Individuum <span style="color:#4C58FF">— ‚'''x'''‘ —</span> notwendig <span style="color:#4C58FF">— <sub>not</sub> —</span> die Eigenschaft ''':''' <span style="color:#4C58FF">— ‚'''E'''‘ —</span>, für ,Existenz‘, hat, d.h. <span style="color:#FF6000">»''das <span style="color:#4C58FF">‚'''x'''‘</span> existiert notwendig''«</span>. Der schon von GÖDEL indizierte Term ''':''' <span style="color:#4C58FF">—‚'''G'''<sub>ess</sub>'''x'''‘ —</span> kann gelesen werden als ''':''' <span style="color:#FF6000">»''Das Individuum <span style="color:#4C58FF">‚'''x'''‘</span> hat die Wesenseigenschaft, <span style="color:#4C58FF"> — <sub>ess</sub> — </span> ''':''' GOTT zu sein, <span style="color:#4C58FF">‚'''G'''‘ </span>''«</span>, statt der ,an sich‘ konformen, aber <span style="color:#4C58FF">„theologisch“</span> etwas ungenauen Formulierung ''':''' <span style="color:#FF6000">»''das'' <span style="color:#4C58FF">‚'''x'''‘</span> ''ist wesentlich göttlich''«</span>; oder mit der Voraussetzung ''':''' <span style="color:#4C58FF">— ‚'''Gx'''→'''G'''<sub>ess</sub>'''x'''‘ — </span> deutlicher und <span style="color:#4C58FF">„theologisch“</span> korrekt ''':''' <span style="color:#FF6000">»''Wenn'' <span style="color:#4C58FF">‚'''x'''‘</span> ''für den GOTT der Christen'', <span style="color:#4C58FF">‚'''G'''‘</span>, ''steht, dann ist GOTT-Sein'', <span style="color:#4C58FF">‚'''G'''‘</span>, <span style="color:#00B000">(,Existenz‘)</span> ''das Wesen dieses GOTTES'', <span style="color:#4C58FF">— <sub>ess</sub>‚'''x'''‘ —</span>, <span style="color:#00B000">(,Essenz‘)</span>«</span>; wobei, — entsprechend der ,methodologischen‘ Prämisse des Kalküls <span style="color:#00B000">(<span style="color:#4C58FF">— ‚'''Gx'''‘ — </span> ''':''' das <span style="color:#4C58FF">‚'''x'''‘</span> steht für den ,GOTT der Christen‘)</span> —, bei der Interpretation der Terme dieses besonderen Kalküls, die <span style="color:#4C58FF">„christliche Theologie”</span> für den Begriff <span style="color:#FF6000">„GOTT”</span>, Korrektur und die leitende Instanz ist. Dabei muss die Dreifach-Äquivalenz von <span style="color:#4C58FF"><span style="color:#4C58FF">— ‚'''G'''‘ — </span></span>berücksichtigt werden. Welche der drei Äquivalenzen, bzw. Lesearten von <span style="color:#4C58FF">— ‚'''G'''‘ — </span> bei einem bestimmten Term im Kalkül zulässig ist, muss <span style="color:#4C58FF">„theologisch”</span> überprüft und evaluiert werden. Bei manchen können sogar alle drei Lesearten <span style="color:#4C58FF">„theologisch”</span> zulässig sein. Warum es in der modalen Prädikatenlogik zweiter Stufe, im GÖDEL-System, ,Definitionen‘ gibt, erklärt GÖDEL formal-syntaktisch ''':''' <span style="color:#FF6000">»''Definitionen dienen ja nur der kürzeren Schreibwelse und sind daher prinzipiell überflüssig.''«</span> <span style="color:#00B000">(Aus der Anmerkung 6 in seinem Hauptwerk ''':''' ,''<span style="font-family: Times;"><big>Über formal unentscheidbare Sätze der Principia Mathematica und verwandter Systeme I</big></span>''‘.)</span> Für die <span style="color:#4C58FF">„theologische”</span> Interpretation und Hermeneutik seines Kalküls, sind die ,Definitionen‘ im GÖDEL-System jedoch wesentlich, und letztlich entscheidend. Erst dadurch wird sein Axiomensystem zur <span style="color:#4C58FF">„axiomatischen Theologie”</span>. GÖDEL gibt selbst den hermeneutischen Hinweis dazu, wenn er über den höherstufigen Eigenschaftsbegriff <span style="color:#FF6000">»''positiv''«</span> sagt, der nur ,indirekt‘ definiert wird, jedoch mit seinem gesamten Axiomensystem ''':''' <span style="color:#FF6000">»''Positiv bedeutet positiv im moralisch ästhetischen Sinne, (unabhängig von der zufälligen Struktur der Welt). Nur dann sind die Axiome wahr''.«</span> Die Deutung dieses ,höherstufigen‘ Begriffs als ein anderes Wort für <span style="color:#FF6000">„Transzendentalia“</span> ergibt sich aus der <span style="color:#4C58FF">„theologischen”</span> Evaluierung, d.h. der Einordnung des GÖDEL-Systems in die ,laufende‘ <span style="color:#FF6000">„Rede von GOTT“</span>, seit Menschen, sich über den Sinn der Welt und unseres Lebens in ihr, Gedanken machen. GOTT, der ,transzendent‘, — unabhängig —, zur Welt ist, ist Thema im Theorem ANSELMS, um das es ja im GÖDEL-Kalkül geht. Eine <span style="color:#4C58FF">„theologische”</span> Hermeneutik des GÖDEL-Systems ist daher legitim, die, als ein Bemühen um ein überzeugendes Verstehen, aus dem <span style="color:#4C58FF">„theologischen”</span> Vorwissen vieler Generationen schöpft. Um philosophische, und sogar <span style="color:#4C58FF">„theologische”</span> Theoreme exakt zu formulieren, und untersuchen zu können, hat der Ausnahmelogiker GÖDEL, im 20. Jahrhundert, ein Tor aufgestoßen, das uns ermöglichen kann, <span style="color:#FF6000">»''mathematisch evident''«</span>, und logisch objektiv nachprüfbar, in diesen Disziplinen zu argumentieren. Mit seiner modalen Prädikatenlogik zweiter Stufe, hat GÖDEL dem alten Wunsch eines Raimundus LULLUS, eines Gottfried Wilhelm LEIBNIZ, eines Immanuel KANT, und anderer, nach einer nachprüfbaren ,Universalsprache‘ in den Geisteswissenschaften, entsprochen; analog zur Mathematik, als Universalsprache in den Naturwissenschaften. Der sog. ,Theorembeweiser‘ der Wissenschaftler Christoph BENZMÜLLER und Bruno WOLTZENLOGEL-PALEO, mit Hilfe eines Computers, im 21. Jahrhundert, ist die kongeniale und logische Folge aus diesem Quanten-Schritt GÖDELS. In der folgenden Neu-Kalkülisierung, wird jeder einzelne operative Logik-Schritt des Kalküls in der '''linken Spalte''' nummeriert und als Term-Ergebnis angezeigt, und in der '''rechten Spalte''' werden die dafür benötigten Term-Komponenten und die dabei angewendeten Logik-Regeln und -Gesetze, mit Meta-Terme, dokumentiert. Am Anfang stehen die Ressourcen und das angestrebte Ziel des Beweisganges, <span style="color:#00B000">(das Theorem)</span>. Die GÖDEL Axiome und Definitionen, die Theoreme und Korollare, die Zwischenergebnisse, das Endergebnis, und die logischen Meta-Terme, <span style="color:#00B000">[ in eckigen Klammern ]</span>, werden kontextabhängig, <span style="color:#00B000">(durch ''„Benennungen“'')</span>, interpretiert, <span style="color:#00B000">(angezeigt durch ,Interpretationspunkte‘ — '''::''' —, falls nötig)</span>. Der jeweilige Beweisgang wird in den Anmerkungen ausführlich und umfassend kommentiert. Die Kalkül-Prämissen, <span style="color:#00B000">(<span style="color:#4C58FF">'''AE:'''</span> Argument Einführung)</span>, sind der modal-frei gewählte Einstieg in das Kalkül. Sie dokumentieren, zusammen mit dem angestrebten Beweis-Ziel, eine bestimmte Problemlage in einem externen Diskurs, der mit dem modalen Logik-System hier, formal-syntaktisch überprüft, und gegebenenfalls, verifiziert oder falsifiziert werden soll. Korollare sind einfache, logische Folgerungen aus dem jeweiligen Beweisgang. Theoreme und Korollare sind ,modal‘ gleichwertig. ====<div class="center"><span style="color:#660066">1. Beweisgang</span></div>==== {|class="wikitable" |- ! <div class="center"><span style="color:#660066">GÖDELS ontologischer Beweis für Theorem 1, (Möglichkeitsbeweis)</span></div> |- ! <span style="color:#00B000">''Terme der erweiterten Prädikatenlogik zweiter Stufe__________ „Benennungen“ und durchgeführte Logik-Operationen''</span> |- | <small> <math>\begin{align} \text{(Axiom 1.1)} & \quad P \neg X \;\Longrightarrow\;\ \neg P\ X\ & \ & \text{„Wenn die Negation von X positiv ist, dann ist die Eigenschaft X nicht positiv“} \\ \text{(Axiom 2)} & \quad (P\ X \wedge \;\Box \;\forall x (\ X\ x \Longrightarrow \ Y\ x)) \Longrightarrow \ P\ Y & \ & \text{„Die Eigenschaften Y, die aus einer positiven Eigenschaft X modal} \\ \text{ } & \quad & \ & \; \; \text{notwendig folgen, sind auch positive Eigenschaften“} \\ \text{(Axiom 3)} & \quad P\ G \ & \ & \text{„Göttlichkeit, GOTT-Sein, ist eine pos. Eigenschaft“ ↔ „GOTT ist perfekt“} \\ \text{[RK]} &\quad \Box\; \forall x A \;\Longrightarrow\;\Box\; \forall x B\; \text{ ├ }\;\Box \; \forall x (A \Longrightarrow\; B)\ & \ & \; \text{( :: Modales Prinzip KRIPKE-Γ-Ɐx)} \\ \text{(Theorem 1)} &\quad P\ X \;\Longrightarrow\; \Diamond \; \exists x \ X \ x \ & \ & \text{ (◇ :: „möglich“ ↔ „konsistent“ ↔ „denkbar“; □ :: „notwendig“) } \\ \text{ } & \text{„Positive Eigenschaften sind konsistent“} & \ & \Longleftarrow\; \text{was zu beweisen ist !} \\ \text{01} & \quad P\ X \ & \ & \text{ AE: „Angenommen, es gibt positive Eigenschaften, Perfektionen“} \\ \text{02} & \quad P\ X \;\Rightarrow\; \neg \Diamond \; \exists x \ X \ x \ & \ & \text{ AE: „Angenommen, positive Eigenschaften sind nicht konsistent“} \\ \text{03} & \quad (\neg x = .. )\ & \ & \text{ AE: „Es gibt die Eigenschaft, nicht mit x identisch zu sein“ :: (ungleich)} \\ \text{04} & \quad (\ x = .. )\ & \ & \text{ AE: „Es gibt die Eigenschaft, mit x identisch zu sein“ :: (gleich)} \\ \text{05} & \quad \text{ ├ }\; \neg \Diamond \; \exists x \ X \ x \ & \ & \text{:01:02:[Modus ponendo ponens] :: [A, A → B├ B] :AE:} \\ \text{06} & \quad \neg\neg \Box \neg \exists x \ X \ x \ & \ & \text{:05:[ ◇A ↔ ¬□¬A] :: (Modalregel)} \\ \text{07} & \quad \neg\neg \Box \neg\neg \forall x \neg X \ x \ & \ & \text{:06:[∃xA ↔ ¬Ɐx¬A] :: (Quantoren Regel)} \\ \text{08} & \quad \text{ ├ }\; \Box \; \forall x \neg X \ x \ & \ & \text{:07:NEG :: [¬¬A↔A] :: (Gesetz der Aussagenlogik)} \\ \text{09} & \quad \Box \; \forall x \neg X \ x \Leftrightarrow\ W & \ & \text{:02:08:[(:02:↔W) → (├:08:↔W)] :: (Kalkülregel)} \\ \text{10} & \quad \Box \; \forall x \ X \ x \Leftrightarrow\ F & \ & \text{:09:[(¬A↔W)↔(A↔F)] :: (Regel für Wahrheitswerte)} \\ \text{11} & \quad \Box \; \forall x (\neg x = x ) \Leftrightarrow \ F \; \ & \text{ } & \text{□ⱯxXx:03:Instanz(X:=(¬x=..)) ⇒ Kontradiktion !} \\ \text{12} & \quad \Box \; \forall x (\ X \ x \Rightarrow\; (\neg x = x)) & \text{ } & \text{:10:11:[(:10:↔F) → (:11:↔F)] :: „ex falso sequitur quotlibet“ :[RK]} \\ \text{13} & \quad \ P\ X \wedge \;\Box \; \forall x (\ X \ x \Rightarrow\; (\neg x = x)) & \ & \text{:01:12:[Konjunktion] :: [A, B ├ A∧B]} \\ \text{14} & \quad \ (P\ X \wedge \;\Box \; \forall x (\ X \ x \Rightarrow \; (\neg x = x))) \Rightarrow \; P (\neg x = .. ) & \ & \text{(A2):Instanz(Y:=( ¬x= ..)) :: (Substitution für Eigenschaften)} \\ \text{15} & \quad \ P (\neg x = .. ) & \ & \text{:13:14:[Modus ponens] :: (logische Schlussregel)} \\ \text{16} & \quad \ P (\neg x = .. )\;\Rightarrow\ \neg P (\ x = .. )\ & \ & \text{(A1.1):Instanz(X:=(x=..))}\\ \text{17} & \quad \neg P (\ x = .. )\ & \ & \text{:15:16:[Modus ponens]}\\ \text{18} & \quad \Box \; \forall x \ (x = x ) \Leftrightarrow \ W \; \ & \ & \text{□ⱯxXx:04:Instanz(X:=(x=..)) ⇒ Tautologie !} \\ \text{19} & \quad \Box \; \forall x (\ X \ x \Rightarrow\; (x = x)) & \text{ } & \text{:10:18:[(:10:↔F) → (:18:↔W)] :: „ex falso sequitur etiam verum“ :[RK]} \\ \text{20} & \quad \ P\ X \wedge \;\Box \; \forall x (\ X \ x \Rightarrow\; (x = x)) & \ & \text{:01:19:[Konjunktion] } \\ \text{21} & \quad \ (P\ X \wedge \;\Box \; \forall x (\ X \ x \Rightarrow\; (x = x))) \Rightarrow \ P (x = .. ) & \ & \text{(A2):Instanz(Y:=(x=..))} \\ \text{22} & \quad \ P (\ x = .. )\ & \ & \text{:20:21:[Modus ponens]}\\ \text{23} & \quad \text{ ├ }\; (\neg P (\ x = .. )\ \wedge \ P (\ x = .. )) \Leftrightarrow\ F & \ & \text{:17:22:[Konjunktion] ⇒ Kontradiktion !}\\ \text{24} & \quad \neg \Diamond \; \exists x \ X \ x \Rightarrow (\neg P (\ x = .. )\ \wedge \ P (\ x = .. )) & \ & \text{:05:23:[├A├B╞ A→B] :: ''KONDITIONALER BEWEIS''}\\ \text{25} & \quad \neg\neg \Diamond \; \exists x \ X \ x & \ & \text{:24:23:[Modus tollendo tollens] :: [A→B,¬B ├ ¬A]}\\ \text{26} & \quad \text{ ├ }\; \Diamond \; \exists x \ X \ x & \ & \text{:25:NEG; bzw. :05:23:[├¬A→F ╞ A] :: ''INDIREKTER BEWEIS''}\\ \text{27} & \quad \ P\ X \;\Longrightarrow\; \Diamond \; \exists x \ X \ x \ & \ & \text{:01:26:[├A├B ╞ A→B]} \\ \text{(Theorem 1)} & \;\text{„Positive Eigenschaften sind konsistent“} & \ & \Longleftarrow\; \text{was zu beweisen war !} \\ \text{28} & \quad \ P\ G \;\Longrightarrow\; \Diamond \; \exists x \ G \ x \ & \ & \text{:27:Instanz(X:=G) } \\ \text{29} & \quad \Diamond \; \exists x \ G \ x \ & \ & \text{(A3):28:[Modus ponens]} \\ \text{(Korollar 1)} & \;\text{„Das Dasein GOTTES ist definitiv denkbar“} & \ & \text{„Es ist widerspruchsfrei möglich, dass es GOTT gibt“} \\ \end{align}</math> </small> |} Anmerkung-1 ''':''' <span style="color:#00B000">(Der GÖDEL-Term <span style="color:#4C58FF">— ‚'''PX'''‘ —</span>, im Axiom-2 ist an sich überflüssig, da dieser hier als Prämisse :01: ohnehin ,angenommen‘ wird. Der Beweisgang kommt mit Axiom-2 auch ohne diesen GÖDEL-Term zum selben Ergebnis, und verkürzt sich damit sogar um zwei Schritte ''':''' Zeile 13 und Zeile 20 sind dann unnötig.)</span> Der Beweisgang geht mit Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, als Kalkül-Ressource, prinzipiell von der Existenz eines GOTTES aus. Mit der Prämisse :01: <span style="color:#00B000">(hier im 1. Beweisgang)</span> postuliert GÖDEL vorerst allgemein, dass es <span style="color:#FF6000">»''Vollkommenheit, d.h. positive Eigenschaften''«</span> in unserer Welt gibt ''':''' <span style="color:#4C58FF">— ‚'''PX'''‘ —</span>, ohne im Kalkül zu definieren, was darunter zu verstehen ist. Definiert wird dann <span style="color:#00B000">(im 2. Beweisgang)</span>, was eine <span style="color:#FF6000">»''wesentliche Eigenschaft''«</span> ist ''':''' <span style="color:#4C58FF">— ‚'''X'''<sub>ess</sub>‘ —</span>, <span style="color:#00B000">(im Sinne von ,Transzendentalia‘)</span>; und mit Hilfe dieser Eigenschaft definiert GÖDEL <span style="color:#00B000">(im 3. Beweisgang)</span>, was eine <span style="color:#FF6000">»''notwendige Existenz''«</span> ist ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>‘ —</span>, die er <span style="color:#00B000">(im selben Beweisgang)</span> axiomatisch mit den <span style="color:#FF6000">»''positiven Eigenschaften in GOTT''«</span> gleich setzt ''':''' Axiom-5 ''':''' <span style="color:#4C58FF"> —‚'''PE'''<sub>not</sub>‘ —</span>. Erst im 2. Beweisgang wird mit Term :13:, nach einer <span style="font-family: Times;"><big>,Reductio ad absurdum‘</big></span>, definitiv bewiesen <span style="color:#00B000">( ╞ )</span>, dass die, von GÖDEL, hier postulierten, <span style="color:#00B000">(allgemeinen)</span>, positiven Eigenschaften, <span style="color:#4C58FF">— ‚'''PX'''‘ —</span>, tatsächlich auch in GOTT <span style="color:#FF6000">»''positive Eigenschaften''«</span>, <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, sind; <span style="color:#00B000">(das sind die ultimativen ,Transzendentalia‘ in GOTT)</span>. Jetzt aber muss vorerst der ,Wunsch‘, bzw. die LEIBNIZ-Frage beantwortet werden ''':''' Ob, mit <span style="color:#FF6000">»''mathematischer Evidenz''«</span>, <span style="color:#FF6000">»''GOTT''«</span> ,möglich‘ ist, der, nach traditioneller Auffassung, <span style="color:#FF6000">»''ein Wesen von äußerster Größe und Vollkommenheit'' <span style="color:#00B000">[ ist ]</span>, ''das alle Grade derselben in sich schließt''«</span>, <span style="color:#00B000">(nach LEIBNIZ; was GÖDEL mit Definition-1 ,abbildet‘)</span>. Wenn man also beweisen will, dass die Existenz eines solchen ''<span style="color:#FF6000">»GOTTES«</span>'' ,möglich‘ sein soll, dann muss man beweisen, dass dieses postulierte System der <span style="color:#FF6000">»''positiven Eigenschaften in GOTT''«</span> möglich und formal ,widerspruchsfrei‘ ist. Das Ergebnis des 1. Beweisganges, das ,Theorem-1‘, <span style="color:#00B000">(,Erster Satz‘)</span>, fasst A. FUHRMANN zusammen als ''':''' <span style="color:#FF6000">»''Positive Eigenschaften sind konsistent''«</span>. Wenn sie nicht konsistent wären, käme es zu unlösbaren Widersprüchen, <span style="color:#00B000">(Term :24:)</span>. Term :27: ,besagt‘ ''':''' <span style="color:#FF6000">»''Es ist definitiv, d.h. ohne Widerspruch möglich, dass es positive Eigenschaften gibt''«</span>; denn die Behauptung, es sei nicht möglich, dass es positive Eigenschaften, <span style="color:#00B000">(das sind die ,Transzendentalia‘)</span>, in unserer Welt gibt, führt zu einem Widerspruch, und ist daher falsch und ,unlogisch’. Einmal Axiom-1 und zweimal Axiom-2, <span style="color:#00B000">(das die Gleichwertigkeit aller positiven Eigenschaften nachdrücklich klarstellt)</span>, sichern hier die Konsistenz <span style="color:#FF6000">»''aller positiven Eigenschaften in der Welt'', <span style="color:#00B000">[ die ,Transzendentalien‘ ]</span>, ''und damit auch die, die in GOTT sind''«</span>. <span style="color:#00B000">(Der 2. Beweisgang bestätigt, dass es in GOTT tatsächlich positive Eigenschaften gibt.)</span> Die ,Gleichwertigkeit‘ aller Transzendentalia, <span style="color:#00B000">(ihre ,Äquivalenz‘)</span>, ist formal-syntaktisch daran erkennbar, dass die beiden Eigenschafts-Variablen <span style="color:#4C58FF">— ‚'''X'''‘ —</span> und <span style="color:#4C58FF">— ‚'''Y'''‘ —</span> im Axiom-2 für beliebige, unterschiedliche ,positive‘ Eigenschaften gegenseitig austauschbar, <span style="color:#00B000">(,konvertierbar‘)</span>, sind. Das heißt, dass beliebige, unterschiedliche ,positive‘ Eigenschaften, für die diese Variablen stehen, sich paarweise, wechselseitig ,implizieren‘, einschließen, und damit notwendig voneinander abhängen, d.h. koinzident ,eins‘ sind, konvertierbar, und somit gleichwertig sind; entsprechend dem Theorem von den Transzendentalia. Zu Term :29:, dem Korollar zu Theorem-1, notiert GÖDEL am 10. Feb. 1970, <span style="color:#00B000">(übersetzt von Joachim BROMAND)</span> ''':''' <span style="color:#FF6000">»''◇∃xG(x) besagt, dass das System aller positiver Eigenschaften kompatibel ist'',</span> <span style="color:#00B000">[ d.h. miteinander verträglich, weil ohne Widersprüche ].</span> <span style="color:#FF6000">''Dies ist ,wahr‘ auf Grund von Axiom-2,'' <span style="color:#00B000">[ weil alle positiven Eigenschaften, d.h. die Transzendentalien, koinzident gleichwertig und konvertierbar sind ]</span>.«</span> Darum ist es definitiv ,möglich‘, dass es diesen GOTT gibt, der <span style="color:#FF6000">»''alle Grade der Vollkommenheit in sich schließt''«</span> und <span style="color:#FF6000">»''über dem ,Größeres‘ nicht mehr gedacht werden kann''«</span>, und, in weiterer Konsequenz, ist der GOTT-Glaube deshalb ,notwendig‘ widerspruchsfrei und sinnvoll, nach Theorem-3 ''':''' <u>Wenn</u> es ,ohne Widerspruch‘ ''<span style="color:#FF6000">»möglich, bzw. denkbar«</span>'' ist, dass es ''<span style="color:#FF6000">»GOTT«</span>'' gibt, <u>dann</u> folgt daraus ''<span style="color:#FF6000">»notwendig«</span>'' ''':''' es ist auch ,widerspruchsfrei‘, wenn man als Voraussetzung ,annimmt‘, dass es ''<span style="color:#FF6000">»GOTT wirklich, für jede mögliche Welt«</span>'' gibt ''':''' Term :11: im 3. Beweisgang. Der Wenn-Satz ist hier mit Korollar-1 bewiesen; der Dann-Satz wird im 3. Beweisgang bewiesen <span style="color:#00B000">( ╞ )</span>, d.i. die Widerspruchsfreiheit und Sinnhaftigkeit des GOTT-Glaubens. Die ontologische ,Identität‘, d.h. die ,Gleichsetzung‘, bzw. die ,Koinzidenz‘ von Strukturen, die in der Endlichkeit für uns verschieden sind, jedoch in dem unbegrenzt Unendlichen, GOTT, paarweise, perspektivisch in eins zusammenfallen, wie ,Sein‘ und ,Wesen‘, wie ,Ursache‘ und ,Wirkung‘ usw., und auch die Äquivalenz und Austauschbarkeit der Transzendentalien, haben im GÖDEL-Kalkül die logisch-syntaktische Form einer, aus sich, ,modal‘ notwendigen Implikation zwischen zwei verschiedenen, gegenseitig austauschbaren Eigenschafts-Variablen ''':''' <span style="color:#4C58FF">— ‚'''□∀x(Xx→Yx)'''‘ —</span>. Dieses Term-Element stellt formal-syntaktisch die Gleichwertigkeit, <span style="color:#00B000">(Äquivalenz)</span>, bzw. die paarweise Koinzidenz aller positiven Eigenschaften und Zuordnungen in GOTT dar; sowohl hier im Axiom-2, als auch in der Definition-2 über die ,Wesenseigenschaften‘, im 2. Beweisgang, mit jeweils verschiedenen, frei umbenennbaren, Individuum-Variablen. Dieses Term-Element ,gilt‘ allgemein jedoch nur für positive Eigenschaften, alias ,Transzendentalia‘, und wird sofort <span style="color:#FF6000">„modal falsch“</span>, wenn für <span style="color:#4C58FF">— ‚'''X'''‘ —</span>, oder <span style="color:#4C58FF">— ‚'''Y'''‘ —</span>, Eigenschaften eingesetzt werden, die, — von Natur aus —, weder positiv noch negativ sind, wie z. B. ,rot‘ oder ,schwer‘. Die wechselseitige Austauschbarkeit der noch ,unbestimmten‘ Eigenschafts-Variablen, für beliebige positive Eigenschaften, ist formal äquivalent zur freien Umbenennung der noch ,unbestimmten‘ Individuum-Variablen ''':''' <span style="color:#4C58FF">[ FUB(x:=y) ]</span>. Der formale, gegenseitige, allgemeine Austausch der positiven Eigenschafts-Variablen, bzw. die formale Gleichsetzung beliebiger positiver Eigenschaften, kann, auf Grund der Äquivalenz aller Vollkommenheiten, bzw. ,Transzendentalia‘, auch dann noch durchgeführt werden, wenn eine, von zwei Eigenschafts-Variablen, durch eine Definition oder eine Schlussfolgerung ,bestimmt‘ worden ist, und dadurch zu einer positiven Eigenschafts-Konstante, d.h. zu einer ,bestimmten‘, positiven Eigenschaft geworden ist. Das ist z. B. bei einer instanziierenden Substitution der Fall ''':''' <span style="color:#4C58FF">[ Instanz(X:=..) ]</span>. Das ist eine spezifische Eigenheit der GÖDEL-Axiomatik, weil alle relevanten, positiven Eigenschaften und Zuordnungen in GOTT, als <span style="color:#FF6000">„ultimative Transzendentalia“</span>, immer auch miteinander kompatibel sind. Mit dem Term-Element ''':''' <span style="color:#4C58FF">— ‚'''□∀x(Xx→Yx)'''‘ —</span>, wird formal die <span style="color:#FF6000">„Koinzidenz“</span> aller ,Transzententalia‘ in der Welt, und auch der ,Zusammenfall‘ aller Gegensätze in GOTT, abgebildet. Da die Variable <span style="color:#4C58FF">‚'''x'''‘</span> für GOTT steht, <span style="color:#4C58FF">‚'''G'''‘</span>, <span style="color:#00B000">(im Korollar-1)</span>, ist die Eigenschaft ''':''' ''<span style="color:#FF6000">„nicht mit x identisch zu sein“</span>'' ''':''' <span style="color:#4C58FF">(¬x=..)</span>, d.h. das <span style="color:#FF6000">„Ungleichsein“</span>, das <span style="color:#FF6000">„Anderssein“</span> GOTTES, <span style="color:#00B000">(Prämisse :03:)</span>, die entscheidende Voraussetzung und Norm für jeden Diskurs über GOTT ''':''' um der <span style="color:#FF6000">„Unvergleichlichkeit“</span> GOTTES gerecht zu werden, darf GOTT niemals mit etwas aus der ''<span style="color:#FF6000">»zufälligen Struktur der Welt«</span>'' verglichen, d.h. gleich gesetzt werden. Der Term :18: <span style="color:#4C58FF">(x=x) ↔ W</span> erinnert an die Selbstbezeichnung des GOTTES-JHWH in Exodus 3,14 ''':''' <span style="color:#CC66FF">»''Ich bin der ‚Ich-Bin‘''«</span>. <span style="color:#00B000">(In der mystischen Tradition, im ''<span style="font-family: Times;"><big>‚Dialog über die Vorsehung‘</big></span>'', dem Hauptwerk der Heiligen KATHARINA von Siena, Mystikerin und Lehrerin der Kirche, sagt GOTT-VATER zur KATHARINA ''':''' <span style="color:#FF6000">»''ICH BIN der IST'', <span style="color:#00B000">[ aus mir selbst ]</span>, ''du bist, die nicht ist'', <span style="color:#00B000">[ aus dir selbst ]</span>.«</span> Das ist eine wichtige, deutende Ergänzung, und die authentische <span style="color:#4C58FF">,theologische‘</span> Interpretation dieser Exodus Text-Stelle. Das ist der Grund für die <span style="color:#FF6000">„Unvergleichlichkeit“</span> GOTTES.)</span> Zum Term :03: notiert A. FUHRMANN ''':''' <span style="color:#FF6000">»</span> ''Die Notation'' <span style="color:#4C58FF">(¬x=..)</span> ''für die Eigenschaft ''':''' <span style="color:#FF6000">„nicht mit x identisch zu sein“</span>'', <span style="color:#00B000">[ d.h. <span style="color:#FF6000">„Ungleichheit“, „Anderssein“</span>, bzw. die Notation <span style="color:#4C58FF">(x=..)</span> für den Existenzmodus-Perfektion ''':''' <span style="color:#FF6000">„Gleichheit“, „Idendität“</span> ]</span>, ''ist suggestiv und informell und ersetzt hier einen formal korrekten Abstraktionsausdruck wie'' <span style="color:#4C58FF">λy.(¬x=y)</span>, <span style="color:#00B000">[ bzw. <span style="color:#4C58FF">λy.(x=y)</span> ]</span>. ''Für die formal korrektere Notation bedarf es der zusätzlichen Vereinbarung, dass der Ausdruck'' <span style="color:#4C58FF">λy.(¬x=y)</span> ''gleichbedeutend sei mit dem Ausdruck'' <span style="color:#4C58FF">¬λy.(x=y)</span>. ''Diese Vereinbarung ist harmlos, da wir aufgrund der Regel der λ–Konversion'' ''':''' <span style="color:#4C58FF">λy.Xy.x ↔ Xx</span>, <span style="color:#00B000">[ mit der <span style="color:#4C58FF">Instanz(X:=(¬x=..))</span> ]</span>, ''so schließen dürfen'' ''':''' <span style="color:#4C58FF">λy.(¬x=y).x ↔ ¬x=x ↔ <span style="color:#00B000">¬(x=x)</span> ↔ ¬λy.(x=y).x</span> .<span style="color:#FF6000">«</span> <ref>A. FUHRMANN a.a.O. Seite 7, Anmerkung 4 (von mir korrigiert und ergänzt)</ref> In der Kalkül-Zeile 29 wird das Möglichkeits-Korollar-1 durch einen <span style="color:#4C58FF">[ Modus ponens ]</span> mit Axiom-3 von der Kalkül-Prämisse-Term :01: ,abgekoppelt‘, d.h. es ist nicht mehr vom Term :01: <span style="color:#4C58FF">— ‚'''PX'''‘ —</span> logisch abhängig. Das Möglichkeits-Korollar-1 behält jedoch die bewiesene Widerspruchsfreiheit von Theorem-1, und ist damit nur mehr von Axiom-1 und Axiom-2 abhängig, was für das Theorem-ANSELMS am Schluss entscheidend ist. Erklärung zu Term :05: Das Ergebnis einer Logik-Operation zwischen Prämissen ist ,regulär‘ <span style="color:#00B000">(├ )</span> den Prämissen zuzurechnen. Das Modale-Prinzip KRIPKE-Γ-Ɐx, <span style="color:#4C58FF">['''RK''']</span>, in Worten ''':''' <span style="color:#FF6000">»''Wenn mit ,modaler‘ Notwendigkeit'' <span style="color:#00B000">( □ )</span>, ''für alle'' <span style="color:#4C58FF">‚'''x'''‘</span> ''die Aussage'' <span style="color:#4C58FF">‚'''A'''‘</span> ''gilt, und daraus logisch folgt, dass mit ,modaler‘ Notwendigkeit'' <span style="color:#00B000">( □ )</span>, ''für alle'' <span style="color:#4C58FF">‚'''x'''‘</span> ''auch die Aussage'' <span style="color:#4C58FF">‚'''B'''‘</span> ''gilt, dann ist in einem Kalkül regulär'' <span style="color:#00B000">( ├ )</span> ''ableitbar'' ''':''' ''es ist wahr, dass mit ,modaler‘ Notwendigkeit'' <span style="color:#00B000">( □ )</span>, ''für alle'' <span style="color:#4C58FF">‚'''x'''‘</span> ''aus der Aussage'' <span style="color:#4C58FF">‚'''A'''‘</span> ''die Aussage'' <span style="color:#4C58FF">‚'''B'''‘</span> ''logisch folgt''«</span>. Der Term <span style="color:#4C58FF">— ‚'''□∀xXx'''‘ —</span> steht formal-syndaktisch, allgemein für ,Transzendentalia‘, und ist für alle ,Nicht-Transzendentalia‘ <span style="color:#FF6000">„modal falsch“</span>. ====<div class="center"><span style="color:#660066">2. Beweisgang</span></div>==== {|class="wikitable" |- ! <div class="center"><span style="color:#660066">GÖDELS ontologischer Beweis für Theorem 2, (,Basisbeweis‘)</span></div> |- ! <span style="color:#00B000">''Terme der erweiterten Prädikatenlogik zweiter Stufe____________„Benennungen“ und durchgeführte Logik-Operationen''</span> |- | <small> <math>\begin{align} \text{(Axiom 1.2)} & \quad \neg P\ X \;\Longrightarrow\;\ P\neg X\ & \ & \text{„Wenn X nicht positiv ist, dann ist die Negation ¬X positiv“} \\ \text{(Axiom 3)} & \quad \ P\ G \ & \ & \text{„Göttlichkeit, GOTT-Sein, ist eine pos. Eigenschaft“ ↔ „GOTT ist perfekt“} \\ \text{(Axiom 4)} & \quad \ P\ X \;\Longrightarrow\; \Box \; \ P\ X \ & \ & \text{„Positive Eigenschaften sind notwendig aus sich positiv“} \\ \text{(Definition 1)} &\quad \ G\ x \;\Longleftrightarrow\; \forall X(\ P \ X \Longrightarrow \ X \ x)\ & \ & \text{„x ist genau dann GOTT, wenn x alle positiven Eigenschaften hat“} \\ \text{(Definition 2)} & \quad \ X_{ess}\ x \;\Leftrightarrow X\ x \wedge \forall Y \left(\ Y\ x \Rightarrow \Box \; \forall y (\ X\ y \Rightarrow \ Y\ y)\right) & \ & \text{„X ist genau dann eine wesentliche Eigenschaft von x, wenn x sie hat, und} \\ \text{ } & \quad & \text { } & \;\;\text{alle anderen Eigenschaften Y von x notwendig aus dieser Eigenschaft X folgen“} \\ \text{[RM]} &\quad \ A \;\Longrightarrow\;\ B\; \text{ ├ }\;\Box \; A \Longrightarrow\;\Box\; \ B\ & \ & \text{( :: Modales Prinzip)} \\ \text{(Theorem 2)} &\quad \ G\ x \;\Longleftrightarrow\; \ G_{ess}\ x \ & \ & \text{(,G‘ :: „Göttlichkeit“ ↔ „GOTT“ ↔ „Dasein GOTTES“)} \\ \text{ } &\;\text{„Das Wesen GOTTES ist sein Dasein“} & \ & \Longleftarrow\; \text{was zu beweisen ist !} \\ \text{01} &\quad \ G\ x \ & \ & \text{ AE: „Angenommen, x steht für den GOTT der Christen“} \\ \text{02} &\quad \ Y\ x \ & \ & \text{ AE: „Angenommen, GOTT hat die Eigenschaften Y“} \\ \text{03} &\quad \neg P\ Y & \ & \text{ AE: „Angenommen, die Y in GOTT sind nicht positiv“} \\ \text{04} &\quad \neg P \ Y \Rightarrow \ P \neg Y\ & \ &\text{(A1.2):Instanz(X:=Y) :: (Substitution für Eigenschaften) } \\ \text{05} &\quad \ P \neg Y \ & \ & \text {:03:04:[Modus ponens] :: [A, A → B├ B] } \\ \text{06} &\quad \forall X(\ P \ X \Rightarrow \ X \ x)\ & \ &\text{(D1):01:[Modus ponens] :: (logische Schlussregel)} \\ \text{07} &\quad \ P \ X \Rightarrow \ X \ x\ & \ &\text{:06:[ⱯXA(X) ├ A(X)] :: (Quantorenregel)} \\ \text{08} &\quad \ P \neg Y \Rightarrow \neg Y \ x\ & \ &\text{:07:Instanz(X:=¬Y)} \\ \text{09} &\quad \neg Y \ x\ & \ &\text{:05:08:[Modus ponens]} \\ \text{10} &\quad \text{ ├ }\; (Y\ x \wedge \neg Y \ x) \;\Leftrightarrow\;\ F\ & \ & \text{:02:09:[Konjunktion] ⇒ Kontradiktion !} \\ \text{11} &\quad \neg P\ Y \; \Rightarrow \; (Y\ x \wedge \neg Y \ x )\ & \ &\text{:03:10:[├A├B ╞ A → B] :: ''KONDITIONALER BEWEIS''} \\ \text{12} &\quad \neg\neg P\ Y \ & \ &\text{:11:10:[Modus tollendo tollens] :: [A → B,¬B├ ¬A]} \\ \text{13} &\quad \text{ ├ }\; P\ Y \ & \ &\text{:12:NEG; bzw. :03:10:[├¬A→F ╞ A] :: ''INDIREKTER BEWEIS'' :AE:} \\ \text{14} &\quad \ P\ Y \;\Rightarrow\;\Box \; \ P\ Y \ & \ & \text{(A4):Instanz(X:=Y)} \\ \text{15} &\quad \Box \; \ P\ Y \ & \ & \text{:13:14:[Modus ponens]} \\ \text{16} &\quad \ G \ y \Rightarrow \ Y \ y\ & \ &\text{:01:02:[├A├B ╞ A→B]:FUB(x:=y)} \\ \text{17} &\quad \text{ ├ }\; \forall y(\ G \ y \Rightarrow \ Y \ y)\ & \ &\text{:16:[G(y) ├ ⱯyG(y)]} \\ \text{18} &\quad \Box \; \ P\ Y \;\Rightarrow\; \Box \; \forall y(\ G \ y \Rightarrow \ Y \ y)\ & \ &\text{:13:17:[├A├B ╞ A→B]:[RM]} \\ \text{19} &\quad \text{ ├ }\; \Box \; \forall y(\ G \ y \Rightarrow \ Y \ y)\ & \ &\text{:15:18:[Modus ponens]} \\ \text{20} &\quad \ Y\ x \;\Rightarrow\; \Box \; \forall y(\ G \ y \Rightarrow \ Y \ y)\ & \ &\text{:02:19:[├A├B ╞ A→B]} \\ \text{21} &\quad \ (Y\ x \;\Rightarrow\; \Box \; \forall y(\ G \ y \Rightarrow \ Y \ y)) \wedge \ G \ x & \ &\text{:20:01:[Konjunktion] :: [A, B├ A ∧ B]} \\ \text{22} &\quad \ (Y\ x \;\Rightarrow\; \Box \; \forall y(\ X \ y \Rightarrow \ Y \ y)) \wedge \ X \ x\;\Leftrightarrow\; X_{ess}\ x \ & \ &\text{(D2):KOMM(↔):KOMM(∧):[ⱯYA(Y) ├ A(Y)] wegen :13:} \\ \text{23} &\quad \ (Y\ x \;\Rightarrow\; \Box \; \forall y(\ G \ y \Rightarrow \ Y \ y)) \wedge \ G \ x\;\Leftrightarrow\; G_{ess}\ x \ & \ &\text{:22:Instanz(X:=G)} \\ \text{24} & \quad \text{ ├ }\; G_{ess}\ x \ & \ &\text{:21:23:[Modus ponens]:AE: wegen :30:} \\ \text{25} &\quad \ G\ x \;\Rightarrow\; \ G_{ess}\ x \ & \ & \text{:01:24:[├A├B ╞ A→B] :: Theorem 2.1} \\ \text{26} &\quad \forall X(\ P \ X \Rightarrow \ X \ x)\ & \ &\text{(D1):01:[Modus ponens] } \\ \text{27} &\quad \ P \ X \Rightarrow \ X \ x\ & \ &\text{:26:[ⱯXA(X) ├ A(X)]} \\ \text{28} &\quad \ P \ G \Rightarrow \ G \ x\ & \ &\text{:27:Instanz(X:=G)} \\ \text{29} &\quad \text{ ├ }\; G \ x\ & \ &\text{(A3):28:[Modus ponens]} \\ \text{30} &\quad \ G_{ess}\ x \;\Rightarrow \ G \ x\ & \ &\text{:24:29:[├A├B ╞ A→B] :: Theorem 2.2 } \\ \text{31} &\quad \ G\ x \;\Longleftrightarrow\; \ G_{ess}\ x \ & \ & \text{:25:30:[Konjunktion]:BIKONDITIONAL :: [(A→B) ∧ (B→A) ↔ (A↔B)] } \\ \text{(Theorem 2)} &\; \text{„Dasein, GOTT-Sein, ist das Wesen GOTTES“} & \ & \Longleftarrow\; \text{was zu beweisen war ! } \\ \text{32} &\quad \text{ ├ }\; \Box \; \forall y(\ G \ y \Rightarrow \ (x = y))\ & \ & \text{:19:Instanz(Y:=(x=..))} \\ \text{33} &\quad \ G\ x \;\Rightarrow\; \Box \; \forall y(\ G \ y \Rightarrow \ (x = y))\ & \ & \text{:01:32:[├A├B ╞ A→B]} \\ \text{(Korollar 2)} & \;\text{„Es gibt notwendig höchstens einen GOTT“} & \ & \text{„Wenn es GOTT gibt, dann gibt es für jede mögliche Welt nur einen GOTT“} \\ \end{align}</math> </small> |} <span style="color:#00B000"><small>(In den Kalkül-Zeilen 16, 18, 31 mussten zwei-, und in Zeile 22 drei Kalkül-Schritte, d.h. Logik-Operationen in eine Zeile zusammengezogen werden, weil der Parser dieser speziellen Mathematik-Funktion in Wikibooks jedes Mal wegen Puffer-Überlauf abstürzt, wenn zu den bestehenden Zeilen noch eine neue Zeile, oder ein Text-Element, zusätzlich eingefügt wird. Das vermindert etwas die Transparenz des Kalküls.)</small></span> Anmerkung-2 ''':''' <span style="color:#00B000">(Dieser Beweisgang kommt auch ohne das ,unbestimmte‘ Konjunkt <span style="color:#4C58FF"> — ‚'''Xx'''‘ —</span> in der Definition-2 zum gleichen Ergebnis, und wird dadurch um eine Zeile verkürzt ''':''' Zeile 21 entfällt, und <span style="color:#4C58FF">[ KOMM(∧) ]</span> ist dann unnötig. Dieses Konjunkt wird hier ebenfalls schon in der Kalkül-Prämisse :01: <span style="color:#4C58FF"> — ‚'''Gx'''‘ —</span>, als ,Annahme‘ gesetzt, vorentschieden und ,bestimmt‘ mit der <span style="color:#4C58FF">[ Instanz(X:=G) ]</span>. Es war also logisch korrekt, dass GÖDEL, in seiner Notiz vom 10. Feb. 1970 zum ontologischen Beweis, dieses Konjunkt weggelassen hat, was ihm von Kommentatoren als ein Flüchtigkeitsfehler angerechnet worden war. Der gesamte 2. Beweisgang bewegt sich im Geltungsbereich der Prämisse Term :01:, d.h. ist in jeder Zeile von der Annahme abhängig ''':''' die Variable <span style="color:#4C58FF"> — ‚'''x'''‘ —</span> steht für den GOTT der Christen. In der Kalkül-Zeile 33 wird mit Korollar-2 diese Abhängigkeit, für den Term :32:, explizit dargestellt.)</span> Der Beweisgang geht mit der Prämisse :01: prinzipiell, als ,modal‘ freigewählte Voraussetzung, von der Existenz eines GOTTES aus. Im 1. Beweisgang wurde bewiesen, dass die von GÖDEL ,postulierten‘ <span style="color:#FF6000">»''allgemeinen positiven Eigenschaften, Vollkommenheiten, Perfektionen'', <span style="color:#00B000">[ die sog. ,Transzendentalien‘ ]</span> ''konsistent''«</span>, d.i. widerspruchsfrei sind. Hier, in diesem Beweisgang wird nun die Prämisse vom 1. Beweisgang, <span style="color:#4C58FF"> — ‚'''PX'''‘ —</span>, im Bezug auf GOTT hinterfragt ''':''' Gibt es auch in GOTT so Etwas, wie <span style="color:#FF6000">»''Vollkommenheit, Positives, Perfektes''«</span> '''?''' Die ,Annahme‘ jedoch, dass es <span style="color:#FF6000">»''in GOTT keine Vollkommenheit, nichts Positives, nichts Perfektes''«</span> <span style="color:#00B000">(keine Transzendentalien)</span> gibt, <span style="color:#00B000">(Prämisse Term :03:)</span>,<span style="color:#4C58FF"> — ‚'''¬PY'''‘ —</span>, d.h. dass die <span style="color:#00B000">(wesentlichen)</span> Eigenschaften in GOTT keine <span style="color:#FF6000">„Vollkommenheiten“</span> seien, führt aber zu einem unlösbaren Widerspruch, <span style="color:#00B000">(Term :10:)</span>. Mit Term :13:, als 1. Hauptergebnis, ist damit, — als ,neue‘ Prämisse, <span style="color:#00B000">(ersetzt Term :03:)</span> —, definitiv ,bewiesen‘ <span style="color:#00B000">( ╞ , d.h. es ist ,wahr‘ und ,widerspruchsfrei‘)</span>, dass alle Eigenschaften, die hier mit <span style="color:#4C58FF">— ‚'''Y'''‘ —</span> symbolisiert werden, <span style="color:#FF6000">„positive Eigenschaften“</span>, d.h. <span style="color:#FF6000">„Perfektionen“</span> sind, von denen das Kalkül ,annimmt‘, <span style="color:#00B000">(Prämissen Term :01:, Term :02: und speziell Term :16:)</span>, dass der GOTT der Christen sie besitzt. Alle ,Wesenseigenschaften‘ in GOTT ''':''' <span style="color:#4C58FF">— ‚'''Y'''<sub>ess</sub>‘ —</span>, die durch den Term :13:, <span style="color:#4C58FF">— ‚'''PY'''‘ —, </span> dargestellt werden, sind somit <span style="color:#FF6000">„Vollkommenheiten“</span> ''':''' <span style="color:#4C58FF">— ‚'''P'''‘ —</span><span style="color:#00B000">, (,ultimative Transzendentalien‘, aller ,Grade‘)</span>. Damit ist definitiv ‚bestätigt‘, <span style="color:#00B000">( ╞ , es ist ,wahr‘ und ,widerspruchsfrei‘)</span>, was mit Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, schon ‚angenommen‘ worden ist ''':''' <span style="color:#FF6000">»''GOTT ist perfekt; er hat alle positiven Eigenschaften''«</span>; und auch Definition-1 ist damit ,verifiziert‘ ''':''' <span style="color:#FF6000">»''GOTT ist genau deswegen GOTT, weil er, als GOTT, positive Eigenschaften aller Grade in sich schließt''«</span>; entsprechend dem Quelltext bei LEIBNIZ ''':''' <span style="color:#FF6000">»''GOTT ist ein Wesen von äußerster Größe und Vollkommenheit, das alle Grade derselben in sich schließt''«</span>. Immer vorausgesetzt, <span style="color:#00B000">(,angenommen‘)</span>, man glaubt an GOTT ''':''' <span style="color:#00B000">(Term :01:)</span>. <span style="color:#00B000">(Der ,Schlüsselbegriff‘ <span style="color:#4C58FF">— ‚'''P'''‘ —</span> ist der ,Schlüssel‘ zur Erkenntnis, dass GOTT ,notwendig‘, sowohl ,wesentlich‘ für uns, als auch an sich ,grundlos‘, immer schon ,da‘ ist.)</span> Hier, <span style="color:#00B000">(im 2. Beweisgang)</span>, hat Axiom-1, <span style="color:#00B000">(im Term :04:)</span>, sicher gestellt, dass die Eigenschaften in GOTT, <span style="color:#00B000">(Definition-1; Term :06:)</span>, tatsächlich <span style="color:#FF6000">„ultimativ positiv, perfekt und vollkommen“</span> sind ''':''' <span style="color:#4C58FF">— ‚'''PY'''‘ —</span>. Das GÖDEL-Axiom-1 bezieht seine ,Potenz‘ aus dem Prinzip vom ,auszuschließenden‘ Widerspruch ''':''' eine Eigenschaft kann nicht zugleich ,positiv‘ und ,nicht positiv‘ sein '''!''' Formal lässt sich das 2. Hauptergebnis, Theorem-2 ''':''' <span style="color:#4C58FF">— ‚'''Gx'''↔'''G'''<sub>ess</sub>'''x'''‘ — </span> ''':''' schon aus Term :23: in diesem Beweisgang mit der <span style="color:#4C58FF">[ Vereinfachung ] :: [ A∧B ├ B ]</span> ohne Weiteres ,regulär‘ ableiten, — analog zu den Vorgehensweisen bei A. FUHRMANN und G.J. WIRSCHING. <span style="color:#00B000">(Beide Aussagen dieser ,Konjunktion‘ sind ,gleichwertig‘, daher partizipiert das Theorem-2 auch am Ergebnis der Widerspruchsfreiheit von Term :13:, <span style="color:#4C58FF">— ‚'''PY'''‘ —</span>, dem 1. Hauptergebnis.)</span> Der hier gewählte, etwas längere Weg zum Ergebnis, soll die innere Struktur und Abhängigkeit der Ergebnisse von bestimmten Voraussetzungen offen legen, und ihren ,Zweck‘ verdeutlichen. Die beiden Hauptergebnisse im Basisbeweis gehen vom vorgefundenen und traditionell vorgegebenen Begriff von ,GOTT‘ aus, <span style="color:#00B000">(Term :06:, Term :16: und Term :26:)</span>. Das ,bewiesene‘ <span style="color:#00B000">( ╞ )</span> 1. Hauptergebnis, hier im 2. Beweisgang, Term :13: <span style="color:#4C58FF">— ‚'''PY'''‘ —</span> ''':''' <span style="color:#FF6000">»''die Eigenschaften in GOTT sind vollkommen, d.h. sind die ultimativen Transzendentalia''«</span>, rechtfertigt, bzw. verifiziert sowohl Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, als auch die Definition-1 ''':''' <span style="color:#4C58FF">— ‚'''Gx↔∀X(PX→Xx)'''‘ —</span>, für die Annahme ''':''' den ,GOTT der Christen‘, der deswegen GOTT ist, weil er alle Grade der Vollkommenheit in sich schließt. Und das ebenfalls ,bewiesene‘ <span style="color:#00B000">( ╞ )</span> 2. Hauptergebnis, hier im selben Beweisgang, Theorem-2 ''':''' <span style="color:#4C58FF">— ‚'''Gx'''↔'''G'''<sub>ess</sub>'''x'''‘ —</span> ''':''' <span style="color:#FF6000">»''das Wesen GOTTES ist sein eigenes Sein''«</span>, rechtfertigt, bzw. verifiziert sowohl Axiom-5 ''':''' <span style="color:#4C58FF"> — ‚'''PE'''<sub>not</sub>‘ —</span>, als auch die Definition-3 ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x ↔ ∀X(X'''<sub>ess</sub>'''x →□∃yXy)'''‘ —</span>, für die Wesenseigenschaft ''':''' ,notwendige Existenz‘, und widerlegt den Einwand KANTS, für den Spezialfall ''':''' <span style="color:#4C58FF">— ‚'''x'''‘ —</span> steht für ,GOTT‘. Zwei Axiome und zwei Definitionen von GOTT und seinen Vollkommenheiten werden durch die Ergebnisse im Basisbeweis des GÖDEL-Kalküls in unserer realen Welt als ,wahr‘, <span style="color:#00B000">(genauer als ,widerspruchsfrei‘)</span>, und, — im Rahmen des christlichen Glaubens —, als ,annehmbar‘ bestätigt. <span style="color:#00B000">(Anmerkung zu Term :24: ''':''' eine Prämisse ist regulär-,modal‘ immer ,frei‘ wählbar.)</span> Zusammengefasst heißt das ''':''' die ,strittige‘ Begründung der ,methodologischen‘ Prämisse des GÖDEL-Kalküls ''':''' <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span> ''':''' <span style="color:#00B000">(Prämisse, Term :01:)</span>, weil <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span> ''':''' <span style="color:#00B000">(Korollar-1)</span> ''':''' <span style="color:#FF6000">»''Das <span style="color:#4C58FF">‚'''x'''‘</span> steht für den GOTT der Christen, für den es ohne Widerspruch denkbar ist, dass es ihn gibt''«</span>, <span style="color:#00B000">(ANSELMS Prinzip, trotz der ,Warnung‘ KANTS)</span>, ist ,wahr‘ und für uns ,annehmbar, denn es ist auch, auf Grund der Ergebnisse des 2. Beweisganges, in unserer realen Welt ,wahr‘ und ,annehmbar‘, weil schon als ,widerspruchsfrei‘ verifiziert ''':''' <span style="color:#FF6000">»''Der GOTT der Christen'' <span style="color:#00B000">(Term :01:)</span> '',existiert‘ für uns ,notwendig‘''«</span> ''':''' <span style="color:#4C58FF"> — ‚'''Gx→E'''<sub>not</sub>'''x'''‘ —</span>, <span style="color:#00B000">(d.i. das ,regulär‘-mögliche Korollar sowohl im 2. als auch im 3. Beweisgang)</span>, denn dieser GOTT ist aus sich ,vollkommen‘ ''':''' <span style="color:#4C58FF"> — ‚'''PG'''‘ —</span>, und zu seiner ,Vollkommenheit‘ <span style="color:#4C58FF">— ‚'''P'''‘ —</span> gehört auch notwendig sein ,Existieren‘ ''':''' <span style="color:#4C58FF"> — ‚'''PE'''<sub>not</sub>‘ —</span>. <span style="color:#00B000">(Jeder dieser Terme ist im-, und durch den 2. Beweisgang, im Geltungsbereich der Prämisse Term :01:, als ,wahr‘ und ,annehmbar‘ bewiesen, bzw. verifiziert.)</span> Das ist der ,Kern‘ des ontologischen Arguments, und somit ist auch diese ,strittige‘ Begründung der Prämisse des GÖDEL-Kalküls mit den Maßstäben der modernen Logik <span style="color:#FF6000">»''durchaus vereinbar''«</span>, d.h. sie ist logisch ,richtig‘ und, im Kontext des christlichen Glaubens, vernünftig. Die Annahme des Gegenteils zu dieser Prämisse ''':''' <span style="color:#4C58FF">— ‚'''¬◇∃xGx'''‘ —</span> ''':''' <span style="color:#FF6000">»''Es ist undenkbar, dass es diesen GOTT gibt''«</span>, führt jedoch, unabhängig von jeder Glaubensüberzeugung, zu einem Widerspruch — ist unlogisch und daher ,falsch‘, <span style="color:#00B000">(siehe Anhang ''':''' Widerlegung)</span>. Die Behauptung einer ,formalen Unentscheidbarkeit‘ zu den Annahmen über die Existenz GOTTES, ob oder nicht, <span style="color:#00B000">(d.h. ein ,methodologischer‘ Agnostizismus)</span>, ist gegen jede ,Logik‘; und ist auch ,falsch‘, d.h. der Agnostizismus ist einfach nur ein ,logischer Irrtum‘. Denn aus dem, im Kalkül abgeleiteten, Widerspruch aus der einen Annahme, und damit ihrer Unrichtigkeit, folgt notwendig die Richtigkeit der gegenteiligen Annahme. Damit ist eine klare Entscheidung getroffen. Das Modale-Prinzip <span style="color:#4C58FF">['''RM''']</span> in Worten ''':''' <span style="color:#FF6000">»''Wenn es wahr ist, dass aus'' <span style="color:#4C58FF"> — ‚'''A'''‘ —</span> ''ein'' <span style="color:#4C58FF"> — ‚'''B'''‘ —</span> ''logisch folgt, dann ist in einem Kalkül regulär'' <span style="color:#00B000">( ├ )</span> ''ableitbar, dass, wenn'' <span style="color:#4C58FF"> — ‚'''A'''‘ —</span> '',modal‘ notwendig'' <span style="color:#00B000">( □ )</span> ''ist, auch'' <span style="color:#4C58FF"> — ‚'''B'''‘ —</span> '',modal‘ notwendig'' <span style="color:#00B000">( □ )</span> ''ist''«</span>. <span style="color:#00B000">(Das <span style="color:#4C58FF"> — ‚'''A'''‘ —</span> in Term :18: ist als ,modal notwendig‘ durch den Term :15: verifiziert '''!''' )</span> Mit dem 2. Hauptergebnis, Theorem-2 ''':''' <span style="color:#FF6000">»'',Dasein‘ ist das ,Wesen‘ GOTTES''«</span>, folgt die GÖDEL-Axiomatik der philosophisch-<span style="color:#4C58FF">,theologischen‘</span> Tradition der ,Rede von GOTT‘ seit ARISTOTELES, und schließt sich damit formal-syntaktisch zugleich auch der religiösen Überzeugung der Christen an, die glauben, dass GOTT, als unser Vater, aus Liebe, in seinem Sohn, JESUS CHRISTUS, für uns immer schon <span style="color:#FF6000">»''da''«</span> ist, <span style="color:#00B000">(der Sohn ist koinzident ,eins‘ mit GOTT, dem Vater und dem GEIST)</span>, wirksam in und durch seine <span style="color:#4C58F0">„Kirche“</span>, im HEILIGEN GEIST, bis ans Ende der Zeit. Das ist das, <span style="color:#FF6000">»''was''«</span> GOTT eigentlich für uns ausmacht, — die Selbstmitteilung seines unergründlichen Wesens in den Sakramenten der <span style="color:#4C58F0">„Kirche“</span> ''':''' <span style="font-family: Times;"><big>‘אֶֽהְיֶ֖ה אֲשֶׁ֣ר אֶֽהְיֶ֑ה‚</big></span> <span style="color:#00B000">| ‚eh'jeh asher eh'jeh‘ |</span> <span style="color:#CC66FF">»''Ich bin da für euch und für immer, als der ich ''<span style="color:#00B000">[ immer schon gewesen ]</span> ''bin''«</span>; <span style="color:#00B000">(d.i. das <span style="color:#4C58FF">,theologisch‘</span>-exegetische ,Axiom‘ der Christen, und eine <span style="color:#4C58FF">,theologisch‘</span> korrekte Explikation der ,regulären‘ Kalkül-Prämisse Term :01: <span style="color:#4C58FF"> — ‚'''Gx'''‘ —</span>, jeweils im 2. und 3. Beweisgang)</span>. Das heißt aber nicht, dass der Autor des Kalküls sich mit diesem Glauben identifiziert hat, <span style="color:#00B000">(,hat‘ er auch nicht)</span>, oder dass der Leser des ontologischen Beweises von Kurt GÖDEL sich damit identifizieren muss, wenn er dessen <span style="color:#FF6000">»''mathematische Evidenz''«</span> anerkennt. Zur erweiterten <span style="color:#4C58FF">„theologischen“</span> Explikation der Kalkül-Prämisse ''':''' Die <span style="color:#4C58F0">„Kirche“</span> ist das ,Meisterwerk‘ GOTTES ''':''' In ihr ist es GOTT gelungen, etwas Göttliches und Unzerstörbares in unsere korrupte Welt einzupflanzen ''':''' <span style="color:#4C58FF"> — ‚'''Gx→E'''<sub>not</sub>'''x'''‘ —</span> ''':''' <span style="color:#FF6000">»''Etwas Göttliches existiert notwendig, d.h. ,unzerstörbar‘ in unserer Welt''«</span>. Sie ist, durch die Menschwerdung des GOTTES Sohnes, JESUS CHRISTUS, dessen <span style="color:#4C58F0">„Leib“</span> die <span style="color:#4C58F0">„Kirche“</span> ist, untrennbar mit Menschen verbunden, die schon, von allem Anfang an, und jetzt immer noch, durch die Sünde korrumpiert sind. Mit ihr will und wird GOTT unsere Welt und die Menschheit, bis ans Ende der Zeit, von der Sünde und von deren Konsequenz, dem <span style="color:#00B000">(ewigen)</span> Tod <span style="color:#4C58FF">„erlösen“</span>, <span style="color:#00B000">(jedoch nicht ohne die Zustimmung des Menschen)</span>. Mit dieser Explikation wird die Tragweite des ontologischen Arguments ANSELMS, und damit auch die <span style="color:#4C58FF">„theologische“</span> Relevanz der GÖDEL-Axiomatik erkennbar. Immer vorausgesetzt, <span style="color:#00B000">(,angenommen‘)</span>, man glaubt an GOTT, <span style="color:#00B000">(Term :01:)</span>. ====<div class="center"><span style="color:#660066">3. Beweisgang</span></div>==== {|class="wikitable" |- ! <div class="center"><span style="color:#660066">GÖDELS ontologischer Beweis für Theorem 3, (ANSELMS Theorem)</span></div> |- ! <span style="color:#00B000">''Terme der erweiterten Prädikatenlogik zweiter Stufe___________________„Benennungen“ und durchgeführte Logik-Operationen''</span> |- | <small> <math>\begin{align} \text{(Axiom 5)} & \quad P\ E_{not}\; \ & \text { } & \text{„Notwendige Existenz ist eine positive Eigenschaft“} \\ \text{ } & \text{( :: Das ist nur dann wahr, wenn ,Dasein‘ und ,Wesen‘ } & \ & \text{( :: dagegen KANT : ,Existenz‘ ist keine ,Eigenschaft‘,} \\ \text{ } & \;\;\text{in eins zusammenfallen ! ARISTOTELES : Theorem-2)}\ & \ & \;\;\text{,Sein‘ ist für alles, was existiert, kein ,reales Prädikat‘ ! )} \\ \text{(Definition 1)} &\quad \ G\ x \;\Longleftrightarrow\; \forall X(\ P \ X \Longrightarrow \ X \ x)\ & \ & \text{„x ist genau dann GOTT, wenn x alle positiven Eigenschaften hat“} \\ \text{(Definition 3)} & \quad \ E_{not}\ x \;\Longleftrightarrow\;\ \forall X \left(\ X_{ess}\ x \Longrightarrow \Box \; \exists y \ X\ y \right) & \ & \text{„Notwendige Existenz ist genau dann eine Eigenschaft von x, wenn} \\ \text{ } & \quad & \ & \;\;\text{alle wesentl. Eigenschaften von x notwendig instanziiert sind“} \\ \text{(Korollar 1)} & \quad \Diamond \; \exists x \ G \ x \ & \ & \text{„Es ist widespruchsfrei möglich, dass es GOTT gibt“} \\ \text{(Theorem 2)} &\quad \ G\ x \;\Longleftrightarrow\; \ G_{ess}\ x \ & \ &\text{„Dasein, GOTT-Sein, Existenz ist das Wesen, die Essenz GOTTES“} \\ \text{(Korollar 2)} &\quad \ G\ x \;\Longrightarrow\; \Box \; \forall y(\ G \ y \Longrightarrow \ (x = y))\ & \ &\text{„Wenn es GOTT gibt, dann gibt es notwendig nur einen GOTT“} \\ \text{(Theorem 3)} & \quad \Diamond \; \exists x \ G \ x \;\Longrightarrow\; \Box \; \exists x \ G \ x \ & \ & \text{( :: ANSELMS Prinzip)} \\ \text{ } & \text{„Weil es widerspruchsfrei möglich ist, dass es GOTT gibt,} & \ & \Longleftarrow\; \text{was zu beweisen ist !} \\ \text{ } & \;\;\text{ist der Glaube, dass es GOTT wirklich gibt, widerspruchsfrei“} \\ \text{01} & \quad \ G \ x\ & \ & \text{ AE: „Angenommen, x steht für den GOTT der Christen“} \\ \text{02} & \quad \forall X(\ P \ X \Rightarrow \ X \ x)\ & \ & \text{(D1):01:[Modus ponens] :: (logische Schlussregel)} \\ \text{03} & \quad \ P \ X \Rightarrow \ X \ x\ & \ & \text{:02:[ⱯXA(X) ├ A(X)] :: (Quantorenregel)} \\ \text{04} & \quad \ P \ E_{not}\;\Rightarrow \ E_{not}\ x\ & \ & \text{:03:Instanz(X:= Enot) :: (Substitution für Eigenschaften)} \\ \text{05} & \quad \ E_{not}\ x\ & \ & \text{(A5):04:[Modus ponens] :: [A, A → B├ B]} \\ \text{06} & \quad \forall X \left(\ X_{ess}\ x \Rightarrow \Box \; \exists y \ X\ y \right) & \ & \text{(D3):05:[Modus ponens]} \\ \text{07} & \quad \ X_{ess}\ x \Rightarrow \Box \; \exists y \ X\ y & \ & \text{:06:[ⱯXA(X) ├ A(X)]} \\ \text{08} & \quad \ G_{ess}\ x \Rightarrow \Box \; \exists y \ G\ y & \ & \text{:07:Instanz(X:= G)} \\ \text{09} & \quad \ G_{ess}\ x \ & \ & \text{(Th2):01:[Modus ponens]} \\ \text{10} & \quad \text{ ├ }\;\Box \; \exists x \ G\ x & \ & \text{:08:09:[Modus ponens]:FUB(y:=x) :: (Freie-Um-Benennung der Var.)} \\ \text{ } & \text{„Es gibt GOTT wirklich, für jede mögliche Welt“} & \ & \Longleftarrow\; \text{1. Hauptergebnis !} \\ \text{11} & \quad \;\Diamond \exists x \ G \ x \;\Longrightarrow \; \Box \; \exists x \ G\ x & \ & \text{(K1):10:[├A├B ╞ A→B] :: ''KONDITIONALER BEWEIS''} \\ \text{(Theorem 3)} & \;\text{„Weil es widerspruchsfrei möglich ist, dass es GOTT gibt,} & \ & \Longleftarrow\; \text{was zu beweisen war ! 2. Hauptergebnis ! } \\ \text{ } & \;\;\text{ist der Glaube, dass es GOTT wirklich gibt, widerspruchsfrei“} \\ \text{12} & \quad \;\Box \; \forall y(\ G \ y \Longrightarrow \ (x = y))\ & \ &\text{(K2):01:[Modus ponens]} \\ \text{13} & \quad \;\Box \; (\exists x \ G\ x \wedge \; \forall y(\ G \ y \Longrightarrow \ (x = y)))\ & \ & \text{:10:12:[Konjunktion]:DIST(□∧)} \\ \text{(Korollar 3)} & \;\text{„Es gibt notwendig genau nur einen GOTT“} & \ & \text{„Es gibt für jede mögliche Welt nur den GOTT der Christen“} \\ \end{align}</math> </small> |} Anmerkung-3 ''':''' <span style="color:#00B000">(Ein Theorem und zwei Korollare, aus den beiden vorhergehenden Beweisgängen, werden hier, im 3. Beweisgang, zu ,Axiomen‘, die das Theorem-ANSELMS und sein Korollar mit-verifizieren und bestätigen.)</span> Dieser Beweisgang ist das Ziel aller Bemühungen. Hier wird der sog. ,ontologische Gottesbeweis‘ nach ANSELM von Canterbury formal-syntaktisch dargestellt und als logisch nachvollziehbar von GÖDEL bestätigt. Damit hat er aber auch klar gestellt, dass der ontologische Beweis ANSELMS kein Beweis für die ,Existenz‘ des GOTTES der Bibel sein kann, bzw. sein ,will‘ ''':''' Denn mit der Prämisse, <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, <span style="color:#00B000">(Term :01:, wie auch schon im ,Basisbeweis‘, und ausformuliert hier in Term :02:, mit der Definition für GOTT)</span>, wird mit dem traditionellen, abendländischen ,GOTT-Glauben‘, der ,glaubt‘, dass der Gott der Christen tatsächlich existiert, — methodologisch als ,Annahme‘ —, der Beweisgang schon regulär und explizit eröffnet, aus dem sich dann, logisch korrekt, mit Hilfe der GÖDEL-Axiome und Definitionen, das ,Theorem ANSELMS‘ ergibt; <span style="color:#00B000">(hier jedoch, mit Günther J. WIRSCHING, ohne den Umweg bei GÖDEL über den <span style="color:#4C58FF">[ Modus Barbara ] :: [ A → B, B → C ├ A → C ] </span>, mit dem modalen Axiom-BECKER ''':''' <span style="color:#4C58FF">— ‚'''◇□A→□A'''‘ —</span>, als <span style="color:#4C58FF">‚B → C‘</span> im kategorischen Syllogismus, das André FUHRMANN recherchiert hat)</span>. GÖDEL verwendet zur Darstellung des sog. ,ontologischen Gottesbeweises‘ nach ANSELM die Struktur eines modal-logischen Kalküls. Ein modal-logisches Kalkül ist ein genau geregeltes Schema, in dem bei bestimmten ,Annahmen‘ <span style="color:#00B000">(Axiome, Definitionen, Prämissen)</span> etwas anderes als das Vorausgesetzte, auf Grund des Vorausgesetzten mit Notwendigkeit folgt. Entsprechend der ,Modalität‘ der sechs ,modal‘ notwendigen, d.h. transzendentalen Voraussetzungen, hier, für den 3. Beweisgang, die in den <span style="color:#00B000">(und durch die)</span> beiden vorhergehenden Beweisgängen schon als <span style="color:#FF6000">„modal wahr“</span>, bzw. als logisch annehmbar, verifiziert und/oder ,bewiesen‘ wurden, sind auch die beiden ,Schlusssätze‘ <span style="color:#00B000">(Theorem-3 und Korollar-3)</span> <span style="color:#FF6000">„modal wahr“</span>, bzw. logisch annehmbar '''!''' Die Wahl der Prämisse :01: dagegen ist nicht ,modal‘ notwendig, sondern beruht auf einer freien Entscheidung, und damit ist auch ihre Interpretation eine freie Entscheidung, mit der Voraussetzung, dass man das Kalkül mit Theoremen aus der <span style="color:#4C58FF">„christlichen Theologie“</span> evaluieren, und damit interpretieren will. Dazu berechtigt die Genese des Kalküls. Der Glaube an den GOTT der Christen ''':''' <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, beruht immer auf einer freien Entscheidung. Das Kalkül, als solches, unabhängig von jeder Interpretation seiner Syntax, ist genau dann ,allgemein‘ <span style="color:#FF6000">»''mathematisch evident''«</span>, d.h. ,ist allgemein gültig‘, wenn es gültigen Logik-Regeln folgt. Die Bestimmung seiner Syntax jedoch, d.h. seine Interpretation, unterliegt hermeneutischen Kriterien, die nicht von Logik-Regeln abhängen, wie hier ''':''' <span style="color:#FF6000">»''(unabhängig von der zufälligen Struktur der Welt). Nur dann sind die Axiome wahr''«</span>, wie GÖDEL selbst hinzufügt. Mit der, — von GÖDEL eingeforderten —, ‚Unabhängigkeit‘ der Kalkül-Axiome von der zufälligen Struktur der Welt, wird implizit für das Kalkül auch festgelegt, dass <span style="color:#FF6000">„GOTT“</span> ‚unabhängig‘ von der zufälligen <span style="color:#00B000">(Raum-Zeit-)</span>Struktur unserer vergänglichen Welt, und daher ,zeitlos-ewig‘ ist, <span style="color:#00B000">(was <span style="color:#4C58FF">„theologisch“</span> korrekt ist)</span>, begründet durch Definition-1 und Axiom-3. Aus der zeitlosen Ewigkeit GOTTES folgt, dass GOTT, <span style="color:#FF6000">„unverursacht“ <span style="color:#00B000">|</span> „grundlos“</span>, für uns immer schon ‚da‘ ist, denn bei Zeitlosigkeit gibt es keinen ,zeitlichen‘ und damit auch keinen ,ontologischen‘ Unterschied zwischen ‚Ursache‘ und ‚Wirkung‘. Beides ist dann koinzident ,eins‘ ''':''' wie ,Wesen‘ und ,Dasein‘ in GOTT, bzw. wie ,Begriff‘ und ,Sein‘, oder ,Möglichkeit‘ und ,Wirklichkeit‘. <span style="color:#00B000">(Man vergleiche damit auch die ,postulierte‘ Einheit von ,Erkenntnisobjekt‘ und ,Erkenntnissubjekt‘ im ,Gott‘ des ARISTOTELES ''':''' im <span style="color:#FF6000">»<span style="color:#00B000">[ selbstbewussten ]</span> ''Erkennen seiner Erkenntnis''<span style="color:#00B000">[-Tätigkeit ]</span>«<span style="color:#00B000"> | </span>„<span style="font-family: Times;"><big>νοήσεως νόησις</big></span>“<span style="color:#00B000"> | </span>„noêseôs noêsis“</span> <small>(‚<span style="font-family: Times;"><big>''Metaphysik''</big></span>‘ XII 9, 1074b34)</small>, im Vollzug seiner Funktion als ,unbewegtes Bewegungsprinzip‘, als <span style="color:#FF6000">„<span style="font-family: Times;"><big>πρῶτον κινοῦν ἀκίνητον</big></span>“<span style="color:#00B000"> | </span>„prôton kinoûn akinêton“</span> der Welt, das alles Übrige <span style="color:#FF6000">»''wie ein Geliebtes''«<span style="color:#00B000"> | <span style="color:#FF6000">„<span style="font-family: Times;"><big>ὡς ἐρώμενον</big></span>“</span> | <span style="color:#FF6000">„hôs erômenon“</span> bewegt; d.h. christlich ''':''' <span style="color:#FF6000">»''aus Liebe''«</span> ,entstehen‘ lässt.)</span> Anmerkung-4 ''':''' Das <span style="color:#00B000">(im 2. Beweisgang)</span> schon bewiesene Theorem-2, d.i. die Koinzidenz von <span style="color:#FF6000">„Sein“</span> und <span style="color:#FF6000">„Wesen“</span> in GOTT, <span style="color:#00B000">(‚Existenz‘</span> und <span style="color:#00B000">‚Essenz‘)</span>, rechtfertigt sowohl Axiom-5 als auch die Definition-3, und widerlegt den Einwand KANTS. Somit ist deren Setzung <span style="color:#00B000">(hier, im 3. Beweisgang)</span> korrekt, und durch das Theorem-2 schon vorbestimmt und bestätigt, d.h. beide sind <span style="color:#FF6000">„modal wahr“</span> und ,logisch‘ annehmbar, da sie durch die Gültigkeit von Theorem-2 ,verifiziert‘ worden sind. Damit wird klar erkennbar, dass das Theorem-2 tatsächlich die Basis des GÖDEL-Kalküls ist. Und wenn damit Axiom-5 im GÖDEL-Kalkül ‚gerechtfertigt‘ ist, dann ist auch, <span style="color:#00B000">(als Voraussetzung dafür)</span>, das Axiom-4 ''':''' <span style="color:#4C58FF">— ‚'''PX → □PX'''‘ — ''':''' </span> <span style="color:#FF6000">»''Positive Eigenschaften'', <span style="color:#00B000">[ ,Transzendentalia‘ ]</span>, ''sind notwendig aus sich'', <span style="color:#00B000">[ von Natur aus ]</span>, ''positiv''«</span>, im 2. Beweisgang erklärbar, in dem die ‚Positivität‘, <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, einer Eigenschaft schon als ‚notwendig‘, <span style="color:#4C58FF">— '''□''' —</span>, charakterisiert worden ist, äquivalent zu Axiom-5 ''':''' <span style="color:#4C58FF"> — ‚'''PE'''<sub>not</sub>‘ —</span>, in dem die ‚Notwendigkeit‘, <span style="color:#4C58FF">— <sub>not</sub> —</span>, <span style="color:#00B000">(der Existenz <span style="color:#4C58FF">— ‚'''E'''‘ —</span>)</span>, dann als ‚positive‘ Eigenschaft, <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, ‚bestimmt‘ wird; <span style="color:#00B000">(unter der speziellen Voraussetzung, dass <span style="color:#FF6000">„Existieren“</span> definitiv als eine <span style="color:#FF6000">„Wesenseigenschaft“</span> in GOTT ,instanziiert‘ ist; vgl. Definition-3. Eine ,bestimmte‘ Eigenschaft ist genau dann ,instanziiert‘, wenn sie an einem Träger real ,existiert‘. Definition-3 ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x ↔ ∀X(X'''<sub>ess</sub>'''x →□∃yXy)'''‘ —</span>, besagt, dass die, von GÖDEL ,postulierte‘, und im Basis-Theorem-2 verifizierte, <span style="color:#FF6000">„notwendige Existenz“</span> zu den ,ultimativen‘ Transzendentalia in GOTT gehört. Genauer ''':''' Sie ist die ,Summe‘ aller Transzendentalia.)</span> Zum Axiom-4, <span style="color:#00B000">(bzw. zum Term :14:, im 2. Beweisgang)</span>, erklärt GÖDEL in seinen Notizen zum Kalkül ''':''' <span style="color:#FF6000">»''da es'' <span style="color:#00B000">[ das Notwendigsein, <span style="color:#4C58FF">— '''□''' —</span> ]</span> ''aus der Natur der'' <span style="color:#00B000">[ positiven ]</span> ''Eigenschaft folgt'', <span style="color:#00B000">[ deren Positivität, im selben Beweisgang, mit Term :13: vorher schon ,bewiesen‘ (╞ ) worden ist ]</span>«</span>. Die GÖDEL-Erklärung zum Axiom-4 entspricht der Modal-Regel zur sog. ,Nezessisierung‘ in der KRIPKE-Logik nach GÖDEL. <span style="color:#4C58FF">[ Nezessisierungsregel ] '''::''' [ ├ A →├ □ A ]</span> ''':''' <span style="color:#FF6000">»''Angenommen'', <span style="color:#4C58FF">‚'''A'''‘</span> ''ist in einem Kalkül eine Prämisse, oder darin regulär'' <span style="color:#4C58FF">(├ )</span> ''abgeleitet, dann folgt in diesem Kalkül regulär'' <span style="color:#4C58FF">(├ )</span>, ''dass dieses'' <span style="color:#4C58FF">‚'''A'''‘</span> ''auch ,modal‘ notwendig'' <span style="color:#4C58FF">— ,□‘ —</span> ''ist''«</span>. GÖDEL hat jedoch diese modale Notwendigkeit nur in der ,Natur‘ der positiven Eigenschaften, alias ,Transzendentalia‘, gesehen, und mit den Aussagen im Axiom-4 expliziert ''':''' <span style="color:#4C58FF">— ‚'''PX → □PX'''‘ —</span> ''':''' <span style="color:#FF6000">»''unabhängig von der zufälligen Struktur der Welt, nur dann sind die Axiome wahr''«</span>. Ob dieselbe modale Notwendigkeit auch auf Aussagen über Eigenschaften, wie ,rot‘ oder ,schwer‘, die weder positiv noch negativ sind, zutrifft, ist nicht erwiesen. Hier kann nur von modaler ,Kontingenz‘ gesprochen werden, die universal, alles Seiende innerhalb der <span style="color:#FF6000">»''zufälligen Struktur der Welt''«</span> betrifft. Somit sind die Aussagen <span style="color:#4C58FF">— ‚'''A'''‘ —</span> in der GÖDEL-Regel, nur auf Aussagen über ,positive‘ Eigenschaften eingeschränkt, und nicht allgemein gültig. Die <span style="color:#4C58FF">[ Nezessisierungsregel ]</span> ist nur für <span style="color:#FF6000">„Transzendentalia“ „modal wahr“</span>, und für ,Nicht-Transzendentalia‘ immer <span style="color:#FF6000">„modal falsch“</span>. Der unbegrenzt Unendliche, GOTT, — im Glauben der Christen —, ist deswegen ,notwendig für uns da‘ ''':''' <span style="color:#4C58FF">— ‚'''Gx→E'''<sub>not</sub>'''x'''‘ —</span>, weil er als GOTT ,vollkommen‘, ,perfekt‘ und absolut ,positiv‘, d.h. absolut ,gut allein‘ ist, ohne jede Negativität ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>; <span style="color:#00B000">(was auch schon im 2. Beweisgang mit Term :13: verifiziert wurde)</span>. Und wenn GOTT ,vollkommen‘, ,perfekt‘, ,positiv‘, und absolut ,gut‘ ist, dann ist er das auch ,notwendig aus sich‘ ''':''' <span style="color:#4C58FF">— ‚'''PG → □PG'''‘ — ::</span> <span style="color:#00B000">(als Zusatz-Korollar im 2. Beweisgang mit Axiom-4 und der <span style="color:#4C58FF">[ Instanz(X:=G) ]</span>)</span>, d.h. ,aus seinem Wesen‘. Das ist gerade das, ,was‘ GOTT als GOTT ausmacht ''':''' sein ,Wesen‘, bzw. seine <span style="color:#FF6000">„Natur“</span>. Zusammen mit der Definition-1 für GOTT, <span style="color:#00B000">(und der Definition-2 ''':''' Alle Wesenseigenschaften hängen notwendig gleichwertig aus sich zusammen)</span>, ist dieses, aus der <span style="color:#FF6000">„Natur“</span> GOTTES sich ergebende, ‚Notwendigsein‘, <span style="color:#4C58FF">— '''□''' —</span>, aller ‚positiven‘ Eigenschaften im Axiom-4, und ihr logischer Zusammenhang, d.i. die Koinzidenz aller ,Vollkommenheiten‘ und ,Zuschreibungen‘ im Unendlichen, GOTT, ihr ,Zusammenfallen in eins‘, die entscheidende Voraussetzung, aus der sich dann für GÖDEL <span style="color:#00B000">(im 2. Beweisgang)</span> auch der logische Zusammenhang, bzw. die ontologische Identität, <span style="color:#00B000">(die Koinzidenz)</span>, von <span style="color:#FF6000">„Dasein“</span> und <span style="color:#FF6000">„Wesen“</span> in GOTT, im Basis-Theorem-2 ''':''' <span style="color:#4C58FF"> — ‚'''Gx↔G'''<sub>ess</sub>'''x'''‘ —</span> mit Notwendigkeit ergibt. Damit hat GÖDEL ein altes <span style="color:#4C58FF">„theologisches“</span> Theorem der Vergessenheit entrissen. Das Theorem-2 ist dann, in weiterer Folge, die ,modal‘ notwendige, d.h. die transzendentale Voraussetzung auch für den Konsequenz-Teil im Theorem ANSELMS, <span style="color:#00B000">(Term :09: hier im 3. Beweisgang)</span>. <span style="color:#FF6000">„Positive Eigenschaften“<span style="color:#00B000"> | </span>„Vollkommenheiten“</span> sind ,immer‘ auch <span style="color:#FF6000">„notwendige Eigenschaften“</span>, daher ''':''' <span style="color:#4C58FF"> — ‚'''PE'''<sub>not</sub>‘ —</span>. Das ,Dasein‘, die <span style="color:#FF6000">„Existenz“</span> ist ,immer‘ etwas <span style="color:#FF6000">„Positives“</span>, speziell in GOTT, dem Schöpfer jeder ,Existenz‘, bzw. allen ,Seins‘. Axiom-4 begründet im GÖDEL-Kalkül das Basis-Theorem-2, <span style="color:#00B000">(wie auch das Korollar-3 von der exklusiven Einzigartigkeit GOTTES)</span>, und ,verankert‘ diese Theoreme damit zugleich in der <span style="color:#4C58FF">,theologisch‘</span>-philosophischen Tradition der ,Rede von GOTT‘ bei ARISTOTELES, — AVICENNA, — ANSELM, — DESCARTES, — LEIBNIZ, — HEGEL, — und bei GÖDEL mit äußerster ,logischer‘ Klarheit. Anmerkung-5 ''':''' Der ‚Schlüsselbegriff‘ in diesem Kalkül ''':''' <span style="color:#FF6000">„positive Eigenschaft“</span>, bzw. <span style="color:#FF6000">„Vollkommenheit“<span style="color:#00B000"> | </span>„Perfektion“</span>, <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, dominiert alle Axiome des GÖDEL-Kalküls, jedoch ohne inhaltlich genauer ‚bestimmt‘ worden zu sein. Für <span style="color:#4C58FF">— ‚'''P'''‘ — </span> gibt es keine explizite Definition '''!''' <span style="color:#00B000">(Das Theorem-1 ''':''' <span style="color:#4C58FF">— ‚'''PX→◇∃xXx'''‘ —</span>, besagt nur, dass die ,postulierten‘, positiven Eigenschaften, die <span style="color:#FF6000">„Transzendentalia“</span>, formal miteinander verträglich, d.h. ‚widerspruchsfrei‘ sind, wegen Axiom-2. Axiom-2 ''':''' <span style="color:#4C58FF">— ‚'''PX ∧ □∀x(Xx→Yx)→PY'''‘ —</span>, besagt, dass positive Eigenschaften ,gleichwertig‘ sind, d.h. gleich ,wahr‘ sind, weil sie ,notwendig‘, <span style="color:#4C58FF">— '''□''' —</span>, aus sich, alle paarweise mit- und voneinander ,impliziert‘ sind, sich gegenseitig ,einschließen‘, und damit eine Einheit bilden, d.h. in GOTT ,eins‘ sind. Axiom-2 ist somit zugleich eine ,indirekte‘ Definition für ,positive‘ Eigenschaften ''':''' <span style="color:#4C58FF">— ‚'''P'''‘ —</span>. Definition-2 ''':''' <span style="color:#4C58FF">— ‚'''X'''<sub>ess</sub>'''x ↔ Xx ∧ ∀Y(Yx→ □∀y(Xy→Yy))'''‘ —</span>, besagt ''':''' Weil die ,gleichwertigen‘, positiven Eigenschaften sich gegenseitig implizieren, und damit notwendig von einander abhängen, d.h. koinzident in GOTT ,eins‘ sind, — wenn <span style="color:#4C58FF">‚'''x'''‘</span> für GOTT steht —, dann sind sie somit auch die ,wesentlichen‘ Eigenschaften, die <span style="color:#FF6000">„ultimativen Transzendentalia“</span>, in GOTT, der, wesentlich und exklusiv, notwendig ,Einer‘ ist. Die Definition-2 ist nur dann <span style="color:#FF6000">„modal wahr“</span>, wenn ihre Eigenschafts-Variablen, <span style="color:#4C58FF">— ‚'''X'''‘ —</span> und <span style="color:#4C58FF">— ‚'''Y'''‘ —</span>, mit positive Eigenschaften, d.h. mit <span style="color:#FF6000">„Transzendentalien“</span>, besetzt werden. Diese Definition ist jedoch sofort <span style="color:#FF6000">„modal falsch“</span>, wenn ihre Variablen mit nicht-positive Eigenschaften, wie ,rot‘ oder ,schwer‘ belegt werden, die nicht ,transzendental‘-allgemein gültig sind. Fußnote zu Definition-2 in der GÖDEL-Notiz ''':''' <span style="color:#FF6000">»''any two essences of x are nec. equivalent''«</span>. Die paarweise, notwendige Äquivalenz von zwei beliebigen Wesenseigenschaften der Individuum-Variable <span style="color:#4C58FF">‚'''x'''‘</span>, wird hier, spezifisch für GOTT, d.h. wenn <span style="color:#4C58FF">‚'''x'''‘</span> für GOTT, dem ,Einen‘, steht, zur <span style="color:#FF6000">„Koinzidenz“</span>, — zum paarweise ,Zusammenfallen aller Gegensätze in Einem‘ —, dem inneren Zusammenhang aller seiner <span style="color:#FF6000">„ultimativen“</span> Vollkommenheiten, d.h. aller <span style="color:#FF6000">„Transzendentalia“</span> und Zuschreibungen, in dem unbegrenzt Unendlichen, GOTT, den schon der Philosoph und Kardinal NIKOLAUS von Cues als <span style="font-family: Times;"><big>,coincidentia oppositorum‘</big></span> verstanden hat.)</span> In den entscheidenden ‚Schlusssätzen‘ des Kalküls ist der ‚Schlüsselbegriff‘ verschwunden. Hier ist nur mehr von GOTT, <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, die Rede ''':''' Korollar-1, <span style="color:#FF6000">»''Es ist definitiv denkbar, dass es GOTT gibt''«</span>, Theorem-2, <span style="color:#FF6000">»''Dasein, GOTT-Sein, Göttlichkeit ist das Wesen GOTTES''«</span>, Theorem-3, <span style="color:#FF6000">»''Weil GOTT definitiv denkbar, d.h. widerspruchsfrei möglich ist, darum ist auch der Glaube an GOTT widerspruchsfrei, logisch richtig und mathematisch evident, der annimmt, dass es GOTT, mit Notwendigkeit, wirklich gibt''«</span>, <span style="color:#00B000">(nach ANSELM von Canterbury, und was spezifisch das <span style="color:#FF6000">»</span>''Privilegium der Gottheit allein''<span style="color:#FF6000">«</span> ist, nach LEIBNIZ)</span>, und Korollar-3, <span style="color:#FF6000">»''Es gibt notwendig aus sich, d.i. unverursacht, nur einen GOTT''«</span>. Das GÖDEL-Kalkül ist zu diesen Erkenntnissen gekommen, ohne die Eigenschaften, bzw. die ‚Vollkommenheiten‘ GOTTES, d.h. wer oder was GOTT ‚an sich‘ selbst ist, genauer bestimmen zu müssen, <span style="color:#00B000">(was ,für uns‘ ohnehin ,unmöglich‘ ist)</span>; außer im Theorem-2, in dem das <span style="color:#FF6000">„Dasein“</span> GOTTES als die ‚für uns‘ bestimmende und wichtigste <span style="color:#FF6000">„Wesenseigenschaft“</span> in GOTT erkannt worden ist, — immer vorausgesetzt <span style="color:#00B000">(,angenommen‘)</span>, man ‚glaubt‘ an den zeitlos-ewigen GOTT ''':''' <span style="color:#00B000">(Term :01:)</span>. Der GOTT des GÖDEL-Kalküls ist nicht mehr der an Raum und Zeit gebundene ‚Gott‘ des ARISTOTELES, sondern der von Raum und Zeit <span style="color:#FF6000">»''unabhängige''«</span> GOTT der Bibel bei ANSELM und bei LEIBNIZ. Das GÖDEL-Kalkül, <span style="color:#00B000">(wie ja auch der sog. ‚ontologische Gottesbeweis‘ ANSELMS)</span>, kann jedoch, — bei aller ‚Coolness‘ —, keinen GOTT-Glauben ‚erzeugen‘, sondern setzt vielmehr die Existenz GOTTES notwendig als gegeben schon voraus. Das Kalkül des Logiker GÖDEL beweist aber, dass der traditionelle ‚GOTT-Glaube‘, <span style="color:#FF6000">»''die theologische Weltanschauung''«</span>, mit den Maßstäben der modernen Logik <span style="color:#FF6000">»''durchaus vereinbar''«</span>, d.h. logisch ,richtig‘ und <span style="color:#FF6000">»''mathematisch evident''«</span> ist, weil der ‚Nicht-GOTT-Glaube‘, <span style="color:#FF6000">»''die atheistische Weltanschauung''«</span>, im Möglichkeitsbeweis notwendig zu unlösbaren Widersprüchen führt, und somit logisch ,falsch‘ ist. <span style="color:#00B000">(Die ,Logik‘ hat aber, — bekanntlich —, bei allen wichtigen, persönlichen Entscheidungen immer nur eine untergeordnete Rolle '''!''' )</span> Anmerkung-6 ''':''' Das erste, ,regulär‘ <span style="color:#00B000">(├ )</span> abgeleitete, Hauptergebnis im 3. Beweisgang, Term :10: <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span> ''':''' der Glaube, dass GOTT ,notwendig‘ existiert, ist die logische Konsequenz aus der Prämisse, Term :1: <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>. Dieses erste Hauptergebnis hat also den überlieferten, traditionellen GOTT-Glauben zur Voraussetzung, und ist daher davon ,abhängig‘, d.h. Term :10: ist der Ausdruck einer ,Glaubensüberzeugung‘. Das zweite Hauptergebnis im 3. Beweisgang, das Theorem ANSELMS ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx→□∃xGx'''‘ —</span>, dagegen, ist die Darstellung der Abhängigkeit des ersten Hauptergebnisses von dem, vorher schon bewiesenen, ,Axiom‘ von der ,möglichen‘ Existenz GOTTES ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span>, dem Möglichkeits-Korollar-1 aus dem 1. Beweisgang. Dem geht folgende Beobachtung voraus ''':''' Der Term ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span>, hat in seiner syntaktischen Stellung hier, im Theorem-3, nicht mehr den überlieferten, traditionellen GOTT-Glauben zur Voraussetzung, und ist damit, in seiner Position als Konsequenz-Teil im Theorem ANSELMS, auch nicht mehr davon syntaktisch abhängig, sondern stützt sich formal-syntaktisch nur auf die behauptete Möglichkeit GOTTES; daher muss diese ,angenommene‘ Möglichkeit noch bewiesen <span style="color:#00B000">( ╞ )</span> werden. Dazu die Feststellung LEIBNIZ‘, der diesen Zusammenhang, und seinen Mangel, erkannt hat ''':''' ::Das Theorem ANSELMS ist <span style="color:#FF6000">» ''ein unvollständiger Beweis, der etwas voraussetzt, was man noch hätte beweisen'' <span style="color:#00B000">( ╞ )</span> ''sollen, um ihm mathematische Evidenz zu verleihen — nämlich, dass man dabei stillschweigend voraussetzt, diese Vorstellung des durchaus großen oder durchaus vollkommenen Wesens sei möglich und enthalte keinen Widerspruch'' «</span>. Diesen <span style="color:#FF6000">»''unvollständigen Beweis''«</span> hat GÖDEL im 1. Beweisgang mit dem ,regulär‘ <span style="color:#00B000">(├ )</span> abgeleiteten, und widerspruchfreien Möglichkeits-Korollar-1, vervollständigt, und damit hat er mit <span style="color:#FF6000">»''mathematischer Evidenz''«</span> bewiesen ''':''' <span style="color:#FF6000">»''Diese Vorstellung des durchaus großen oder durchaus vollkommenen Wesens''«</span> enthält <span style="color:#FF6000">»''keinen Widerspruch''«</span> '''!''' Das Korollar-1 ist nur vom logischen Axiom-1 und von der mathematischen Äquivalenz der Perfektionen, <span style="color:#00B000">(der Transzendentalien)</span>, im Axiom-2 ,abhängig‘, und nicht mehr von der ,methodologischen‘ Kalkül-Prämisse, dem traditionellen GOTT-Glauben. Damit hat das Glaubens-Theorem ANSELMS die gesuchte <span style="color:#FF6000">»''mathematische Evidenz''«</span> erreicht, unabhängig von jeder Glaubensüberzeugung. Entscheidend dafür ist der mathematisch-logische Beweis GÖDELS, dass der Nicht-GOTT-Glaube zu einem Widerspruch führt. Zusammenfassung ''':''' Theorem-1 ''':''' <span style="color:#4C58FF">— ‚'''PX→◇∃xXx'''‘ —</span> ''':''' <span style="color:#FF6000">»''Positive Eigenschaften sind konsistent''«</span>, ist die logische Konsequenz aus der Prämisse im 1. Beweisgang, Term :01: <span style="color:#4C58FF">— ‚'''PX'''‘ —</span>, den, — <u>modal-frei</u> — gewählten, ,angenommenen‘ positiven Eigenschaften, bzw. ,Transzendentalia‘. Theorem-2 ''':''' <span style="color:#4C58FF"> — ‚'''Gx↔G'''<sub>ess</sub>'''x'''‘ — </span> ''':''' <span style="color:#FF6000">»''GOTT-Sein ist das Wesen GOTTES''«</span>, ist die logische Konsequenz aus der Prämisse im 2. Beweisgang, Term :01: <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, dem, — <u>modal-frei</u> — gewählten, ,angenommenen‘ GOTT-Glauben der Christen. Im Unterschied dazu ist im 3. Beweisgang, das Theorem-3 ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx→□∃xGx'''‘ —</span> ''':''' der Glaube, dass es einen GOTT notwendig gibt ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span>, die logische Konsequenz aus dem, — <u>modal-notwendig</u> — als widerspruchsfrei ,bewiesenen‘, Möglichkeits-Korollar-1 ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span>, im 1. Beweisgang, <span style="color:#00B000">(auch im Beweisgang ,Widerlegung‘ im Anhang)</span>, und damit ist das Glaubens-Theorem-3, als ganzes, ,widerspruchsfrei‘. Das Theorem ANSELMS ist, mit Korollar-1, nur vom logischen Axiom-1 der Widerspruchsfreiheit, und der paarweisen, mathematischen Äquivalenz beliebiger positiver Eigenschaften, <span style="color:#00B000">(aller Transzendentalia)</span>, im Axiom-2, abhängig. Damit ist die Bedingung für die geforderte, spezielle <span style="color:#FF6000">»''mathematische Evidenz''«</span>, und auch für die Widerspruchsfreiheit im Glaubens-Theorem ANSELMS erfüllt; unabhängig von jeder Glaubensüberzeugung. Weil es <span style="color:#FF6000">„modal wahr“</span> ist, dass die Transzendentalien, bzw. die Vollkommenheiten ontologisch, — dem Sein nach —‚ alle <span style="color:#00B000">(zueinander)</span> widerspruchsfrei, und alle <span style="color:#00B000">(miteinander)</span> gleichwertig sind, ist es auch <span style="color:#FF6000">„modal wahr“</span>, dass es möglich ist, dass GOTT, — dem Sein nach —‚ da ist, <span style="color:#00B000">(d.h. existiert)</span>, der die unbegrenzte Summe aller ultimativen Transzendentalia, bzw. der unendlichen Vollkommenheiten allen Grades ist, wie es der ,christliche Glaube‘ des Erzbischofs ANSELM und seiner Anvertrauten ,annimmt‘. ====<div class="center"><span style="color:#660066">Widerlegung</span></div>==== {|class="wikitable" |- ! <div class="center"><span style="color:#660066">GÖDEL-Kalkül : der Möglichkeitsbeweis als Widerlegung des Nicht-GOTT-Glaubens</span></div> |- ! <span style="color:#00B000">''Terme der erweiterten Prädikatenlogik zweiter Stufe_____________ „Benennungen“ und durchgeführte Logik-Operationen''</span> |- | <small> <math>\begin{align} \text{(Axiom 1.1)} & \quad P \neg X \;\Longrightarrow\;\ \neg P\ X\ & \ & \text{„Wenn die Negation von X positiv ist, dann ist X nicht positiv“} \\ \text{(Axiom 2)} & \quad \Box \;\forall x (\ X\ x \Longrightarrow \ Y\ x) \Longrightarrow \ P\ Y & \ & \text{„Die Eigenschaft Y in allen x, die aus der Eigenschaft X in allen x} \\ \text{ } & \quad & \ & \; \; \text{mit modaler Notwendigkeit folgt, ist eine positive Eigenschaft“} \\ \text{[RK]} &\quad \Box\; \forall x A \;\Longrightarrow\;\Box\; \forall x B\; \text{ ├ }\;\Box \; \forall x (A \Longrightarrow\; B)\ & \ & \; \; \text{( :: Modales Prinzip KRIPKE-Γ-Ɐx)} \\ \text{(Korollar-1)} &\quad \Diamond \; \exists x \ G \ x \ & \ & \; \; \text{( „das —,x‘— steht für den GOTT, —,G‘—, der Christen“ )} \\ \text{ } & \text{„Es ist möglich, dass es den GOTT der Christen gibt“} & \ & \Longleftarrow\; \text{was zu beweisen ist !} \\ \text{01} & \quad \; \neg \Diamond \; \exists x \ G \ x \ & \ & \text{ AE: „Es ist unmöglich, dass es diesen GOTT gibt“ (dezidierter Atheismus)} \\ \text{02} & \quad (\neg x = .. )\ & \ & \text{ AE: „Es gibt die Eigenschaft, nicht mit x identisch zu sein“ :: (ungleich)} \\ \text{03} & \quad (\ x = .. )\ & \ & \text{ AE: „Es gibt die Eigenschaft, mit x identisch zu sein“ :: (gleich)} \\ \text{04} & \quad \neg\neg \Box \neg \exists x \ G \ x \ & \ & \text{:01:[ ◇A ↔ ¬□¬A ] :: (Modalregel) } \\ \text{05} & \quad \neg\neg \Box \neg\neg \forall x \neg \ G \ x \ & \ & \text{:04:[ ∃xA ↔ ¬Ɐx¬A ] :: (Quantorenregel) } \\ \text{06} & \quad \text{ ├ }\; \Box \; \forall x \neg G \ x \ & \ & \text{:05:NEG :: [ ¬¬A↔A ] :: (Gesetz der Aussagenlogik) } \\ \text{07} & \quad \Box \; \forall x \neg G \ x \Leftrightarrow\ W & \ & \text{:01:06:[ (:01:↔W) → (├:06:↔W) ] :: (Kalkülregel) } \\ \text{08} & \quad \Box \; \forall x \ G \ x \Leftrightarrow\ F & \ & \text{:07:[ (¬A↔W)↔(A↔F) ] :: (Regel für Wahrheitswerte)} \\ \text{ } & \text{„Jeder GOTT-Glaube ist ganz sicher falsch ! “} & \ & \Longleftarrow\; \text{die logische Konsequenz aus der Prämisse :01: !} \\ \text{09} & \quad \Box \; \forall x (\neg x = x ) \Leftrightarrow \ F \; \ & \text{ } & \text{□ⱯxXx:02:Instanz(X:=(¬x=..)) ⇒ Kontradiktion !} \\ \text{10} & \quad \Box \; \forall x (\ G \ x \Rightarrow\; (\neg x = x)) & \text { } & \text{:08:09:[ (:08:↔F) → (:09:↔F) ] :: „ex falso sequitur quotlibet“ :[RK]} \\ \text{11} & \quad \Box \; \forall x (\ G \ x \Rightarrow \; (\neg x = x)) \Rightarrow \; P (\neg x = .. ) & \ & \text{(A2):Instanz(X:=G):Instanz(Y:=(¬x= ..)) } \\ \text{12} & \quad \ P (\neg x = .. ) & \ & \text{:10:11:[ Modus ponens ] :: [ A→B, A ├ B ]} \\ \text{13} & \quad \ P (\neg x = .. )\;\Rightarrow\ \neg P (\ x = .. )\ & \ & \text{(A1.1):Instanz(X:=(x=..))}\\ \text{14} & \quad \neg P (\ x = .. )\ & \ & \text{:12:13:[ Modus ponens ] :: (log. Schlussregel)}\\ \text{15} & \quad \Box \; \forall x \ (x = x ) \Leftrightarrow \ W \; \ & \ & \text{□ⱯxXx:03:Instanz(X:=(x=..)) ⇒ Tautologie !} \\ \text{16} & \quad \Box \; \forall x (\ G \ x \Rightarrow\; (x = x)) & \ & \text{:08:15:[ (:08:↔F) → (:15:↔W) ] :: „ex falso sequitur etiam verum“ :[RK]} \\ \text{17} & \quad \Box \; \forall x (\ G \ x \Rightarrow\; (x = x)) \Rightarrow \ P (x = .. ) & \ & \text{(A2):Instanz(X:=G):Instanz(Y:=( x= ..))} \\ \text{18} & \quad \ P (\ x = .. )\ & \ & \text{:16:17:[ Modus ponens ]}\\ \text{19} & \quad \text{ ├ }\; (\neg P (\ x = .. )\ \wedge \ P (\ x = .. )) \Leftrightarrow\ F & \ & \text{:14:18:[ Konjunktion ] ⇒ Kontradiktion !}\\ \text{20} & \quad \neg \Diamond \; \exists x \ G \ x \Rightarrow (\neg P (\ x = .. )\ \wedge \ P (\ x = .. )) & \ & \text{:01:19:[ ├A├B╞ A→B ] :: ''KONDITIONALER BEWEIS''}\\ \text{ } & {\color{RedOrange}\text{Der Atheismus führt zu einem logischen Widerspruch ! }} & \ & \Longleftarrow\; \text{was mit Term :20: bewiesen ist !} \\ \text{21} & \quad \neg\neg \Diamond \; \exists x \ G \ x & \ & \text{:20:19:[ Modus tollendo tollens ] :: [ A→B,¬B ├ ¬A ]}\\ \text{22} & \quad \; \Diamond \; \exists x \ G \ x & \ & \text{:21:NEG }\\ \text{(Korollar-1)} & \;\text{„Es ist definitiv möglich, dass es diesen GOTT gibt“} & \ & \Longleftarrow\; \text{was zu beweisen war !} \\ \end{align}</math> </small> |} Anmerkung-7 ''':''' <span style="color:#00B000">( Dieser Beweisgang ist praktisch identisch mit dem 1. Beweisgang, jedoch gestrafft und präzisiert nach G.J.WIRSCHING. Diese Widerlegung des Nicht-GOTT-Glaubens beginnt sofort mit dem Korollar-1 <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span> aus dem 1. Beweisgang, als in Frage gestelltes ,Theorem‘, und beweist, ohne das Axiom-3 <span style="color:#4C58FF">— ,'''PG'''‘ —</span>, und ohne die GÖDEL-Prämisse <span style="color:#4C58FF">— ,'''PX'''‘ —</span>, in einem Zwischenergebnis, die innere Widersprüchlichkeit und damit auch die Unhaltbarkeit der atheistischen Glaubens-Annahme, aus rein logischen ,Gründen‘, bzw. Axiomen. )</span> Dieser Beweisgang geht von der Existenz GOTTES, <span style="color:#4C58FF">— ,'''G'''‘ —</span>, als Glaubens-Annahme, aus, wobei aber die Möglichkeit seiner Existenz, und damit die Sinnhaftigkeit des Glaubens an GOTT, durch die Prämisse :01: in Frage gestellt wird, und daher im Kalkül überprüft werden muss. Denn mit der Behauptung der Existenz GOTTES allein ist es nicht getan. Es muss auch seine ,Möglichkeit‘, d.h. die Sinnhaftigkeit des Glaubens an GOTT aufgewiesen werden. LEIBNIZ hat als erster, <span style="color:#00B000">(nach ANSELM)</span>, dieses Problem gesehen, und GÖDEL hat dafür die Lösung gefunden. Dieser Beweisgang, <span style="color:#00B000">(analog zum Möglichkeitsbeweis von Günther J. WIRSCHING konzipiert)</span>, setzt in den Axiomen, genau wie im 1. Beweisgang, die Existenz von etwas <span style="color:#FF6000">„Positiven“, „Perfekten“, „Vollkommenen“</span>, <span style="color:#4C58FF">— ,'''P'''‘ —</span>, <span style="color:#00B000">(d.h. die Transzendentalien)</span>, allgemein für die Welt voraus, <span style="color:#00B000">(was im Axiom-3 ''':''' <span style="color:#4C58FF">— ,'''PG'''‘ —</span>, auch GOTT ultimativ zugeordnet wird ''':''' <span style="color:#FF6000">»''GOTT ist absolut positiv, perfekt und vollkommen''«</span>)</span>; das dann im 2. Beweisgang mit Term :13: als widerspruchsfrei, <span style="color:#00B000">(als ,wahr‘ und ,annehmbar‘ im Kontext des christlichen Glaubens)</span>, schon ,bewiesen‘ <span style="color:#00B000">( ╞ )</span> worden ist. Die Existenz von ,Transzendentalien‘ in der Welt, ist ein, mit Beispielen belegbares, allgemeines Faktum; ihre Existenz auch in GOTT ist mit dem Term :13: des 2. Beweisganges bewiesen, die jedoch im Unendlichen, GOTT, als Transzendentalia, auch in ,ultimativer‘ Form vorliegen. Axiom-1 ,besagt‘, dass Eigenschaften nicht zugleich, vollkommen und nicht vollkommen, sein können. Axiom-2 ,besagt‘, dass, allgemein, alle Vollkommenheiten, <span style="color:#00B000">(alle Transzendentalien)</span>, gleichwertig, <span style="color:#00B000">(mathematisch äquivalent)</span>, sind. <span style="color:#00B000">(Axiom-2 wird hier um das GÖDEL-Konjunkt <span style="color:#4C58FF">— ,'''PX'''‘ —</span> verkürzt dargestellt. Damit ist auch Axiom-3 für diesen Beweisgang unnötig geworden, ohne dass sich wegen dieser Kürzung am Ergebnis etwas ändert. Axiom-2 wird jedoch sofort <span style="color:#FF6000">„modal falsch“</span>, wenn seine Variablen mit nicht-positive Eigenschaften, wie ,rot‘ oder ,schwer‘ belegt werden, die nicht ,transzendental‘-allgemein gültig sind, die keine ,Transzendentalia‘ sind.)</span> Die Eigenschaft <span style="color:#4C58FF">— (¬x=..) —</span> ,besagt‘, dass GOTT <span style="color:#FF6000">„unvergleichlich“</span> ist, wenn <span style="color:#4C58FF">,'''x'''‘</span> für GOTT steht. <span style="color:#00B000">(Der informelle Term, <span style="color:#4C58FF">— (¬x=..) —</span>, ersetzt hier, wie bei A. FUHRMANN, den formal korrekten Abstraktionsausdruck ''':''' <span style="color:#4C58FF">— λy.(¬x=y) —</span>, aus dem Lambda-Kalkül.)</span> Der Term :16: <span style="color:#4C58FF">— (x=x) ↔ W —</span> steht für die Selbstbezeichnung des GOTTES-JHWH in Exodus 3,14 ''':''' <span style="color:#CC66FF">»''Ich bin der ‚IST‘'' <span style="color:#00B000">(aus mir selbst)</span>«</span>, der Grund für die <span style="color:#FF6000">„Unvergleichlichkeit“</span> GOTTES. Der GOTT der abendländischen, christlichen Tradition wird mit <span style="color:#4C58FF">— ,'''G'''‘ —</span> bezeichnet ''':''' d.i. der <span style="color:#FF6000">„GOTT der Christen“</span>, entsprechend der ,methodologischen‘ Prämisse und der ,Genese‘ des Kalküls, syntaktisch formalisiert in der Definition-1 ''':''' <span style="color:#4C58FF">— ‚'''Gx↔∀X(PX→Xx)'''‘ —</span> ''':''' <span style="color:#FF6000">»''Das Individuum'' <span style="color:#4C58FF">,'''x'''‘</span> ''ist genau dann GOTT'', <span style="color:#4C58FF">,'''G'''‘</span>, ''wenn es alle Vollkommenheiten'', <span style="color:#4C58FF">,'''P'''‘</span>, ''in sich schließt''«</span>, nach der Vorgabe von LEIBNIZ ''':''' <span style="color:#FF6000">»''GOTT ist ein Wesen von äußerster Größe und Vollkommenheit, das alle Grade derselben in sich schließt''«</span>. Mit Korollar-1 hat dieser Beweisgang dasselbe Endergebnis, wie der 1. Beweisgang. Der Beweis, dass der dezidierte Atheismus zu einem logischen Widerspruch führt, und damit falsch ist, ist ein Zwischenergebnis in diesem Beweisgang, und begründet mit <span style="color:#FF6000">»''mathematischer Evidenz''«</span>, und unabhängig von jeder Glaubensüberzeugung, den, von LEIBNIZ gesuchten, Möglichkeitsbeweis für die Existenz GOTTES im Argument des Erzbischofs, und bestätigt damit die Sinnhaftigkeit des GOTT-Glaubens. Einmal Axiom-1 und zweimal Axiom-2 sichern hier das Ergebnis des Kalküls ''':''' das Möglichkeits-Korollar-1 ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span>''':''' <span style="color:#FF6000">»''Es ist definitiv möglich, dass es den GOTT der Christen gibt''«</span>. Diese zwei Axiome sind die einzigen, und modal-notwendigen, d.h. die transzendentalen Voraussetzungen und Bedingungen für das Endergebnis ''':''' der Widerspruchsfreiheit und Sinnhaftigkeit des Glaubens der Christen an GOTT; <span style="color:#00B000">(dasselbe gilt natürlich auch für die <span style="color:#4C58FF">„theologische“</span> Weltanschauung jeder monotheïstischen Religion '''!''' Dem Erzbischof ANSELM ging es damals nur um seinen Glauben an GOTT.)</span>. Die Logik-Regel <span style="color:#FF6000"><span style="font-family: Times;"><big>„ex falso sequitur quotlibet, etiam verum“</big></span></span>, <span style="color:#00B000">(‚Aus Falschem folgt irgendetwas, auch Wahres‘)</span>, ist der scholastische Ausdruck für die ‚Implikation‘ <span style="color:#00B000">(Folgerung)</span> von Aussagen, die nur dann falsch, <span style="color:#4C58FF">— F —</span> ist, wenn das Antezedens wahr, <span style="color:#4C58FF">— W —</span>, und die Konsequenz falsch, <span style="color:#4C58FF">— F —</span> ist. Andernfalls ist sie immer wahr, <span style="color:#4C58FF">— W —</span>, auch wenn die Voraussetzung falsch, <span style="color:#4C58FF">— F —</span> ist ''':''' ‚Modern‘ darstellbar durch die ‚Wahrheitswertetafel‘ für die ‚materiale Implikation‘, <span style="color:#4C58FF">— ,(A → B)‘ —</span> <span style="color:#FF6000">„wenn A, dann B“</span>. Damit ist auch der <span style="color:#4C58FF">[ Modus tollendo tollens ] :: [ A → B, ¬B ├ ¬A ] </span> verstehbar; <span style="color:#00B000">(vgl. die vierte Zeile der ‚materialen Implikation‘)</span>. Der positive hypothetische Syllogismus ''':''' <span style="color:#4C58FF">[ Modus ponendo ponens ] :: [ A → B, A ├ B ] </span> ist aus der ersten Zeile ablesbar. Die folgende Tabelle gibt für jeden ,Wahrheitswert‘ der Aussagen <math>A</math> und <math>B</math> das Resultat einiger zweiwertiger Verknüpfungen an ''':''' {|class="wikitable hintergrundfarbe2" style="text-align:center;" |- !colspan="2"|''Belegung''!!Konjunktion!!Disjunktion!!materiale<br /> Implikation!!Äquivalenz<br /> Bikonditional!!kopulative<br /> Konjunktion |- !<math>A</math> !<math>B</math> !<math>A</math> und <math>B</math> !<math>A</math> oder <math>B</math> !wenn <math>A</math> dann <math>B</math> !sowohl <math>A</math> als auch <math>B</math> !entweder <math>A</math> oder <math>B</math> |- !W!!W |W||W||W||W||F |- !W!!F |F||W||F||F||W |- !F!!W |F||W||W||F||W |- !F!!F |F||F||W||W||F |} <span style="color:#00B000">(Eine ‚Konjunktion‘ ist nur dann ,wahr‘, wenn beide Aussagen einer ‚Konjunktion‘ wahr sind. Eine ‚kopulative Konjunktion‘ ist nur dann ,wahr‘, wenn entweder die eine, oder die andere Aussage der ‚kopulativen Konjunktion‘ wahr ist. Es besteht also eine Wenn-Dann-Verbindung zwischen beiden Aussagen — eine ,Kopplung‘. Das ist die logische Grundlage von Axiom-1 im GÖDEL-Formalismus)</span> Um das Widersprüchliche der ,Annahme‘ nachzuweisen, dass positive Eigenschaften ,nicht konsistent‘ seien, <span style="color:#00B000">(im 1. Beweisgang)</span>, bzw. um das Unlogische und Sinnwidrige der ,Annahme‘ klarzustellen, es sei ,unmöglich‘, dass es einen GOTT gibt, <span style="color:#00B000">(hier, in der Widerlegung)</span>, verwendet das GÖDEL-Kalkül den Gegensatz ''':''' wahr, <span style="color:#4C58FF">— W —</span>, falsch, <span style="color:#4C58FF">— F —</span>, zwischen der dritten und vierten Zeile der Wahrheitswertetafel, für zwei ,wahre‘ <span style="color:#4C58FF">— W —</span> ,materiale Implikationen‘, in denen die Voraussetzung jeweils falsch, <span style="color:#4C58FF">— F —</span>, ist, entsprechend der Regel <span style="color:#FF6000"><span style="font-family: Times;"><big>„ex falso, <span style="color:#4C58FF">— F —</span>, sequitur quotlibet, <span style="color:#4C58FF">— F —</span>, etiam verum, <span style="color:#4C58FF">— W —</span>“</big></span></span>, jeweils mit der Hilfe von Axiom-1 und Axiom-2, in einer <span style="font-family: Times;"><big>,Reductio ad absurdum‘</big></span>; hier unabhängig von jeder Glaubensüberzeugung. Im Gegensatz dazu, wird, <span style="color:#00B000">(im 2. Beweisgang)</span>, aus dem Glauben an GOTT, auch mit einer <span style="font-family: Times;"><big>,Reductio ad absurdum‘</big></span>, speziell mit Axiom-1, das Widersprüchliche in der ,Annahme‘ nachgewiesen, es gäbe in GOTT <span style="color:#FF6000">»''keine Vollkommenheit, nichts Positives, nichts Perfektes''«</span>, d.h. keine ,Transzendentalia‘. In dieser <span style="font-family: Times;"><big>,Reductio ad absurdum‘</big></span>, im 2. Beweisgang, wird vorausgesetzt <span style="color:#00B000">(,angenommen‘)</span> ''':''' es gibt den GOTT der Christen, <span style="color:#00B000">(als Prämisse :01:)</span>, der ,unvergleichlich‘ und ,einzigartig‘ ist, und in dem auch alle ,Transzendentalia‘ <span style="color:#FF6000">„koinzident“</span> ,eins‘ sind, entsprechend Axiom-2. Für KANT entsteht ein Widerspruch in den Prädikaten eines Satzes. ::<span style="color:#FF6000">»</span> ''Wenn ich das Prädicat in einem identischen Urtheile aufhebe'', <span style="color:#00B000">[ durch eine Negation ]</span>, ''und behalte das Subject, so entspringt ein Widerspruch''. <span style="color:#00B000">[ Wenn ich sage ''':''' ,''GOTT ist nicht allmächtig''‘, entsteht ein Widerspruch zur richtigen Aussage ''':''' ,''GOTT ist allmächtig''‘. ]</span> … ''Wenn ihr aber sagt ''':''' ,GOTT ist nicht‘, so ist weder die Allmacht, noch irgendein anderes seiner Prädicate gegeben; denn sie sind alle zusammt dem Subjecte aufgehoben'', <span style="color:#00B000">[ negiert ]</span>, ''und es zeigt sich in diesem Gedanken nicht der mindeste Widerspruch.'' <span style="color:#FF6000">«</span><ref>vgl. ‚''<span style="font-family: Times;"><big>Kritik der reinen Vernunft</big></span>''‘, Seite 398f; https://www.korpora.org/kant/aa03/398.html</ref> Es ist richtig, wie KANT sagt, der Widerspruch entsteht nicht in dem Gedanken ''':''' <span style="color:#FF6000">»</span>''GOTT ist nicht''<span style="color:#FF6000">«</span>. GÖDEL zeigt daher, dass der Widerspruch erst dann entsteht, wenn von der Annahme ausgegangen wird ''':''' ''<span style="color:#FF6000">»</span>Es ist unmöglich, dass GOTT ist''<span style="color:#FF6000">«</span>. Daraus folgt dann ,regulär‘, mit Hilfe von Axiom-1 und Axiom-2, <span style="color:#00B000">(d.h. mit den Theoremen von den Transzendentalien)</span>, die logische ,Möglichkeit‘ GOTTES, unabhängig von jeder Glaubensüberzeugung. Wie LEIBNIZ klar erkannt hat, muss zuerst, aus dem Widerspruch des Gegenteils, die logische ,Möglichkeit‘, <span style="color:#00B000">(die Konsistenz)</span>, der Existenz GOTTES bewiesen werden ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span>, bevor daraus die reale ,Notwendigkeit‘ GOTTES abgeleitet werden kann ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span>, dessen Existenz jedoch, aus dem ,Glauben‘, im Voraus, schon angenommen worden ist. Dieser Sachverhalt ist das ausschließliche Spezifikum GOTTES, <span style="color:#00B000">(das <span style="color:#FF6000">»''Privilegium der Gottheit allein''«</span>)</span>, und gilt nur bei GOTT, als dem Unvergleichlichen und Einzigartigen. Dieses ,Spezifikum‘ wird im Theorem ANSELMS abgebildet ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx→□∃xGx'''‘ —</span>, auf Grund von Axiom-2, das den inneren Zusammenhang, die Koinzidenz auch von ,Möglichkeit‘ und ,Notwendigkeit‘ im Unendlichen, GOTT, erkennen lässt. Bis Zeile 10, im 3. Beweisgang, reicht der Geltungsbereich der ,modal‘-frei gewählten Kalkül-Prämisse :01:, der ,methodologische‘ GOTT-Glaube. In Zeile 11 liegt der ,Schwerpunkt‘ des ontologischen Beweises dann aber am, — modal als notwendig — ,bewiesenen‘ Widerspruch des Gegenteils zum GOTT-Glauben, <span style="color:#00B000"> (formal-syntaktisch dargestellt als widerspruchfreies Antezedens, <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span>, dem Möglichkeits-Korollar-1 aus dem 1. Beweisgang)</span>, und nicht mehr am ,angenommenen‘ GOTT-Glauben der Kalkül-Voraussetzung, <span style="color:#00B000">(nun dargestellt als Konsequenz <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span> im Theorem ANSELMS)</span>. Das Möglichkeits-Korollar-1 muss jetzt immer, wie folgt, gelesen werden ''':''' <span style="color:#FF6000">»''Es ist <u>widerspruchfrei</u> möglich, dass GOTT ist''«</span>. Damit hat er, — angeregt durch LEIBNIZ, und mit ihm —, die fast einhellig akzeptierte Fehldeutung des ontologisch-<span style="color:#4C58FF">„theologischen“</span> Arguments ANSELMS für GOTT durch gewichtige philosophische, <span style="color:#00B000">(KANT<ref>GOTT ist absolut einzigartig und unvergleichlich. KANT macht GOTT jedoch zu einem ,Ding‘ unter den vielen ,Dingen‘ dieser Welt, indem er die Existenz, bzw. das ,Sein‘ GOTTES mit dem ,Sein der Dinge‘ gleich setzt. Eine solche Gleichsetzung ist bei GOTT unangebracht und daher unzulässig! KANT verkennt damit die Einzigartigkeit und Besonderheit GOTTES. Das ,Sein‘ der Dinge ist, — wie KANT sagt —, kein ,reales Prädikat’, d.h. Existenz ist keine Eigenschaft. Jedoch in GOTT ist ,Sein‘ ein ,reales Prädikat‘, d.h. Existieren ist ,real‘ die Wesenseigenschaft GOTTES, denn GOTT ist der, der für uns, — aus Liebe —, immer schon ,da‘ ist ''':''' in der ,Hypostatischen Union‘, sowohl als GOTT von Ewigkeit zu Ewigkeit, als auch als Mensch in unserer Zeitlichkeit. Das ist das, was GOTT für uns ausmacht —, sein Wesen.</ref>)</span>, und <span style="color:#4C58FF">„theologische“</span>, <span style="color:#00B000">(THOMAS<ref>GOTT ist absolut einzigartig und unvergleichlich. THOMAS unterscheidet die ,Natur GOTTES‘ nicht von der ,Natur der Dinge‘, indem er die ,Natur‘ des GOTTES ANSELMS irrtümlich mit der ,Natur‘ der Dinge gleich setzt. Damit reiht er GOTT unter die vielen Dinge unserer Welt ein, indem er für den GOTT ANSELMS annimmt ''':''' GOTT ,esse in rerum natura‘, d.h. wörtlich, dass der GOTT ANSELMS in der ,Natur‘ der Dinge existiert, <span style="color:#00B000">(was ANSELM nie gesagt hat)</span>. Eine solche Gleichsetzung ist bei GOTT unangebracht und daher unzulässig! Die ,zeitlose-überzeitliche‘ Wirklichkeit, (Natur), GOTTES ist völlig verschieden und unabhängig von der zufälligen Wirklichkeit, (die ,Natur‘), unserer ,raum-zeitlichen‘ Welt. Daher ist sie mit dieser auch nicht vergleichbar. Thomas verkennt damit die Einzigartigkeit und Besonderheit GOTTES.</ref>)</span>, Autoritäten zurechtgerückt, welche die Einzigartigkeit und Unvergleichlichkeit des Unendlichen, GOTT, bei ihrer Beurteilung des Theorem ANSELMS nicht berücksichtigt, sondern den Unendlichen, <span style="color:#00B000">(irrtümlich)</span>, unter die endlichen Dinge unserer Welt eingereiht haben. GÖDEL hat mit dem bewiesenen Widerspruch des Gegenteils zum GOTT-Glauben, den Beweis für die <span style="color:#FF6000">»''mathematische Evidenz''«</span> des Theorem ANSELMS geliefert, was, nach LEIBNIZ, für die Akzeptanz dieses Theorems noch gefehlt hat. Das Theorem ANSELMS besagt universell ''':''' Die <span style="color:#FF6000">»''theologische Weltanschauung''«</span> der Juden, Christen und Muslime, die ,annehmen‘, dass es mit ,Notwendigkeit‘ <span style="color:#4C58FF">— ‚'''□'''‘ —</span> <span style="color:#00B000">(nur)</span> einen GOTT gibt, ist logisch richtig und <span style="color:#FF6000">»''mathematisch evident''«</span>, weil es <u>ohne Widerspruch</u> ,denkbar‘ <span style="color:#4C58FF">— ‚'''◇'''‘ —</span> ist, dass es GOTT gibt ''':''' Nicht mehr und nicht weniger, <span style="color:#FF6000">»''rein verstandesmäßig, (ohne sich auf den Glauben an irgendeine Religion zu stützen)''«</span>. Es geht hier bei GÖDEL nicht um Theoriefindung oder ähnliches. GÖDEL ist kein ,spekulierender‘ Theoretiker. GÖDEL ist Logiker und Mathematiker. Was er sagt, ist mathematisch wahr und logisch richtig. Wenn er sagt, dass die Aussage ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ — »''wahr''«</span> ist ''':''' <span style="color:#FF6000">»''es ist möglich, dass es Gott gibt'' ''':''' ''das ist ,wahr‘ wegen Axiom-2 (und Axiom-1)''«</span>, dann spricht er hier von der mathematischen Wahrheit. Logischerweise ist dann die konträre Aussage ''':''' <span style="color:#4C58FF">— ‚'''¬◇∃xGx'''‘ — »''falsch''«</span> ''':''' <span style="color:#FF6000">»''es ist nicht möglich, dass es einen Gott gibt''«</span>, und zwar mathematisch falsch, weil sich aus dieser Aussage ein Widerspruch ergibt. Jeder, der die mathematische Logik GÖDELS lesen kann, kann das sehen und verstehen ''':''' Das Zwischenergebnis, <span style="color:#00B000">(Term :20:)</span>, in dieser Kalkül-Ableitung, die logische Konsequenz aus der Annahme des dezidierten Atheismus, es sei unmöglich, dass es GOTT gibt, ist der faktische, nachprüfbare, und für jeden Menschen sichtbare Beweis dafür, dass diese Annahme in einen Widerspruch mündet, und damit falsch und unlogisch ist. Das bedeutet, es ist eine Tatsache, bzw. es ist Faktum, dass der Atheismus, — mit <span style="color:#FF6000">»''mathematischer Evidenz''«</span> —, wirklich falsch und unlogisch ist, und daher, mit Recht, als ,Unsinn‘ bezeichnet werden darf '''!''' Das ist nicht bloß als eine Theoriefindung, oder als eine Interpretation eines Autors zu verstehen. Das ist vielmehr genau so wahr und <span style="color:#FF6000">»''mathematisch evident''«</span>, wie, dass zwei mal zwei vier ergibt, und wirklich genau so logisch richtig, wie, dass die Erde sich um die Sonne dreht. Das ist gerade das Überraschende und Unerwartete am Gödel-Kalkül. Es geht hier nicht mehr um Theoriefindung oder Interpretationen, denen man zustimmen kann oder nicht. Es geht hier <span style="color:#FF6000">»''rein verstandesmäßig''«</span> um mathematisch-logische Fakten. Damit steht GÖDEL, in seiner Bedeutung, in gewisser Weise, neben KOPERNIKUS, weil seine Kalkül-Ergebnisse, wie die Berechnungs-Ergebnisse dieses Pioniers der damaligen Zeitenwende, heute, in unserem Äon, ebenfalls mit eingefleischte Vorurteile aufräumen, ohne aber, dass GÖDEL für sich selbst, im Glauben, logisch konsequent gewesen wäre. <span style="color:#00B000">(Er ist sich der Tragweite und der Konsequenzen seiner <span style="color:#4C58FF">„axiomatischen Theologie“</span> anscheinend nicht bewusst gewesen, wenn er sagt ''':''' Man sei heute noch <span style="color:#FF6000">»''weit davon entfernt, das theologische Weltbild wissenschaftlich begründen zu können''«</span>, nachdem sein Kalkül das <span style="color:#FF6000">„atheistische Weltbild“</span> fundamental ins Wanken gebracht und als irrationalen ,Unsinn‘ entlarvt hat. Sein Kalkül ,beweist‘ ( ╞ ) indirekt, dass das <span style="color:#FF6000">„theologische Weltbild“</span>, im Beweisgang ,Widerlegung‘, aus dem Widerspruch des Gegenteils, mit <span style="color:#FF6000">»''mathematisch-logischer Evidenz''«</span>, offensichtlich doch, wissenschaftlich begründet werden kann)</span>. ---- Kurt GÖDEL ist auch deswegen ein Ausnahmelogiker. ---- ===<div class="center"><span style="color:#660066">Epilog für Skeptiker</span></div>=== Wenn man das GÖDEL-Argument genau liest, dann ist nur die Annahme ''':''' <span style="color:#FF6000"> „es ist möglich, dass es GOTT gibt“</span> bewiesen, weil aus der Annahme ''':''' <span style="color:#FF6000">„es ist unmöglich, dass es GOTT gibt“</span> ein logischer Widerspruch ableitbar ist. Die Aussage ''':''' <span style="color:#FF6000">„es gibt GOTT“</span> ist dagegen schon eine Glaubensaussage, und damit ist das auch die ,Grundannahme‘ eines gläubigen Menschen, der dann aus der ,bewiesenen Möglichkeit‘, dass es Gott gibt, ableiten kann ''':''' <span style="color:#FF6000">»''es gibt GOTT wirklich''«</span>, wenn er will ''':''' <span style="color:#FF6000">»''Es stimmt also, was ich glaube '''!''''' «</span> Das ist das Argument ANSELMS, der ein christlicher Amtsträger war, und der daher von dieser Grundannahme auch ausgeht. Solange in den Voraussetzungen des Möglichkeitsbeweises im GÖDEL-Kalkül kein Widerspruch nachweisbar ist, und solange in der logischen Durchführung dieses Beweises keine schweren Mängel festgestellt werden können, ist das Ergebnis des Möglichkeitsbeweises, wie GÖDEL ihn durchgeführt hat, korrekt, und die Folgerungen daraus, logisch richtig, dass es sich hier um <span style="color:#FF6000">»''mathematische Evidenz''«</span> handelt, <span style="color:#00B000">(z. B. wie 2 x 2 = 4)</span>. Aber niemand ist gezwungen, aus der Möglichkeit, dass es GOTT gibt, daraus zu schließen, dass es GOTT auch mit Notwendigkeit gibt, wie das im Argument ANSELMS geschieht, außer, er akzeptiert auch die Grundannahme, dass es den Unendlichen und Unvergleichlichen tatsächlich gibt. Dann kann er mit LEIBNIZ, der selbst an GOTT geglaubt hat, mit Bestimmtheit sagen ''':''' <span style="color:#FF6000">»''gesetzt, dass GOTT möglich ist, so ist er, was das Privilegium der Gottheit allein ist''«</span>, weil GÖDEL mit seinem Kalkül den noch ausstehenden Beweis der Widerspruchsfreiheit dafür geliefert hat. Wenn Du den 3. Beweisgang des GÖDEL-Kalküls genauer anschaust, dann siehst Du, dass der Konsequenz-Teil im Argument ANSELMS, der identisch ist mit dem Term in der Zeile 10, <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span>, immer noch formallogisch abhängig ist von der methodologischen Glaubens-Prämisse, Term :01:, <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span> ''':''' <span style="color:#FF6000">»''das'' <span style="color:#4C58FF">‚'''x'''‘</span> ''steht für den Gott der Christen''«</span>. Diese Abhängigkeit ist bis zur Zeile 10 offensichtlich und logisch korrekt. <span style="color:#00B000">(Man könnte nach dieser Zeile, ohne Weiteres, ,regulär‘ die <span style="color:#FF6000">„logische Implikation”</span> :: <span style="color:#4C58FF">[├ A ├ B ╞ A→B ]</span> mit Term :01: und Term :10: als ein mögliches Korollar bilden ''':''' <span style="color:#4C58FF">— ‚'''Gx→□∃xGx'''‘ — </span>)</span>. Das bedeutet, der Konsequenz-Teil im Theorem ANSELMS, der in diesem ,regulär‘-möglichen Korollar an zweiter Stelle steht, ist damit in seiner Formal-Struktur offensichtlich ,regulär‘ von der Glaubens-Prämisse, Term :01:, abhängig, d.h. er ist der Ausdruck einer Glaubensüberzeugung. Im Theorem ANSELMS steht er jetzt, in der Zeile 11, als Konsequenz-Teil auch an zweiter Stelle, hat aber nicht mehr seine Glaubens-Prämisse als notwendige Bedingung an erster Stelle vor sich, wie im ,regulär‘-möglichen Korollar. Jetzt steht eine neue und andere Voraussetzung als Begründung vor ihm. Der Schwerpunkt des Argument ANSELMS liegt damit am Begründungs-Teil des ANSELM-Theorems, der jetzt die erste Stelle im Theorem einnimmt ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span> ''':''' <span style="color:#FF6000">»''es ist möglich, dass es GOTT gibt''«</span>, der erst dadurch entstanden ist, und davon abhängig ist, weil sein Gegenteil ''':''' <span style="color:#4C58FF">— ‚'''¬◇∃xGx'''‘ —</span> ''':''' <span style="color:#FF6000">»''es ist unmöglich, dass es GOTT gibt''«</span>, zu einem Widerspruch geführt hat. Dieser Begründungs-Teil, das Antezedens, im Argument ANSELMS, ist daher nicht mehr von der methodologischen Glaubens-Prämisse, Term :01:, abhängig, sondern nur vom Axiom-1, der Widerspruchsfreiheit, und von der paarweisen, mathematischen Äquivalenz beliebiger positiver Eigenschaften im Axiom-2, die im 1. Beweisgang, bzw. im Beweisgang ,Widerlegung‘, mit dem <span style="color:#4C58FF">[ Modus tollendo tollens ] :: [ A → B, ¬B ├ ¬A ]</span>, die Widerspruchsfreiheit der Möglichkeit des GOTT-Glaubens mit Notwendigkeit herbeigeführt haben. Daraus ergibt sich eine logische Verschiebung in der Argumentationskette, denn dieser Begründungs-Teil, der jetzt die Widerspruchsfreiheit für den Konsequenz-Teil liefert, ist selbst unabhängig und frei von jeder Glaubensüberzeugung. Weil widerspruchsfrei und <span style="color:#FF6000">»''mathematisch evident''«</span>, muss er als logische Begründung für die Widerspruchsfreiheit und als Beweis für die <span style="color:#FF6000">»''mathematische Evidenz''«</span> des Konsequenz-Teils gelesen werden, und damit bestätigt er die Widerspruchsfreiheit und Sinnhaftigkeit der Glaubensüberzeugung eines gläubigen Menschen, <span style="color:#00B000">(was auch das Ziel ANSELMS war)</span>. Das heißt also ''':''' der Glaube dieses Menschen ist widerspruchsfrei und sinnvoll, und enthält keinen Zirkelschluss, weil sein Gegenteil, der Nicht-GOTT-Glaube, zu einem Widerspruch führt; <span style="color:#00B000">(das hat GÖDEL mit seinem Kalkül-System bewiesen, dessen Argumentationskette mit einem Computer-Programm, dem sog. ,Theorembeweiser‘, überprüft worden ist, und als <span style="color:#FF6000">»''nachweisbar korrekt''«</span> befunden wurde)</span>. Das Theorem ANSELMS beweist, nach GÖDEL, dass der Glaube an GOTT, mit <span style="color:#FF6000">»''mathematische Evidenz''«</span> notwendig widerspruchsfrei und sinnvoll ist, weil der Nicht-GOTT-Glaube notwendig zu einem Widerspruch führt. <u>Das Theorem beweist jedoch nicht, dass die Existenz GOTTES notwendig ist</u>, <span style="color:#00B000">(wie es fast immer fälschlich gelesen wurde und wird)</span>, sondern, das Theorem ANSELMS geht davon aus, als nicht hinterfragtes Faktum, dass GOTT notwendig, schon immer existiert, und beweist, mit dem GÖDEL-Kalkül, dass diese Glaubens-Annahme widerspruchsfrei und sinnvoll, und <span style="color:#FF6000">»''mit allen bekannten Tatsachen durchaus vereinbar ist''«</span>, wie GÖDEL abschließend sagt. GOTT hat es ja auch nicht ,nötig‘, bewiesen zu werden. Für den Erzbischof ANSELM war die Existenz GOTTES, überall und jederzeit, die ungefragte und für ihn die selbstverständlichste Voraussetzung aller seiner Bemühungen, in seinem Leben, und in seinem Beruf als christlicher Amtsträger, und auch als Theologe in den philosophischen Überlegungen über seinen Glauben. Mit diesen Überlegungen hat er, mit GÖDEL, bewiesen ''':''' Glaube ist nicht irrational, kein Sprung ins Unbekannte, sondern eine freie, vernünftige Entscheidung. Glaube ist rational und vertrauenswürdig. Zusammengefasst heißt das Ergebnis dieser Bemühungen ANSELMS ''':''' Wenn Du an GOTT glauben willst, dann kannst Du das unbedenklich tun, denn Dein Glaube ist auch logisch in der <u>bewiesenen Möglichkeit</u>, dass es GOTT geben kann, begründet, und damit ist er widerspruchsfrei, sinnvoll und kein Zirkelschluss. Dein Glaube an GOTT beruht jedoch, nach wie vor und in erster Linie, auf Deiner freien Entscheidung für GOTT, und nicht auf dem Zwang einer ,logischen‘ Argumentation. Wenn Du nicht an GOTT glauben willst, dann <u>musst Du, und sollst Du, auch nicht deswegen</u> an GOTT glauben, weil der Nicht-GOTT-Glaube zu einem Widerspruch führt, und damit falsch und unlogisch ist. Denn der Glaube an GOTT muss immer eine freie und Deine ganz persönliche Entscheidung für GOTT sein und bleiben. Niemand darf zum Glauben an GOTT gezwungen werden, auch nicht mit ,logischen‘ Argumenten. Warum '''?''' Weil GOTT die Liebe ist '''!''' Und die Liebe duldet keinen Zwang '''!''' Zum Abschluss, und für eine bessere Verständlichkeit dieser Studie, hat die KI, der ich diese Studie für die Erstellung eines Podcast übergeben habe, eine, — sogar für Kinder —, verständliche Metapher kreiert. Sie sagt, man stelle sich vor ''':''' Es sei irgendwo ein ,Schatz’ vergraben, und es gäbe auch eine ,Schatzkarte’ für diesen ,Schatz’. Kurt GÖDEL ist nun gekommen, und hat mit seinem Kalkül bewiesen, dass diese ,Schatzkarte’ korrekt ist und fehlerfrei. Ob aber jemand, mit Hilfe dieser ,Schatzkarte’ auf ,Schatzsuche’ gehen will oder nicht ''':''' das ist und bleibt jedem selbst überlassen, und ist immer eine freie, und ganz persönliche Entscheidung. Damit hat die KI erstaunlich treffend, sowohl die Bedeutung, als auch die reale Funktion des GOTT-Glaubens in der Lebens-Wirklichkeit unserer Welt und Zeit charakterisiert, in Übereinstimmung mit der Gleichniserzählung JESU vom ,Schatz im Acker’; <small><span style="color:#00B000">( vgl. {{Bibel | Matthäus-Evangelium |13|44|EU}} )</span></small>. Der ,Schatz’ ist die <span style="color:#FF6000">„<span style="font-family: Times;"><big>Βασιλεία του Θεού</big></span>“</span><span style="color:#00B000"> | ,Basileía tou Theoú’</span>, d.h. das <span style="color:#CC66FF">»''Königtum GOTTES''«</span>, oder auch das <span style="color:#CC66FF">»''Himmelreich''«</span>. Die ,Schatzkarte’ ist der Glaube an GOTT. Die ,Schatzsuche’ ist der Weg des Glaubens in der Nachfolge JESU, der uns den Weg zeigt zum Ziel, zur Erfüllung aller unserer Sehnsüchte und Wünsche. ---- ---- ;Fußnoten <references /> 3b1wjt2b0h33f5s0i2zbu83fvci2p2h 1090598 1090596 2026-09-09T06:57:40Z Santiago 19191 /* Kurt GÖDEL und der sog. ‚ontologische Gottesbeweis‘ */ Zusatz 1090598 wikitext text/x-wiki [[Kategorie: Buch]] {{Regal|ort=Philosophie}} {{Vorlage:StatusBuch|9}} ==<div class="center"><span style="color:#660066">'''Kurt GÖDEL und der sog. ‚ontologische Gottesbeweis‘'''</span></div>== <span style="font-family: Times;"><big><div class="center">לַמְנַצֵּ֗חַ לְדָ֫וִ֥ד אָ֘מַ֤ר נָבָ֣ל בְּ֭לִבּוֹ אֵ֣ין אֱלֹהִ֑ים הִֽשְׁחִ֗יתוּ הִֽתְעִ֥יבוּ עֲלִילָ֗ה אֵ֣ין עֹֽשֵׂה־טֽוֹב׃ (Psalm 14,1)</div></big></span> ---- ===<div class="center"><span style="color:#660066">Vorwort</span></div>=== Zur Orientierung ''':''' Die Diskussion um GOTT läuft schon über zweitausend Jahren. Vor etwa tausend Jahren hat sich ein gewisser ANSELM gesagt ''':''' <span style="color:#FF6000">»''Ich glaube an GOTT'' … <span style="color:#00B000">[ sonst wäre er sicher nicht Erzbischof von Canterbury geworden ]</span> … ''aber ich möchte auch wissen und verstehen, ob das stimmt und sinnvoll ist, was ich da glaube '''!''''' «</span> Dann hat er seine Überlegungen dazu aufgeschrieben, und das kann man in seinen Schriften auch heute noch lesen. Der sehr geschätzte deutsche Professor und Philosoph aus Königsberg, Immanuel KANT, hat das, was ANSELM da aufgeschrieben hat, gelesen, <span style="color:#00B000">(vermittelt durch CARTESIUS)</span>, und das dann den <span style="color:#FF6000">„ontologischen Gottesbeweis“</span> genannt, <span style="color:#00B000">(obwohl es in Wirklichkeit gar kein Gottesbeweis ist; genauer ''':''' es ist kein Beweis für die Existenz GOTTES)</span>, und dieser große KANT hat dann großartig bewiesen, das, was ANSELM da aufgeschrieben hat, sei falsch. Es sei <span style="color:#FF6000">„ja gar kein“</span> Gottesbeweis '''!''' <span style="color:#00B000">( Naja, was denn sonst '''?''' )</span> Wobei er den Fehler gemacht hat, dass er den, an sich, unvergleichbaren GOTT mit hundert Talern in seinem Vermögenszustande verglichen hat. <span style="color:#00B000">(Das ist aber eine andere Geschichte.)</span> Hundert Taler und GOTT haben ,an sich‘ nichts gemeinsam, außer, wenn KANT ,wirklich‘ hundert Taler hat, und GOTT auch ,wirklich‘ existiert, <span style="color:#00B000">(wie ANSELM und gläubige Menschen glauben)</span>, dann gibt es GOTT und die Taler eben ,wirklich‘. Aber damit ist man nicht schlauer geworden. Seit KANT läuft die ganze Diskussion um GOTT immer nur als Diskussion um den <span style="color:#00B000">(von KANT)</span> so genannten <span style="color:#FF6000">„ontologischen, <span style="color:#00B000">[ kosmologischen, teleologischen etc. ]</span> Gottesbeweis“</span> —, obwohl es niemals einen Beweis für die Existenz GOTTES geben kann und niemals geben wird. <span style="color:#00B000">(Das haben Wissenschaftler jeder Richtung und Philosophen aller Weltanschauungen uns immer wieder nachdrücklich versucht zu sagen, weil keiner dieser sog. Beweise für die Existenz eines GOTTES stringent ist.)</span> Beweisen kann man die Existenz von Naturgesetzen. Die sind unveränderlich und fix, immer und überall. Jeder vernünftige Mensch muss sie akzeptieren. Man kann darüber nicht diskutieren und sie dann mit Mehrheitenbeschlüsse verändern. Wenn GOTT ebenso bewiesen werden könnte, dann wäre jeder vernünftige Mensch gezwungen, die Existenz GOTTES wie ein Naturgesetz anzunehmen. Gott ist aber kein Naturgesetz. GOTT ist <span style="color:#FF6000">„Person“</span>, — für Christgläubige ''':''' <span style="color:#FF6000">„ein GOTT in drei Personen“</span>. Und GOTT ist <span style="color:#FF6000">„Geist“</span>. Das besagt, dass GOTT nicht mit materiellen Dingen aus unserer Welt verglichen werden darf; <span style="color:#00B000">(was sowohl THOMAS von Aquin als auch Immanuel KANT doch getan haben)</span>. Und ganz wesentlich ''':''' der Zugang zu GOTT läuft nicht über den Beweis, sondern immer nur über den Glauben. Wer an GOTT glauben will, dem antwortet GOTT auf seine Weise — nämlich <span style="color:#FF6000">„geistig“</span> bzw. <span style="color:#FF6000">„geistlich“</span>. Wer nicht an GOTT glauben will, dessen Entscheidung respektiert GOTT, und drängt sich nicht auf. Glaube ist immer eine freie Entscheidung des Menschen für GOTT. Niemand darf gezwungen werden. Wenn es einen Beweis für GOTT gäbe, wäre jeder vernünftige Mensch gezwungen, an GOTT zu glauben. Und das widerspricht ganz entschieden der Freiheit des Glaubens. Daher gibt es nie und nimmermehr einen Existenzbeweis für GOTT '''!!!''' ... Daher darf man das Kalkül des Logiker GÖDEL, <span style="color:#00B000">(und damit auch das Theorem ANSELMS)</span>, nicht als einen Existenzbeweis für GOTT lesen. Sowohl ANSELM als auch GÖDEL setzen die Existenz GOTTES notwendig als gegeben schon voraus. Das GÖDEL-System, und auch das Theorem ANSELMS, sind bloß die logische Bestätigung der Widerspruchsfreiheit der Glaubensüberzeugung eines Menschen, der sich schon entschieden hat, an GOTT zu glauben; und nicht der Grund für seine Entscheidung. Alle sogenannten ,Gottesbeweise‘, sind in Wirklichkeit nichts anderes, als nachträgliche Evaluierungen eines GOTT-Glaubens, bzw. ,Wege‘, <span style="color:#00B000">(bei THOMAS von Aquin)</span>, die aufzeigen, dass der GOTT-Glaube widerspruchsfrei, sinnvoll, und <span style="color:#FF6000">»''mit allen bekannten Tatsachen durchaus vereinbar ist''«</span>, wie GÖDEL sagt. GOTT hat es nicht nötig, ,bewiesen‘ <span style="color:#00B000">( ╞ )</span> zu werden. ===<div class="center"><span style="color:#660066">Einleitung</span></div>=== Eine Studie zum GÖDEL-Kalkül. Der Logiker Kurt GÖDEL <span style="color:#00B000">(1906-1978)</span> hat mit diesem Kalkül eine moderne Rekonstruktion des, <span style="color:#00B000">(von KANT)</span>, so genannten ‚ontologischen Gottesbeweises‘ nach ANSELM von Canterbury auf modal-logischer Basis vorgelegt. Damit hat er die <span style="color:#FF6000">„Rede von GOTT“</span> auf eine ‚vernünftige Basis‘ gestellt, d.h. sie soll für jeden Menschen nachvollziehbar sein, <span style="color:#FF6000">»''rein verstandesmäßig, (ohne sich auf den Glauben an irgendeine Religion zu stützen)''«</span>, wie er sagt. GÖDEL ,nimmt‘ als Logiker, angeregt durch den Philosophen und Mathematiker Gottfried Wilhelm LEIBNIZ, rein theoretisch, fürs Erste, einmal ‚an‘, <span style="color:#00B000">(als Prämisse, d.i. der Term :01: im 3. Beweisgang zum Theorem ANSELMS im Anhang)</span>, dass es GOTT gibt ''':''' d.i. ein sog. ,methodologischer GOTT-Glaube‘, und untersucht die logischen Konsequenzen. Dabei zeigt sich, beim genaueren Hinsehen, dass der ‚Nicht-GOTT-Glaube‘, der ‚dezidierte‘ Atheismus, <span style="color:#00B000">(im Beweisgang ,Widerlegung‘ im Anhang)</span>, überraschender Weise, zu einem Widerspruch führt, und damit logisch ,falsch‘ ist. Jedoch, GÖDEL kann und will mit seinem Kalkül keinen ,GOTT-Glauben‘ ,erzeugen‘, d.h. das GÖDEL-Kalkül ist kein <span style="color:#FF6000">„Existenz-Beweis"</span> für den GOTT der Bibel, sondern, es setzt die Existenz eines GOTTES, einfach als gegeben, schon voraus. GÖDEL beweist dann mit seinem System, dass der traditionelle abendländische ,GOTT-Glaube‘, <span style="color:#FF6000">»''die theologische Weltanschauung''«</span>, <span style="color:#00B000">(d.i. die Kalkül-Prämisse, und das, daraus ,regulär‘ (├ ) abgeleitete, Theorem ANSELMS)</span>, mit den Maßstäben der modernen Logik <span style="color:#FF6000">»''durchaus vereinbar''«</span> <span style="color:#00B000">(d.h. logisch ,richtig‘)</span> ist, im Gegensatz zum ,Nicht-GOTT-Glauben‘, der davon ausgeht, dass es keinen GOTT gibt. GÖDEL beweist mit seinem System ''':''' der traditionelle GOTT-Glaube ist, — mit mathematisch-logischer Evidenz —, widerspruchfrei und wahr. <span style="color:#00B000">(Der Beweis aus dem Widerspruch des Gegenteils ist ein ,indirekter Beweis‘ und kein ,Zirkelbeweis‘ '''!''' )</span> GÖDEL blieb bis zu seinem Tod ohne ein dezidiertes religiöses Bekenntnis. <span style="color:#00B000">(Das Leben ist nicht immer ,logisch‘.)</span> Entsprechend der <span style="color:#FF6000">»''theologischen Weltanschauung''«</span> ist GOTT der Größte, <span style="color:#FF6000">»''über dem nichts Größeres mehr gedacht werden kann''«</span>, <span style="color:#00B000">(ANSELM)</span>; bzw. <span style="color:#FF6000">»''GOTT ist ein Wesen von äußerster Größe und Vollkommenheit, das alle Grade derselben in sich schließt''«</span>, <span style="color:#00B000">(LEIBNIZ)</span>, und der für uns immer schon ,da‘ ist. Das ist die methodologische Prämisse des GÖDEL-Kalküls. Davon ausgehend, zeigen seine Axiome und Definitionen, dass es zu einem Widerspruch führt, falls man ,annimmt‘, es sei nicht möglich, dass es <span style="color:#FF6000">„GOTT“</span>, <span style="color:#4C58FF">— ‚'''G'''‘ —</span> gibt. Aus dem Widerspruch des Gegenteils wird von GÖDEL, mit dem <span style="color:#4C58FF">[ Modus tollendo tollens ] :: [ A → B, ¬B ├ ¬A ]</span>, dann ,bewiesen‘ <span style="color:#00B000">( ╞ )</span> ''':''' es ist doch möglich, dass es <span style="color:#FF6000">„GOTT“</span> wirklich gibt. Somit ist der Glaube an <span style="color:#FF6000">„GOTT“</span>, — weil widerspruchsfrei —, mit den Worten GÖDELS ''':''' <span style="color:#FF6000">»''mit allen bekannten Tatsachen durchaus vereinbar''«</span>. Immanuel KANT <span style="color:#00B000">(1724-1804)</span> scheint diesen Fall vorausgesehen zu haben, dass versucht werden könnte, die ,Möglichkeit‘ GOTTES aus einem Widerspruch zu ,beweisen‘ ''':''' ::<span style="color:#FF6000">»</span> <span style="color:#00B000">[ Angenommen, es gibt ]</span> ''doch einen und zwar nur diesen '''Einen''' Begriff'' <span style="color:#00B000">[ ,GOTT‘, so dass ]</span> ''das Nichtsein oder das Aufheben seines Gegenstandes'' <span style="color:#00B000">[ GOTT ]</span>, ''in ,sich selbst‘ widersprechend sei; und dieses ist der Begriff des allerrealsten Wesens. Es hat, sagt ihr, alle Realität'', <span style="color:#00B000">[ bzw. alle Vollkommenheit ]</span>, ''und ihr seid berechtigt, ein solches Wesen als ,möglich‘ anzunehmen'' ... <span style="color:#00B000">[ denn das GÖDEL-Kalkül ,beweist‘ ( ╞ ) in der ,Widerlegung‘ im Anhang, wie auch im 1. Beweisgang, aus einem Widerspruch, dass die Existenz GOTTES definitiv logisch ,möglich‘ ist. ]</span> … ''obgleich der sich nicht widersprechende'', <span style="color:#00B000">[ ,mögliche‘ ]</span>, ''Begriff'', <span style="color:#00B000">[ ,GOTT‘ ]</span>, ''noch lange nicht die'' <span style="color:#00B000">[ reale ]</span> ''Möglichkeit des Gegenstandes'', <span style="color:#00B000">[ GOTT ]</span>, ''beweiset. … Das ist eine Warnung, von der Möglichkeit der Begriffe (logische)'', <span style="color:#4C58FF">— '''◇''' —</span>, ''nicht sofort auf die Möglichkeit der Dinge (reale)'', <span style="color:#4C58FF">— '''□''' —</span>, ''zu schließen''<ref>vgl. ‚''<span style="font-family: Times;"><big>Kritik der reinen Vernunft</big></span>''‘, Seite 399; https://www.korpora.org/kant/aa03/399.html</ref>. <span style="color:#00B000">[ Trotz dieser Warnung, wird dieser Schluss dennoch im Theorem ANSELMS vollzogen, bzw. mit GÖDEL im 3. Beweisgang ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx→□∃xGx'''‘ —</span> '''!''' ]</span>. <span style="color:#FF6000">«</span> Warum das <span style="color:#FF6000">»''mit allen bekannten Tatsachen durchaus vereinbar''«</span> ist, und inwieweit KANT sich irrt, wird in dieser Studie gezeigt. ===<div class="center"><span style="color:#660066">Der Schlüsselbegriff im Kalkül</span></div>=== Der ‚Schlüsselbegriff‘ in diesem Kalkül ist <span style="color:#FF6000">„positive Eigenschaft“</span>, bzw. <span style="color:#FF6000">„Perfektion“, „Vollkommenheit“</span> ''':''' <span style="color:#4C58FF">— ‚'''P'''‘ —</span>. Für diesen wichtigen Begriff gibt es aber im Kalkül selbst keine explizite Definition, sondern er wird nur durch seine Verwendung innerhalb des Kalküls indirekt ‚definiert‘. <span style="color:#00B000">(Das heißt ''':''' <span style="color:#4C58FF"> — ‚'''P'''‘ — </span> bezeichnet ein System von ,Eigenschaften‘, die ,positiv‘, bzw. ,vollkommen‘ | ,perfekt‘ | genannt werden, von denen im Kalkül wohl beweisbar ist, dass sie sich gegenseitig ,nicht widersprechen‘, weil sie im System als solche ,gleichwertig‘, bzw. gleich ,wahr‘ sind, jedoch ohne sie erschöpfend aufzählen zu können, oder auch nur sagen zu können, was sie alle im einzelnen bedeuten, außer, dass sie kompatibel sind.)</span> Mit der Wahl dieses Schlüsselbegriffes hat GÖDEL eine wesentliche Vorentscheidung für die Ergebnisse des Kalküls getroffen '''!''' In seinen Notizen zum ‚ontologischen Beweis‘ vom 10. Februar 1970 gibt GÖDEL, — für die nachträgliche Interpretation dieses Begriffes <span style="color:#00B000">(und auch für das Kalkül selbst)</span> —, die richtungsweisende Erklärung ''':''' ::<span style="color:#FF6000">»''Positiv bedeutet positiv im moralisch ästhetischen Sinne...''«</span> ::Und er fügt in Klammer hinzu ''':''' ::<span style="color:#FF6000">»...''(unabhängig von der zufälligen Struktur der Welt). Nur dann sind die Axiome wahr''.«</span><ref>GÖDEL, Kurt, ''<span style="font-family: Times;"><big>‚Ontological proof‘</big></span>'' in ''<span style="font-family: Times;"><big>‚Collected Works‘</big></span>'', vol. III, ed. S.FEFERMAN et al., Oxford (U.P.), 1995; 403–404.</ref> GÖDEL-Axiom-1 ''':''' <span style="color:#4C58FF">— ‚('''PX <small><math>{ \color{Blue} \dot\lor}</math></small> P¬X''')‘ ↔<span style="color:#00B000"> ‚('''¬PX ↔ P¬X''')‘</span> — </span> ''':''' <span style="color:#FF6000"> »''Entweder die Eigenschaft'' <span style="color:#4C58FF">‚'''X'''‘</span> ''oder ihre Negation'' <span style="color:#4C58FF">‚'''¬X'''‘</span> ''ist positiv''«</span>. Hier ist der Hauptkritikpunkt, dass es Eigenschaften gibt, die ,an sich‘ weder positiv noch negativ sind. Beispiele wären ''':''' ‚rothaarig‘ oder ‚schwerwiegend‘; solche Eigenschaften können aber ,für mich‘ entweder positiv oder negativ sein, abhängig von meiner Betrachtungsweise und subjektiven Vorlieben. Diese Eigenschaften, wie ‚rothaarig‘ an sich, oder meine positiv-negativen ‚Betrachtungsweisen‘, sind jedoch der <span style="color:#FF6000">»''zufälligen Struktur der Welt''«</span> entnommen und treffen nicht den <span style="color:#FF6000">»''moralisch ästhetischen Sinn''«</span> von <span style="color:#FF6000">»''positiv''«</span> bei GÖDEL. Er orientierte sich an LEIBNIZ, welcher im Bezug zum ‚ontologischen Beweis‘ definiert ''':''' ::<span style="color:#FF6000">»''Vollkommenheit'' <span style="color:#00B000">[ GOTTES ]</span> ''nenne ich jede einfache Eigenschaft, die sowohl positiv als auch absolut ist, oder dasjenige, was sie ausdrückt, ohne jede Begrenzung ausdrückt''.«</span><ref>Zitiert nach Thomas GAWLICK, in ''<span style="font-family: Times;"><big>‚Was sind und was sollen mathematische Gottesbeweise ?‘</big></span>'', Predigt vom 8.1.2012 in der Kreuzkirche zu Hannover. https://web.archive.org/web/20130524164359/http://www.idmp.uni-hannover.de/fileadmin/institut/IDMP-Studium-Mathematik/downloads/Gawlick/Predigt_Gawlick_Gottesbeweise.pdf</ref> Die Seins-Eigentümlichkeiten <span style="color:#00B000">(Daseinsmodi, Perfektionen)</span> wie ‚wahr‘, ‚gut‘, ‚edel‘ usw. entsprechen dem <span style="color:#FF6000">»''moralisch ästhetischen Sinn''«</span> von <span style="color:#FF6000">»''positiv''«</span> bei GÖDEL. Das sind Beispiele für ‚absolut‘ positive Begriffe aus der Lehre der Seinsanalogie ''':''' <span style="font-family: Times;"><big>‚verissimum‘, ‚optimum‘, ‚nobilissimum‘</big></span>, usw., die, an sich, <span style="color:#FF6000">»''ohne jede Begrenzung gelten''«</span>; zu finden in der <span style="font-family: Times;"><big>‚Via quarta‘</big></span>, bei THOMAS von Aquin, über die <span style="color:#FF6000">„analoge"</span> Abstufung im ‚Sein‘ der Dinge. Diese <span style="color:#FF6000">„analoge"</span> ‚Abstufung‘ ist dann die faktische Begrenztheit <span style="color:#00B000">(d.h. Unvollkommenheit)</span> im <span style="color:#FF6000">»''zufälligen''«</span> ‚Sein‘ der Dinge —. Die <span style="color:#FF6000">„positiven Eigenschaften“</span> GÖDELS ''':''' <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, wie Wahrheit, Einheit, Gutheit, <span style="color:#00B000">(von ,Güte‘)</span>, Schönheit, Adel, <span style="color:#00B000">(von ,edel‘)</span>, Gleichheit, Andersheit, Wirklichkeit, ,Sein‘ im Sinne von Etwas-sein, etc. werden <span style="color:#FF6000">„Perfektionen“</span>, oder auch <span style="color:#FF6000">„Transzendentalia“</span> genannt, <span style="color:#00B000">(von lateinisch ''':''' <span style="font-family: Times;"><big>transcendere</big></span>, <span style="color:#FF6000">„übersteigen“</span>)</span>. In der mittelalterlichen Scholastik sind Transzendentalien die Grundbegriffe, die allem Seienden als <span style="color:#FF6000">„Modus“</span>, <span style="color:#00B000">(d.h. ,Eigentümlichkeit‘, als allgemeine Seinsweisen)</span>, zukommen. Wegen ihrer Allgemeinheit ,übersteigen‘ sie die besonderen Seinsweisen, welche ARISTOTELES die ,Kategorien‘ nannte. Ontologisch betrachtet, werden die Transzendentalien als das allem Seienden Gemeinsame aufgefasst, da sie von allem ausgesagt werden können. Von der KI werden sie, nicht unpassend, als <span style="color:#FF6000">„ultimative Eigenschaften des Seins“</span> bezeichnet, die <span style="color:#FF6000">„jenseits der materiellen Welt existieren“</span>, <span style="color:#00B000">(da sie ,ultimativ‘ nur von GOTT, als den unbegrenzt Vollkommenen, ausgesagt werden können, die jedoch, auch von allen übrigen Seienden, wegen deren seinsmäßigen Unvollkommenheit und Begrenztheit, abgestuft, d.h. <span style="color:#FF6000">„analog"</span>, ausgesagt werden)</span>. Diese Transzendentalien sind ,inakzident‘, das heißt, sie entstehen nicht aus anderen Begriffen, sondern sind erste, unteilbare Bestimmungen <span style="color:#4C58FF">— ‚'''X'''‘ —</span> des Denkens und des Seins, die allen Seienden ''':''' <span style="color:#4C58FF">— ‚'''□∀xXx'''‘ —</span>, unabhängig von ihren speziellen Eigenschaften, als ,relative‘ Vollkommenheiten, <span style="color:#00B000">(bzw. Unvollkommenheiten)</span>, mit ,modaler‘ Notwendigkeit, <span style="color:#4C58FF">— ‚□‘ —</span>, <span style="color:#FF6000">„analogisch"</span> zukommen, d.h. sie sind in allen Seienden, seinsmäßig abgestuft und abgegrenzt, ,relativ‘ zum unbegrenzt Unendlichen ihrer selbst, und <span style="color:#FF6000">»''dasjenige, was sie ausdrücken, drücken sie ohne jede Begrenzung aus''«</span>, <span style="color:#00B000">(LEIBNIZ)</span>; und damit stehen sie ontologisch in einer <span style="color:#FF6000">„analogen"</span> ,Beziehung‘ zu GOTT, dem absolut Vollkommenen und unbegrenzt Unendlichen. In der Erkenntnisordnung wirken sie als die ersten Begriffe des menschlichen Verstehens, die eine Basis für alle weiteren wissenschaftlichen Erkenntnisse bilden. In der Seinsordnung sind die Transzendentalien ontologisch eins, gleichwertig, <span style="color:#00B000">(,mathematisch äquivalent‘)</span>, und daher konvertierbar, d.h. austauschbar, <span style="color:#00B000">(vgl. z. B. den scholastischen ,Merksatz‘ ''':''' <span style="font-family: Times;"><big>,ens et verum convertuntur‘</big></span>)</span>. Damit sind sie auch von einander abhängig, was GÖDEL sowohl im Axiom-2 ''':''' <span style="color:#4C58FF">— ‚'''PX ∧ □∀x(Xx→Yx)→PY'''‘ —</span>, für positive Eigenschaften, als auch in der Definition-2 ''':''' <span style="color:#4C58FF">— ‚'''X'''<sub>ess</sub>'''x ↔ Xx ∧ ∀Y(Yx→ □∀y(Xy→Yy))'''‘ —</span>, für die Wesenseigenschaften, syntaktisch formalisiert hat mit dem Term-Element ''':''' <span style="color:#4C58FF">— ‚'''□∀x(Xx→Yx)'''‘ —</span>, weil sie sich gegenseitig, — mit ,modaler‘ Notwendigkeit —, gleichwertig ,implizieren‘, d.h. einschließen, <span style="color:#00B000">(im Axiom-2 mit der Individuum-Variable <span style="color:#4C58FF"> — ‚'''x'''‘ —</span>, und in der Definition-2 mit der Individuum-Variable <span style="color:#4C58FF"> — ‚'''y'''‘ — </span>)</span>. Man kann die Transzendentalia, <span style="color:#00B000">(wie GÖDEL)</span>, auch ,Wesenseigenschaften‘ ''':''' <span style="color:#4C58FF"> — ‚'''X'''<sub>ess</sub>‘ —</span>, nennen, weil sie allem Seienden <span style="color:#FF6000">„wesentlich analog"</span> zukommen. Weil Transzendentalien miteinander austauschbar sind, sind sie auch widerspruchsfrei, was GÖDEL mit Axiom-1 syntaktisch darstellt. Die Gültigkeit und Wahrheit, d.h. die mathematisch-logische Evidenz von Axiom-1 und Axiom-2, beruht auf der ontologischen Allgemeinheit und Gültigkeit der Transzendentalia, die GÖDEL mit Definition-2, in sein Kalkül explizit eingeführt und als Wesenseigenschaften ,bestimmt‘ hat. <span style="color:#00B000">(Definitionen werden formal-syntaktisch durch das Äquivalenzzeichen <span style="color:#4C58FF">,'''↔'''‘</span> angezeigt, gelesen als <span style="color:#FF6000">„...ist genau dann ... wenn...“</span>)</span> Die GÖDEL-Axiome und -Definitionen werden jedoch sofort <span style="color:#FF6000">„modal falsch"</span>, wenn ihre Eigenschafts-Variablen, <span style="color:#4C58FF">— ‚'''X'''‘ —</span> und <span style="color:#4C58FF">— ‚'''Y'''‘ —</span>, mit ,Nicht-Transzendentalia‘, wie z. B. ,rot‘ oder ,schwer‘, belegt werden. <span style="color:#00B000">(Dieser ,Sachverhalt‘ wird von Kritikern des GÖDEL-Systems, — zu vorschnell —, verwendet, um ihre Behauptungen zu ,belegen‘, das GÖDEL-Kalkül und seine Konsequenzen seien ,falsch‘.)</span> Zum Überblick ''':''' <span style="color:#FF6000">„Transzendentalia“</span> sind universale, alles Seiende charakterisierende Begriffe, die über kategoriale Einteilungen hinausgehen, und sowohl in der klassischen Scholastik, als auch in der modernen Philosophie, <span style="color:#00B000">(KANT, Uwe MEIXNER<ref>vgl. die ,transzendentalen‘ Bedingungen möglicher Erkenntnisse bei KANT; und auch in der ,Axiomatischen Ontologie‘ bei Uwe MEIXNER</ref>)</span>, als Grundlage der Metaphysik und Erkenntnistheorie dienen. Sie sind die <span style="color:#FF6000">„ersten Begriffe des Seins“</span>, die jedem Ding als ,relative‘ Vollkommenheiten, <span style="color:#00B000">(Perfektionen)</span>, inhärent sind, <span style="color:#FF6000">„analogisch"</span> abgestuft, auf einen ,ultimativ‘-unbegrenzten Bezugspunkt ausgerichtet, und die sich im Denken, <span style="color:#00B000">(für uns als wahr)</span>, und in der moralischen Wertung, <span style="color:#00B000">(für uns als gut und edel)</span>, manifestieren, relativ zum ,ultimativ‘-unbegrenzten Bezugspunkt ihrer selbst. Die faktische, zusätzliche Unvollkommenheit, die sich generell in der notwendigen, und unausweichlichen Vergänglichkeit aller Dinge zeigt, ist einem ontologischen Defekt ,geschuldet‘, der stark zeitabhängig ist, d.h. der einen Anfang und ein Ende hat. Das GÖDEL-Axiom-5 ''':''' <span style="color:#4C58FF"> — ‚'''PE'''<sub>not</sub>‘ —</span> ''':''' <span style="color:#FF6000">»''Notwendige Existenz ist eine positive Eigenschaft''«</span>, ist immer falsch, wenn es auf etwas aus der <span style="color:#FF6000">»''zufälligen Struktur der Welt''«</span> angewendet wird, wie z. B. auf einen <span style="color:#FF6000">„Tsunami“</span>, dessen ‚Existenz‘ für uns nicht ‚positiv‘ ist. KANT hat schon festgestellt ''':''' <span style="color:#FF6000">„Existenz ist keine Eigenschaft“</span>. Das gilt für alles, was <span style="color:#FF6000">„existiert“</span>. Das Axiom-5 hat nur dann seine Gültigkeit, ist nur dann ,wahr‘, wenn <span style="color:#FF6000">„Dasein“</span> <span style="color:#00B000">(Existenz)</span> und <span style="color:#FF6000">„Wesenseigenschaften“</span> <span style="color:#00B000">(Essenz)</span> in eins zusammenfallen. Bei allen Dingen, die ‚da‘ sind, ist ihr ‚Da-Sein‘ ontologisch immer verschieden zu dem ‚was‘ sie sind ''':''' zu ihrem ,Was-Sein‘. In der philosophischen Tradition, seit ARISTOTELES, wird die ontologische Identität, d.i. die Koinzidenz, der innere Zusammenhang von ‚Sein‘ und ‚Wesen‘ allein nur dem <span style="color:#FF6000">„selbst ‚unbewegten‘ Erstbewegenden“</span> zugeschrieben, dem <span style="color:#FF6000">„<span style="font-family: Times;"><big>πρῶτον κινοῦν ἀκίνητον</big></span>“</span><span style="color:#00B000"> | ,prôton kinoûn akinêton‘</span>, von dem ARISTOTELES etwas später sagt ''':''' <span style="color:#FF6000">»''denn dies ist der Gott''«</span> und dann hinzufügt ''':''' <span style="color:#FF6000">»''so sagen wir ja''«</span>; d.h. das ist eine Interpretation aus dem Glaubenskontext des ARISTOTELES. Er war ein Gott-gläubiger Grieche. Wer an GOTT glaubt, kann das nachvollziehen. GÖDEL musste dieses Axiom-5 postulieren, sonst wäre sein Kalkül nicht aufgegangen, ohne dass er deswegen schon an GOTT glauben müsste. Er hat für sein Kalkül das ontologische Theorem von der Identität von ‚Sein‘ und ‚Wesen‘ im ‚unbewegten Erstbeweger‘ des ARISTOTELES benutzt, ohne diese Herkunft explizit referenziert zu haben. <span style="color:#00B000">(Gilt auch für Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span> ''':''' <span style="color:#FF6000">»''Göttlichkeit, das GOTT-Sein, das ‚Dasein‘ GOTTES, ist eine positive Wesenseigenschaft, eine Perfektion; d.h. ist das ‚Wesen‘ GOTTES ''':''' GOTT ist perfekt''«</span>)</span>. Die ontologische Identität von Sein und Wesen, Existenz und Essenz, wie auch die Koinzidenz von Möglichkeit und Wirklichkeit, von Ursache und Wirkung, sowie auch die ontologische Einheit von <span style="color:#00B000">(Erkenntnis-)</span>Subjekt und <span style="color:#00B000">(Erkenntnis-)</span>Objekt im <span style="color:#FF6000">»''Erkennen seiner Erkenntnis''<span style="color:#00B000">[-Tätigkeit ]</span>«<span style="color:#00B000"> | </span>„<span style="font-family: Times;"><big>νοήσεως νόησις</big></span>“</span><span style="color:#00B000"> | ,noêseôs noêsis‘ <small>(<span style="font-family: Times;"><big>,''Metaphysik''‘</big></span> XII 9, 1074b34)</small></span>, und der innere Zusammenhang der <span style="color:#FF6000">„ultimativen Transzendentalia“</span>, gilt nur in der <span style="color:#FF6000">„unverursachten Letztursache"</span>, auf die ARISTOTELES bei seiner Prinzipienforschung gestoßen ist. Es gibt verschiedene Versuche, die GÖDEL-Axiome durch sog. ,Modelle‘, relativ zu einfacheren ,Welten‘, zu verifizieren, um damit ihre relative Konsistenz nachzuweisen. Für GÖDEL aber <span style="color:#FF6000">»''sind die Axiome nur dann'' <span style="color:#00B000">[ in unserer ,realen‘ Welt ]</span> ''wahr'' <span style="color:#00B000">[ und annehmbar ]</span>«</span>, wenn sie <span style="color:#FF6000">»''unabhängig von der zufälligen Struktur der Welt'' <span style="color:#00B000">[ d.h. jeder auch nur ,möglichen‘ Welt ]</span> ''sind''«</span>. Diese Bedingung verweist jede Verifikation und jede Interpretation der Axiome auf das ,Nicht-Zufällige‘, das ,Notwendige‘, ,Absolute‘, in dem die Axiome und Definitionen des GÖDEL-Kalküls erst dadurch ihren Sinn und ihre Bedeutung bekommen, wenn sie vom ,Absoluten‘ und ,Unendlichen‘ her erklärt und verstanden werden. Damit insistiert GÖDEL auf eine genuin <span style="color:#4C58FF">,theologische‘</span> Interpretation seines Kalküls, mit der <span style="color:#4C58FF">„Theologie“</span> zum Begriff GOTT, dem unbegrenzt Unendlichen, als Verifikationskriterium. Das entspricht auch der ,methodologischen‘ Prämisse seines Kalküls. Die wichtigsten Axiome und Definitionen im GÖDEL-Kalkül sind jedoch bloße ,Annahmen‘, deren Evidenz, sowohl die ,mathematische‘ als auch die <span style="color:#4C58FF">,theologische‘</span>, erst evaluiert, d.h. ,bewiesen‘ <span style="color:#00B000">( ╞ )</span> werden muss. Das bedeutet ''':''' die logische Verifikation der Axiome und Definitionen von GOTT und seinen Vollkommenheiten kann nur Kalkül-intern durch den Aufweis ihrer Widerspruchsfreiheit erfolgen, d.i. <span style="color:#FF6000">»''unabhängig von der zufälligen Struktur der Welt''«</span>. Logisch evaluierte und verifizierte Axiome und Definitionen sind die ,modal‘ notwendigen, d.h. die ,transzendentalen‘ Voraussetzungen für die Ergebnisse eines Kalküls, damit seine Theoreme und Korollare in unserer ,realen‘ Welt als logisch ,wahr‘ und damit für uns auch als ,annehmbar‘ gelten können, während die Prämissen eines Kalküls, <span style="color:#00B000">(die Argument Einführung, <span style="color:#4C58FF">— '''AE:''' —</span> )</span>, nicht notwendige, und somit ,modal‘ frei gewählte ,Annahmen‘ sind. Jedoch aus diesen ,modal‘ frei gewählten, ,möglichen‘ <span style="color:#00B000">( <span style="color:#4C58FF">'''◇'''</span> )</span> Prämissen folgen mit Hilfe der ,bewiesenen‘ <span style="color:#00B000">( ╞ )</span> Axiome und Definitionen die Ergebnisse mit ,modaler‘ Notwendigkeit <span style="color:#00B000">( <span style="color:#4C58FF">'''□'''</span> )</span>. Die Logik des GÖDEL-Systems ist eine ,Prädikatenlogik‘ zweiter Stufe, in der die Quantoren nicht nur Individuum-Variable, sondern auch Eigenschafts-Variable, <span style="color:#00B000">(als noch ,unbestimmte‘ Prädikate im Allgemeinen)</span>, binden können. Die formale Struktur des GÖDEL-Kalküls besteht aus fünf Axiomen und drei Definitionen, mit deren Hilfe in drei Beweisgängen drei Theoreme und mehrere Korollare aus seiner ,methodologischen‘ Prämisse ,regulär‘ <span style="color:#00B000">(├ )</span> abgeleitet werden können, wobei die beiden ersten Beweisgänge, mit ihren Ergebnissen, den dritten vorbereiten, in dem es dann um das Theorem ANSELMS geht. Die Prämisse des GÖDEL-Kalküls in allen Beweisgängen ist der traditionelle ,GOTT-Glaube‘, in der Formulierung speziell nach LEIBNIZ. Ein Axiom, eine Definition, zwei Theoreme und alle Korollare im GÖDEL-Kalkül sind Aussagen über <span style="color:#FF6000">„GOTT“</span>, <span style="color:#4C58FF">— ‚'''G'''‘ —</span>. Alle fünf Axiome, eine Definition und ein Theorem, <span style="color:#00B000">(und das Korollar aus Axiom-4)</span>, sind auch Aussagen über die Eigenschaft <span style="color:#FF6000">„Vollkommenheit“, „Perfektion“</span>, <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, die in der <span style="color:#FF6000">»''theologischen Weltanschauung''«</span> als die Wesenseigenschaft GOTTES gilt ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, <span style="color:#FF6000">»''GOTT ist vollkommen''«</span> bzw. <span style="color:#FF6000">»''GOTT ist das Vollkommenste der Wesen''«</span>, <span style="color:#00B000">(DESCARTES)</span>. Zwei Definitionen sind Aussagen über die allgemeinen Wesenseigenschaften aller Seienden, <span style="color:#4C58FF">— ‚'''X'''<sub>ess</sub>‘ —</span>, die Transzendentalien, die, als notwendige Existenz, <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>‘ —</span>, auch GOTT zugeordnet werden, mit der Besonderheit bei GOTT, dass sowohl alle Eigenschaften, als auch alle anderen Zuordnungen, wie Sein und Wesen, wie Ursache und Wirkung, usw., im Unendlichen, GOTT, <span style="color:#FF6000">„koinzident“</span> sind, d.h. in GOTT paarweise perspektivisch in ,eins‘ zusammenfallen, und die auch, als Transzendentalia, konvertierbar, d.h. austauschbar sind. Diese Sachverhalte machen deutlich, dass eine spezifische ,Verifikation‘ und sachgerechte ,Evaluierung‘ der GÖDEL-Axiomatik nur genuin <span style="color:#4C58FF">,theologisch‘</span> erfolgen kann. Die Evaluierung der <span style="color:#FF6000">»''mathematischen Evidenz''«</span> des GÖDEL-Systems, im Allgemeinen, muss jedoch entsprechend der Maßstäbe einer modalen Prädikatenlogik zweiter Stufe durchgeführt werden. Das GÖDEL-Kalkül unterscheidet <span style="color:#00B000">(in Definition-3 ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x ↔ ∀X(X'''<sub>ess</sub>'''x →□∃yXy)'''‘ —</span>)</span> formal-syntaktisch zwischen der Eigenschaft ,Existenz‘, <span style="color:#4C58FF"> — ‚'''E'''‘ —</span>, die nur GOTT zugeordnet werden kann, und dem Existenz-Operator, <span style="color:#4C58FF">— ‚'''∃'''‘ —</span>, der auch allem Übrigen, das nicht GOTT ist, zugeordnet wird. Es gibt hier auch den formal-syntaktischen Unterschied zwischen der, <span style="color:#00B000">(von mir notierten, jedoch von GÖDEL schon intendierten und angesprochenen)</span>, speziellen ,Notwendigkeit‘, <span style="color:#4C58FF"> — <sub>not</sub> —</span>, die nur der Existenz GOTTES zugeordnet ist, und der modalen ,Notwendigkeit‘, <span style="color:#4C58FF">— ‚'''□'''‘ —</span>, die auf Verschiedenes bezogen werden kann. Diese Unterschiede sind Hinweise, dass GÖDEL in seiner Kalkül-Logik und -Syntax, die Außerordentlichkeit und Eigenständigkeit GOTTES berücksichtigt, der, als Schöpfer der Welt, prinzipiell und absolut <span style="color:#FF6000">»''unabhängig von der zufälligen Struktur der Welt''«</span> ist, die erst durch GOTT auch das ist, was sie ist. ===<div class="center"><span style="color:#660066">Die Genese des Kalküls</span></div>=== Wie kommt GÖDEL zu seinem Kalkül '''?''' Sein Gewährsmann war Gottfried Wilhelm LEIBNIZ, <span style="color:#00B000">(1646-1716)</span>, den er sehr schätzte. Die rekonstruierbare Genese seines Kalküls findet man in LEIBNIZ ''':''' ''<span style="font-family: Times;"><big>‚Neue Abhandlungen über den menschlichen Verstand‘</big></span>'', <span style="color:#00B000">(1704)</span>‚ ''<span style="font-family: Times;"><big>Viertes Buch, Kapitel X ''':''' ‚Von unserer Erkenntnis des Daseins Gottes‘</big></span>'', Seite 475f. Hier der <span style="color:#00B000">[ kommentierte ]</span> Textausschnitt zum sog. ontologischen ‚Gottesbeweis‘''':''' ::<span style="color:#FF6000">»</span>''Folgendes etwa ist der Gang seines'' <span style="color:#00B000">[ d.h. ANSELMS, Erzbischof von Canterbury; 1033-1109, ]</span> ''Beweises ''':''' GOTT ist das Größte'', <span style="color:#00B000">[ ANSELM spricht vom biblischen GOTT des Glaubens, als ''':''' <span style="color:#FF6000">»''den, über dem ,Größeres‘'' | <span style="font-family: Times;"><big>‚maius‘</big></span> | ''nicht mehr gedacht werden kann''«</span> ]</span>, ''oder, wie DESCARTES es ausdrückt ''':''' das Vollkommenste der Wesen oder auch ein Wesen von äußerster Größe und Vollkommenheit'' ''':''' <span style="color:#00B000"> [ GÖDEL ''':''' </span><span style="color:#4C58FF">‚'''P'''‘</span> <span style="color:#00B000">:= ‚Perfektion‘, ‚positive Eigenschaft‘ ]</span>, ''das alle Grade derselben in sich schließt.''<span style="color:#00B000"> [ GÖDEL-Definition-1 ''':''' <span style="color:#4C58FF">— ‚'''Gx↔∀X(PX→Xx)'''‘ —</span> ''':''' <span style="color:#FF6000">»''Das Individuum'' <span style="color:#4C58FF">,'''x'''‘</span> ''ist genau dann GOTT'', <span style="color:#4C58FF">,'''G'''‘</span>, ''wenn'' <span style="color:#4C58FF">,'''x'''‘</span> ''alle Vollkommenheiten'', <span style="color:#4C58FF">,'''P'''‘</span>, ''in sich schließt''«</span>. Definition-1 bildet die traditionelle Vorstellung von GOTT ab. ]</span> ''Dies also ist der Begriff GOTTES.'' <span style="color:#00B000">[ Der Term <span style="color:#4C58FF">— ,'''G'''‘ —</span> steht hier für den biblischen ‚Begriff‘ <span style="color:#FF6000">„GOTT“</span> als ,Individuumname‘ '''!''' ]</span> ''Sehen wir nun, wie aus diesem Begriff das ‚Dasein’ folgt.''<span style="color:#00B000"> [ GÖDEL ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span> ''':''' <span style="color:#FF6000">»''GOTT ist notwendig aus sich ‚da‘''«</span> ''':''' Term :10:, 1. Hauptergebnis im 3. Beweisgang. ]</span> ''Es ist etwas <u>mehr</u>, ‚da‘ zu sein, als nicht ‚da‘ zu sein, oder auch das ‚Dasein‘ fügt der Größe oder der Vollkommenheit'' <span style="color:#00B000">[ GOTTES ]</span> ''einen Grad hinzu, und wie DESCARTES es ausspricht, das ‚Dasein‘ ist selbst eine Vollkommenheit.''<span style="color:#FF6000">«</span> <span style="color:#00B000">(Diesen Ausspruch DESCARTES übernimmt GÖDEL im Axiom-5 ''':''' <span style="color:#4C58FF"> — ‚'''PE'''<sub>not</sub>‘ —</span> ''':''' <span style="color:#FF6000">»''notwendige Existenz''</span> [ alias ‚Dasein GOTTES’ ] <span style="color:#FF6000">''ist eine positive Eigenschaft''</span> [ alias Vollkommenheit ]<span style="color:#FF6000">«</span>. Dem widerspricht KANT ''':''' <span style="color:#FF6000">„Existenz ist keine Eigenschaft“</span>, bzw. <span style="color:#FF6000">»''Sein ist kein reales Prädikat''«</span>. Das Axiom-5 ist daher nur dann ‚wahr‘, wenn ‚Wirklichsein‘ | <span style="color:#FF6000">„<span style="font-family: Times;"><big>ἐνέργεια οὖσα</big></span>“</span> | ‚enérgeia oúsa‘ | d.h. ‚Dasein‘ und ‚Wesen‘ | <span style="color:#FF6000">„<span style="font-family: Times;"><big>οὐσία</big></span>“</span> | ‚ousía‘ | — genauer ''':''' ‚Wesenseigenschaften’ —, ontologisch ,eins‘ sind, d.h. wenn <span style="color:#FF6000">„Existieren“</span> immer schon die <span style="color:#FF6000">„Wesenseigenschaft“</span> GOTTES ist. Was nach ARISTOTELES nur im <span style="color:#FF6000">„unbewegten Erstbeweger“</span> der Fall ist; bzw. mit LEIBNIZ ''':''' <span style="color:#FF6000">»''was das Privilegium der Gottheit allein ist''«</span> '''!''' Aus der ,methodologischen‘ ,Annahme‘ im 2. Beweisgang GÖDELS ''':''' <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span> ''':''' <span style="color:#FF6000">»''das'' <span style="color:#4C58FF">‚'''x'''‘</span> ''steht für den GOTT der Christen''«</span>, und mit Hilfe von Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span> ''':''' <span style="color:#FF6000">»''Göttlichkeit ist eine positive Eigenschaft''«</span>, bzw. <span style="color:#FF6000">»''GOTT ist perfekt''«</span>, mit Axiom-4 ''':''' <span style="color:#4C58FF">— ‚'''PX → □PX'''‘ —</span> ''':''' <span style="color:#FF6000">»''Positive Eigenschaften sind notwendig aus sich, — von Natur aus —, positiv''«</span>, mit Definition-2 ''':''' <span style="color:#4C58FF">— ‚'''X'''<sub>ess</sub>'''x ↔ Xx ∧ ∀Y(Yx→ □∀y(Xy→Yy))'''‘ —</span> ''':''' <span style="color:#FF6000">»''Zum Wesen gehören notwendig auch alle Konsequenzen aus einer Wesenseigenschaft''«</span>, und mit Axiom-1 und der Definition für GOTT, folgt nach einigen logischen Umformungen das GÖDEL-Theorem-2 ''':''' <span style="color:#4C58FF">— ‚'''Gx↔G'''<sub>ess</sub>'''x'''‘ —</span> ''':''' <span style="color:#FF6000">»''Das'' <span style="color:#4C58FF">‚'''x'''‘</span> ''ist genau dann der GOTT der Christen, wenn das Wesen dieses GOTTES sein eigenes Sein ist''«</span>. Dasein und Wesen sind im Unendlichen, GOTT <span style="color:#FF6000">„koinzident“</span> ,eins‘, übereinstimmend mit dem Theorem des ARISTOTELES. Mit diesem, im Kalkül <u>ohne</u> Axiom-5 ,regulär‘ (├ ) abgeleiteten Theorem, widerlegt er KANT für den individuellen Spezialfall <span style="color:#4C58FF">‚'''G'''‘</span> := <span style="color:#FF6000">„GOTT“</span>. Nachprüfbar im Anhang ''':''' im ‚ontologischen‘ Beweis für das Basis-Theorem-2. Somit ist Axiom-5 ,wahr‘, und KANT, der <span style="color:#FF6000">»''eine Abneigung gegen das Gebet hatte''«</span> und auch <span style="color:#FF6000">»''nie zu den sonntäglichen Kirchgängern zählte''«</span><ref>Uwe SCHULTZ ''':''' ‚''<span style="font-family: Times;"><big>Immanuel Kant</big></span>''‘, Rowohlt Monographie 50659, Seite 12</ref>, hat sich hier, im Bezug auf GOTT, geirrt. <span style="color:#4C58FF">„Theologie“</span>, als Wissenschaft von GOTT, war für KANT nie eine ernstzunehmende Option. Die <span style="color:#4C58FF">„Theologie“</span>, als Wissenschaft von GOTT, die natürlich immer auch verbunden sein muss mit der täglichen ,Erfahrung‘ einer Glaubens-Praxis, im Gebet und in den Gottesdienst-Feiern des <span style="color:#4C58FF">„Theologen“</span>, und die daraus entsteht, ist eine ziemlich ,ausgereifte‘ Disziplin. Es haben sich, durch Jahrhunderte hindurch, viele gläubige und auch gescheite Menschen, schon im Judentum, und dann im Christentum, und ebenfalls im Islam, darum bemüht.)</span> :: <span style="color:#FF6000">»</span>''Darum ist dieser Grad von Größe und Vollkommenheit oder auch diese Vollkommenheit, welche im ‚Dasein‘ besteht, in diesem höchsten, durchaus großen, ganz vollkommenen Wesen, denn sonst würde ihm ein Grad fehlen, was gegen seine Definition wäre. Und folglich ist dies höchste Wesen ‚da‘. Die Scholastiker, ohne selbst ihren'' <span style="font-family: Times;"><big>doctor angelicus</big></span> <span style="color:#00B000">[ := THOMAS von Aquin ]</span> ''auszunehmen, haben diesen Beweis verachtet'', <span style="color:#00B000">[ wie später auch Immanuel KANT ]</span>, ''und ihn als einen Paralogismus'' <span style="color:#00B000">[ := Fehlschluss ]</span> ''betrachtet, worin sie sehr unrecht gehabt haben; und DESCARTES, welcher die scholastische Philosophie im Kolleg der Jesuiten zu La Flèche lange genug studiert hatte, hat sehr recht gehabt, ihn wieder zu Ehren zu bringen. Es ist nicht ein Paralogismus, sondern ein unvollständiger Beweis'', <span style="color:#00B000">[ den GÖDEL vervollständigt hat ]</span>, ''der etwas voraussetzt, was man noch hätte beweisen sollen, um ihm mathematische Evidenz zu verleihen — nämlich, dass man dabei stillschweigend voraussetzt, diese Vorstellung des durchaus großen oder durchaus vollkommenen Wesens sei möglich und enthalte keinen Widerspruch'' <span style="color:#00B000">[ '''::''' <span style="color:#4C58FF">— '''◇''' —</span> '''::''' ,möglich‘, ,konsistent‘, ,denkbar‘; GÖDEL beweist im 1. Beweisgang aus Theorem-1 ''':''' <span style="color:#4C58FF">— ‚'''PX→◇∃xXx'''‘ —</span>, <span style="color:#FF6000">»''positive Eigenschaften'', <span style="color:#00B000">[ die allgemeinen Transzendentalien ]</span>, ''sind widerspruchsfrei''«</span>, mit Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, folgt Korollar-1 ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span>, <span style="color:#FF6000">»''GOTT ist widerspruchsfrei möglich''«</span> ]</span>. ''Und es ist schon etwas, dass man durch diese Bemerkung beweist ''':''' gesetzt, dass GOTT'' <span style="color:#00B000">['' <span style="color:#FF6000">»widerspruchsfrei«</span> '']</span> '',möglich‘ ist, so ‚ist‘ er'' <span style="color:#00B000">[ ,notwendig‘ '''::''' <span style="color:#4C58FF">— '''□''' —</span> '''::''' für jede mögliche Welt auch wirklich aus sich ‚da‘ ]</span>, ''was das Privilegium der Gottheit allein ist'' ''':''' <span style="color:#00B000">[ Im 3. Beweisgang, Theorem-3 ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx→□∃xGx'''‘ —</span> ''':''' ‚ANSELMS Prinzip‘ ''':''' <span style="color:#FF6000">»''Weil GOTT widerspruchsfrei ,möglich‘ ist, darum ist auch der Glaube widerspruchsfrei, der annimmt, dass GOTT aus sich ,notwendig‘ da ist''«</span>; mit Korollar-3 ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx ∧ □∀y(Gy→x=y)'''‘ —</span>, <span style="color:#FF6000">»''Es gibt notwendig nur einen einzigen GOTT''«</span>. Damit ist auch der Monotheïsmus bewiesen. ]</span> ''Man hat recht, die Möglichkeit eines jeden Wesens anzunehmen und vor allem die GOTTES, bis ein anderer das Gegenteil beweist''. <span style="color:#00B000">[ Das Gegenteil besagt, dass GOTT ,unmöglich‘ ist. Hier setzt der Möglichkeitsbeweis im GÖDEL-Kalkül an, und beweist, dass diese Aussage zu einem Widerspruch führt. ]</span> ''Somit gibt dieser metaphysische Beweis schon einen moralischen zwingenden Schluss ab, wonach wir dem gegenwärtigen Stande unserer Erkenntnisse zufolge urteilen müssen, dass GOTT ‚da‘ sei, und demgemäß handeln.'' <span style="color:#00B000">[ Aber nicht logisch zwingend '''!''' Denn die Interpretation <span style="color:#4C58FF">— ‚'''G'''‘ —</span> mit dem GOTT der Bibel, als ,methodologische‘ Kalkül-Prämisse, ist nicht zwingend, jedoch ,modal‘ möglich, <span style="color:#4C58FF">— '''◇''' —</span>, und im christlichen Glaubenskontext sinnvoll, was mit einer stimmigen <span style="color:#4C58FF">„theologischen“</span> Interpretation des GÖDEL-Kalküls gezeigt werden kann. Damit wäre dann auch die Frage beantwortet, ob das GÖDEL-System sich plausibel als eine Theorie von GOTT und seinen Eigenschaften interpretieren lässt, bzw. als eine <span style="color:#FF6000">»''axiomatische''«</span> <span style="color:#4C58FF">„Theologie“</span>, wie sie André FUHRMANN apostrophiert. Das <span style="color:#4C58FF">— ‚'''G'''‘ —</span> ist der ,Individuumname‘ für den GOTT der Bibel, — ,GOTT‘ groß geschrieben —, im monotheïstischen, christlichen Glaubenskontext, den auch LEIBNIZ teilt. Dann steht der ,Name‘ auch synonym für das ,existierende‘ Individuum, d.h. für dessen ,Existenz‘. ]</span> ''Es wäre aber doch zu wünschen, dass gescheite Männer'' <span style="color:#00B000">[ sic ! ]</span> ''den Beweis mit der Strenge einer mathematischen Evidenz vollendeten'', <span style="color:#00B000">[ was GÖDEL veranlasst hat, seine Version eines ‚ontologischen Beweises’ zu kreieren, dessen <span style="color:#FF6000">»''mathematische Evidenz''«</span> man heute mit Computerprogrammen<ref>siehe Fußnote 12</ref> schon nachgewiesen hat ]</span> ... <span style="color:#FF6000">«</span>. Für GÖDEL war dieser Text eine intellektuelle Herausforderung, und er hat sie angenommen. Das war für GÖDEL sicher keine Glaubensangelegenheit. GOTT hat es ja auch nicht nötig, ‚bewiesen‘ zu werden. Wer <span style="color:#4C58FF">— ‚'''G'''‘ —</span> z. B. mit dem sog. ‚Urknall‘ gleich setzt, macht die <span style="color:#FF6000">»''zufällige Struktur der Welt''«</span> im ‚Urknall‘, <span style="color:#00B000">(pantheistisch)</span> zu einem ,Gott‘, was GÖDEL dezidiert für sein Kalkül ausgeschlossen haben wollte. Kurt GÖDEL schreibt 1961 in einem Brief, in Anlehnung an den obigen Text ''':''' ::<span style="color:#FF6000">»...''ich glaube, schon heute dürfte es möglich sein, rein verstandesmäßig ''<span style="color:#00B000">[ sic '''!''' ]</span>, ''(ohne sich auf den Glauben an irgendeine Religion zu stützen) einzusehen, dass die theologische Weltanschauung'', <span style="color:#00B000">[ dass es GOTT gibt ]</span>, ''mit allen bekannten Tatsachen'', <span style="color:#00B000">[ z. B. mit den Maßstäben einer modernen Logik ]</span>, ''durchaus vereinbar ist. Das hat schon vor 250 Jahren der berühmte Philosoph und Mathematiker LEIBNIZ versucht''.«</span><ref>Zitiert nach SCHIMANOVICH-GALIDESCU, M.-E. ''':''' ‚''<span style="font-family: Times;"><big>Princeton–Wien 1946–1966. Briefe an die Mutter</big></span>''‘, in ‚''<span style="font-family: Times;"><big>Kurt Gödel – Leben und Werk</big></span>''‘, Hg. B.BULDT et alia, Wien (HÖLDER–PICHLER–TEMSKY), 2001, Band 1</ref> ===<div class="center"><span style="color:#660066">Die Interpretation des Kalküls</span></div>=== Wenn man sich das GÖDEL-Kalkül ansieht, wie es heute formalisiert vorliegt, stellt sich die Frage ''':''' <span style="color:#FF6000">„Lässt sich dieses System plausibel als eine Theorie von GOTT <span style="color:#00B000">(als eine ‚Rede von GOTT’ := <span style="color:#4C58FF">,Theologie’</span>)</span> und seiner Eigenschaften verstehen '''?''' “ — „Ist hier eine genuin <span style="color:#4C58FF">,theologische’</span> Interpretation möglich '''?''' “</span> Seine Herkunft aus der intellektuellen Auseinandersetzung des Logikers GÖDEL mit dem GOTT-gläubigen Philosophen LEIBNIZ und dem christlichen Theologen und Erzbischof ANSELM rechtfertigt diese Frage. Die <span style="color:#FF6000">„mathematische Evidenz“</span> des GÖDEL-Formalismus, <span style="color:#00B000">(im Anhang nachgestellt)</span>, ist allgemein anerkannt, <span style="color:#00B000">(Vorbehalte dagegen gibt es nur bei der Interpretation seiner Syntax, d.h. ob die Axiome und Definitionen, wie GÖDEL sie konzipiert hat, bzw. ob die Theoreme und Korollare, die aus diesen Axiomen ,regulär’ (├ ) abgeleitet werden, auch in unserer realen Welt ,wahr’ und ,annehmbar’ sind)</span>. Die <span style="color:#FF6000">„theologische Evidenz“</span> des GÖDEL-Systems wird durch eine ,Verankerung’ der Axiome und Definitionen in den <span style="color:#4C58FF">,theologisch’</span>-philosophischen Diskurs über GOTT evaluiert, der schon seit zweieinhalbtausend Jahren läuft. In diesen zweieinhalbtausend Jahren hat sich, — gegen ARISTOTELES und die antike Philosophie —, die Erkenntnis durchgesetzt, dass GOTT <span style="color:#FF6000">»''unabhängig''«</span> von der <span style="color:#FF6000">»''zufälligen''«</span> Raum-Zeit-Struktur unserer vergänglichen Welt ist. In meiner Darstellung des GÖDEL-Kalküls folge ich, <span style="color:#00B000">(im Unterschied zum Autographen GÖDELS, vom 10. Feb 1970)</span>, in der Axiom-Formulierung und -Nummerierung, in der Syntax, und in der Beweis-Struktur, der Arbeit von André FUHRMANN ''':''' ''<span style="font-family: Times;"><big>‚Existenz und Notwendigkeit. Kurt Gödels axiomatische Theologie‘</big></span>'' in ''<span style="font-family: Times;"><big>‚Logik in der Philosophie‘</big></span>'' Hg. SCHROEDER-HEISTER, SPOHN und OLSSON, 2005, Synchron, Heidelberg, Seite 349–374. <span style="color:#00B000">(Die tiefer gestellte Notation der spezifischen ,Eigenschaft‘ einer Eigenschaft ist meine Ergänzung zur formalen Syntax, z. B. ''':''' <span style="color:#4C58FF"> — ‚'''G'''<sub>ess</sub>'''x'''‘ — </span>, angeregt durch die indizierende Schreibweise GÖDELS ''':''' <span style="color:#4C58FF">— ,'''G''' Ess. '''x'''’ —</span>.)</span> Die Erkenntnisse zur Straffung und Präzisierung der GÖDEL-Syntax, <span style="color:#00B000">(besonders im Möglichkeitsbeweis)</span>, stammen aus der Arbeit von Günther J. WIRSCHING ''':''' ,''<span style="font-family: Times;"><big>Der Gödelsche Gottesbeweis</big></span>''‘, im Web <ref>https://edoc.ku.de/id/eprint/10243/1/OntBw.pdf</ref>. <span style="color:#00B000">(Auch der Hinweis auf AVICENNA kommt von WIRSCHING.)</span> Die Zitate von THOMAS von Aquin´s Stellungnahme zum Theorem ANSELMS, und von Georg Wilhelm Friedrich HEGEL zur Immanuel KANTS Ablehnung des Theorem ANSELMS, befinden sich in Franz SCHUPP, ,<span style="font-family: Times;"><big>''Geschichte der Philosophie im Überblick''</big></span>‘, Band 2 ‚<span style="font-family: Times;"><big>''Christliche Antike, Mittelalter''</big></span>‘, Hamburg 2003, Seite 168 und Seite 170. Meines Erachtens ist der entscheidende Ansatzpunkt einer <span style="color:#4C58FF">„theologischen“</span> Interpretation das GÖDEL-Axiom-5 ''':''' <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub>‘ —</span>, <span style="color:#FF6000">»''notwendige Existenz ist eine positive Eigenschaft''«</span>. ‚Frei‘ nach KANT ‚formuliere‘ ich ‚kurz‘ ''':''' <span style="color:#FF6000">„Existenz ist keine Eigenschaft“</span>. Hier die Positionen KANTS zum Thema ‚Existenz‘ und ‚Eigenschaften‘ ''':''' ::<span style="color:#FF6000">»</span>''… unbeschadet der wirklichen Existenz äußerer Dinge'', <span style="color:#00B000">[ kann man ]</span> ''von einer Menge ihrer Prädikate'', <span style="color:#00B000">[ d.h. Eigenschaften ],</span> ''sagen'' … ''':''' ''sie gehöreten nicht zu diesen ‚Dingen an sich selbst‘, sondern nur zu ihren Erscheinungen, und hätten außer unserer Vorstellung'' <span style="color:#00B000">[ ihrer, als ,wirklich‘ gedachten Erscheinung, ]</span> ''keine eigene Existenz, … weil ich finde, dass … '''alle Eigenschaften, die die Anschauung eines Körpers ausmachen''', bloß zu seiner Erscheinung gehören; denn die Existenz des Dinges, was erscheint, wird dadurch nicht … aufgehoben, sondern nur gezeigt, dass wir es'', <span style="color:#00B000">[ das Ding ]</span>, ''wie es ‚an sich selbst‘ sei'', <span style="color:#00B000">[ d.h. existiert ]</span>, ''durch Sinne gar nicht erkennen können''.<span style="color:#FF6000">«</span><ref>vgl. ‚''<span style="font-family: Times;"><big>Prolegomena zu einer jeden künftigen Metaphysik, die als Wissenschaft wird auftreten können</big></span>''‘, Seite 289; https://www.korpora.org/kant/aa04/289.html</ref> <span style="color:#00B000"><small>(Hervorhebung durch KANT.)</small> [ Seine Prädikate, d.h. Eigenschaften, jedoch können wir mit unseren Sinnen ,anschauen‘, aber nur in Kombination mit unserer Vorstellung ihrer, als ,wirklich‘ gedachten Erscheinung, vermittelt durch den sog. ,transzendentalen Schematismus‘ unserer Einbildungskraft ''':'''</span> <span style="color:#FF6000">»</span>''Eine verborgene Kunst in den Tiefen der menschlichen Seele''<span style="color:#FF6000">«</span>, <span style="color:#00B000">jedoch auch eines der ,dunkelsten‘ Kapitel in der K.d.r.V., bedingt durch KANTS Konzept von ,Wirklichkeit‘, bzw. ,Sein‘. ]</span> Mit anderen Worten, man kann die ‚Existenz‘, bzw. das ‚Sein‘ der Dinge, <span style="color:#00B000">(das ‚Ding an sich’ bei KANT)</span>, nicht unter dem Mikroskop finden. Die ‚Existenz‘ bzw. das ‚Sein‘ ist keine sinnlich registrierbare ‚Eigenschaft‘ z. B. des rekonstruierten ‚Stadt-Schlosses‘ in Berlin. <span style="color:#00B000">(‚Sein‘ ist kein reales ‚Prädikat‘.)</span> Dafür haben wir andere Fähigkeiten ''':''' Ich kann seine ‚Existenz‘ mit meinem Verstand einsehen, weil auch ich selbst ‚existiere‘. Seine ‚Ansicht‘, wie ‚gefällig‘ es ist, und auch weitere ‚Eigenschaften‘, die mir auffallen, kann ich mit einem Handy-Foto dokumentieren. Diese ‚Eigenschaften‘ sind nicht die Ursache, dass das ‚Berliner Schloss‘ existiert. Wohl aber die Rekonstruktion dieses Schlosses ist die ‚Ursache‘, dass es ,existiert‘, und jetzt so aussieht. Insofern ist ‚Existenz‘ keine ‚Eigenschaft‘, sondern die ‚Existenz‘ des Dinges ist die Voraussetzung, der ‚Grund‘, dass ich die ‚Eigenschaften‘ des Dinges mit meinen Sinnen feststellen kann. In einer Auseinandersetzung mit CARTESIUS schreibt KANT, philosophisch ‚tiefgründig‘ und logisch ‚exakt‘, über dessen <span style="color:#FF6000"><span style="font-family: Times;"><big>„Cogito, ergo sum“</big></span></span> ''':''' ::<span style="color:#FF6000">»</span>''Das ‚Ich denke‘ ist ein empirischer Satz, und hält den Satz ‚Ich existiere‘ in sich. Ich kann aber nicht sagen ''':''' ‚Alles, was denkt, existiert‘; denn da würde die Eigenschaft des Denkens'', <span style="color:#00B000">[ eine essentielle Eigenschaft ]</span>, ''alle Wesen, die sie besitzen, zu notwendigen'' <span style="color:#00B000">[ d.h. notwendig existierenden ]</span> ''Wesen machen''. <span style="color:#00B000">[ Was allein nur von GOTT ausgesagt werden kann; mit AVICENNA, als anerkannter ARISTOTELES-Kommentator ''':''' <span style="color:#FF6000">»''GOTT ist das einzige Sein, bei dem Essenz'' <span style="color:#00B000">[ ‚Wesenseigenschaften‘ ]</span> ''und Existenz'' <span style="color:#00B000">[ ‚Dasein‘ ]</span> ''nicht zu trennen sind und das daher notwendig an sich da ist''«, <span style="color:#00B000">— konform mit GÖDEL ''':'''</span> »''notwendige Existenz ist eine positive'' <span style="color:#00B000">[ essentielle ]</span> ''Eigenschaft''«</span> ].</span> ''Daher kann meine Existenz auch nicht aus dem Satz, ‚Ich denke‘, als'' <span style="color:#00B000">[ logisch ]</span> ''gefolgert angesehen werden, wie CARTESIUS dafür hielt (weil sonst der Obersatz : ‚Alles, was denkt, existiert‘, vorausgehen müsste), sondern ist mit ihm identisch.'' <span style="color:#00B000">[ Eine einfache Schlussfolgerung ''':''' meine ‚Existenz‘ ist auch nicht von meiner ‚Eigenschaft‘ Denken ‚verursacht‘. ,Existenz‘ ist nicht bloß ein ,Gedanke‘ von mir. ]</span><span style="color:#FF6000">«</span> <span style="color:#00B000">(Aus der Anmerkung 41 zu den ‚''<span style="font-family: Times;"><big>Paralogismen der reinen Vernunft</big></span>''‘, in ‚''<span style="font-family: Times;"><big>Kritik der reinen Vernunft</big></span>''‘, Seite 275,<ref>https://korpora.org/kant/aa03/275.html</ref> mit meinem Einschub des AVICENNA-Zitat aus Wikipedia.<ref>{{w|Avicenna#Metaphysik}}</ref>)</span> Mit anderen Worten ''':''' <span style="color:#FF6000">„Die Eigenschaft, dass ich denken kann, ist nicht die Ursache meiner ‚Existenz‘“</span>, sondern, <span style="color:#FF6000">„Die Liebe meiner Eltern und ihre Entscheidung füreinander ist die Ursache meiner ‚Existenz‘. Daher ‚bin’ ich. Und weil ich ein Mensch ‚bin‘, kann ich denken.“</span> Auch mit diesen Anmerkungen ist leicht einsehbar, dass ‚Existenz‘ keine ‚Eigenschaft‘ ist — außer bei GOTT. In GOTT ist ‚Dasein‘ die ‚Wesenseigenschaft‘ GOTTES, d.h. ‚Dasein‘ und ‚Wesen‘ sind in GOTT untrennbar verbunden; sind <span style="color:#FF6000">„koinzident“</span> ‚eins‘. Das ist die Einzigartigkeit im Wesen GOTTES, dass GOTT immer schon ‚da‘ ist. Die Frage nach dem ‚Wesen‘ GOTTES lautet ''':''' <span style="color:#FF6000">„Was bist du ? “</span>/<span style="color:#CC66FF">„Wer bist Du ? “</span> Antwort, Exodus 3,14 ''':''' <span style="color:#CC66FF">»''Ich bin der ‚Ich-Bin-Da‘'' <span style="color:#00B000">[ für euch und für immer ]</span>«.</span> Weil GOTT für uns immer schon ‚da‘ ist, — <span style="color:#CC66FF">„von Ewigkeit zu Ewigkeit“</span> —, hat GOTT es nicht nötig, ‚bewiesen‘ zu werden. <span style="color:#00B000">(In der Mathematik ist ein ‚Satz‘ erst dann ‚wahr‘ und ‚existent‘, wenn er bewiesen ist. Bei GOTT ist es jedoch nicht so ''':''' GOTTES ‚Existenz‘ ist nicht erst dann ‚wahr‘, wenn seine ‚Existenz‘ von uns ‚bewiesen‘ ist. Sein ‚Dasein‘ ist jedem unserer ‚Beweisversuche‘ immer schon voraus. Der Zugang zu GOTT ist nicht der ,Beweis‘, sondern der ,Glaube‘. Wer an GOTT glauben ,will‘, dem antwortet GOTT. Wer nicht an GOTT glauben ,will‘, dessen Entscheidung respektiert GOTT, und drängt sich nicht auf. Die Glaubens-Entscheidung hat jedoch für jeden Menschen eine existenzielle Konsequenz ''':''' <span style="color:#CC66FF">»''Wer glaubt und sich taufen lässt, wird gerettet; wer aber nicht glaubt'', <span style="color:#00B000">[ und diese Entscheidung auch im Augenblick der ,Wahrheit‘, im Tod, in der sog. ,Endentscheidung‘, nicht widerruft ]</span>, ''wird verurteilt werden''«,</span> <small>({{Bibel | Markus Evangelium |16|16|EU}})</small>. Das Urteil lautet ''':''' <span style="color:#CC66FF">»''zweiter Tod ''':''' der Feuersee''«</span>, <small>({{Bibel | Offenbarung |20|14f|EU}})</small>, ohne Berufungsmöglichkeit. <span style="color:#CC66FF">»''Ohne Glauben aber ist es unmöglich, Gott zu gefallen; denn wer zu Gott kommen will, muss glauben, dass er ist und dass er denen, die ihn suchen, ihren Lohn geben wird''«.</span> <small>({{Bibel | Hebräer Brief |11|6|LUT}})</small>)</span> Das GÖDEL-Axiom-5 ist m.E. der entscheidende Ansatzpunkt einer stimmigen <span style="color:#4C58FF">„theologischen“</span> Interpretation der GÖDEL-Axiomatik. ===<div class="center"><span style="color:#660066">Das Kalkül ist kein Existenz-Beweis für GOTT</span></div>=== Die allgemeine <span style="color:#FF6000">»''mathematische Evidenz''«</span> des GÖDEL-Formalismus, d.h. seine ‚Schlusskraft‘, ist von kompetenten Leuten<ref>„GÖDELS Argumentationskette ist nachweisbar korrekt – so viel hat der Computer nach Ansicht der Wissenschaftler Christoph BENZMÜLLER und Bruno WOLTZENLOGEL-PALEO nun gezeigt;“ vgl. https://www.fu-berlin.de/presse/informationen/fup/2013/fup_13_308/index.html</ref> schon festgestellt worden, <span style="color:#00B000">(im Anhang ‚nachrechenbar‘ mit den Regeln und Gesetzen einer modalen Prädikatenlogik 2. Stufe)</span>. Das GÖDEL-Kalkül ist jedoch kein ‚moderner‘<span style="color:#FF6000">„Existenz-Beweis“</span> für GOTT, wofür es gehalten oder meistens bezweifelt wird, sondern setzt, <span style="color:#00B000">(theoretisch methodisch)</span>, den <span style="color:#FF6000">„Glauben an die Existenz GOTTES“</span> schon voraus, ohne ihn zu hinterfragen. Das <span style="color:#FF6000">„Dasein“</span> bzw. die <span style="color:#FF6000">„Existenz“</span> GOTTES wird mit der Definition-1 für <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, bzw. mit dem Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ — </span>, im Kalkül ‚definitorisch‘ bzw. ‚axiomatisch‘ als Kalkül-,Annahme‘, als <span style="color:#FF6000">„Prämisse“</span>, eingeführt, unter der Voraussetzung, dass die ‚Eigenschaft‘ <span style="color:#4C58FF">‚'''G'''‘ := </span><span style="color:#FF6000">„Göttlichkeit“</span> <span style="color:#00B000">(Essenz)</span> und das <span style="color:#FF6000">„Dasein GOTTES“</span>, <span style="color:#4C58FF">— ‚'''G'''‘ —</span> <span style="color:#00B000">(Existenz)</span>, ontologisch ‚identisch‘, genauer ''':''' <span style="color:#FF6000">„koinzident“</span> sind, was GÖDEL im Axiom-5 definitiv für sein System vorschreibt ''':''' <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub>‘ — </span> ''':''' <span style="color:#FF6000">»''notwendige Existenz ist eine positive Eigenschaft''«</span>. Das <span style="color:#FF6000">„Dasein GOTTES“</span> ist faktisch äquivalent zur <span style="color:#FF6000">„notwendigen Existenz als GOTT“</span>; und <span style="color:#FF6000">„Göttlichkeit“</span> ist die <span style="color:#FF6000">„positive Eigenschaft in GOTT“</span>. Beides ist nach Axiom-5 ‚identisch‘, d.h. dem ‚Sein nach‘ dasselbe, und daher konvertierbar. Beide, <span style="color:#00B000">(sowohl die Essenz, als auch die Existenz GOTTES)</span>, werden daher auch mit demselben Term ''':''' <span style="color:#4C58FF">— ‚'''G'''‘ —</span> im Kalkül dargestellt. Der traditionelle, christliche ,GOTT-Glaube‘ wird zugleich mit diesem Term <span style="color:#4C58FF">‚'''G'''‘ := </span> <span style="color:#FF6000">„GOTT“ <span style="color:#00B000">|</span> „göttlich“</span>, im 2. Beweisgang, dem Basisbeweis, und im 3. Beweisgang für das Theorem ANSELMS, jeweils als ,methodologische‘ Prämisse :01: <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span> regulär <span style="color:#00B000">( ├ )</span> und explizit eingeführt ''':''' <span style="color:#FF6000">»''Das'' <span style="color:#4C58FF">,'''x'''‘</span> ''steht für den GOTT'' <span style="color:#4C58FF">‚'''G'''‘</span> ''der Christen''«</span>. Das ist die ,modal‘-frei gewählte, <span style="color:#4C58FF">„theologische“</span> Kalkül-,Annahme‘, <span style="color:#00B000">(als ,Argument-Einführung‘ := <span style="color:#4C58FF">‚'''AE:'''‘</span> )</span>, und wird dann mit Definition-1 näher ,bestimmt‘ ''':''' <span style="color:#4C58FF">— ‚'''Gx↔∀X(PX→Xx)'''‘ — </span> ''':''' <span style="color:#FF6000"> »''Das'' <span style="color:#4C58FF">,'''x'''‘</span> ''steht genau dann für ‚GOTT‘'' <span style="color:#00B000">|</span> ''‚göttlich‘'', <span style="color:#4C58FF">‚'''G'''‘</span>, ''wenn'' <span style="color:#4C58FF">,'''x'''‘</span> ''alle positiven Eigenschaften, bzw. Vollkommenheiten'', <span style="color:#4C58FF">‚'''PX'''‘</span>, ''hat''«</span>, entsprechend dem ‚Quelltext‘ bei LEIBNIZ. <span style="color:#00B000">(Das ,postulierte‘ Axiom-3 ''':''' <span style="color:#4C58FF"> — ‚'''PG'''‘ —</span>, wird standardmäßig gelesen als <span style="color:#FF6000">»''Göttlichkeit ist eine positive Eigenschaft''«</span>, hat aber auch die alternative Leseart ''':''' <span style="color:#FF6000">»''GOTT ist perfekt d.h. vollkommen''«</span>, was <span style="color:#4C58FF">„theologisch“</span> auch richtig ist; mit <span style="color:#4C58FF">‚'''P'''‘ </span> := <span style="color:#FF6000">„Perfektion“/„Vollkommenheit“</span> ist dann die Summe aller <span style="color:#FF6000">„positiven Eigenschaften“</span>.)</span> Mit Axiom-3, — in dieser <span style="color:#4C58FF">„theologischen“</span> Leseart —, ist der ‚Wenn-Satz‘ in Definition-1 ‚aufgelöst‘ ''':''' <span style="color:#FF6000">»''GOTT hat alle positiven Eigenschaften, weil er ‚perfekt‘ ist''«</span>. In Definition-3 ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x ↔ ∀X(X'''<sub>ess</sub>'''x →□∃yXy)'''‘ —</span>, wird die ,für uns‘ <span style="color:#FF6000">„notwendige Existenz“</span> ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>‘ —, </span> durch die ,aus sich‘ <span style="color:#FF6000">„notwendig“</span> <span style="color:#4C58FF">— '''□''' —</span> instanziierten <span style="color:#FF6000">„Wesenseigenschaften“</span>, <span style="color:#4C58FF">— ‚'''X'''<sub>ess</sub>‘ —</span>, <span style="color:#00B000">(als zu den Transzendentalia gehörig)</span>, bestimmt. Das GÖDEL-Kalkül setzt sowohl in Definition-3 als auch im Axiom-5 das Theorem des ARISTOTELES von der ontologischen ‚Identität‘, d.i. die Koinzidenz von <span style="color:#FF6000">„Dasein“</span>, <span style="color:#00B000">(Existenz)</span> und <span style="color:#FF6000">„Wesenseigenschaften“</span>, <span style="color:#00B000">(Essenz)</span> im prinzipiell <span style="color:#FF6000">„unbewegten Erstbewegenden“</span> voraus. Ohne diese Annahme bzw. ohne Axiom-5, würde das GÖDEL-Kalkül nicht ‚funktionieren‘. Das GÖDEL-Theorem-2.1 ''':''' <span style="color:#4C58FF">— ‚'''Gx→G'''<sub>ess</sub>'''x'''‘ —</span>, kann unter dieser Voraussetzung dann, <span style="color:#4C58FF">„theologisch“</span> richtig und eindeutig, so gelesen werden ''':''' <span style="color:#FF6000">»''Wenn'' <span style="color:#4C58FF">‚'''x'''‘</span> ''für GOTT'', <span style="color:#4C58FF">‚'''G'''‘</span>, ''als Individuum steht, dann ist GOTT-Sein'', <span style="color:#4C58FF">‚'''G'''‘</span>, <span style="color:#00B000">(,Existenz‘)</span>, ''das Wesen'', <span style="color:#4C58FF">—<sub>ess</sub>—, </span> <span style="color:#00B000">(,Essenz‘)</span>, ''GOTTES'' <span style="color:#4C58FF">‚'''x'''‘</span>«</span><ref>vgl. z.B. THOMAS von Aquin ''':''' ,''<span style="font-family: Times;"><big>De Ente et Essentia</big></span>''’, Kapitel 5 ''':''' „Deus, cuius essentia est ipsummet suum esse“ ''':''' „GOTT, dessen Wesen sein eigenes Sein ist“.</ref>, statt der <span style="color:#4C58FF">„theologisch“</span> unrichtigen Lesearten in der Wikipedia ''':''' <span style="color:#FF6000">»''Göttlich ist eine essentielle Eigenschaft jedes göttlichen Wesens''«</span><ref>{{w|Gottesbeweis#Kurt_Gödel|Gottesbeweis 2.1.2, Theorem 2}}; Version vom 10.09.2025</ref>, oder bei Christoph BENZMÜLLER et alia, im sog. ,Theorembeweiser‘ ''':''' <span style="color:#FF6000">»''Gottähnlich zu sein ist eine Essenz von jeder gottähnlichen Entität''«</span><ref>[https://www.fu-berlin.de/presse/informationen/fup/2013/fup_13_308/index.html ‚Gödels „Gottesbeweis“ bestätigt’, Theorem 2]</ref>, mit der suggestiven Annahme, es gäbe polytheïstisch, mehrere ,göttliche Wesen‘, bzw. ,gottähnliche Entitäten‘, was der monotheïstischen, abendländischen Tradition, bzw. dem <span style="color:#4C58FF">„theologischen“</span> Theorem von der ,Unvergleichlichkeit‘ und ,Einzigartigkeit‘ GOTTES widerspricht, das im GÖDEL-Kalkül mit Korollar-3 bestätigt wird. <span style="color:#00B000">(Die Interpretation <span style="color:#4C58FF">‚'''G'''‘ :=</span> <span style="color:#FF6000">„GOTT“</span>, als ,Individuumname‘, ist synonym zum <span style="color:#FF6000">„Dasein <span style="color:#00B000">(Existenz)</span> GOTTES“</span>, und äquivalent zur ‚positiven Eigenschaft‘ <span style="color:#FF6000">„Göttlichkeit“</span>, alias <span style="color:#FF6000">„göttlich zu sein“</span> = <span style="color:#FF6000">„GOTT zu sein“</span> = <span style="color:#FF6000">„GOTT-Sein“</span>; und mit dem GÖDEL-Term ''':''' <span style="color:#4C58FF">‚'''G'''<sub>ess</sub>‘ :=</span> <span style="color:#FF6000">„das Wesen <span style="color:#00B000">(Essenz)</span> GOTTES“</span>.)</span> <div class="center"><span style="color:#FF6000"><span style="color:#4C58FF">‚'''G'''‘ :=</span> „'''G'''öttlichkeit“ <span style="color:#4C58FF">↔</span> „'''G'''OTT“ <span style="color:#4C58FF">↔</span> „'''G'''OTT-Sein“</span> </div> Die Rechtfertigung für diese <span style="color:#4C58FF">„theologische“</span> Dreifach-Äquivalenz für <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, im GÖDEL-Kalkül, gibt Axiom-5 ''':''' <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub>‘ — </span> ''':''' <span style="color:#FF6000">»''die positive <u>Eigenschaft</u>'', <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, ''Göttlichkeit'', <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, ''äquivalent zu GOTT als Individuum-Name'', <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, ''ist auch äquivalent zum Dasein GOTTES'', <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, ''gleichbedeutend mit notwendiger <u>Existenz</u>'', <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>‘ —</span>'', dem <u>Sein</u> GOTTES für uns''«</span>. Hier hat GÖDEL explizit <span style="color:#FF6000">„Eigenschaft“</span> mit <span style="color:#FF6000">„Existenz“</span> bzw. <span style="color:#FF6000">„Sein“</span> gleichgesetzt; <span style="color:#00B000">(was jedoch nach KANT für alles, was in unserer Welt ‚existiert‘, bzw. für alles, was zur <span style="color:#FF6000">»''zufälligen Struktur der Welt''«</span> gehört, wie GÖDEL selbst sagt, in jedem Fall ‚unstatthaft‘ ist ''':''' <span style="color:#FF6000">„Existenz ist keine Eigenschaft“</span>, bzw. <span style="color:#FF6000">»''Sein ist kein reales Prädikat''«</span>)</span>. Jedoch wegen dieser ‚Gleichsetzung‘, die einzig und allein, der aristotelisch-<span style="color:#4C58FF">,theologischen‘</span> Tradition entsprechend, singulär nur in GOTT ‚statthaft‘ ist, kann jetzt die ‚positive Eigenschaft‘ <span style="color:#00B000">(Essenz)</span> <span style="color:#FF6000">„Göttlichkeit“</span> <span style="color:#00B000">(ontologisch korrekt)</span> gelesen werden als <span style="color:#FF6000">„das, was GOTT zu dem macht, ‚was‘ GOTT an sich selbst ist“</span>, nämlich zu seinem <span style="color:#FF6000">„GOTT-Sein“</span> <span style="color:#00B000">(Existenz)</span>, zu seinem <span style="color:#FF6000">„Dasein als GOTT“</span>; zur Tatsache, dass <span style="color:#FF6000">„GOTT GOTT ist“</span>, d.h. dass <span style="color:#FF6000">„GOTT als GOTT ‚da‘ ist“</span>. Das ist, <span style="color:#00B000">(und da folgt ARISTOTELES seinem Lehrer PLATO)</span>, nach traditioneller Auslegung, die übliche, ontologische Funktion des ‚Wesens‘<span style="color:#00B000"> | <span style="color:#FF6000">„<span style="font-family: Times;"><big>οὐσία</big></span>“</span> | ‚ousía‘ |</span> eines Seienden ''':''' es ‚macht‘ das Seiende zu dem, ‚was‘ es ist; es ist die ‚Ursache‘ dafür, dass das Seiende, das ‚ist‘, ‚was‘ es ist | ‚Was-Sein‘ — ‚Wesen‘. <span style="color:#00B000">(ARISTOTELES lokalisiert jedoch das ,Wesen‘ im Seienden, im Gegensatz zu PLATO, der das ,Wesen‘, — ,getrennt‘ vom Seienden —, in den allgemeinen ,Ideen‘ lokalisiert.)</span> Da aber in ‚Gott‘, <span style="color:#00B000">(dem <span style="color:#FF6000">„unbewegten, ‚unverursachten‘ Erstbeweger“</span>)</span>, Prozesshaftes, ‚Ursächliches‘ auszuschließen ist, ist die übliche prozesshafte, ‚ursächliche‘ Funktion von <span style="color:#FF6000">„<span style="font-family: Times;"><big>οὐσία</big></span>“</span><span style="color:#00B000"> | ‚ousía‘ |</span> ,Wesen‘ im <span style="color:#FF6000">„Erstbewegenden“</span> nach ARISTOTELES, sozusagen, schon ‚zum Abschluss‘ gekommen, schon ‚verwirklicht‘, — <span style="color:#FF6000">„<span style="font-family: Times;"><big>ἐν-έργεια οὖσα</big></span>“</span><span style="color:#00B000"> | ‚en-érgeia oúsa‘</span> —, schon ‚ins-Werk‘ gesetzt; <span style="color:#00B000">(<span style="color:#FF6000">„<span style="font-family: Times;"><big>τὸ ἔργον</big></span>“</span> | ‚to érgon‘ | ‚das Werk‘; <span style="color:#FF6000">„<span style="font-family: Times;"><big>ἐνέργεια</big></span>“</span> | ‚enérgeia‘ | ,Wirksamkeit‘, ,Wirklichkeit‘, ,Aktualität‘, ,Energie‘; und <span style="color:#FF6000">„<span style="font-family: Times;"><big>οὖσα</big></span>“</span> | ,oúsa‘ | feminin Nominativ Singular von <span style="color:#FF6000">„<span style="font-family: Times;"><big>ὤν</big></span>“</span> | ‚ón‘ | ‚seiend‘)</span>. Sein ,Wesen‘ ist im ,Dasein‘ vollendet, ist ,wirkliches, verwirklichendes Sein‘, ‚seiende Aktualität‘, <span style="color:#FF6000">„<span style="font-family: Times;"><big>actus purus</big></span>“</span> ''':''' sein Wesen ist ‚reine Tätigkeit‘, ,reine verwirklichende Gegenwärtigkeit‘, d.h. ,existent‘, ohne jede prozesshafte ‚Potenzialität‘. Aus der wichtigen und richtigen Erkenntnis, dass GOTT <span style="color:#FF6000">»''unabhängig von der zufälligen'' <span style="color:#00B000">[ Raum-Zeit-]</span>''Struktur unserer Welt''«</span> ist, folgt mit der ontologischen Identität von ,Dasein‘ und ,Wesen‘ in GOTT ''':''' Der zeitlos ewige GOTT ist <span style="color:#FF6000">»''notwendig aus sich'' <span style="color:#00B000">(von Natur aus)</span> ''immer schon da''«</span>, m.a.W. ist <span style="color:#FF6000">„zeitlos-ursprungslos“</span>. Insofern ist <span style="color:#FF6000">„Göttlichkeit“</span> die <span style="color:#FF6000">„Wesenseigenschaft“</span>, die im <span style="color:#FF6000">„Dasein GOTTES“</span> d.h. in <span style="color:#FF6000">„GOTT“</span>, schon ihr ‚Ziel‘, ihre Vollendung, — <span style="color:#FF6000">„Perfektion“</span>, Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, erreicht hat. GOTT ist <span style="color:#FF6000">»''vollkommen''«</span> und darum auch <span style="color:#FF6000">»''notwendig für uns immer schon ‚da‘''«</span> ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x'''‘ — </span>. GOTT ist in seinem ‚zeitlosen Wesen‘ <span style="color:#FF6000">„unverursacht“</span>, da er <span style="color:#FF6000">»''notwendig aus sich'' <span style="color:#00B000">(von Natur aus)</span> ''vollkommen''«</span> ist ''':''' <span style="color:#4C58FF">— ‚'''□PG'''‘ —</span>, <span style="color:#00B000">(eine Instanz von Axiom-4)</span>. <span style="color:#FF6000">„Vollkommenheit“</span>, <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, ist die <span style="color:#FF6000">„Wesenseigenschaft“</span>, bzw. das <span style="color:#FF6000">„Wesen GOTTES“</span> ''':''' <span style="color:#4C58FF"> — ‚'''G'''<sub>ess</sub>‘ —</span>. <span style="color:#FF6000">»''GOTT ist ,der‘ Vollkommenste''«</span> ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, d.h. <span style="color:#4C58FF">— ‚'''G'''‘ —</span> ''':''' <span style="color:#FF6000">»''GOTT ist die unbegrenzte Summe der unendlichen Vollkommenheiten''«</span>. Und zur absoluten <span style="color:#FF6000">„Vollkommenheit“</span> gehört <span style="color:#FF6000">„notwendig“</span> auch das <span style="color:#FF6000">„Existieren“</span> ''':''' <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub>‘ — </span>. <span style="color:#FF6000">„Notwendige Existenz“</span> gehört zu den ,ultimativen‘ Transzendentalia in GOTT, was GÖDEL mit Definition-3 ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x ↔ ∀X(X'''<sub>ess</sub>'''x →□∃yXy)'''‘ —</span>, syntaktisch formalisiert hat, wenn sowohl das <span style="color:#4C58FF">— ‚'''x'''‘ —</span>, als auch alle <span style="color:#4C58FF">— ‚'''∀y'''‘ —</span> im Kalkül, für den Dreifaltigen GOTT der Christen stehen, was dann im Korollar-3, mit der Identität, <span style="color:#4C58FF">— ‚'''x=y'''‘ —</span>, bzw. der Koinzidenz beider Individuum-Variablen, explizit gezeigt wird. Entscheidend für diese Interpretation des GÖDEL-Systems ist ''':''' nur unter der ,modal‘ notwendigen Voraussetzung der ontologischen ‚Identität‘ von <span style="color:#FF6000">„Sein“</span> und <span style="color:#FF6000">„Wesen“</span> in GOTT, Theorem-2 ''':''' <span style="color:#4C58FF"> — '''Gx↔G'''<sub>ess</sub>'''x'''‘ —</span>, bzw. der ‚Gleichsetzung‘, <span style="color:#00B000">(Koinzidenz)</span>, von <span style="color:#FF6000">„notwendiger Existenz“</span> mit den ‚positiven‘ Wesenseigenschaften, der <span style="color:#FF6000">„Essenz“</span> in GOTT, Axiom-5 ''':''' <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub>‘ —</span>, ‚funktioniert‘ die GÖDEL-Axiomatik '''!''' Diese ‚Identität‘, bzw. ,Koinzidenz‘ wird in ARISTOTELES, ‚''<span style="font-family: Times;"><big>Metaphysik</big></span>''‘, Buch XII 7, in einem Indizienbeweis erbracht, der mit der Methode der philosophischen Induktion zum Ergebnis kommt ''':''' ::<span style="color:#FF6000">» … ''es muss'' <span style="color:#00B000">[ notwendig ]</span> ''etwas geben, das, ohne selbst ‚bewegt‘'' <span style="color:#00B000">[ </span>''worden''<span style="color:#00B000"> ]</span> ''zu sein'', <span style="color:#00B000">[ ‚unentstanden‘ ]</span>, ''alles Übrige wie ein Geliebtes ‚bewegt‘'' <span style="color:#00B000">[ ‚entstehen lässt‘ ]</span>«</span>, das darum selbst ‚zugleich‘ <span style="color:#FF6000">„<span style="font-family: Times;"><big>αἴδιον καί οὐσία καί ἐνέργεια οὖσα</big></span>“ <span style="color:#00B000">| ,aídion kai ousía kai enérgeia oúsa‘ |</span> »<span style="color:#00B000">[ zeitlich-]</span>''ewig, sowohl <u>Wesen</u>'', <span style="color:#00B000">[ etwas Konkretes, Essentielles ]</span>, ''als auch seiende Wirksamkeit — ''<span style="color:#00B000">[ </span>„<span style="font-family: Times;"><big>actus purus</big></span>“, „reine Tätigkeit“<span style="color:#00B000"> ]</span> ''— verwirklichendes, wirkliches <u>Sein</u> ist'', <span style="color:#00B000">[ ein Existierendes, das alles Übrige ,zur Existenz‘ bringen kann ]</span> «</span>, bzw. <span style="color:#FF6000">„<span style="font-family: Times;"><big>ὀρεκτόν καί νοητόν</big></span>“ <span style="color:#00B000"> | ,orektón kai noêtón‘ | </span>»''das ersehnt und erkennbar ist''.«</span> <span style="color:#00B000">(''<span style="font-family: Times;"><big>vgl. ,Metaphysik</big></span>''‘ XII 7, 1072a,23 – 1072b,4)</span> Was <span style="color:#FF6000">»''alles Übrige''«</span> ,zur Existenz‘ bringen kann, bzw. ,verwirklichen‘ kann, ohne selbst ,entstanden‘ zu sein, muß auch selbst, als etwas Konkretes, Essentielles, immer schon ,existieren‘, bzw. ,wirklich sein‘. Die, daraus abgeleitete, und damit ,erkannte‘, ontologische ‚Identität‘, — ,Koinzidenz‘ —, von ‚Wesen‘ und ‚Sein‘, <span style="color:#00B000">(Ziel aller Sehnsucht und jedes Erkenntnisstrebens)</span>, <span style="color:#FF6000">»''ist das Privilegium der Gottheit allein''«</span> ''':''' mit Gottfried Wilhelm LEIBNIZ interpretiert, entsprechend einer adäquaten, aristotelisch-<span style="color:#4C58FF">,theologischen‘</span> Tradition. Dieses induktive, ‚ontologisch‘ a-posteriori Ergebnis aus der ‚Prinzipienforschung‘ des ARISTOTELES ist die metaphysische und logische Voraussetzung, dass GÖDEL seine Axiomatik im Kalkül des sog. ‚ontologischen Gottesbeweises‘ a-priori des ANSELM von Canterbury, und nach LEIBNIZ, deduktiv korrekt formulieren konnte; <span style="color:#00B000">(vgl. 3. Beweisgang)</span>. Angenommen, die Variable <span style="color:#4C58FF">— ‚'''x'''‘ —</span> steht für den <span style="color:#FF6000">„GOTT“</span>, <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, der Christen, <span style="color:#00B000">(siehe Anhang, Term :01: im 2. Beweisgang)</span>, dann ist, — auf Grund von diesem Beweisgang —, in unserer Welt ,wahr‘ und evident ''':''' sowohl die ‚positive Eigenschaft‘ <span style="color:#FF6000">»''Göttlichkeit''«</span>, <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, als auch das faktische <span style="color:#FF6000">»''‚Da‘-Sein'' <span style="color:#00B000">[ Existenz ]</span> ''GOTTES''«</span>, <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, ‚benennen‘, ontologisch ident, denselben Sachverhalt ''':''' nämlich das, was wir das <span style="color:#FF6000">»''Wesen'' <span style="color:#00B000">[ Essenz ]</span> ''GOTTES''«</span>, <span style="color:#4C58FF"> — ‚'''G'''<sub>ess</sub>‘ —</span>, nennen. <span style="color:#FF6000">»''Göttlichkeit'', bzw. ''GOTT-‚Sein‘ ist das Wesen GOTTES''«</span>, <span style="color:#00B000">(Theorem-2.1)</span>, und dann umgedreht und äquivalent ''':''' <span style="color:#FF6000">»''Das Wesen GOTTES ist sein ‚Da‘-Sein als GOTT'', bzw. ''seine Göttlichkeit''«</span>, <span style="color:#00B000">(Theorem-2.2)</span>, m.a.W. ''':''' <span style="color:#FF6000">»''GOTT ist wesentlich ‚grundlos‘'' <span style="color:#00B000">[ d.h. </span> ''notwendig aus sich''<span style="color:#00B000"> ]</span> ''‚da‘''«</span>. Das ist das Einzigartige im <span style="color:#FF6000">»''Wesen GOTTES''«</span> ''':''' GOTT ist ohne zeitlichen Anfang, zeitlos-ewig, für uns immer schon ‚da‘, und das ‚ist‘ sein <span style="color:#FF6000">»''Wesen''«</span>; vorausgesetzt, ,angenommen‘, man glaubt an GOTT ''':''' Term :01:. <span style="color:#00B000">(Der schon von GÖDEL indizierte Term <span style="color:#4C58FF"> — ‚'''G'''<sub>ess</sub>‘ — </span> ,expliziert‘ nur eine der drei Lesearten, die der Term <span style="color:#4C58FF"> — ‚'''G'''‘ — „theologisch“</span> ,impliziert‘.)</span> Theorem-2 hat somit die syntaktische Form einer Definition ''':''' <div class="center"><span style="color:#4C58FF"> — ‚'''Gx↔G'''<sub>ess</sub>'''x'''‘ — </span></div> Somit kann GOTT ‚explizit‘ <span style="color:#00B000">(aus einer bewiesenen Kalkül-Definition)</span> <span style="color:#4C58FF">„theologisch“</span> genauer ‚bestimmt‘ werden ''':''' <span style="color:#FF6000">»''GOTT ist gerade deswegen GOTT, weil sein überzeitlich-ewiges und an sich ‚grundloses‘'' <span style="color:#00B000">[ aber für uns notwendiges ]</span> ''Dasein'' <span style="color:#00B000">[ Existenz ]</span> ''als GOTT, ontologisch, — dem Sein nach —, identisch ist mit seinem persönlichen und für uns liebevollen Wesen'' <span style="color:#00B000">[ Essenz ]</span> ''als GOTT; diese Identität von Dasein und Wesen gilt einzig und allein nur bei GOTT.''«</span> Die philosophische Frage nach dem <span style="color:#FF6000">„Wesen GOTTES“</span> lautet, <span style="color:#00B000">(auf die Person bezogen)</span> ''':''' <span style="color:#FF6000">„Was bist du ? “</span> Sie ist äquivalent zur <span style="color:#4C58FF">,theologisch’</span>-biblischen Frage des MOSE ''':''' <span style="color:#CC66FF">„Wer bist Du ? “</span> Die bekannte Antwort des GOTTES-JHWH aus ‚Exodus 3,14‘, im Dornbusch, thematisiert das persönliche, für uns liebevolle und für immer notwendige <span style="color:#FF6000">„Dasein GOTTES“</span> ''':''' <span style="font-family: Times;"><big>‘אֶֽהְיֶ֖ה אֲשֶׁ֣ר אֶֽהְיֶ֑ה‚</big></span> <span style="color:#00B000">| ‚eh'jeh asher eh'jeh‘ |</span> <span style="color:#CC66FF">»''Ich bin der ‚Ich-Bin-Da‘'', <span style="color:#00B000">[ für euch und für immer ]</span>«.</span> Mit diesem Zitat aus der Bibel ist die GÖDEL-Axiomatik, sozusagen, <span style="color:#4C58FF">„theologisch“</span> ‚verifiziert‘. Sie hat einerseits im Theorem-2 ihren philosophischen ‚Abschluss’ erreicht, und andererseits damit formal-syntaktisch den ‚Anschluss‘ an eine allgemeine Basis-Glaubensaussage gefunden, die ‚an sich‘ für jeden CHRIST-gläubigen Menschen ‚selbstverständlich‘ ist. Was in der Metaphysik des ARISTOTELES das Ergebnis einer philosophischen ,Induktion‘ a-posteriori ist ''':''' <span style="color:#FF6000">„,Dasein‘ ist das ,Wesen‘ GOTTES“</span>, — <span style="color:#00B000">(das mit Theorem-2, auch ein Ergebnis der deduktiven GÖDEL-Axiomatik a-priori ist ''':''' die Beweisgrundlage für den Konsequenz-Teil im Theorem AMSELMS)</span>, — das ist in der Bibel die Grundüberzeugung jedes Menschen, der an GOTT glaubt ''':''' GOTT ist für uns immer schon <span style="color:#FF6000">„da“</span>, weil er uns liebt. Das ist das, <span style="color:#FF6000">„was“</span> GOTT für uns als GOTT ausmacht, — sein Wesen ''':''' <span style="color:#CC66FF">»''Wir haben die Liebe, die GOTT zu uns hat, erkannt und gläubig angenommen. GOTT ist Liebe, und wer in der Liebe bleibt, bleibt in GOTT und GOTT bleibt in ihm''«</span>, <small>({{Bibel | 1. Johannesbrief |4|16|EU}})</small>. Das eigentliche Ergebnis der GÖDEL-Axiomatik ist somit die ‚triviale‘ Erkenntnis, dass GOTT, <span style="color:#FF6000">„unverursacht“ <span style="color:#00B000">|</span> „grundlos“</span>, für uns immer schon ‚da‘ ist, — <span style="color:#CC66FF">„von Ewigkeit zu Ewigkeit“</span> —, vorausgesetzt <span style="color:#00B000">(‚angenommen‘)</span>, man ‚glaubt‘ an den zeitlos-ewigen GOTT ''':''' <span style="color:#CC66FF">»''Ehe die Berge geboren wurden, ehe die Erde entstand und das Weltall erschaffen wurden, bist du, o GOTT, von Ewigkeit zu Ewigkeit''«</span>, <small>({{Bibel | Psalm |90|2|LUT}})</small>. <span style="color:#00B000">(Der Glaube an die Zeitlosigkeit GOTTES ist mit der ‚Annahme‘ von Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span> ''':''' <span style="color:#FF6000">»''GOTT ist perfekt''«</span>, und der ‚Annahme‘ der Definition-1 für <span style="color:#4C58FF"> ‚'''Gx'''‘ := </span> den <span style="color:#FF6000">„GOTT der Christen“</span>, im Kalkül ‚implizit‘ schon eingeführt, da die Axiome und Definitionen, — nach GÖDEL —, nur dann <span style="color:#FF6000">»''wahr''«</span> sind, wenn sie <span style="color:#FF6000">»''unabhängig von der zufälligen''</span> [ Raum-Zeit-]<span style="color:#FF6000">''Struktur''«</span> unserer Welt sind. Das ,impliziert‘ auch, dass der GOTT von Axiom-3 und Definition-1 ebenfalls <span style="color:#FF6000">»''unabhängig''«</span> von Raum und Zeit, d.h. zeitlos-ewig ist '''!''' )</span> Wer an den GOTT der Bibel glaubt, kann sich von der ‚Vernünftigkeit‘ seines Glaubens mit Hilfe des sog. ,ontologischen‘ Gottesbeweises nach ANSELM von Canterbury, mit Kurt GÖDEL <span style="color:#FF6000">»''rein verstandesmäßig''«</span>, überzeugen. <span style="color:#00B000">(Das war auch die Absicht ANSEMS '''!''' )</span> Die Annahme, es sei ‚unmöglich‘, dass es GOTT gibt ''':''' <span style="color:#4C58FF">— ‚'''¬◇∃xGx'''‘ —</span>, <span style="color:#00B000">(dezidierter Atheismus)</span>, führt im GÖDEL-Kalkül formal zu einem logischen Widerspruch; vgl. z. B. ‚''<span style="font-family: Times;"><big>Gödels Möglichkeitsbeweis</big></span>''‘, in ‚''<span style="font-family: Times;"><big>Der Gödelsche Gottesbeweis</big></span>''‘, Seite 17, von Günther J. WIRSCHING; (https://edoc.ku.de/id/eprint/10243/1/OntBw.pdf), d.h. es ist also nicht ‚unmöglich‘, dass es GOTT gibt. Der GOTT-Glaube ist mit den Maßstäben einer modernen Logik <span style="color:#FF6000">»''durchaus vereinbar''«</span> und darum ,vernünftig‘. Damit steht fest ''':''' das GÖDEL-Kalkül ist kein moderner ‚Existenz-Beweis‘ für den GOTT der Bibel, sondern es setzt, <span style="color:#FF6000">»''rein verstandesmäßig''«</span>, ,methodologisch‘, den Glauben an die Existenz eines zeitlos-ewigen GOTTES voraus, der, — <span style="color:#FF6000">»''unabhängig von der zufälligen'' <span style="color:#00B000">[ Raum-Zeit-]</span>''Struktur unserer '' <span style="color:#00B000">[ vergänglichen ]</span> ''Welt''«</span> —, für uns immer schon ‚da‘ ist. Wenn aber einmal als fix ‚angenommen‘ worden ist, <span style="color:#00B000">(als Prämisse)</span>, dass es wahr ist, dass GOTT ‚existiert‘, dann ist natürlich die ‚Annahme‘, dass GOTT ‚nicht existiert‘, falsch. Aber sie ist auch ,unlogisch‘ und ,unsinnig‘, weil die Annahme ''':''' <span style="color:#FF6000">»''Es ist unmöglich, dass es einen GOTT gibt''«</span>, offensichtlich und eindeutig zu einem Widerspruch führt; was z. B. Günther J. WIRSCHING mit seiner Version des <span style="color:#00B000">(nicht umkehrbaren)</span> ‚Möglichkeitsbeweises‘ für ,GOTT‘, explizit vorexerziert hat; <span style="color:#00B000">( nachgestellt im Anhang ''':''' GÖDELS ‚Möglichkeitsbeweis‘ als ,Widerlegung‘ eines Nicht-GOTT-Glaubens; in Entsprechung zu Psalm 14,1 und Psalm 53,2 ''':''' <span style="color:#CC66FF">»''Der'' <span style="color:#00B000">[ ,unvernünftige‘ ]</span> ''Tor sagt in seinem Herzen ''':''' Es gibt keinen Gott. Sie handeln verderbt, handeln abscheulich; da ist keiner, der Gutes tut''«</span>. Historischer Hintergrund zu diesem Psalm-Text ''':''' Die Zerstörung des Tempels in Jerusalem 586 v.Ch. durch die Truppen des NEBUKADNEZAR II.)</span> Der Logiker GÖDEL hat in seinem System zum ,ontologischen Beweis‘ keine ‚formale Unentscheidbarkeit‘ <span style="color:#00B000">(Agnostizismus)</span> feststellen können, wie auf einem anderen Feld seiner Forschungsarbeiten. Das GÖDEL-Konsequenz-Teil von der ‚Notwendigkeit‘ GOTTES ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span>, <span style="color:#00B000">(die ‚Konsequenz’ aus dem ‚widerspruchsfreien‘ Korollar-1 ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —,</span>)</span> im ‚Theorem ANSELMS‘, ist <span style="color:#00B000">(im 3. Beweisgang, Term :10:)</span> dann auch eine weitere Explikation des Basis-Theorems-2 des Kalküls ''':''' <span style="color:#4C58FF"> — ‚'''Gx↔G'''<sub>ess</sub>'''x'''‘ — </span>, über die ‚ontologische Identität‘ vom <span style="color:#FF6000">„Dasein GOTTES“</span> ''':''' <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, mit seinem <span style="color:#FF6000">„Wesen“</span> ''':''' <span style="color:#4C58FF"> — <sub>ess</sub> —</span>, nach einem <span style="color:#4C58FF">[ Modus ponens ]</span>, dargestellt mit Term :09:. <span style="color:#00B000">(Die ontologische Identität von Dasein und Wesen in GOTT, ist die, für uns, <span style="color:#FF6000">„notwendige Präsenz <span style="color:#00B000">[ das Sein, <span style="color:#4C58FF">— ‚'''E'''‘ —</span>]</span> GOTTES“</span> ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x'''‘ —</span>, die äquivalent, bzw. koinzident ist zur <span style="color:#FF6000">„Vollkommenheit <span style="color:#00B000">[ das Wesen, <span style="color:#4C58FF">— ‚'''P'''‘ —</span>]</span> GOTTES“</span> ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>. Diese Identität von Sein und Wesen in GOTT ''':''' <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub> —</span>, bedeutet <span style="color:#4C58FF">,theologisch‘</span> konkret ''':''' die, für uns, notwendige Gegenwärtigkeit GOTTES, [ sein Dasein ], ist verwirklicht worden in der liebevollen [ Wesens-]Zuwendung GOTTES zu uns Menschen, in seiner Kindwerdung in Bethlehem, durch die Jungfrau MARIA ''':''' GOTTES Wesen ist ,Sein-mit-uns‘ ''':''' <span style="color:#CC66FF">»''sein Name'', <span style="color:#00B000">[ sein Wesen ]</span>, ''ist IMMANUEL, das heiß übersetzt ''':''' GOTT-ist-mit-uns''«, <small>({{Bibel | Matthäus Evangelium |1|23|EU}})</small></span>, der unsere Not-,wenden‘-wird, d.h. der uns und die Welt von der Korruption der Sünde und des Todes <span style="color:#4C58FF">,erlösen‘</span> will und wird; jedoch nicht ohne uns. Die <span style="color:#4C58FF">„Menschwerdung“</span> GOTTES in JESUS CHRISTUS, die <span style="color:#4C58FF">„Hypostatische Union“</span>, bzw. diese außergewöhnliche und einzigartige <span style="color:#FF6000">„Koinzidenz“</span> von GOTT und Mensch, ist der wirkliche und historische Beginn der <span style="color:#4C58FF">„Erlösung“</span> des Menschen und der Welt; vergegenwärtigt für jede Generation der Menschen in und durch die <span style="color:#4C58FF">„Kirche“</span> JESU CHRISTI.)</span> Die, von GÖDEL im 1. Beweisgang, als Prämissen schon vorausgesetzten und ,angenommenen‘ Perfektionen, bzw. Vollkommenheiten, <span style="color:#00B000">(das sind die allgemeinen ,Transzendentalia‘ für alles Nicht-Göttliche in der Welt)</span>, werden im ersten Teil des 2. Beweisganges, mit Term :13: <span style="color:#4C58FF">— ‚'''PY'''‘ —</span>, dann auch als <span style="color:#FF6000">„positive Wesenseigenschaften“</span>, <span style="color:#00B000">(als die ultimativen ,Transzendentalia‘)</span>, in GOTT ‚definitiv‘ <span style="color:#00B000">( ╞ )</span> bestätigt; <span style="color:#00B000">(siehe Anhang, 2. Beweisgang, Anmerkung-2)</span>. Im 3. Beweisgang ist das Basis-Theorem-2 die ,modal‘ notwendige, bzw. transzendentale, Voraussetzung, sowohl für das <span style="color:#FF6000">„an sich notwendige Dasein GOTTES“</span>, <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span>, im Term :10:, als auch für die <span style="color:#FF6000">„für uns notwendige Existenz GOTTES“</span>, <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>‘ —</span>, in den Ressourcen dieses Beweisganges ''':''' in der Definition-3, und im Axiom-5; <span style="color:#00B000">(das <span style="color:#4C58FF">— ‚'''E'''‘ —</span> wird nur GOTT zugeordnet; vgl. auch Anhang, 3. Beweisgang, Anmerkung-4)</span>. Dieses Basis-Theorem-2 ist auch zugleich die Antwort auf die Frage nach dem ‚Ursprung‘ GOTTES ''':''' GOTT ist <span style="color:#FF6000">„unverursacht“ <span style="color:#00B000">|</span> „ursprungslos“</span> ‚da‘, von <span style="color:#CC66FF">„Ewigkeit zu Ewigkeit“</span>, denn es ‚ist‘ sein <span style="color:#FF6000">„Wesen“</span>, <span style="color:#00B000">(überzeitlich-ewig)</span> für uns immer schon ‚da‘ zu sein. Weitere ‚Einzelheiten‘ über Wesen und Eigenschaften GOTTES gehören in die Mystik, bzw. in die <span style="color:#4C58FF">„Theologie“</span>. ===<div class="center"><span style="color:#660066">Die Bedeutung des Kalküls</span></div>=== <div class="center">Immanuel KANT und Kurt GÖDEL im ‚Dialog‘</div> KANT sagt ''':''' ::<span style="color:#FF6000">»</span>'''''Sein''' ist offenbar kein reales Prädikat''. ... ''Es ist bloß die'' <span style="color:#00B000">[ gedachte ]</span>'' Position'' <span style="color:#00B000">[ latinisiert, deutsch für ''':''' ,Setzung‘ ]</span> ''eines Dinges ... Nehme ich nun das Subjekt (Gott) mit allen seinen Prädikaten'' <span style="color:#00B000">[ d.h. Eigenschaften ]</span> ''(worunter auch die Allmacht gehört) zusammen, und sage ''':''' ‚'''Gott ist'''‘'', <span style="color:#00B000">[ ,GOTT existiert wirklich‘ ]</span>, ''oder ‚es ist ein Gott‘, so <u>setze</u> ich kein neues Prädikat'' <span style="color:#00B000">[ keine neue Eigenschaft ]</span> ''zum ‚Begriffe‘ von Gott ''':''''' <span style="color:#00B000">[ <span style="color:#0000FF; background-color:#FFFF00">‚Sein’ ist kein ‚reales Prädikat’ in GOTT</span>; ‚Existenz‘ ist in GOTT keine ‚Eigenschaft‘ ],</span> ... ''es kann daher zu dem Begriffe'', <span style="color:#00B000">[ ,GOTT‘ ]</span>, ''der bloß die'' <span style="color:#00B000">[ gedachte ]</span>'' Möglichkeit ausdrückt, darum, dass ich dessen Gegenstand'', <span style="color:#00B000">[ GOTT ]</span>, ''als schlechthin gegeben (durch den Ausdruck ''':''' er ist'', <span style="color:#00B000">[ GOTT ist wirklich ]</span>'' ) <u>denke</u>, nichts weiter hinzukommen.'' <span style="color:#00B000">[ Beides ist ,bloß gedacht‘ '''!''' ]</span> ''Und so enthält das Wirkliche nichts mehr als das bloß Mögliche. Hundert ‚wirkliche‘ Taler enthalten nicht das mindeste <u>mehr</u>, als hundert ‚mögliche‘. Denn, da diese den'' <span style="color:#00B000">[ gedachten ]</span>'' ‚Begriff‘, jene aber den Gegenstand und dessen'' <span style="color:#00B000">[ gedachte ]</span>'' Position an sich selbst bedeuten, so würde, im Fall dieser'', <span style="color:#00B000">[ die 100, als ,wirklich‘ bloß gedachten Taler ]</span>, ''<u>mehr</u> enthielte als jener,'' <span style="color:#00B000">[ als ihr ‚gedachter‘ Begriff im Verstand, wie ΑNSELM von Canterbury für GOTT, als ‚wirklich‘ Existierenden, argumentierte, …''so würde'' ]</span> ''mein ‚Begriff‘'' <span style="color:#00B000">[ die 100 im Verstand ‚gedachten‘ Taler ]</span> ''nicht den ganzen Gegenstand ausdrücken, und also auch <u>nicht der angemessene Begriff</u> von ihm sein. Aber in meinem Vermögenszustande ist <u>mehr</u> bei hundert ‚wirklichen‘ Talern, als bei dem bloßen Begriffe derselben'', <span style="color:#00B000">[ als bei 100 bloß ‚gedachten‘ Talern ]</span> ... <span style="color:#FF6000">«</span> <span style="color:#00B000"><ref>‚''<span style="font-family: Times;"><big>Kritik der reinen Vernunft</big></span>''‘, Seite 401; https://www.korpora.org/kant/aa03/401.html</ref></span>. GÖDEL würde darauf <span style="color:#00B000">(korrespondierend zur aristotelisch-<span style="color:#4C58FF">,theologischen‘</span> Tradition von der Identität von Sein und Wesen in GOTT)</span> antworten ''':''' ::<span style="color:#FF6000">»</span>Die <span style="color:#FF6000">„100 Taler“</span> sind der <span style="color:#FF6000">»''zufälligen Struktur der'' <span style="color:#00B000">[ vergänglichen ]</span> ''Welt''«</span> entnommen, und sind daher nicht mit GOTT vergleichbar, der, <span style="color:#FF6000">»''unabhängig von der zufälligen'' <span style="color:#00B000">[ Raum-Zeit-]</span>''Struktur''«</span> unserer Welt, <span style="color:#FF6000">„über“</span> dieser Welt steht. Einzig und allein nur von GOTT gilt ''':''' Der mit Dingen aus unserer Welt ,nicht vergleichbare‘ GOTT, <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, <span style="color:#FF6000">„existiert notwendig für uns“</span>, <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x'''‘ —</span>, und <span style="color:#FF6000">„notwendiges Existieren, <u>Sein</u>“</span> ,ist‘ eine <span style="color:#FF6000">„positive <u>Wesen</u>seigenschaft“</span> in GOTT, <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub>‘ —</span>, weil GOTT aus sich <span style="color:#FF6000">„vollkommen“ <span style="color:#00B000">|</span> „perfekt“</span> ist, <span style="color:#4C58FF">— ‚'''PG'''‘ —</span> ''':''' <span style="color:#0000FF; background-color:#FFFF00">‚Sein‘ ist in GOTT ein ‚reales Prädikat‘</span>; <span style="color:#00B000">(notwendige ‚Existenz’ ist eine positive ‚Wesenseigenschaft’ in GOTT)</span>, und nur bei GOTT '''!''' Zum zeitlos-ewigen GOTT der Christen ''':''' <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, <span style="color:#00B000">(als methodologische Kalkül-Prämisse)</span>, kann man sagen ''':''' Weil es, wegen Axiom-1 und Axiom-2, <span style="color:#FF6000">„widerspruchsfrei möglich"</span> ist, dass es GOTT gibt ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span>, darum ist GOTT auch das ‚einzige‘ <span style="color:#FF6000">„Wesen“</span>, <span style="color:#4C58FF">— ‚'''x'''‘ —</span>, von dem ein Christ sagen kann, dass es <span style="color:#FF6000">„notwendig aus sich“</span> ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span>, d.h. <span style="color:#FF6000">„grundlos“ <span style="color:#00B000">|</span> „unverursacht“</span>, für uns immer schon ‚da’ ist, und immer ,da’ sein wird; und zusätzlich gilt ''':''' Es gibt für jede mögliche Welt ‚nur‘ diesen einen GOTT ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx ∧ □∀y(Gy→x=y)'''‘ — </span><span style="color:#00B000">(Monotheïsmus, Korollar-3)</span>; vorausgesetzt, man geht von der ,Existenz’ dieses GOTTES aus, wobei diese Annahme für GÖDEL <span style="color:#FF6000">»''mit allen bekannten Tatsachen durchaus vereinbar''«</span> ist.<span style="color:#FF6000">«</span> Eine Beobachtung ''':''' KANT sagt, gleichsam als ,krönenden‘ Abschluss seiner Widerlegung des, — von ihm so genannten —, ,ontologischen Gottesbeweises‘ ''':''' <span style="color:#FF6000">»</span>''Aber in meinem Vermögenszustande ist <u>mehr</u> bei hundert ‚wirklichen‘ Talern, als bei dem bloßen Begriffe derselben, (d.i. ihrer Möglichkeit).''<span style="color:#FF6000">«</span> Diese Feststellung KANTS entspricht jedoch genau der Argumentation ANSELMS ''':''' GOTT <span style="color:#FF6000">„<span style="font-family: Times;"><big>esse et in re</big></span>“</span>, d.h. GOTT ,existiert auch in Wirklichkeit‘, <span style="color:#FF6000">„<span style="font-family: Times;"><big>quod maius est</big></span>“</span>, was <u>mehr</u> ist, als <span style="color:#FF6000">„<span style="font-family: Times;"><big>esse solo in intellectu</big></span>“</span>, als nur ein bloßer Begriff ,im Verstand zu sein‘. Der ,Mehr-Wert‘ ergibt sich in beiden Fällen, sowohl bei den Talern als auch bei GOTT, aus der ,Wirklichkeit‘ ihrer Existenz, im Gegensatz zur bloßen, <span style="color:#00B000">(im Begriff gedachten)</span>, ,Möglichkeit‘ ihrer Existenz, so dass, in jedem Fall, der ,Begriff‘ im Verstand ohne Abstriche <span style="color:#FF6000">»</span>''den ganzen Gegenstand ausdrückt''<span style="color:#FF6000">«</span>, und von diesem auch <span style="color:#FF6000">»</span>''der angemessene Begriff''<span style="color:#FF6000">«</span> ist. Alles andere wäre eine ,Lüge‘. Mit dieser ,Beobachtung‘ ist das implizit ,Widersprüchliche‘ in KANTS Argumentation aufgedeckt ''':''' Das Wirkliche in KANTS Vermögenszustande enthält <span style="color:#FF6000">,doch mehr‘</span> als das bloß Mögliche, konträr zu seiner vorigen Behauptung ''':''' <span style="color:#FF6000">»</span>''das Wirkliche''<span style="color:#FF6000">«</span> enthalte <span style="color:#FF6000">»'',nichts mehr‘</span> als das bloß Mögliche''<span style="color:#FF6000">«</span>. Diese Behauptung ist offensichtlich falsch. Das ist somit ein indirekter Beweis und damit eine Bestätigung für die analoge Argumentation ANSELMS aus dem Wiederspruch des Gegenteils, am Beispiel KANTS <span style="color:#FF6000">»</span>''Vermögenzustandes bei hundert wirklichen Talern''<span style="color:#FF6000">«</span>, in dem in Wirklichkeit <span style="color:#FF6000">,doch mehr‘</span> ist, <span style="color:#FF6000">»</span>''als bei dem bloßen Begriffe derselben''<span style="color:#FF6000">«</span>. <span style="color:#00B000">(Diese ,Beobachtung‘ ist zugleich auch das entscheidende Indiz dafür, dass das systembedingte Konzept KANTS von der ,Existenz‘, bzw. vom ,Sein‘ eines jeden Gegenstandes, als</span> <span style="color:#FF6000">»</span>''dessen bloße Position''<span style="color:#FF6000">«</span>, <span style="color:#00B000">d.i. als seine ,Setzung‘ bloß im- und durch den Verstand, ,falsch‘ ist, — d.h. im Klartext ''':''' für KANT ist das ,Sein‘ eines Gegenstandes bloß ein ,Gedanke‘ in uns, wenn er meint, dass uns ein Gegenstand erst dann wirklich ,gegeben‘ sei, wenn wir uns den</span> <span style="color:#FF6000">»</span>''Gegenstand als schlechthin gegeben (durch den Ausdruck : <u>er ist</u>) <u>denken</u>''<span style="color:#FF6000">«</span>, <span style="color:#00B000">was nur dem Irrtum einer falschen System-Konzeption geschuldet sein kann. Auf Grund dieser Konzeption ist das</span> <span style="color:#FF6000">»</span>''Ding, wie es an sich selbst ist''<span style="color:#FF6000">«</span>, <span style="color:#00B000">für KANT systembedingt weder ,anschaubar‘, noch ,erkennbar‘. Diese falsche Konzeption über die ,Existenz‘, bzw. das ,Sein‘ eines Dinges, als</span> <span style="color:#FF6000">»</span>''dessen bloße Position''<span style="color:#FF6000">«</span>, <span style="color:#00B000">ist für KANT letztendlich auch die Beweisgrundlage und Voraussetzung für seine Ablehnung des ontologischen Argumentes für GOTT im Theorem ANSELMS. Wenn das ,wirkliche‘ Sein eines Dinges nichts anderes ist, als</span> <span style="color:#FF6000">»</span>''dessen'' <span style="color:#00B000">[ bloß gedachte ]</span> ''Position''<span style="color:#FF6000">«</span>, <span style="color:#00B000">d.h. als seine ,mögliche‘ Setzung bloß im- und durch den Verstand, — das ist das, als ,wirklich‘ bloß nur ,gedachte‘ Ding —, dann</span> <span style="color:#FF6000">»</span>''enthält''<span style="color:#FF6000">«</span> <span style="color:#00B000">natürlich</span> <span style="color:#FF6000">»</span>''das Wirkliche''<span style="color:#00B000">, [ als die bloß gedachte Existenz ],</span> ''nichts mehr als das bloß Mögliche''<span style="color:#00B000">, [ als der gedachte Begriff ]<span style="color:#FF6000">«</span>, was offensichtlich unhaltbar ist. <span style="color:#4C58FF">[ Modus tollendo tollens ] </span> ''':''' Wenn die Konsequenz einer Wenn-Dann-Folgerung ,falsch‘ ist, dann ist auch ihre Voraussetzung, das System-Konzept KANTS, ,falsch‘ ''':''' d.i. seine ,Kopernikanische Wende‘ für die Metaphysik, soweit sie KANTS ,Sein’-Konzept betrifft. Korrekt und ,wahr‘ ist in jedem Fall ''':''' Das Wirkliche enthält <span style="color:#FF6000">,doch mehr‘</span> als das bloß Mögliche, und die Dinge ,existieren‘ schon immer unabhängig von unserem Denken. ,Existenz‘, das ,Sein‘, ist <span style="color:#FF6000">,doch mehr‘</span>, als bloß ein ,Gedanke‘ von uns.)</span> Somit ist die Argumentation KANTS gegen den ontologischen Beweis ANSELMS für GOTT ,falsch‘ und unhaltbar, weil sie auf der ,falschen‘ Voraussetzung beruht ''':''' die ,Existenz‘, bzw. das ,Sein‘ eines jeden ,Gegenstandes‘, — wie z. B. auch die Existenz bei GOTT —, sei bloß dessen gedachte ,Position‘ an sich selbst, d.h. bloß seine ,Setzung‘ im- und durch den Verstand. Damit ,macht‘ er GOTT außerdem zu einem ,Ding‘ unter den vielen ,Dingen‘ dieser Welt, und verkennt so, — wie vor ihm THOMAS von Aquin —, auch die Einzigartigkeit und Exklusivität GOTTES im Theorem ANSELMS. <div class="center">Die <span style="color:#FF6000">„Rede von GOTT“</span> in der philosophischen Tradition</div> Wenn man die philosophische Tradition der <span style="color:#FF6000">„Rede von GOTT“</span> im Lichte der Ergebnisse der <span style="color:#4C58FF">„axiomatischen Theologie“</span> GÖDELS liest, dann stellt sie sich am Beispiel bei ARISTOTELES, — AVICENNA, — ANSELM, und bei GÖDEL wie folgt dar ''':''' <span style="color:#FF6000">»''Das Erstbewegende,'' (<span style="font-family: Times;"><big>,πρῶτον κινοῦν‘</big></span>), ''das, ohne selbst ‚bewegt‘ zu sein'', (<span style="font-family: Times;"><big>,ἀκίνητον‘</big></span> <span style="color:#00B000">| ''unverursacht, ,entstehungslos‘'' |</span> ), ''alles Übrige wie ein Geliebtes ‚bewegt‘'', (<span style="font-family: Times;"><big>,κινεῖ δὴ ὡς ἐρώμενον‘</big></span> <span style="color:#00B000"> | ''-verursacht, ,entstehen‘ lässt'' |</span> ), ''ist sowohl'' <span style="color:#00B000">[ zeitlich-]</span>''ewiges ‚Wesen‘'', (<span style="font-family: Times;"><big>,ἀΐδιον καί οὐσία‘</big></span> <span style="color:#00B000">| ''‚Substanz‘'' |</span> ), ''als auch'' <span style="color:#00B000">[ zeitlich-]</span>''ewiges ‚wirksames, verwirklichendes Sein‘'', (<span style="font-family: Times;"><big>‚ἀΐδιον καί ἐνέργεια οὖσα‘ = ‚actus purus‘</big></span><span style="color:#00B000"> | '',reine Tätigkeit‘'' |</span> ), … ''ersehnt'', (<span style="font-family: Times;"><big>,ὀρεκτόν‘</big></span>), ''und erkennbar'', (<span style="font-family: Times;"><big>,νοητόν‘</big></span>), ... ''denn dies ist der ‚Gott‘'', (<span style="font-family: Times;"><big>,τοῦτο γὰρ ὁ θεός‘</big></span>), <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, ''der'' <span style="color:#00B000">[ zeitlich-]</span>''Ewige'', (<span style="font-family: Times;"><big>,ἀΐδιον‘</big></span>), — ''der Unvergleichliche'', (<span style="font-family: Times;"><big>,ἄριστον‘</big></span> <span style="color:#00B000">| ''‚der Beste‘'' |</span> ), — ''der Lebendige'', (<span style="font-family: Times;"><big>,ζῷον‘</big></span> <span style="color:#00B000">| ,''das Leben selbst‘'' |</span> ), — ... ''so sagen wir ja'', (<span style="font-family: Times;"><big>,φαμὲν δὴ‘</big></span>), — ...«</span> ''':''' <span style="color:#00B000">(ARISTOTELES — Grieche)</span>. Der ‚Begriff’ <span style="color:#FF6000">„GOTT“</span>, <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, als ,Individuumname‘, ist synonym mit <span style="color:#FF6000">„göttliches ‚Da-Sein’“</span>, das sowohl <span style="color:#FF6000">„aus sich vollkommen“</span>, als auch <span style="color:#FF6000">„notwendig für uns“</span> ‚da‘ ist; <span style="color:#00B000">(das ist das, an sich, vollkommene ‚Was-Sein‘ GOTTES ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ — </span>, das zugleich, für uns, das notwendige ‚Da-Sein‘ GOTTES ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x'''‘</span> — ist)</span>; <span style="color:#CC66FF">„von Ewigkeit zu Ewigkeit“</span>. Das ist der <u>angemessene Begriff</u> von GOTT, und gilt ‚nur‘ von GOTT. Weil GOTT <span style="color:#FF6000">„vollkommen“</span> ist, ist <span style="color:#FF6000">„Da-Sein“ <span style="color:#00B000">|</span> „GOTT-Sein“ <span style="color:#00B000">|</span> „Göttlichkeit“</span> das <span style="color:#FF6000">„Wesen“</span> GOTTES ''':''' <span style="color:#4C58FF">— ‚'''Gx↔G'''<sub>ess</sub>'''x'''‘ —</span>. Im Unendlichen, GOTT, sind <span style="color:#FF6000">„Essenz“</span> und <span style="color:#FF6000">„Existenz“</span> koinzident ,eins‘, und daher untrennbar, und <span style="color:#FF6000">»''darum ist GOTT das einzige ‚Sein’, das notwendig an sich ‚da‘ ist''«</span> ''':''' <span style="color:#00B000">(ABU ALI SINA alias AVICENNA — Muslim)</span>. Der <span style="color:#00B000">(gedachte)</span> ‚Eigenschafts-Begriff‘ <span style="color:#FF6000">„Vollkommenheit (die Größe) GOTTES“</span>, <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, <span style="color:#00B000">(‚Perfektion‘, die unbegrenzte Summe aller ‚positiven Eigenschaften‘ in GOTT)</span> schließt koinzident die ‚Eigenschaft’ <span style="color:#FF6000">„notwendige Existenz für uns“</span> mit ein ''':''' <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub>‘ —</span>. GOTT wäre nicht <span style="color:#FF6000">„vollkommen“</span>, wenn er nicht auch real für uns ‚da‘ wäre, wenn er nicht ,immer schon’ <span style="color:#FF6000">„existierte“</span>. ‚Sein’ ist <u>mehr</u> als ‚Nicht-Sein’. ,Sein’, bzw. ,Existenz’ gehört in GOTT zu den ,Transzendentalia’. Das sind die <span style="color:#00B000">(ultimativen)</span> ,Wesenseigenschaften’ in GOTT. Der unbegrenzt Unendliche, GOTT, ist daher das <span style="color:#FF6000">»''vollkommenste Wesen, über das nichts ,Größeres‘ d.h. Vollkommeneres <u>mehr</u> ‚gedacht‘ werden kann''«</span> ''':''' <span style="color:#00B000">(ANSELM von Canterbury — Christ)</span>. Der ‚Begriff’ <span style="color:#FF6000">„Perfektion GOTTES“</span>, <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, schließt koinzident das <span style="color:#FF6000">„notwendige Dasein GOTTES“</span>, <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x'''‘</span> —, für uns mit ein, ohne einen zeitlichen Anfang und ohne ein zeitliches Ende. Das ist die ‚zeitlos-ewige‘, an sich absolute, und <span style="color:#FF6000">„für uns notwendige Existenz GOTTES“</span> ''':''' <span style="color:#4C58FF">— ‚'''Gx→E'''<sub>not</sub>'''x'''‘ —</span> ''':''' <span style="color:#00B000">(Das ist ein ,regulär‘-mögliches Korollar im 2. Beweisgang aus Term :16: ''':''' <span style="color:#4C58FF">— ‚'''Gy→Yy'''‘ —</span>, mit der <span style="color:#4C58FF">[ Instanz(Y:=E<sub>not</sub>) ]</span>, und der <span style="color:#4C58FF">[ FUB(y:=x) ]</span>; und auch ein ,regulär‘-mögliches Korollar im 3. Beweisgang ''':''' entsprechend der <span style="color:#FF6000">„logischen Implikation”</span> :: <span style="color:#4C58FF">[├ A ├ B ╞ A → B ]</span> von Term :01: <span style="color:#4C58FF">— ‚'''Gx'''‘ — </span> und Term :05: <span style="color:#4C58FF"> —‚'''E'''<sub>not</sub>'''x'''‘ —</span> aus diesem Beweisgang. In Worten ''':''' <span style="color:#FF6000">»</span>''Angenommen, '' <span style="color:#4C58FF">— ‚'''x'''‘ —</span> ''steht für den GOTT der Christen'' ''':''' <span style="color:#4C58FF">— ‚'''G'''‘ — </span>, ''dann existiert dieser GOTT'', <span style="color:#4C58FF">— ‚'''x'''‘ —</span>, ''für uns notwendig'', <span style="color:#4C58FF">— <sub>not</sub> —</span> <span style="color:#FF6000">«</span>.)</span> Der Unendliche, GOTT, ist <span style="color:#FF6000">»''unabhängig von der zufälligen'' <span style="color:#00B000">[ Raum-Zeit-]</span>''Struktur''«</span> unserer ‚vergänglichen‘, ,endlichen‘ Welt, welche prinzipiell vom dreidimensionalen Raum und von der unwiederbringlich ‚vergehenden‘ Zeit geprägt ist. Der ,GOTT der Christen‘ ist <span style="color:#FF6000">»''unabhängig''«</span> von dieser <span style="color:#FF6600">„vergehenden Raum-Zeit“, — »''jenes rätselhafte und anscheinend in sich widersprüchliche Etwas''« <span style="color:#00B000">(GÖDEL)<ref>Kurt GÖDEL, ‚''<span style="font-family: Times;"><big>Eine Bemerkung über die Beziehungen zwischen der Relativitätstheorie und der idealistischen Philosophie‘</big></span>'', in P.A.SCHILPP (Hg.): ‚''<span style="font-family: Times;"><big>Albert Einstein, Philosoph und Naturforscher‘</big></span>'', Seite 406</ref></span> —</span>. Ohne ‚Zeit‘ gibt es keinen zeitlichen Unterschied zwischen ‚Ursache‘ und ‚Wirkung‘, <span style="color:#00B000">(beides ist zeitlos ,eins‘)</span>, und so ist der zeitlos-ewige GOTT, der <span style="color:#FF6000">»''notwendig aus sich ,existiert‘'' «</span> ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ — </span>, <span style="color:#FF6000">„unverursacht“ <span style="color:#00B000">|</span> „ursprungslos“</span> für uns immer schon ‚da‘ ''':''' <span style="color:#00B000">(GÖDEL — ohne religiöses Bekenntnis)</span>. Mit dem GÖDEL-Kalkül ist die <span style="color:#FF6000">„Rede von GOTT“</span> auf eine ‚vernünftige Basis‘ gestellt worden, und ist somit für jeden Menschen nachvollziehbar, <span style="color:#FF6000">»''rein verstandesmäßig, (ohne sich auf den Glauben an irgendeine Religion zu stützen)''«</span>, wie obige Beispiele zeigen. '''Resümee :''' Das GÖDEL-Kalkül zeigt mit <span style="color:#FF6000">»''mathematischer Evidenz''«</span>, was notwendig folgt, wenn die Axiome ‚wahr‘ sind, <span style="color:#00B000">(die Axiome bilden formal-syntaktisch <span style="color:#FF6000">»''die theologische Weltanschauung''«</span> ab)</span>, unter der Voraussetzung, dass die Axiome <span style="color:#FF6000">»''unabhängig von der zufälligen'' <span style="color:#00B000">[ Raum-Zeit-]</span>'' Struktur''«</span> unserer Welt sind. Die ,Verifikation‘ der Axiome und Definitionen von GOTT und seiner Vollkommenheiten gelingt GÖDEL, — entsprechend seiner Unabhängigkeits-Bedingung —, durch den Aufweis ihrer Widerspruchsfreiheit ''':''' sie sind somit ,wahr‘ und, — im Kontext einer <span style="color:#FF6000">»''theologischen Weltanschauung''«</span> —, auch ,annehmbar‘ in unserer ,realen‘ Welt ''':''' <span style="color:#00B000">(siehe Anhang, 2. Beweisgang und Anmerkung-2)</span>. Er vermeidet damit den Fehler, der immer wieder im Diskurs über Gottesbeweise gemacht wird ''':''' GOTT mit seinen Geschöpfen zu vergleichen. Diese logisch-philosophische Rede von GOTT <span style="color:#00B000">(<span style="color:#FF6000">»''ohne sich auf den Glauben an irgendeine Religion zu stützen''«</span>)</span> hat eine <u>mehr</u> als zweitausendjährige Tradition hinter sich. Der <span style="color:#FF6000">„100-Taler-Gott“</span> des Philosophen KANT, hat heute, nachdem der Logiker und Systemtheoretiker GÖDEL sein System vorgelegt hat, an ‚Strahlkraft‘ verloren. Kurt GÖDEL ''':''' ::<span style="color:#FF6000">» ''Die theologische Weltanschauung'', <span style="color:#00B000">[ dass GOTT für uns immer schon ‚da‘ ist ]</span>, ''ist rein verstandesmäßig mit allen bekannten Tatsachen durchaus vereinbar'';«</span> <span style="color:#00B000">[ d.h. sie ist das ,Resultat‘ der, — vom Glauben geleiteten —, ‚theoretischen Vernunft‘, alias ‚reinen Vernunft‘, und nicht bloß das ‚Postulat‘ einer ‚praktischen Vernunft‘, wie KANT meint ]. <span style="color:#FF6000">»''Der'' <span style="color:#00B000">[ christliche ]</span> ''Glaube ist die ‚Pupille‘ im ‚Auge‘ unseres Verstandes.''«</span> (Heilige KATHARINA von Siena, Lehrerin der Kirche, Patronin Europas<ref>vgl. <span style="font-family: Times;"><big>''Gebet 7 ‚Für die neuen Kardinäle‘, Rom, 21. Dezember 1378,''</big></span> aus <span style="font-family: Times;"><big>''Caterina von Siena ,Die Gebete‘.''</big></span> Kleinhain 2019, online: https://caterina.at/werke/gebete/gebete-detailansicht/gebet-7.html</ref> )</span> Der sonst so rationale KANT, hier doch etwas emotionell, <span style="color:#00B000">(als wolle er die Ergebnisse im GÖDEL-Kalkül nicht wahr haben, die belegen, dass er sich bei GOTT geirrt, und die Funktion des christlichen Glaubens für die Philosophie falsch eingeschätzt hat)</span> ''':''' ::<span style="color:#FF6000">»</span> ''Es war etwas ganz Unnatürliches und eine bloße Neuerung des Schulwitzes, aus einer ganz willkürlich entworfenen Idee das Dasein des ihr entsprechenden Gegenstandes selbst ausklauben zu wollen''<ref>vgl. ‚''<span style="font-family: Times;"><big>Kritik der reinen Vernunft</big></span>''‘, Seite 403. https://www.korpora.org/kant/aa03/403.html</ref>.<span style="color:#FF6000">«</span> Für KANT, für die Scholastiker, <span style="color:#00B000">(und auch für uns)</span>, ist es natürlich ‚logisch‘, dass aus einem als ‚möglich’ gedachten Begriff, <span style="color:#FF6000">»</span>''aus einer ganz willkürlich entworfenen Idee''<span style="color:#FF6000">«</span>, keine Existenzaussage abgeleitet werden kann. <span style="color:#00B000">(Aus dem bloß gedachten Begriff ,goldene Berge‘ folgt natürlich nicht, dass es solche in Wirklichkeit auch gibt.)</span> In der philosophisch-<span style="color:#4C58FF">,theologischen’</span> Tradition, die von ARISTOTELES herkommt, ist der Begriff <span style="color:#FF6000">»''GOTT''«</span> jedoch von allen anderen Begriffen so verschieden, so dass für GOTT diese Logik KANTS nicht mehr gilt. GOTT ist ,unvergleichlich‘ und ,einzigartig‘. Dazu der Kommentar von HEGEL ''':''' ::<span style="color:#FF6000">»''Wenn KANT sagt, man könne aus dem Begriff'' <span style="color:#00B000">[ ‚GOTT‘ ]</span> ''die Realität nicht ,herausklauben‘, so ist da der Begriff als endlich gefasst''.« <span style="color:#00B000">[ In der Endlichkeit unserer Welt trifft die Logik KANTS zu, dass dem ‚Begriff‘ nicht ,notwendig‘ das ‚Sein‘ folgt, denn es gibt in ihr die ,Lüge‘, die das ,Wirklich-Sein‘ im Begriff bloß behauptet, ohne dass es ,in Wirklichkeit‘ zutrifft, was sie behauptet. Es gilt hier nach KANT ''':''' »''Sein ist kein reales Prädikat''«. Somit ist ]</span> »''...der Begriff ohne'' <span style="color:#00B000">[ reales ]</span> ''Sein ein Einseitiges und Unwahres, und ebenso das Sein, in dem kein Begriff ist'', <span style="color:#00B000">[ ist ]</span> ''das begrifflose Sein,'' <span style="color:#00B000">[ d.i. das relative ,Noch-Nicht-Begriffene‘ ]</span>.'' Dieser Gegensatz, der in die Endlichkeit fällt'' <span style="color:#00B000">[ im Endlichen zutrifft ]</span>, ''kann bei dem Unendlichen, GOTT, gar nicht statthaben''<ref>Georg Wilhelm Friedrich HEGEL, ‚<span style="font-family: Times;"><big>''Ausführungen des ontologischen Beweises''</big></span>‘ in den ‚<span style="font-family: Times;"><big>''Vorlesungen über die Philosophie der Religion vom Jahr 1831''</big></span>‘ . Hamburg 1966, Seiten 175 bzw. 174</ref>; <span style="color:#00B000">[ denn ,Begriff‘, bzw. ,Denken‘ und ,Sein‘ sind in dem Unendlichen, GOTT, untrennbar und real immer dasselbe. Auf Grund dieser ontologischen Identität ,personifiziert‘ und ,repräsentiert‘ GOTT die ,Wahrheit‘ ''':''' GOTT ist die ,Wahrheit‘. In GOTT, dem <span style="color:#FF6000">„Schöpfer der Welt“</span>, folgt dem ,Begriff‘ immer ,notwendig‘ das ,Sein‘ ''':''' <span style="color:#CC66FF">»''GOTT sprach ''':''' Es werde ,Licht‘. Und es wurde Licht''«, <small>{{Bibel | Genesis |1|3|EU}}</small>;</span> oder auch ''':''' <span style="color:#CC66FF">»''Der Herr sprach, und sogleich geschah es; er gebot, und alles war da''«,</span> <small>{{Bibel | Psalm |33|9|EU}}</small>.]</span>«</span> Das Entscheidende bei der <span style="color:#4C58FF">„theologischen“</span> Interpretation des GÖDEL-Kalküls ist, dass der <span style="color:#00B000">(Begriff)</span> GOTT der Christen ''':''' <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, nicht auf die Ebene seiner ,endlichen‘ Geschöpfe und unserer Welt gestellt wird, <span style="color:#00B000">(d.i. das ‚Universum‘ im ,Urknall‘, die ‚100-Taler‘, ein ‚Tsunami‘, auch ,einfache Modelle‘ von unserer Welt, etc.)</span>, und damit verglichen wird, sondern, dass der GOTT der Christen in seiner Einzigartigkeit und Besonderheit als <span style="color:#FF6000">»''der Unendliche''«</span> belassen und als <span style="color:#FF6000">»''unabhängig von der zufälligen'' <span style="color:#00B000">[ Raum-Zeit-]</span>''Struktur''«</span> unserer vergänglichen Welt, — als <span style="color:#FF6000">»''der Unvergleichliche''«</span> —, verstanden wird. <span style="color:#00B000">(Alle Kritiken des sog. ,ontologischen‘ Gottesbeweises übersehen die Einzigartigkeit und Besonderheit des <span style="color:#FF6000">»''Unendlichen''«</span>, und/oder wollen diese nicht ,wahr‘ haben.)</span> Auch THOMAS von Aquin ,verortet‘ den GOTT ANSELMS, — in seiner Kritik an dessen Theorem —, irrtümlich unter die ,Dinge‘ der uns umgebenden ,Natur‘, wenn er sagt ''':''' GOTT <span style="color:#FF6000">„<span style="font-family: Times;"><big>esse in rerum natura</big></span>“</span>, d.h. wörtlich, dass der GOTT ANSELMS <span style="color:#FF6000">»</span>''in der Natur der Dinge'' <span style="color:#00B000">(unserer Welt)</span> ''existiert''<span style="color:#FF6000">«</span>, und verkennt somit, — wie nach ihm auch KANT —, die ,Unvergleichlichkeit‘ GOTTES, <span style="color:#00B000">(vgl. STh I q.2 a.1 ad 2<ref>„Deus … illud quo maius cogitari non potest; non tamen propter hoc sequitur quod intelligat id quod significatur per nomen, esse in rerum natura; sed in apprehensione intellectus tantum.“ ——— »''GOTT ist'' (nach ANSELM) ''der, über den Größeres nicht mehr gedacht werden kann. Aber nicht deswegen, weil er'', (der Narr von Psalm 14.1, den ANSELM zitiert), ''das versteht, was durch diesen Namen,'' (d.h. mit dem Begriff ,GOTT‘, als der ,Größte‘, im Theorem ANSELMS), ''bezeichnet wird, folgt daraus'', (wie ANSELM meint), ''dass er auch versteht, dass er'', (der GOTT ANSELMS), ''auch in der ,Natur‘ der Dinge'' (unserer Welt) ''existiert''; <span style="color:#00B000">[ was ANSELM so nie gesagt hat ]</span>. ''Daraus folgt nur, dass er'', (als ,GOTT‘), ''bloß in der Auffassung seines Verstandes'', (d.h. nur im Denken des Narren als ,Begriff‘), ''existiert.''« ——— Hier ,verortet‘ THOMAS einerseits den unendlichen GOTT, von dem das Theorem ANSELMS spricht, irrtümlich unter die endlichen Dinge der uns umgebenden ,Natur‘, was sachlich dem theologischen Theorem der Unvergleichlichkeit GOTTES widerspricht, der nicht unter die Dinge unserer Welt eingereiht werden darf. Anderseits verliert er dadurch auch den ,Blick‘ für die Außerordentlichkeit und Besonderheit GOTTES, dessen Natur völlig verschieden und unabhängig von der ,Natur‘ unserer raum-zeitlichen Welt ist. GÖDEL beweist jedoch, mit ANSELM, weil es notwendig, ohne Widerspruch, (»''bloß in der Auffassung unseres Verstandes''«), möglich ist, dass GOTT existiert, ist es korrekt, daraus auch mit Notwendigkeit zu folgern, dass der Glaube des Erzbischofs ANSELM, und der Glaube seiner Anvertrauten, von der Wirklichkeit GOTTES, widerspruchsfrei, logisch richtig, und damit sinnvoll ist; denn Möglichkeit und Wirklichkeit sind in GOTT koinzident ,eins‘. Das ist das Privilegium GOTTES allein, der einzigartig und unvergleichlich ist. Damit zeigt er auf, dass THOMAS die Unvergleichlichkeit und Einzigartigkeit GOTTES in seinem Vorhalt nicht bedacht hat; und außerdem ANSELM missverstanden hat.</ref>)</span>; jedenfalls hier in der Auseinandersetzung mit ANSELM. Dagegen spricht ANSELM im ,''<span style="font-family: Times;"><big>Proslogion</big></span>''‘, Seite 85f, nur von einem <span style="color:#FF6000">„<span style="font-family: Times;"><big>esse et in re</big></span>“</span> GOTTES, d.h. dass GOTT ,auch in Wirklichkeit existiert‘, <span style="color:#FF6000">„<span style="font-family: Times;"><big>quod maius est</big></span>“</span>, was ,größer‘, bzw. ,mehr‘ ist, als <span style="color:#FF6000">„<span style="font-family: Times;"><big>esse solo in intellectu</big></span>“</span>, als nur ,im Verstand zu sein‘; wobei die ,zeitlose-überzeitliche‘ Wirklichkeit, <span style="color:#00B000">(Natur)</span>, GOTTES jedoch völlig verschieden und <span style="color:#FF6000">»''unabhängig von der zufälligen''«</span> Wirklichkeit <span style="color:#00B000">(die ,Natur‘)</span> der ,raum-zeitlichen‘ Welt der Dinge ist. Daher ist sie mit dieser auch nicht vergleichbar. GOTT ist <span style="color:#FF6000">„vollkommen“</span> und alle <span style="color:#FF6000">„Vollkommenheiten“</span> in GOTT, <span style="color:#00B000">(die ultimativen ,Transzendentalia‘)</span>, sind koinzident ,eins‘, — ,fallen <span style="color:#FF6000">„notwendig“</span> perspektivisch in eins zusammen‘, und sind daher konvertierbar. Darum ist auch die Wirklichkeit, <span style="color:#00B000">(Natur)</span>, GOTTES ,einzigartig‘ und ,unvergleichlich‘. Mit Korollar-3 ist die Exklusivität und Außerordentlichkeit GOTTES definitiv im Kalkül ,bewiesen‘ <span style="color:#00B000">( ╞ )</span>. Der abendländische Monotheïsmus ist somit eine ,logische‘ Konsequenz aus den GÖDEL-Axiomen. <span style="color:#00B000">(Das <span style="color:#4C58FF">„theologische“</span> Theorem von der ,Einzigartigkeit‘ und Exklusivität GOTTES, d.h. hier im Kontext ''':''' die exklusive Einheit von GOTT und Mensch in JESUS CHRISTUS; von Vater, Sohn und Geist im <span style="color:#4C58FF">„Dreifaltigen“</span>; von Essenz und Existenz, von Begriff und Sein, von Ursache und Wirkung, von Subjekt und Objekt, von Möglichkeit und Wirklichkeit, und die unbegrenzte Summeneinheit und Koinzidenz der unendlichen Transzendentalien in GOTT, ist, — mit HEGEL —, die Voraussetzung und Bedingung jeder Philosophie ''':''' <span style="color:#FF6000">»''Die Einheit muss am Anfang der Philosophie stehen''«</span>; und ist zugleich auch ihr gesuchtes und bewiesenes Endergebnis und Ziel ''':''' <span style="color:#FF6000">»''Diese Einheit muss auch das Resultat der Philosophie sein''«</span><ref>https://hegel-system.de/de/gottesbeweis.htm#hegels-kritik-an-kant</ref>, was hier im GÖDEL-Kalkül ,logisch‘ mit Korollar-3 verifiziert wird ''':''' <span style="color:#4C58FF">— ‚'''□(∃xGx ∧ ∀y(Gy→x=y))'''‘ —</span> ''':''' <span style="color:#FF6000">»''GOTT ist exklusiv einzigartig''«</span>.)</span> Die Einzigartigkeit GOTTES bedingt die Koinzidenz, den inneren Zusammenhang aller seiner Vollkommenheiten und Zuschreibungen, <span style="color:#00B000">(Axiom-2)</span>, d.h. ihr paarweise, perspektivisches ,Zusammenfallen in eins‘ im Unendlichen, GOTT. ——— Aus der Notwendigkeit aller positiven Eigenschaften und Zuschreibungen, <span style="color:#00B000">(d.h. aus den, an sich, notwendigen, ultimativen Transzendentalien, Axiom-4)</span>, die in GOTT paarweise, als ,Wesenseigenschaften‘ koinzident ,eins‘ sind, <span style="color:#00B000">(Definition-2)</span>, ist die Einzigkeit GOTTES für uns erschließbar, <span style="color:#00B000">(Korollar-3)</span>. Axiom-4 ist die erste, ,modal‘ <span style="color:#FF6000">„notwendige“</span>, d.h. die transzendentale Voraussetzung für Korollar-3. Wenn im Korollar-3 das <span style="color:#4C58FF">— ‚'''x'''‘ —</span> z. B. für GOTT, dem ,Vater‘ der Christen, und das <span style="color:#4C58FF">— ‚'''y'''‘ —</span> für GOTT, dem ,Sohn‘, d.h. für ,JESUS CHRISTUS‘ steht, oder für den ,HEILIGEN GEIST‘, <span style="color:#00B000">(den ,Dreifaltigen GOTT‘ der Christenheit)</span>; oder auch für die Gottesbezeichnung ,GOTT-ADONAI‘ der Juden, oder für die Gottesbezeichnung ,ALLAH‘ der Muslime steht, dann weist dieses Korollar, für <span style="color:#4C58FF">— ‚'''∀y'''‘ —</span>, mit der ,ontologischen Identität‘ ''':''' <span style="color:#4C58FF">— ‚'''x=y'''‘ —</span>, auf die ,Koinzidenz‘ des <span style="color:#4C58FF">„Dreifaltigen“</span>, und auf die <span style="color:#4C58FF">„Hypostatische Union“</span> der Naturen von GOTT und Mensch in JESUS CHRISTUS, bzw. auch auf den inneren Zusammenhang der drei Buch-Religionen hin. ===<div class="center"><span style="color:#660066">Anhang : das GÖDEL-Kalkül</span></div>=== In der ,Legende zum GÖDEL-Kalkül‘ wird an einige Basics erinnert, und diese für die operative Praxis im anstehenden Kalkül, mit Hilfe von logischen Meta-Terme, adaptiert. Zusätzliche, notwendige Regeln und Gesetze werden dann ,benannt‘, wenn sie in der Kalkül-Durchführung auftreten. {|class="wikitable" |- ! <div class="center"><span style="color:#660066">Legende zum GÖDEL-Kalkül</span></div> |- | <small> <math>\begin{align} {\color{blue}\text{ ◇}} \text{ :: konsistent ↔ widerspruchsfrei ↔ möglich ↔ denkbar, } & {\color{blue}\text{ □}} \text{ :: notwendig ↔ wirklich, für jede mögliche Welt ↔ exklusiv} \\ \text{logischer Meta-Term ::} {\color{blue}\text{ [ A ├ B ]}} \text{ ::} & \text{ „aus A folgt im Kalkül ,regulär‘ (├ ) B.“} \\ \text{ A, B sind Aussagen über Eigenschaften, (A ist keine Eigenschaft);} & \text{ die Aussage, z.B. in der Kalkül-Zeile 10, wird als ,Term :10:‘ bezeichnet} \\ {\color{blue}\text{ AE}} \text{ ::} & \text{ Argument Einführung, Prämisse, Postulat } \\ {\color{blue}\text{ Xx}} \text{ ::} & \text{ „X ist eine Eigenschaft der Individuum-Variable x.“ } \\ {\color{blue}\text{ ¬PX}} \text{ ::} & \text{ „X ist keine positive Eigenschaft, ist keine Perfektion, ist nicht vollkommen.“ } \\ {\color{blue}\text{ Instanz(X := Y)}} \text{ ::} & \text{ Substitution der Eigenschaft X durch die ,bestimmte‘ Eigenschaft Y } \\ \text{ (Eine ,Instanz‘ ist ein Exemplar aus einer Menge gleichartiger Dinge;} & \text{ hier die ,bestimmte‘ Eigenschaft Y, als Ersatz für das unbestimmte X.) } \\ {\color{blue}\text{ FUB(x := y)}} \text{ ::} & \text{ Freie-Um-Benennung der Individuum-Variable x in y } \\ \text{ ,modal‘-frei gewählte Kalkül-Prämisse ::} {\color{blue}\text{ Gx}} \text{ ::} & \text{ „Die Variable x steht für den GOTT der Christen.“ } \\ {\color{blue}\text{ [ G(y) ├ ⱯyG(y) ]}} \text{ ::} & \text{ All-Operator-Einführung der Variable y für GOTT } \\ \text{ „Angenommen, die Variable y steht für GOTT, dann } & \text{folgt ,regulär‘ (├ ), dass auch jedes y im Kalkül für GOTT steht.“}\\ {\color{blue}\text{[ ⱯXA(X) ├ A(X) ]}} \text{ ::} & \text{ All-Operator-Beseitigung für die substituierte Eigenschaft X } \\ \text{ „Wenn X durch eine ,bestimmte‘ Eigenschaft ,instanziiert‘ ist oder } & \text{wird, dann kann der All-Operator von X ,regulär‘ (├ ) beseitigt werden.}\\ {\color{blue}\text{ KOMM(↔)}} \text{ ::} & \;{\color{blue}\text{[ (A↔ B) ↔ (B ↔ A) ]}} \text{ :: Kommutativgesetz für ( ↔ )}\\ {\color{blue}\text{ DIST(□∧)}} \text{ ::} & \;{\color{blue}\text{[ (□A ∧ □B) ↔ □(A ∧ B) ]}} \text{ :: Distributivgesetz für (□∧ )} \\ \text{ (hypothetischer Syllogismus, häufige logische Schlussregel) ::} & \;{\color{blue}\text{[ A → B, A ├ B ]}} \text{ :: (Modus ponendo ponens) :: Abtrennregel.} \\ \text{ „Wenn es wahr ist, dass aus A ein B folgt, und wenn A wahr ist, } & \text{dann ist im Kalkül ,regulär‘ (├ ) ableitbar, dass auch B wahr ist.“} \\ \text{ (negativer hypothetischer Syllogismus) ::} & \;{\color{blue}\text{[ A → B, ¬B ├ ¬A ]}} \text{ :: (Modus tollendo tollens)} \\ \text{ „Wenn es wahr ist, dass aus A ein B folgt, und wenn B falsch ist, } & \text{dann ist im Kalkül ,regulär‘ (├ ) ableitbar, dass auch A falsch ist.“} \\ \text{''KONDITIONALER BEWEIS“ ::} & \;{\color{blue}\text{[ ├ A ├ B ╞ A → B ]}} \text{ :: (logische Implikation)} \\ \text{ „Angenommen, A ist ,regulär‘ Axiom oder Prämisse, und B ist im } & \text{Kalkül ,regulär‘ abgeleitet, dann ist ,bewiesen‘ ( ╞ ) : A impliziert B, ist wahr.“} \\ \text{''INDIREKTER BEWEIS“ ::} & \;{\color{blue}\text{[ ├ ¬A → F ╞ A ]}} \text{ :: (Reductio ad absurdum)} \\ \text{ „Wenn im Kalkül aus ¬A ,regulär‘ eine Kontradiktion } & \text{F folgt, dann ist A ,bewiesen‘ ( ╞ ) : A ist ,wahr‘.“} \\ \end{align}</math> </small> |} A. FUHRMANN ''':''' <span style="color:#FF6000">»</span> ''Eine Prädikatenlogik zweiter Stufe ist eine Logik, in der die Quantoren auch Eigenschaftsausdrücke <span style="color:#00B000">(<span style="color:#FF6000">„Prädikate”</span>)</span> binden können''. <span style="color:#00B000">[ Die ,Prädikate‘ werden in einem Kalkül dieser Logik durch Definitionen ,bestimmt‘ ]</span>. ''Wir werden uns im folgenden recht frei einer dafür geeigneten formalen Sprache bedienen. Äußere Quantoren werden meist weggelassen und wir schreiben kurz'' <span style="color:#4C58FF">— ‚'''Xx'''‘ — </span> ''bzw.'' <span style="color:#4C58FF">— ‚'''PX'''‘ — </span> ''um auszudrücken, dass das Individuum'' <span style="color:#4C58FF">— ‚'''x'''‘ — </span> ''die Eigenschaft'' <span style="color:#4C58FF">— ‚'''X'''‘ — </span> ''hat, bzw. dass die Eigenschaft'' <span style="color:#4C58FF">— ‚'''X'''‘ — </span> ''die höherstufige Eigenschaft'' <span style="color:#4C58FF">— ‚'''P'''‘ — </span> ''<span style="color:#00B000">(für <span style="color:#FF6000">„positiv”</span>)</span> hat;'' <span style="color:#00B000"> [ wobei die Eigenschaft <span style="color:#4C58FF">— ‚'''P'''‘ — </span> als einzige im Kalkül ,unbestimmt‘ bleibt ]</span>. <span style="color:#FF6000">«</span><ref>A. FUHRMANN ‚''<span style="font-family: Times;"><big>‚G‘ wie Gödel. Kurt Gödels axiomatische Theologie</big></span>''‘, Seite 6, Anmerkung 3. Konform mit seinem Artikel in ‚''<span style="font-family: Times;"><big>Logik in der Philosophie</big></span>''‘ hg. v. P. SCHROEDER-HEISTER, W. SPOHN und E. OLSSON. 2005, Synchron, Heidelberg.</ref> Der All-Quantor für Eigenschaften, hier im GÖDEL-Kalkül der ,modalen‘ Prädikatenlogik zweiter Stufe, bindet die ,unbestimmte‘ Eigenschafts-Variable <span style="color:#4C58FF">— ‚'''X'''‘ —</span> ausschließlich nur in den Definitionen im 2. und 3. Beweisgang . <span style="color:#00B000"> (Im ersten Beweisgang gibt es keine Definition.)</span> Dieser All-Quantor wird dann jedes Mal in der Beweis-Durchführung durch die Substitution ''':''' <span style="color:#4C58FF"> [ Instanz(X:= ..) ]</span> mit ,bestimmte‘ Eigenschafts-Konstanten wie <span style="color:#4C58FF">— (X:= G) —</span>, bzw. <span style="color:#4C58FF">— (X:= ¬Y) —</span>, oder <span style="color:#4C58FF">— (X:= E<sub>not</sub>) —</span> ,regulär‘ <span style="color:#00B000">(├ )</span> beseitigt ''':''' <span style="color:#4C58FF"> [ ⱯXA(X) ├ A(X) ]</span>; wobei die Eigenschafts-Konstante im Kalkül entweder als Zwischenergebnis ,regulär‘ abgeleitet, <span style="color:#00B000">(,errechnet‘)</span>, oder mit einer Definition schon ,bestimmt‘ worden ist. Die spezifische ‚Eigenschaft‘ einer Eigenschaft wird hier, in der formalen Syntax der ,modalen‘ Prädikatenlogik zweiter Stufe, als eine tiefer gestellte Abkürzung <span style="color:#00B000">(als Index)</span> an ihre Trägereigenschaft angehängt, wie z. B. ‚wesentlich‘, bzw. ‚essentiell‘ durch <span style="color:#4C58FF"> — <sub>ess</sub> —</span>, oder ‚notwendig‘ durch <span style="color:#4C58FF"> — <sub>not</sub> —</span>. In der Definition-3 steht der Term ''':''' <span style="color:#4C58FF"> —‚'''E'''<sub>not</sub>'''x'''‘ —</span>, um auszudrücken, dass das Individuum <span style="color:#4C58FF">— ‚'''x'''‘ —</span> notwendig <span style="color:#4C58FF">— <sub>not</sub> —</span> die Eigenschaft ''':''' <span style="color:#4C58FF">— ‚'''E'''‘ —</span>, für ,Existenz‘, hat, d.h. <span style="color:#FF6000">»''das <span style="color:#4C58FF">‚'''x'''‘</span> existiert notwendig''«</span>. Der schon von GÖDEL indizierte Term ''':''' <span style="color:#4C58FF">—‚'''G'''<sub>ess</sub>'''x'''‘ —</span> kann gelesen werden als ''':''' <span style="color:#FF6000">»''Das Individuum <span style="color:#4C58FF">‚'''x'''‘</span> hat die Wesenseigenschaft, <span style="color:#4C58FF"> — <sub>ess</sub> — </span> ''':''' GOTT zu sein, <span style="color:#4C58FF">‚'''G'''‘ </span>''«</span>, statt der ,an sich‘ konformen, aber <span style="color:#4C58FF">„theologisch“</span> etwas ungenauen Formulierung ''':''' <span style="color:#FF6000">»''das'' <span style="color:#4C58FF">‚'''x'''‘</span> ''ist wesentlich göttlich''«</span>; oder mit der Voraussetzung ''':''' <span style="color:#4C58FF">— ‚'''Gx'''→'''G'''<sub>ess</sub>'''x'''‘ — </span> deutlicher und <span style="color:#4C58FF">„theologisch“</span> korrekt ''':''' <span style="color:#FF6000">»''Wenn'' <span style="color:#4C58FF">‚'''x'''‘</span> ''für den GOTT der Christen'', <span style="color:#4C58FF">‚'''G'''‘</span>, ''steht, dann ist GOTT-Sein'', <span style="color:#4C58FF">‚'''G'''‘</span>, <span style="color:#00B000">(,Existenz‘)</span> ''das Wesen dieses GOTTES'', <span style="color:#4C58FF">— <sub>ess</sub>‚'''x'''‘ —</span>, <span style="color:#00B000">(,Essenz‘)</span>«</span>; wobei, — entsprechend der ,methodologischen‘ Prämisse des Kalküls <span style="color:#00B000">(<span style="color:#4C58FF">— ‚'''Gx'''‘ — </span> ''':''' das <span style="color:#4C58FF">‚'''x'''‘</span> steht für den ,GOTT der Christen‘)</span> —, bei der Interpretation der Terme dieses besonderen Kalküls, die <span style="color:#4C58FF">„christliche Theologie”</span> für den Begriff <span style="color:#FF6000">„GOTT”</span>, Korrektur und die leitende Instanz ist. Dabei muss die Dreifach-Äquivalenz von <span style="color:#4C58FF"><span style="color:#4C58FF">— ‚'''G'''‘ — </span></span>berücksichtigt werden. Welche der drei Äquivalenzen, bzw. Lesearten von <span style="color:#4C58FF">— ‚'''G'''‘ — </span> bei einem bestimmten Term im Kalkül zulässig ist, muss <span style="color:#4C58FF">„theologisch”</span> überprüft und evaluiert werden. Bei manchen können sogar alle drei Lesearten <span style="color:#4C58FF">„theologisch”</span> zulässig sein. Warum es in der modalen Prädikatenlogik zweiter Stufe, im GÖDEL-System, ,Definitionen‘ gibt, erklärt GÖDEL formal-syntaktisch ''':''' <span style="color:#FF6000">»''Definitionen dienen ja nur der kürzeren Schreibwelse und sind daher prinzipiell überflüssig.''«</span> <span style="color:#00B000">(Aus der Anmerkung 6 in seinem Hauptwerk ''':''' ,''<span style="font-family: Times;"><big>Über formal unentscheidbare Sätze der Principia Mathematica und verwandter Systeme I</big></span>''‘.)</span> Für die <span style="color:#4C58FF">„theologische”</span> Interpretation und Hermeneutik seines Kalküls, sind die ,Definitionen‘ im GÖDEL-System jedoch wesentlich, und letztlich entscheidend. Erst dadurch wird sein Axiomensystem zur <span style="color:#4C58FF">„axiomatischen Theologie”</span>. GÖDEL gibt selbst den hermeneutischen Hinweis dazu, wenn er über den höherstufigen Eigenschaftsbegriff <span style="color:#FF6000">»''positiv''«</span> sagt, der nur ,indirekt‘ definiert wird, jedoch mit seinem gesamten Axiomensystem ''':''' <span style="color:#FF6000">»''Positiv bedeutet positiv im moralisch ästhetischen Sinne, (unabhängig von der zufälligen Struktur der Welt). Nur dann sind die Axiome wahr''.«</span> Die Deutung dieses ,höherstufigen‘ Begriffs als ein anderes Wort für <span style="color:#FF6000">„Transzendentalia“</span> ergibt sich aus der <span style="color:#4C58FF">„theologischen”</span> Evaluierung, d.h. der Einordnung des GÖDEL-Systems in die ,laufende‘ <span style="color:#FF6000">„Rede von GOTT“</span>, seit Menschen, sich über den Sinn der Welt und unseres Lebens in ihr, Gedanken machen. GOTT, der ,transzendent‘, — unabhängig —, zur Welt ist, ist Thema im Theorem ANSELMS, um das es ja im GÖDEL-Kalkül geht. Eine <span style="color:#4C58FF">„theologische”</span> Hermeneutik des GÖDEL-Systems ist daher legitim, die, als ein Bemühen um ein überzeugendes Verstehen, aus dem <span style="color:#4C58FF">„theologischen”</span> Vorwissen vieler Generationen schöpft. Um philosophische, und sogar <span style="color:#4C58FF">„theologische”</span> Theoreme exakt zu formulieren, und untersuchen zu können, hat der Ausnahmelogiker GÖDEL, im 20. Jahrhundert, ein Tor aufgestoßen, das uns ermöglichen kann, <span style="color:#FF6000">»''mathematisch evident''«</span>, und logisch objektiv nachprüfbar, in diesen Disziplinen zu argumentieren. Mit seiner modalen Prädikatenlogik zweiter Stufe, hat GÖDEL dem alten Wunsch eines Raimundus LULLUS, eines Gottfried Wilhelm LEIBNIZ, eines Immanuel KANT, und anderer, nach einer nachprüfbaren ,Universalsprache‘ in den Geisteswissenschaften, entsprochen; analog zur Mathematik, als Universalsprache in den Naturwissenschaften. Der sog. ,Theorembeweiser‘ der Wissenschaftler Christoph BENZMÜLLER und Bruno WOLTZENLOGEL-PALEO, mit Hilfe eines Computers, im 21. Jahrhundert, ist die kongeniale und logische Folge aus diesem Quanten-Schritt GÖDELS. In der folgenden Neu-Kalkülisierung, wird jeder einzelne operative Logik-Schritt des Kalküls in der '''linken Spalte''' nummeriert und als Term-Ergebnis angezeigt, und in der '''rechten Spalte''' werden die dafür benötigten Term-Komponenten und die dabei angewendeten Logik-Regeln und -Gesetze, mit Meta-Terme, dokumentiert. Am Anfang stehen die Ressourcen und das angestrebte Ziel des Beweisganges, <span style="color:#00B000">(das Theorem)</span>. Die GÖDEL Axiome und Definitionen, die Theoreme und Korollare, die Zwischenergebnisse, das Endergebnis, und die logischen Meta-Terme, <span style="color:#00B000">[ in eckigen Klammern ]</span>, werden kontextabhängig, <span style="color:#00B000">(durch ''„Benennungen“'')</span>, interpretiert, <span style="color:#00B000">(angezeigt durch ,Interpretationspunkte‘ — '''::''' —, falls nötig)</span>. Der jeweilige Beweisgang wird in den Anmerkungen ausführlich und umfassend kommentiert. Die Kalkül-Prämissen, <span style="color:#00B000">(<span style="color:#4C58FF">'''AE:'''</span> Argument Einführung)</span>, sind der modal-frei gewählte Einstieg in das Kalkül. Sie dokumentieren, zusammen mit dem angestrebten Beweis-Ziel, eine bestimmte Problemlage in einem externen Diskurs, der mit dem modalen Logik-System hier, formal-syntaktisch überprüft, und gegebenenfalls, verifiziert oder falsifiziert werden soll. Korollare sind einfache, logische Folgerungen aus dem jeweiligen Beweisgang. Theoreme und Korollare sind ,modal‘ gleichwertig. ====<div class="center"><span style="color:#660066">1. Beweisgang</span></div>==== {|class="wikitable" |- ! <div class="center"><span style="color:#660066">GÖDELS ontologischer Beweis für Theorem 1, (Möglichkeitsbeweis)</span></div> |- ! <span style="color:#00B000">''Terme der erweiterten Prädikatenlogik zweiter Stufe__________ „Benennungen“ und durchgeführte Logik-Operationen''</span> |- | <small> <math>\begin{align} \text{(Axiom 1.1)} & \quad P \neg X \;\Longrightarrow\;\ \neg P\ X\ & \ & \text{„Wenn die Negation von X positiv ist, dann ist die Eigenschaft X nicht positiv“} \\ \text{(Axiom 2)} & \quad (P\ X \wedge \;\Box \;\forall x (\ X\ x \Longrightarrow \ Y\ x)) \Longrightarrow \ P\ Y & \ & \text{„Die Eigenschaften Y, die aus einer positiven Eigenschaft X modal} \\ \text{ } & \quad & \ & \; \; \text{notwendig folgen, sind auch positive Eigenschaften“} \\ \text{(Axiom 3)} & \quad P\ G \ & \ & \text{„Göttlichkeit, GOTT-Sein, ist eine pos. Eigenschaft“ ↔ „GOTT ist perfekt“} \\ \text{[RK]} &\quad \Box\; \forall x A \;\Longrightarrow\;\Box\; \forall x B\; \text{ ├ }\;\Box \; \forall x (A \Longrightarrow\; B)\ & \ & \; \text{( :: Modales Prinzip KRIPKE-Γ-Ɐx)} \\ \text{(Theorem 1)} &\quad P\ X \;\Longrightarrow\; \Diamond \; \exists x \ X \ x \ & \ & \text{ (◇ :: „möglich“ ↔ „konsistent“ ↔ „denkbar“; □ :: „notwendig“) } \\ \text{ } & \text{„Positive Eigenschaften sind konsistent“} & \ & \Longleftarrow\; \text{was zu beweisen ist !} \\ \text{01} & \quad P\ X \ & \ & \text{ AE: „Angenommen, es gibt positive Eigenschaften, Perfektionen“} \\ \text{02} & \quad P\ X \;\Rightarrow\; \neg \Diamond \; \exists x \ X \ x \ & \ & \text{ AE: „Angenommen, positive Eigenschaften sind nicht konsistent“} \\ \text{03} & \quad (\neg x = .. )\ & \ & \text{ AE: „Es gibt die Eigenschaft, nicht mit x identisch zu sein“ :: (ungleich)} \\ \text{04} & \quad (\ x = .. )\ & \ & \text{ AE: „Es gibt die Eigenschaft, mit x identisch zu sein“ :: (gleich)} \\ \text{05} & \quad \text{ ├ }\; \neg \Diamond \; \exists x \ X \ x \ & \ & \text{:01:02:[Modus ponendo ponens] :: [A, A → B├ B] :AE:} \\ \text{06} & \quad \neg\neg \Box \neg \exists x \ X \ x \ & \ & \text{:05:[ ◇A ↔ ¬□¬A] :: (Modalregel)} \\ \text{07} & \quad \neg\neg \Box \neg\neg \forall x \neg X \ x \ & \ & \text{:06:[∃xA ↔ ¬Ɐx¬A] :: (Quantoren Regel)} \\ \text{08} & \quad \text{ ├ }\; \Box \; \forall x \neg X \ x \ & \ & \text{:07:NEG :: [¬¬A↔A] :: (Gesetz der Aussagenlogik)} \\ \text{09} & \quad \Box \; \forall x \neg X \ x \Leftrightarrow\ W & \ & \text{:02:08:[(:02:↔W) → (├:08:↔W)] :: (Kalkülregel)} \\ \text{10} & \quad \Box \; \forall x \ X \ x \Leftrightarrow\ F & \ & \text{:09:[(¬A↔W)↔(A↔F)] :: (Regel für Wahrheitswerte)} \\ \text{11} & \quad \Box \; \forall x (\neg x = x ) \Leftrightarrow \ F \; \ & \text{ } & \text{□ⱯxXx:03:Instanz(X:=(¬x=..)) ⇒ Kontradiktion !} \\ \text{12} & \quad \Box \; \forall x (\ X \ x \Rightarrow\; (\neg x = x)) & \text{ } & \text{:10:11:[(:10:↔F) → (:11:↔F)] :: „ex falso sequitur quotlibet“ :[RK]} \\ \text{13} & \quad \ P\ X \wedge \;\Box \; \forall x (\ X \ x \Rightarrow\; (\neg x = x)) & \ & \text{:01:12:[Konjunktion] :: [A, B ├ A∧B]} \\ \text{14} & \quad \ (P\ X \wedge \;\Box \; \forall x (\ X \ x \Rightarrow \; (\neg x = x))) \Rightarrow \; P (\neg x = .. ) & \ & \text{(A2):Instanz(Y:=( ¬x= ..)) :: (Substitution für Eigenschaften)} \\ \text{15} & \quad \ P (\neg x = .. ) & \ & \text{:13:14:[Modus ponens] :: (logische Schlussregel)} \\ \text{16} & \quad \ P (\neg x = .. )\;\Rightarrow\ \neg P (\ x = .. )\ & \ & \text{(A1.1):Instanz(X:=(x=..))}\\ \text{17} & \quad \neg P (\ x = .. )\ & \ & \text{:15:16:[Modus ponens]}\\ \text{18} & \quad \Box \; \forall x \ (x = x ) \Leftrightarrow \ W \; \ & \ & \text{□ⱯxXx:04:Instanz(X:=(x=..)) ⇒ Tautologie !} \\ \text{19} & \quad \Box \; \forall x (\ X \ x \Rightarrow\; (x = x)) & \text{ } & \text{:10:18:[(:10:↔F) → (:18:↔W)] :: „ex falso sequitur etiam verum“ :[RK]} \\ \text{20} & \quad \ P\ X \wedge \;\Box \; \forall x (\ X \ x \Rightarrow\; (x = x)) & \ & \text{:01:19:[Konjunktion] } \\ \text{21} & \quad \ (P\ X \wedge \;\Box \; \forall x (\ X \ x \Rightarrow\; (x = x))) \Rightarrow \ P (x = .. ) & \ & \text{(A2):Instanz(Y:=(x=..))} \\ \text{22} & \quad \ P (\ x = .. )\ & \ & \text{:20:21:[Modus ponens]}\\ \text{23} & \quad \text{ ├ }\; (\neg P (\ x = .. )\ \wedge \ P (\ x = .. )) \Leftrightarrow\ F & \ & \text{:17:22:[Konjunktion] ⇒ Kontradiktion !}\\ \text{24} & \quad \neg \Diamond \; \exists x \ X \ x \Rightarrow (\neg P (\ x = .. )\ \wedge \ P (\ x = .. )) & \ & \text{:05:23:[├A├B╞ A→B] :: ''KONDITIONALER BEWEIS''}\\ \text{25} & \quad \neg\neg \Diamond \; \exists x \ X \ x & \ & \text{:24:23:[Modus tollendo tollens] :: [A→B,¬B ├ ¬A]}\\ \text{26} & \quad \text{ ├ }\; \Diamond \; \exists x \ X \ x & \ & \text{:25:NEG; bzw. :05:23:[├¬A→F ╞ A] :: ''INDIREKTER BEWEIS''}\\ \text{27} & \quad \ P\ X \;\Longrightarrow\; \Diamond \; \exists x \ X \ x \ & \ & \text{:01:26:[├A├B ╞ A→B]} \\ \text{(Theorem 1)} & \;\text{„Positive Eigenschaften sind konsistent“} & \ & \Longleftarrow\; \text{was zu beweisen war !} \\ \text{28} & \quad \ P\ G \;\Longrightarrow\; \Diamond \; \exists x \ G \ x \ & \ & \text{:27:Instanz(X:=G) } \\ \text{29} & \quad \Diamond \; \exists x \ G \ x \ & \ & \text{(A3):28:[Modus ponens]} \\ \text{(Korollar 1)} & \;\text{„Das Dasein GOTTES ist definitiv denkbar“} & \ & \text{„Es ist widerspruchsfrei möglich, dass es GOTT gibt“} \\ \end{align}</math> </small> |} Anmerkung-1 ''':''' <span style="color:#00B000">(Der GÖDEL-Term <span style="color:#4C58FF">— ‚'''PX'''‘ —</span>, im Axiom-2 ist an sich überflüssig, da dieser hier als Prämisse :01: ohnehin ,angenommen‘ wird. Der Beweisgang kommt mit Axiom-2 auch ohne diesen GÖDEL-Term zum selben Ergebnis, und verkürzt sich damit sogar um zwei Schritte ''':''' Zeile 13 und Zeile 20 sind dann unnötig.)</span> Der Beweisgang geht mit Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, als Kalkül-Ressource, prinzipiell von der Existenz eines GOTTES aus. Mit der Prämisse :01: <span style="color:#00B000">(hier im 1. Beweisgang)</span> postuliert GÖDEL vorerst allgemein, dass es <span style="color:#FF6000">»''Vollkommenheit, d.h. positive Eigenschaften''«</span> in unserer Welt gibt ''':''' <span style="color:#4C58FF">— ‚'''PX'''‘ —</span>, ohne im Kalkül zu definieren, was darunter zu verstehen ist. Definiert wird dann <span style="color:#00B000">(im 2. Beweisgang)</span>, was eine <span style="color:#FF6000">»''wesentliche Eigenschaft''«</span> ist ''':''' <span style="color:#4C58FF">— ‚'''X'''<sub>ess</sub>‘ —</span>, <span style="color:#00B000">(im Sinne von ,Transzendentalia‘)</span>; und mit Hilfe dieser Eigenschaft definiert GÖDEL <span style="color:#00B000">(im 3. Beweisgang)</span>, was eine <span style="color:#FF6000">»''notwendige Existenz''«</span> ist ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>‘ —</span>, die er <span style="color:#00B000">(im selben Beweisgang)</span> axiomatisch mit den <span style="color:#FF6000">»''positiven Eigenschaften in GOTT''«</span> gleich setzt ''':''' Axiom-5 ''':''' <span style="color:#4C58FF"> —‚'''PE'''<sub>not</sub>‘ —</span>. Erst im 2. Beweisgang wird mit Term :13:, nach einer <span style="font-family: Times;"><big>,Reductio ad absurdum‘</big></span>, definitiv bewiesen <span style="color:#00B000">( ╞ )</span>, dass die, von GÖDEL, hier postulierten, <span style="color:#00B000">(allgemeinen)</span>, positiven Eigenschaften, <span style="color:#4C58FF">— ‚'''PX'''‘ —</span>, tatsächlich auch in GOTT <span style="color:#FF6000">»''positive Eigenschaften''«</span>, <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, sind; <span style="color:#00B000">(das sind die ultimativen ,Transzendentalia‘ in GOTT)</span>. Jetzt aber muss vorerst der ,Wunsch‘, bzw. die LEIBNIZ-Frage beantwortet werden ''':''' Ob, mit <span style="color:#FF6000">»''mathematischer Evidenz''«</span>, <span style="color:#FF6000">»''GOTT''«</span> ,möglich‘ ist, der, nach traditioneller Auffassung, <span style="color:#FF6000">»''ein Wesen von äußerster Größe und Vollkommenheit'' <span style="color:#00B000">[ ist ]</span>, ''das alle Grade derselben in sich schließt''«</span>, <span style="color:#00B000">(nach LEIBNIZ; was GÖDEL mit Definition-1 ,abbildet‘)</span>. Wenn man also beweisen will, dass die Existenz eines solchen ''<span style="color:#FF6000">»GOTTES«</span>'' ,möglich‘ sein soll, dann muss man beweisen, dass dieses postulierte System der <span style="color:#FF6000">»''positiven Eigenschaften in GOTT''«</span> möglich und formal ,widerspruchsfrei‘ ist. Das Ergebnis des 1. Beweisganges, das ,Theorem-1‘, <span style="color:#00B000">(,Erster Satz‘)</span>, fasst A. FUHRMANN zusammen als ''':''' <span style="color:#FF6000">»''Positive Eigenschaften sind konsistent''«</span>. Wenn sie nicht konsistent wären, käme es zu unlösbaren Widersprüchen, <span style="color:#00B000">(Term :24:)</span>. Term :27: ,besagt‘ ''':''' <span style="color:#FF6000">»''Es ist definitiv, d.h. ohne Widerspruch möglich, dass es positive Eigenschaften gibt''«</span>; denn die Behauptung, es sei nicht möglich, dass es positive Eigenschaften, <span style="color:#00B000">(das sind die ,Transzendentalia‘)</span>, in unserer Welt gibt, führt zu einem Widerspruch, und ist daher falsch und ,unlogisch’. Einmal Axiom-1 und zweimal Axiom-2, <span style="color:#00B000">(das die Gleichwertigkeit aller positiven Eigenschaften nachdrücklich klarstellt)</span>, sichern hier die Konsistenz <span style="color:#FF6000">»''aller positiven Eigenschaften in der Welt'', <span style="color:#00B000">[ die ,Transzendentalien‘ ]</span>, ''und damit auch die, die in GOTT sind''«</span>. <span style="color:#00B000">(Der 2. Beweisgang bestätigt, dass es in GOTT tatsächlich positive Eigenschaften gibt.)</span> Die ,Gleichwertigkeit‘ aller Transzendentalia, <span style="color:#00B000">(ihre ,Äquivalenz‘)</span>, ist formal-syntaktisch daran erkennbar, dass die beiden Eigenschafts-Variablen <span style="color:#4C58FF">— ‚'''X'''‘ —</span> und <span style="color:#4C58FF">— ‚'''Y'''‘ —</span> im Axiom-2 für beliebige, unterschiedliche ,positive‘ Eigenschaften gegenseitig austauschbar, <span style="color:#00B000">(,konvertierbar‘)</span>, sind. Das heißt, dass beliebige, unterschiedliche ,positive‘ Eigenschaften, für die diese Variablen stehen, sich paarweise, wechselseitig ,implizieren‘, einschließen, und damit notwendig voneinander abhängen, d.h. koinzident ,eins‘ sind, konvertierbar, und somit gleichwertig sind; entsprechend dem Theorem von den Transzendentalia. Zu Term :29:, dem Korollar zu Theorem-1, notiert GÖDEL am 10. Feb. 1970, <span style="color:#00B000">(übersetzt von Joachim BROMAND)</span> ''':''' <span style="color:#FF6000">»''◇∃xG(x) besagt, dass das System aller positiver Eigenschaften kompatibel ist'',</span> <span style="color:#00B000">[ d.h. miteinander verträglich, weil ohne Widersprüche ].</span> <span style="color:#FF6000">''Dies ist ,wahr‘ auf Grund von Axiom-2,'' <span style="color:#00B000">[ weil alle positiven Eigenschaften, d.h. die Transzendentalien, koinzident gleichwertig und konvertierbar sind ]</span>.«</span> Darum ist es definitiv ,möglich‘, dass es diesen GOTT gibt, der <span style="color:#FF6000">»''alle Grade der Vollkommenheit in sich schließt''«</span> und <span style="color:#FF6000">»''über dem ,Größeres‘ nicht mehr gedacht werden kann''«</span>, und, in weiterer Konsequenz, ist der GOTT-Glaube deshalb ,notwendig‘ widerspruchsfrei und sinnvoll, nach Theorem-3 ''':''' <u>Wenn</u> es ,ohne Widerspruch‘ ''<span style="color:#FF6000">»möglich, bzw. denkbar«</span>'' ist, dass es ''<span style="color:#FF6000">»GOTT«</span>'' gibt, <u>dann</u> folgt daraus ''<span style="color:#FF6000">»notwendig«</span>'' ''':''' es ist auch ,widerspruchsfrei‘, wenn man als Voraussetzung ,annimmt‘, dass es ''<span style="color:#FF6000">»GOTT wirklich, für jede mögliche Welt«</span>'' gibt ''':''' Term :11: im 3. Beweisgang. Der Wenn-Satz ist hier mit Korollar-1 bewiesen; der Dann-Satz wird im 3. Beweisgang bewiesen <span style="color:#00B000">( ╞ )</span>, d.i. die Widerspruchsfreiheit und Sinnhaftigkeit des GOTT-Glaubens. Die ontologische ,Identität‘, d.h. die ,Gleichsetzung‘, bzw. die ,Koinzidenz‘ von Strukturen, die in der Endlichkeit für uns verschieden sind, jedoch in dem unbegrenzt Unendlichen, GOTT, paarweise, perspektivisch in eins zusammenfallen, wie ,Sein‘ und ,Wesen‘, wie ,Ursache‘ und ,Wirkung‘ usw., und auch die Äquivalenz und Austauschbarkeit der Transzendentalien, haben im GÖDEL-Kalkül die logisch-syntaktische Form einer, aus sich, ,modal‘ notwendigen Implikation zwischen zwei verschiedenen, gegenseitig austauschbaren Eigenschafts-Variablen ''':''' <span style="color:#4C58FF">— ‚'''□∀x(Xx→Yx)'''‘ —</span>. Dieses Term-Element stellt formal-syntaktisch die Gleichwertigkeit, <span style="color:#00B000">(Äquivalenz)</span>, bzw. die paarweise Koinzidenz aller positiven Eigenschaften und Zuordnungen in GOTT dar; sowohl hier im Axiom-2, als auch in der Definition-2 über die ,Wesenseigenschaften‘, im 2. Beweisgang, mit jeweils verschiedenen, frei umbenennbaren, Individuum-Variablen. Dieses Term-Element ,gilt‘ allgemein jedoch nur für positive Eigenschaften, alias ,Transzendentalia‘, und wird sofort <span style="color:#FF6000">„modal falsch“</span>, wenn für <span style="color:#4C58FF">— ‚'''X'''‘ —</span>, oder <span style="color:#4C58FF">— ‚'''Y'''‘ —</span>, Eigenschaften eingesetzt werden, die, — von Natur aus —, weder positiv noch negativ sind, wie z. B. ,rot‘ oder ,schwer‘. Die wechselseitige Austauschbarkeit der noch ,unbestimmten‘ Eigenschafts-Variablen, für beliebige positive Eigenschaften, ist formal äquivalent zur freien Umbenennung der noch ,unbestimmten‘ Individuum-Variablen ''':''' <span style="color:#4C58FF">[ FUB(x:=y) ]</span>. Der formale, gegenseitige, allgemeine Austausch der positiven Eigenschafts-Variablen, bzw. die formale Gleichsetzung beliebiger positiver Eigenschaften, kann, auf Grund der Äquivalenz aller Vollkommenheiten, bzw. ,Transzendentalia‘, auch dann noch durchgeführt werden, wenn eine, von zwei Eigenschafts-Variablen, durch eine Definition oder eine Schlussfolgerung ,bestimmt‘ worden ist, und dadurch zu einer positiven Eigenschafts-Konstante, d.h. zu einer ,bestimmten‘, positiven Eigenschaft geworden ist. Das ist z. B. bei einer instanziierenden Substitution der Fall ''':''' <span style="color:#4C58FF">[ Instanz(X:=..) ]</span>. Das ist eine spezifische Eigenheit der GÖDEL-Axiomatik, weil alle relevanten, positiven Eigenschaften und Zuordnungen in GOTT, als <span style="color:#FF6000">„ultimative Transzendentalia“</span>, immer auch miteinander kompatibel sind. Mit dem Term-Element ''':''' <span style="color:#4C58FF">— ‚'''□∀x(Xx→Yx)'''‘ —</span>, wird formal die <span style="color:#FF6000">„Koinzidenz“</span> aller ,Transzententalia‘ in der Welt, und auch der ,Zusammenfall‘ aller Gegensätze in GOTT, abgebildet. Da die Variable <span style="color:#4C58FF">‚'''x'''‘</span> für GOTT steht, <span style="color:#4C58FF">‚'''G'''‘</span>, <span style="color:#00B000">(im Korollar-1)</span>, ist die Eigenschaft ''':''' ''<span style="color:#FF6000">„nicht mit x identisch zu sein“</span>'' ''':''' <span style="color:#4C58FF">(¬x=..)</span>, d.h. das <span style="color:#FF6000">„Ungleichsein“</span>, das <span style="color:#FF6000">„Anderssein“</span> GOTTES, <span style="color:#00B000">(Prämisse :03:)</span>, die entscheidende Voraussetzung und Norm für jeden Diskurs über GOTT ''':''' um der <span style="color:#FF6000">„Unvergleichlichkeit“</span> GOTTES gerecht zu werden, darf GOTT niemals mit etwas aus der ''<span style="color:#FF6000">»zufälligen Struktur der Welt«</span>'' verglichen, d.h. gleich gesetzt werden. Der Term :18: <span style="color:#4C58FF">(x=x) ↔ W</span> erinnert an die Selbstbezeichnung des GOTTES-JHWH in Exodus 3,14 ''':''' <span style="color:#CC66FF">»''Ich bin der ‚Ich-Bin‘''«</span>. <span style="color:#00B000">(In der mystischen Tradition, im ''<span style="font-family: Times;"><big>‚Dialog über die Vorsehung‘</big></span>'', dem Hauptwerk der Heiligen KATHARINA von Siena, Mystikerin und Lehrerin der Kirche, sagt GOTT-VATER zur KATHARINA ''':''' <span style="color:#FF6000">»''ICH BIN der IST'', <span style="color:#00B000">[ aus mir selbst ]</span>, ''du bist, die nicht ist'', <span style="color:#00B000">[ aus dir selbst ]</span>.«</span> Das ist eine wichtige, deutende Ergänzung, und die authentische <span style="color:#4C58FF">,theologische‘</span> Interpretation dieser Exodus Text-Stelle. Das ist der Grund für die <span style="color:#FF6000">„Unvergleichlichkeit“</span> GOTTES.)</span> Zum Term :03: notiert A. FUHRMANN ''':''' <span style="color:#FF6000">»</span> ''Die Notation'' <span style="color:#4C58FF">(¬x=..)</span> ''für die Eigenschaft ''':''' <span style="color:#FF6000">„nicht mit x identisch zu sein“</span>'', <span style="color:#00B000">[ d.h. <span style="color:#FF6000">„Ungleichheit“, „Anderssein“</span>, bzw. die Notation <span style="color:#4C58FF">(x=..)</span> für den Existenzmodus-Perfektion ''':''' <span style="color:#FF6000">„Gleichheit“, „Idendität“</span> ]</span>, ''ist suggestiv und informell und ersetzt hier einen formal korrekten Abstraktionsausdruck wie'' <span style="color:#4C58FF">λy.(¬x=y)</span>, <span style="color:#00B000">[ bzw. <span style="color:#4C58FF">λy.(x=y)</span> ]</span>. ''Für die formal korrektere Notation bedarf es der zusätzlichen Vereinbarung, dass der Ausdruck'' <span style="color:#4C58FF">λy.(¬x=y)</span> ''gleichbedeutend sei mit dem Ausdruck'' <span style="color:#4C58FF">¬λy.(x=y)</span>. ''Diese Vereinbarung ist harmlos, da wir aufgrund der Regel der λ–Konversion'' ''':''' <span style="color:#4C58FF">λy.Xy.x ↔ Xx</span>, <span style="color:#00B000">[ mit der <span style="color:#4C58FF">Instanz(X:=(¬x=..))</span> ]</span>, ''so schließen dürfen'' ''':''' <span style="color:#4C58FF">λy.(¬x=y).x ↔ ¬x=x ↔ <span style="color:#00B000">¬(x=x)</span> ↔ ¬λy.(x=y).x</span> .<span style="color:#FF6000">«</span> <ref>A. FUHRMANN a.a.O. Seite 7, Anmerkung 4 (von mir korrigiert und ergänzt)</ref> In der Kalkül-Zeile 29 wird das Möglichkeits-Korollar-1 durch einen <span style="color:#4C58FF">[ Modus ponens ]</span> mit Axiom-3 von der Kalkül-Prämisse-Term :01: ,abgekoppelt‘, d.h. es ist nicht mehr vom Term :01: <span style="color:#4C58FF">— ‚'''PX'''‘ —</span> logisch abhängig. Das Möglichkeits-Korollar-1 behält jedoch die bewiesene Widerspruchsfreiheit von Theorem-1, und ist damit nur mehr von Axiom-1 und Axiom-2 abhängig, was für das Theorem-ANSELMS am Schluss entscheidend ist. Erklärung zu Term :05: Das Ergebnis einer Logik-Operation zwischen Prämissen ist ,regulär‘ <span style="color:#00B000">(├ )</span> den Prämissen zuzurechnen. Das Modale-Prinzip KRIPKE-Γ-Ɐx, <span style="color:#4C58FF">['''RK''']</span>, in Worten ''':''' <span style="color:#FF6000">»''Wenn mit ,modaler‘ Notwendigkeit'' <span style="color:#00B000">( □ )</span>, ''für alle'' <span style="color:#4C58FF">‚'''x'''‘</span> ''die Aussage'' <span style="color:#4C58FF">‚'''A'''‘</span> ''gilt, und daraus logisch folgt, dass mit ,modaler‘ Notwendigkeit'' <span style="color:#00B000">( □ )</span>, ''für alle'' <span style="color:#4C58FF">‚'''x'''‘</span> ''auch die Aussage'' <span style="color:#4C58FF">‚'''B'''‘</span> ''gilt, dann ist in einem Kalkül regulär'' <span style="color:#00B000">( ├ )</span> ''ableitbar'' ''':''' ''es ist wahr, dass mit ,modaler‘ Notwendigkeit'' <span style="color:#00B000">( □ )</span>, ''für alle'' <span style="color:#4C58FF">‚'''x'''‘</span> ''aus der Aussage'' <span style="color:#4C58FF">‚'''A'''‘</span> ''die Aussage'' <span style="color:#4C58FF">‚'''B'''‘</span> ''logisch folgt''«</span>. Der Term <span style="color:#4C58FF">— ‚'''□∀xXx'''‘ —</span> steht formal-syndaktisch, allgemein für ,Transzendentalia‘, und ist für alle ,Nicht-Transzendentalia‘ <span style="color:#FF6000">„modal falsch“</span>. ====<div class="center"><span style="color:#660066">2. Beweisgang</span></div>==== {|class="wikitable" |- ! <div class="center"><span style="color:#660066">GÖDELS ontologischer Beweis für Theorem 2, (,Basisbeweis‘)</span></div> |- ! <span style="color:#00B000">''Terme der erweiterten Prädikatenlogik zweiter Stufe____________„Benennungen“ und durchgeführte Logik-Operationen''</span> |- | <small> <math>\begin{align} \text{(Axiom 1.2)} & \quad \neg P\ X \;\Longrightarrow\;\ P\neg X\ & \ & \text{„Wenn X nicht positiv ist, dann ist die Negation ¬X positiv“} \\ \text{(Axiom 3)} & \quad \ P\ G \ & \ & \text{„Göttlichkeit, GOTT-Sein, ist eine pos. Eigenschaft“ ↔ „GOTT ist perfekt“} \\ \text{(Axiom 4)} & \quad \ P\ X \;\Longrightarrow\; \Box \; \ P\ X \ & \ & \text{„Positive Eigenschaften sind notwendig aus sich positiv“} \\ \text{(Definition 1)} &\quad \ G\ x \;\Longleftrightarrow\; \forall X(\ P \ X \Longrightarrow \ X \ x)\ & \ & \text{„x ist genau dann GOTT, wenn x alle positiven Eigenschaften hat“} \\ \text{(Definition 2)} & \quad \ X_{ess}\ x \;\Leftrightarrow X\ x \wedge \forall Y \left(\ Y\ x \Rightarrow \Box \; \forall y (\ X\ y \Rightarrow \ Y\ y)\right) & \ & \text{„X ist genau dann eine wesentliche Eigenschaft von x, wenn x sie hat, und} \\ \text{ } & \quad & \text { } & \;\;\text{alle anderen Eigenschaften Y von x notwendig aus dieser Eigenschaft X folgen“} \\ \text{[RM]} &\quad \ A \;\Longrightarrow\;\ B\; \text{ ├ }\;\Box \; A \Longrightarrow\;\Box\; \ B\ & \ & \text{( :: Modales Prinzip)} \\ \text{(Theorem 2)} &\quad \ G\ x \;\Longleftrightarrow\; \ G_{ess}\ x \ & \ & \text{(,G‘ :: „Göttlichkeit“ ↔ „GOTT“ ↔ „Dasein GOTTES“)} \\ \text{ } &\;\text{„Das Wesen GOTTES ist sein Dasein“} & \ & \Longleftarrow\; \text{was zu beweisen ist !} \\ \text{01} &\quad \ G\ x \ & \ & \text{ AE: „Angenommen, x steht für den GOTT der Christen“} \\ \text{02} &\quad \ Y\ x \ & \ & \text{ AE: „Angenommen, GOTT hat die Eigenschaften Y“} \\ \text{03} &\quad \neg P\ Y & \ & \text{ AE: „Angenommen, die Y in GOTT sind nicht positiv“} \\ \text{04} &\quad \neg P \ Y \Rightarrow \ P \neg Y\ & \ &\text{(A1.2):Instanz(X:=Y) :: (Substitution für Eigenschaften) } \\ \text{05} &\quad \ P \neg Y \ & \ & \text {:03:04:[Modus ponens] :: [A, A → B├ B] } \\ \text{06} &\quad \forall X(\ P \ X \Rightarrow \ X \ x)\ & \ &\text{(D1):01:[Modus ponens] :: (logische Schlussregel)} \\ \text{07} &\quad \ P \ X \Rightarrow \ X \ x\ & \ &\text{:06:[ⱯXA(X) ├ A(X)] :: (Quantorenregel)} \\ \text{08} &\quad \ P \neg Y \Rightarrow \neg Y \ x\ & \ &\text{:07:Instanz(X:=¬Y)} \\ \text{09} &\quad \neg Y \ x\ & \ &\text{:05:08:[Modus ponens]} \\ \text{10} &\quad \text{ ├ }\; (Y\ x \wedge \neg Y \ x) \;\Leftrightarrow\;\ F\ & \ & \text{:02:09:[Konjunktion] ⇒ Kontradiktion !} \\ \text{11} &\quad \neg P\ Y \; \Rightarrow \; (Y\ x \wedge \neg Y \ x )\ & \ &\text{:03:10:[├A├B ╞ A → B] :: ''KONDITIONALER BEWEIS''} \\ \text{12} &\quad \neg\neg P\ Y \ & \ &\text{:11:10:[Modus tollendo tollens] :: [A → B,¬B├ ¬A]} \\ \text{13} &\quad \text{ ├ }\; P\ Y \ & \ &\text{:12:NEG; bzw. :03:10:[├¬A→F ╞ A] :: ''INDIREKTER BEWEIS'' :AE:} \\ \text{14} &\quad \ P\ Y \;\Rightarrow\;\Box \; \ P\ Y \ & \ & \text{(A4):Instanz(X:=Y)} \\ \text{15} &\quad \Box \; \ P\ Y \ & \ & \text{:13:14:[Modus ponens]} \\ \text{16} &\quad \ G \ y \Rightarrow \ Y \ y\ & \ &\text{:01:02:[├A├B ╞ A→B]:FUB(x:=y)} \\ \text{17} &\quad \text{ ├ }\; \forall y(\ G \ y \Rightarrow \ Y \ y)\ & \ &\text{:16:[G(y) ├ ⱯyG(y)]} \\ \text{18} &\quad \Box \; \ P\ Y \;\Rightarrow\; \Box \; \forall y(\ G \ y \Rightarrow \ Y \ y)\ & \ &\text{:13:17:[├A├B ╞ A→B]:[RM]} \\ \text{19} &\quad \text{ ├ }\; \Box \; \forall y(\ G \ y \Rightarrow \ Y \ y)\ & \ &\text{:15:18:[Modus ponens]} \\ \text{20} &\quad \ Y\ x \;\Rightarrow\; \Box \; \forall y(\ G \ y \Rightarrow \ Y \ y)\ & \ &\text{:02:19:[├A├B ╞ A→B]} \\ \text{21} &\quad \ (Y\ x \;\Rightarrow\; \Box \; \forall y(\ G \ y \Rightarrow \ Y \ y)) \wedge \ G \ x & \ &\text{:20:01:[Konjunktion] :: [A, B├ A ∧ B]} \\ \text{22} &\quad \ (Y\ x \;\Rightarrow\; \Box \; \forall y(\ X \ y \Rightarrow \ Y \ y)) \wedge \ X \ x\;\Leftrightarrow\; X_{ess}\ x \ & \ &\text{(D2):KOMM(↔):KOMM(∧):[ⱯYA(Y) ├ A(Y)] wegen :13:} \\ \text{23} &\quad \ (Y\ x \;\Rightarrow\; \Box \; \forall y(\ G \ y \Rightarrow \ Y \ y)) \wedge \ G \ x\;\Leftrightarrow\; G_{ess}\ x \ & \ &\text{:22:Instanz(X:=G)} \\ \text{24} & \quad \text{ ├ }\; G_{ess}\ x \ & \ &\text{:21:23:[Modus ponens]:AE: wegen :30:} \\ \text{25} &\quad \ G\ x \;\Rightarrow\; \ G_{ess}\ x \ & \ & \text{:01:24:[├A├B ╞ A→B] :: Theorem 2.1} \\ \text{26} &\quad \forall X(\ P \ X \Rightarrow \ X \ x)\ & \ &\text{(D1):01:[Modus ponens] } \\ \text{27} &\quad \ P \ X \Rightarrow \ X \ x\ & \ &\text{:26:[ⱯXA(X) ├ A(X)]} \\ \text{28} &\quad \ P \ G \Rightarrow \ G \ x\ & \ &\text{:27:Instanz(X:=G)} \\ \text{29} &\quad \text{ ├ }\; G \ x\ & \ &\text{(A3):28:[Modus ponens]} \\ \text{30} &\quad \ G_{ess}\ x \;\Rightarrow \ G \ x\ & \ &\text{:24:29:[├A├B ╞ A→B] :: Theorem 2.2 } \\ \text{31} &\quad \ G\ x \;\Longleftrightarrow\; \ G_{ess}\ x \ & \ & \text{:25:30:[Konjunktion]:BIKONDITIONAL :: [(A→B) ∧ (B→A) ↔ (A↔B)] } \\ \text{(Theorem 2)} &\; \text{„Dasein, GOTT-Sein, ist das Wesen GOTTES“} & \ & \Longleftarrow\; \text{was zu beweisen war ! } \\ \text{32} &\quad \text{ ├ }\; \Box \; \forall y(\ G \ y \Rightarrow \ (x = y))\ & \ & \text{:19:Instanz(Y:=(x=..))} \\ \text{33} &\quad \ G\ x \;\Rightarrow\; \Box \; \forall y(\ G \ y \Rightarrow \ (x = y))\ & \ & \text{:01:32:[├A├B ╞ A→B]} \\ \text{(Korollar 2)} & \;\text{„Es gibt notwendig höchstens einen GOTT“} & \ & \text{„Wenn es GOTT gibt, dann gibt es für jede mögliche Welt nur einen GOTT“} \\ \end{align}</math> </small> |} <span style="color:#00B000"><small>(In den Kalkül-Zeilen 16, 18, 31 mussten zwei-, und in Zeile 22 drei Kalkül-Schritte, d.h. Logik-Operationen in eine Zeile zusammengezogen werden, weil der Parser dieser speziellen Mathematik-Funktion in Wikibooks jedes Mal wegen Puffer-Überlauf abstürzt, wenn zu den bestehenden Zeilen noch eine neue Zeile, oder ein Text-Element, zusätzlich eingefügt wird. Das vermindert etwas die Transparenz des Kalküls.)</small></span> Anmerkung-2 ''':''' <span style="color:#00B000">(Dieser Beweisgang kommt auch ohne das ,unbestimmte‘ Konjunkt <span style="color:#4C58FF"> — ‚'''Xx'''‘ —</span> in der Definition-2 zum gleichen Ergebnis, und wird dadurch um eine Zeile verkürzt ''':''' Zeile 21 entfällt, und <span style="color:#4C58FF">[ KOMM(∧) ]</span> ist dann unnötig. Dieses Konjunkt wird hier ebenfalls schon in der Kalkül-Prämisse :01: <span style="color:#4C58FF"> — ‚'''Gx'''‘ —</span>, als ,Annahme‘ gesetzt, vorentschieden und ,bestimmt‘ mit der <span style="color:#4C58FF">[ Instanz(X:=G) ]</span>. Es war also logisch korrekt, dass GÖDEL, in seiner Notiz vom 10. Feb. 1970 zum ontologischen Beweis, dieses Konjunkt weggelassen hat, was ihm von Kommentatoren als ein Flüchtigkeitsfehler angerechnet worden war. Der gesamte 2. Beweisgang bewegt sich im Geltungsbereich der Prämisse Term :01:, d.h. ist in jeder Zeile von der Annahme abhängig ''':''' die Variable <span style="color:#4C58FF"> — ‚'''x'''‘ —</span> steht für den GOTT der Christen. In der Kalkül-Zeile 33 wird mit Korollar-2 diese Abhängigkeit, für den Term :32:, explizit dargestellt.)</span> Der Beweisgang geht mit der Prämisse :01: prinzipiell, als ,modal‘ freigewählte Voraussetzung, von der Existenz eines GOTTES aus. Im 1. Beweisgang wurde bewiesen, dass die von GÖDEL ,postulierten‘ <span style="color:#FF6000">»''allgemeinen positiven Eigenschaften, Vollkommenheiten, Perfektionen'', <span style="color:#00B000">[ die sog. ,Transzendentalien‘ ]</span> ''konsistent''«</span>, d.i. widerspruchsfrei sind. Hier, in diesem Beweisgang wird nun die Prämisse vom 1. Beweisgang, <span style="color:#4C58FF"> — ‚'''PX'''‘ —</span>, im Bezug auf GOTT hinterfragt ''':''' Gibt es auch in GOTT so Etwas, wie <span style="color:#FF6000">»''Vollkommenheit, Positives, Perfektes''«</span> '''?''' Die ,Annahme‘ jedoch, dass es <span style="color:#FF6000">»''in GOTT keine Vollkommenheit, nichts Positives, nichts Perfektes''«</span> <span style="color:#00B000">(keine Transzendentalien)</span> gibt, <span style="color:#00B000">(Prämisse Term :03:)</span>,<span style="color:#4C58FF"> — ‚'''¬PY'''‘ —</span>, d.h. dass die <span style="color:#00B000">(wesentlichen)</span> Eigenschaften in GOTT keine <span style="color:#FF6000">„Vollkommenheiten“</span> seien, führt aber zu einem unlösbaren Widerspruch, <span style="color:#00B000">(Term :10:)</span>. Mit Term :13:, als 1. Hauptergebnis, ist damit, — als ,neue‘ Prämisse, <span style="color:#00B000">(ersetzt Term :03:)</span> —, definitiv ,bewiesen‘ <span style="color:#00B000">( ╞ , d.h. es ist ,wahr‘ und ,widerspruchsfrei‘)</span>, dass alle Eigenschaften, die hier mit <span style="color:#4C58FF">— ‚'''Y'''‘ —</span> symbolisiert werden, <span style="color:#FF6000">„positive Eigenschaften“</span>, d.h. <span style="color:#FF6000">„Perfektionen“</span> sind, von denen das Kalkül ,annimmt‘, <span style="color:#00B000">(Prämissen Term :01:, Term :02: und speziell Term :16:)</span>, dass der GOTT der Christen sie besitzt. Alle ,Wesenseigenschaften‘ in GOTT ''':''' <span style="color:#4C58FF">— ‚'''Y'''<sub>ess</sub>‘ —</span>, die durch den Term :13:, <span style="color:#4C58FF">— ‚'''PY'''‘ —, </span> dargestellt werden, sind somit <span style="color:#FF6000">„Vollkommenheiten“</span> ''':''' <span style="color:#4C58FF">— ‚'''P'''‘ —</span><span style="color:#00B000">, (,ultimative Transzendentalien‘, aller ,Grade‘)</span>. Damit ist definitiv ‚bestätigt‘, <span style="color:#00B000">( ╞ , es ist ,wahr‘ und ,widerspruchsfrei‘)</span>, was mit Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, schon ‚angenommen‘ worden ist ''':''' <span style="color:#FF6000">»''GOTT ist perfekt; er hat alle positiven Eigenschaften''«</span>; und auch Definition-1 ist damit ,verifiziert‘ ''':''' <span style="color:#FF6000">»''GOTT ist genau deswegen GOTT, weil er, als GOTT, positive Eigenschaften aller Grade in sich schließt''«</span>; entsprechend dem Quelltext bei LEIBNIZ ''':''' <span style="color:#FF6000">»''GOTT ist ein Wesen von äußerster Größe und Vollkommenheit, das alle Grade derselben in sich schließt''«</span>. Immer vorausgesetzt, <span style="color:#00B000">(,angenommen‘)</span>, man glaubt an GOTT ''':''' <span style="color:#00B000">(Term :01:)</span>. <span style="color:#00B000">(Der ,Schlüsselbegriff‘ <span style="color:#4C58FF">— ‚'''P'''‘ —</span> ist der ,Schlüssel‘ zur Erkenntnis, dass GOTT ,notwendig‘, sowohl ,wesentlich‘ für uns, als auch an sich ,grundlos‘, immer schon ,da‘ ist.)</span> Hier, <span style="color:#00B000">(im 2. Beweisgang)</span>, hat Axiom-1, <span style="color:#00B000">(im Term :04:)</span>, sicher gestellt, dass die Eigenschaften in GOTT, <span style="color:#00B000">(Definition-1; Term :06:)</span>, tatsächlich <span style="color:#FF6000">„ultimativ positiv, perfekt und vollkommen“</span> sind ''':''' <span style="color:#4C58FF">— ‚'''PY'''‘ —</span>. Das GÖDEL-Axiom-1 bezieht seine ,Potenz‘ aus dem Prinzip vom ,auszuschließenden‘ Widerspruch ''':''' eine Eigenschaft kann nicht zugleich ,positiv‘ und ,nicht positiv‘ sein '''!''' Formal lässt sich das 2. Hauptergebnis, Theorem-2 ''':''' <span style="color:#4C58FF">— ‚'''Gx'''↔'''G'''<sub>ess</sub>'''x'''‘ — </span> ''':''' schon aus Term :23: in diesem Beweisgang mit der <span style="color:#4C58FF">[ Vereinfachung ] :: [ A∧B ├ B ]</span> ohne Weiteres ,regulär‘ ableiten, — analog zu den Vorgehensweisen bei A. FUHRMANN und G.J. WIRSCHING. <span style="color:#00B000">(Beide Aussagen dieser ,Konjunktion‘ sind ,gleichwertig‘ und wahr, daher partizipiert das Theorem-2 auch am Ergebnis der Widerspruchsfreiheit von Term :13:, <span style="color:#4C58FF">— ‚'''PY'''‘ —</span>, dem 1. Hauptergebnis. Beide Aussagen interpretieren sich gegenseitig.)</span> Der hier gewählte, etwas längere Weg zum Ergebnis, soll die innere Struktur und Abhängigkeit der Ergebnisse von bestimmten Voraussetzungen offen legen, und ihren ,Zweck‘ verdeutlichen. Die beiden Hauptergebnisse im Basisbeweis gehen vom vorgefundenen und traditionell vorgegebenen Begriff von ,GOTT‘ aus, <span style="color:#00B000">(Term :06:, Term :16: und Term :26:)</span>. Das ,bewiesene‘ <span style="color:#00B000">( ╞ )</span> 1. Hauptergebnis, hier im 2. Beweisgang, Term :13: <span style="color:#4C58FF">— ‚'''PY'''‘ —</span> ''':''' <span style="color:#FF6000">»''die Eigenschaften in GOTT sind vollkommen, d.h. sind die ultimativen Transzendentalia''«</span>, rechtfertigt, bzw. verifiziert sowohl Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, als auch die Definition-1 ''':''' <span style="color:#4C58FF">— ‚'''Gx↔∀X(PX→Xx)'''‘ —</span>, für die Annahme ''':''' den ,GOTT der Christen‘, der deswegen GOTT ist, weil er alle Grade der Vollkommenheit in sich schließt. Und das ebenfalls ,bewiesene‘ <span style="color:#00B000">( ╞ )</span> 2. Hauptergebnis, hier im selben Beweisgang, Theorem-2 ''':''' <span style="color:#4C58FF">— ‚'''Gx'''↔'''G'''<sub>ess</sub>'''x'''‘ —</span> ''':''' <span style="color:#FF6000">»''das Wesen GOTTES ist sein eigenes Sein''«</span>, rechtfertigt, bzw. verifiziert sowohl Axiom-5 ''':''' <span style="color:#4C58FF"> — ‚'''PE'''<sub>not</sub>‘ —</span>, als auch die Definition-3 ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x ↔ ∀X(X'''<sub>ess</sub>'''x →□∃yXy)'''‘ —</span>, für die Wesenseigenschaft ''':''' ,notwendige Existenz‘, und widerlegt den Einwand KANTS, für den Spezialfall ''':''' <span style="color:#4C58FF">— ‚'''x'''‘ —</span> steht für ,GOTT‘. Zwei Axiome und zwei Definitionen von GOTT und seinen Vollkommenheiten werden durch die Ergebnisse im Basisbeweis des GÖDEL-Kalküls in unserer realen Welt als ,wahr‘, <span style="color:#00B000">(genauer als ,widerspruchsfrei‘)</span>, und, — im Rahmen des christlichen Glaubens —, als ,annehmbar‘ bestätigt. <span style="color:#00B000">(Anmerkung zu Term :24: ''':''' eine Prämisse ist regulär-,modal‘ immer ,frei‘ wählbar.)</span> Zusammengefasst heißt das ''':''' die ,strittige‘ Begründung der ,methodologischen‘ Prämisse des GÖDEL-Kalküls ''':''' <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span> ''':''' <span style="color:#00B000">(Prämisse, Term :01:)</span>, weil <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span> ''':''' <span style="color:#00B000">(Korollar-1)</span> ''':''' <span style="color:#FF6000">»''Das <span style="color:#4C58FF">‚'''x'''‘</span> steht für den GOTT der Christen, für den es ohne Widerspruch denkbar ist, dass es ihn gibt''«</span>, <span style="color:#00B000">(ANSELMS Prinzip, trotz der ,Warnung‘ KANTS)</span>, ist ,wahr‘ und für uns ,annehmbar, denn es ist auch, auf Grund der Ergebnisse des 2. Beweisganges, in unserer realen Welt ,wahr‘ und ,annehmbar‘, weil schon als ,widerspruchsfrei‘ verifiziert ''':''' <span style="color:#FF6000">»''Der GOTT der Christen'' <span style="color:#00B000">(Term :01:)</span> '',existiert‘ für uns ,notwendig‘''«</span> ''':''' <span style="color:#4C58FF"> — ‚'''Gx→E'''<sub>not</sub>'''x'''‘ —</span>, <span style="color:#00B000">(d.i. das ,regulär‘-mögliche Korollar sowohl im 2. als auch im 3. Beweisgang)</span>, denn dieser GOTT ist aus sich ,vollkommen‘ ''':''' <span style="color:#4C58FF"> — ‚'''PG'''‘ —</span>, und zu seiner ,Vollkommenheit‘ <span style="color:#4C58FF">— ‚'''P'''‘ —</span> gehört auch notwendig sein ,Existieren‘ ''':''' <span style="color:#4C58FF"> — ‚'''PE'''<sub>not</sub>‘ —</span>. <span style="color:#00B000">(Jeder dieser Terme ist im-, und durch den 2. Beweisgang, im Geltungsbereich der Prämisse Term :01:, als ,wahr‘ und ,annehmbar‘ bewiesen, bzw. verifiziert.)</span> Das ist der ,Kern‘ des ontologischen Arguments, und somit ist auch diese ,strittige‘ Begründung der Prämisse des GÖDEL-Kalküls mit den Maßstäben der modernen Logik <span style="color:#FF6000">»''durchaus vereinbar''«</span>, d.h. sie ist logisch ,richtig‘ und, im Kontext des christlichen Glaubens, vernünftig. Die Annahme des Gegenteils zu dieser Prämisse ''':''' <span style="color:#4C58FF">— ‚'''¬◇∃xGx'''‘ —</span> ''':''' <span style="color:#FF6000">»''Es ist undenkbar, dass es diesen GOTT gibt''«</span>, führt jedoch, unabhängig von jeder Glaubensüberzeugung, zu einem Widerspruch — ist unlogisch und daher ,falsch‘, <span style="color:#00B000">(siehe Anhang ''':''' Widerlegung)</span>. Die Behauptung einer ,formalen Unentscheidbarkeit‘ zu den Annahmen über die Existenz GOTTES, ob oder nicht, <span style="color:#00B000">(d.h. ein ,methodologischer‘ Agnostizismus)</span>, ist gegen jede ,Logik‘; und ist auch ,falsch‘, d.h. der Agnostizismus ist einfach nur ein ,logischer Irrtum‘. Denn aus dem, im Kalkül abgeleiteten, Widerspruch aus der einen Annahme, und damit ihrer Unrichtigkeit, folgt notwendig die Richtigkeit der gegenteiligen Annahme. Damit ist eine klare Entscheidung getroffen. Das Modale-Prinzip <span style="color:#4C58FF">['''RM''']</span> in Worten ''':''' <span style="color:#FF6000">»''Wenn es wahr ist, dass aus'' <span style="color:#4C58FF"> — ‚'''A'''‘ —</span> ''ein'' <span style="color:#4C58FF"> — ‚'''B'''‘ —</span> ''logisch folgt, dann ist in einem Kalkül regulär'' <span style="color:#00B000">( ├ )</span> ''ableitbar, dass, wenn'' <span style="color:#4C58FF"> — ‚'''A'''‘ —</span> '',modal‘ notwendig'' <span style="color:#00B000">( □ )</span> ''ist, auch'' <span style="color:#4C58FF"> — ‚'''B'''‘ —</span> '',modal‘ notwendig'' <span style="color:#00B000">( □ )</span> ''ist''«</span>. <span style="color:#00B000">(Das <span style="color:#4C58FF"> — ‚'''A'''‘ —</span> in Term :18: ist als ,modal notwendig‘ durch den Term :15: verifiziert '''!''' )</span> Mit dem 2. Hauptergebnis, Theorem-2 ''':''' <span style="color:#FF6000">»'',Dasein‘ ist das ,Wesen‘ GOTTES''«</span>, folgt die GÖDEL-Axiomatik der philosophisch-<span style="color:#4C58FF">,theologischen‘</span> Tradition der ,Rede von GOTT‘ seit ARISTOTELES, und schließt sich damit formal-syntaktisch zugleich auch der religiösen Überzeugung der Christen an, die glauben, dass GOTT, als unser Vater, aus Liebe, in seinem Sohn, JESUS CHRISTUS, für uns immer schon <span style="color:#FF6000">»''da''«</span> ist, <span style="color:#00B000">(der Sohn ist koinzident ,eins‘ mit GOTT, dem Vater und dem GEIST)</span>, wirksam in und durch seine <span style="color:#4C58F0">„Kirche“</span>, im HEILIGEN GEIST, bis ans Ende der Zeit. Das ist das, <span style="color:#FF6000">»''was''«</span> GOTT eigentlich für uns ausmacht, — die Selbstmitteilung seines unergründlichen Wesens in den Sakramenten der <span style="color:#4C58F0">„Kirche“</span> ''':''' <span style="font-family: Times;"><big>‘אֶֽהְיֶ֖ה אֲשֶׁ֣ר אֶֽהְיֶ֑ה‚</big></span> <span style="color:#00B000">| ‚eh'jeh asher eh'jeh‘ |</span> <span style="color:#CC66FF">»''Ich bin da für euch und für immer, als der ich ''<span style="color:#00B000">[ immer schon gewesen ]</span> ''bin''«</span>; <span style="color:#00B000">(d.i. das <span style="color:#4C58FF">,theologisch‘</span>-exegetische ,Axiom‘ der Christen, und eine <span style="color:#4C58FF">,theologisch‘</span> korrekte Explikation der ,regulären‘ Kalkül-Prämisse Term :01: <span style="color:#4C58FF"> — ‚'''Gx'''‘ —</span>, jeweils im 2. und 3. Beweisgang)</span>. Das heißt aber nicht, dass der Autor des Kalküls sich mit diesem Glauben identifiziert hat, <span style="color:#00B000">(,hat‘ er auch nicht)</span>, oder dass der Leser des ontologischen Beweises von Kurt GÖDEL sich damit identifizieren muss, wenn er dessen <span style="color:#FF6000">»''mathematische Evidenz''«</span> anerkennt. Zur erweiterten <span style="color:#4C58FF">„theologischen“</span> Explikation der Kalkül-Prämisse ''':''' Die <span style="color:#4C58F0">„Kirche“</span> ist das ,Meisterwerk‘ GOTTES ''':''' In ihr ist es GOTT gelungen, etwas Göttliches und Unzerstörbares in unsere korrupte Welt einzupflanzen ''':''' <span style="color:#4C58FF"> — ‚'''Gx→E'''<sub>not</sub>'''x'''‘ —</span> ''':''' <span style="color:#FF6000">»''Etwas Göttliches existiert notwendig, d.h. ,unzerstörbar‘ in unserer Welt''«</span>. Sie ist, durch die Menschwerdung des GOTTES Sohnes, JESUS CHRISTUS, dessen <span style="color:#4C58F0">„Leib“</span> die <span style="color:#4C58F0">„Kirche“</span> ist, untrennbar mit Menschen verbunden, die schon, von allem Anfang an, und jetzt immer noch, durch die Sünde korrumpiert sind. Mit ihr will und wird GOTT unsere Welt und die Menschheit, bis ans Ende der Zeit, von der Sünde und von deren Konsequenz, dem <span style="color:#00B000">(ewigen)</span> Tod <span style="color:#4C58FF">„erlösen“</span>, <span style="color:#00B000">(jedoch nicht ohne die Zustimmung des Menschen)</span>. Mit dieser Explikation wird die Tragweite des ontologischen Arguments ANSELMS, und damit auch die <span style="color:#4C58FF">„theologische“</span> Relevanz der GÖDEL-Axiomatik erkennbar. Immer vorausgesetzt, <span style="color:#00B000">(,angenommen‘)</span>, man glaubt an GOTT, <span style="color:#00B000">(Term :01:)</span>. ====<div class="center"><span style="color:#660066">3. Beweisgang</span></div>==== {|class="wikitable" |- ! <div class="center"><span style="color:#660066">GÖDELS ontologischer Beweis für Theorem 3, (ANSELMS Theorem)</span></div> |- ! <span style="color:#00B000">''Terme der erweiterten Prädikatenlogik zweiter Stufe___________________„Benennungen“ und durchgeführte Logik-Operationen''</span> |- | <small> <math>\begin{align} \text{(Axiom 5)} & \quad P\ E_{not}\; \ & \text { } & \text{„Notwendige Existenz ist eine positive Eigenschaft“} \\ \text{ } & \text{( :: Das ist nur dann wahr, wenn ,Dasein‘ und ,Wesen‘ } & \ & \text{( :: dagegen KANT : ,Existenz‘ ist keine ,Eigenschaft‘,} \\ \text{ } & \;\;\text{in eins zusammenfallen ! ARISTOTELES : Theorem-2)}\ & \ & \;\;\text{,Sein‘ ist für alles, was existiert, kein ,reales Prädikat‘ ! )} \\ \text{(Definition 1)} &\quad \ G\ x \;\Longleftrightarrow\; \forall X(\ P \ X \Longrightarrow \ X \ x)\ & \ & \text{„x ist genau dann GOTT, wenn x alle positiven Eigenschaften hat“} \\ \text{(Definition 3)} & \quad \ E_{not}\ x \;\Longleftrightarrow\;\ \forall X \left(\ X_{ess}\ x \Longrightarrow \Box \; \exists y \ X\ y \right) & \ & \text{„Notwendige Existenz ist genau dann eine Eigenschaft von x, wenn} \\ \text{ } & \quad & \ & \;\;\text{alle wesentl. Eigenschaften von x notwendig instanziiert sind“} \\ \text{(Korollar 1)} & \quad \Diamond \; \exists x \ G \ x \ & \ & \text{„Es ist widespruchsfrei möglich, dass es GOTT gibt“} \\ \text{(Theorem 2)} &\quad \ G\ x \;\Longleftrightarrow\; \ G_{ess}\ x \ & \ &\text{„Dasein, GOTT-Sein, Existenz ist das Wesen, die Essenz GOTTES“} \\ \text{(Korollar 2)} &\quad \ G\ x \;\Longrightarrow\; \Box \; \forall y(\ G \ y \Longrightarrow \ (x = y))\ & \ &\text{„Wenn es GOTT gibt, dann gibt es notwendig nur einen GOTT“} \\ \text{(Theorem 3)} & \quad \Diamond \; \exists x \ G \ x \;\Longrightarrow\; \Box \; \exists x \ G \ x \ & \ & \text{( :: ANSELMS Prinzip)} \\ \text{ } & \text{„Weil es widerspruchsfrei möglich ist, dass es GOTT gibt,} & \ & \Longleftarrow\; \text{was zu beweisen ist !} \\ \text{ } & \;\;\text{ist der Glaube, dass es GOTT wirklich gibt, widerspruchsfrei“} \\ \text{01} & \quad \ G \ x\ & \ & \text{ AE: „Angenommen, x steht für den GOTT der Christen“} \\ \text{02} & \quad \forall X(\ P \ X \Rightarrow \ X \ x)\ & \ & \text{(D1):01:[Modus ponens] :: (logische Schlussregel)} \\ \text{03} & \quad \ P \ X \Rightarrow \ X \ x\ & \ & \text{:02:[ⱯXA(X) ├ A(X)] :: (Quantorenregel)} \\ \text{04} & \quad \ P \ E_{not}\;\Rightarrow \ E_{not}\ x\ & \ & \text{:03:Instanz(X:= Enot) :: (Substitution für Eigenschaften)} \\ \text{05} & \quad \ E_{not}\ x\ & \ & \text{(A5):04:[Modus ponens] :: [A, A → B├ B]} \\ \text{06} & \quad \forall X \left(\ X_{ess}\ x \Rightarrow \Box \; \exists y \ X\ y \right) & \ & \text{(D3):05:[Modus ponens]} \\ \text{07} & \quad \ X_{ess}\ x \Rightarrow \Box \; \exists y \ X\ y & \ & \text{:06:[ⱯXA(X) ├ A(X)]} \\ \text{08} & \quad \ G_{ess}\ x \Rightarrow \Box \; \exists y \ G\ y & \ & \text{:07:Instanz(X:= G)} \\ \text{09} & \quad \ G_{ess}\ x \ & \ & \text{(Th2):01:[Modus ponens]} \\ \text{10} & \quad \text{ ├ }\;\Box \; \exists x \ G\ x & \ & \text{:08:09:[Modus ponens]:FUB(y:=x) :: (Freie-Um-Benennung der Var.)} \\ \text{ } & \text{„Es gibt GOTT wirklich, für jede mögliche Welt“} & \ & \Longleftarrow\; \text{1. Hauptergebnis !} \\ \text{11} & \quad \;\Diamond \exists x \ G \ x \;\Longrightarrow \; \Box \; \exists x \ G\ x & \ & \text{(K1):10:[├A├B ╞ A→B] :: ''KONDITIONALER BEWEIS''} \\ \text{(Theorem 3)} & \;\text{„Weil es widerspruchsfrei möglich ist, dass es GOTT gibt,} & \ & \Longleftarrow\; \text{was zu beweisen war ! 2. Hauptergebnis ! } \\ \text{ } & \;\;\text{ist der Glaube, dass es GOTT wirklich gibt, widerspruchsfrei“} \\ \text{12} & \quad \;\Box \; \forall y(\ G \ y \Longrightarrow \ (x = y))\ & \ &\text{(K2):01:[Modus ponens]} \\ \text{13} & \quad \;\Box \; (\exists x \ G\ x \wedge \; \forall y(\ G \ y \Longrightarrow \ (x = y)))\ & \ & \text{:10:12:[Konjunktion]:DIST(□∧)} \\ \text{(Korollar 3)} & \;\text{„Es gibt notwendig genau nur einen GOTT“} & \ & \text{„Es gibt für jede mögliche Welt nur den GOTT der Christen“} \\ \end{align}</math> </small> |} Anmerkung-3 ''':''' <span style="color:#00B000">(Ein Theorem und zwei Korollare, aus den beiden vorhergehenden Beweisgängen, werden hier, im 3. Beweisgang, zu ,Axiomen‘, die das Theorem-ANSELMS und sein Korollar mit-verifizieren und bestätigen.)</span> Dieser Beweisgang ist das Ziel aller Bemühungen. Hier wird der sog. ,ontologische Gottesbeweis‘ nach ANSELM von Canterbury formal-syntaktisch dargestellt und als logisch nachvollziehbar von GÖDEL bestätigt. Damit hat er aber auch klar gestellt, dass der ontologische Beweis ANSELMS kein Beweis für die ,Existenz‘ des GOTTES der Bibel sein kann, bzw. sein ,will‘ ''':''' Denn mit der Prämisse, <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, <span style="color:#00B000">(Term :01:, wie auch schon im ,Basisbeweis‘, und ausformuliert hier in Term :02:, mit der Definition für GOTT)</span>, wird mit dem traditionellen, abendländischen ,GOTT-Glauben‘, der ,glaubt‘, dass der Gott der Christen tatsächlich existiert, — methodologisch als ,Annahme‘ —, der Beweisgang schon regulär und explizit eröffnet, aus dem sich dann, logisch korrekt, mit Hilfe der GÖDEL-Axiome und Definitionen, das ,Theorem ANSELMS‘ ergibt; <span style="color:#00B000">(hier jedoch, mit Günther J. WIRSCHING, ohne den Umweg bei GÖDEL über den <span style="color:#4C58FF">[ Modus Barbara ] :: [ A → B, B → C ├ A → C ] </span>, mit dem modalen Axiom-BECKER ''':''' <span style="color:#4C58FF">— ‚'''◇□A→□A'''‘ —</span>, als <span style="color:#4C58FF">‚B → C‘</span> im kategorischen Syllogismus, das André FUHRMANN recherchiert hat)</span>. GÖDEL verwendet zur Darstellung des sog. ,ontologischen Gottesbeweises‘ nach ANSELM die Struktur eines modal-logischen Kalküls. Ein modal-logisches Kalkül ist ein genau geregeltes Schema, in dem bei bestimmten ,Annahmen‘ <span style="color:#00B000">(Axiome, Definitionen, Prämissen)</span> etwas anderes als das Vorausgesetzte, auf Grund des Vorausgesetzten mit Notwendigkeit folgt. Entsprechend der ,Modalität‘ der sechs ,modal‘ notwendigen, d.h. transzendentalen Voraussetzungen, hier, für den 3. Beweisgang, die in den <span style="color:#00B000">(und durch die)</span> beiden vorhergehenden Beweisgängen schon als <span style="color:#FF6000">„modal wahr“</span>, bzw. als logisch annehmbar, verifiziert und/oder ,bewiesen‘ wurden, sind auch die beiden ,Schlusssätze‘ <span style="color:#00B000">(Theorem-3 und Korollar-3)</span> <span style="color:#FF6000">„modal wahr“</span>, bzw. logisch annehmbar '''!''' Die Wahl der Prämisse :01: dagegen ist nicht ,modal‘ notwendig, sondern beruht auf einer freien Entscheidung, und damit ist auch ihre Interpretation eine freie Entscheidung, mit der Voraussetzung, dass man das Kalkül mit Theoremen aus der <span style="color:#4C58FF">„christlichen Theologie“</span> evaluieren, und damit interpretieren will. Dazu berechtigt die Genese des Kalküls. Der Glaube an den GOTT der Christen ''':''' <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, beruht immer auf einer freien Entscheidung. Das Kalkül, als solches, unabhängig von jeder Interpretation seiner Syntax, ist genau dann ,allgemein‘ <span style="color:#FF6000">»''mathematisch evident''«</span>, d.h. ,ist allgemein gültig‘, wenn es gültigen Logik-Regeln folgt. Die Bestimmung seiner Syntax jedoch, d.h. seine Interpretation, unterliegt hermeneutischen Kriterien, die nicht von Logik-Regeln abhängen, wie hier ''':''' <span style="color:#FF6000">»''(unabhängig von der zufälligen Struktur der Welt). Nur dann sind die Axiome wahr''«</span>, wie GÖDEL selbst hinzufügt. Mit der, — von GÖDEL eingeforderten —, ‚Unabhängigkeit‘ der Kalkül-Axiome von der zufälligen Struktur der Welt, wird implizit für das Kalkül auch festgelegt, dass <span style="color:#FF6000">„GOTT“</span> ‚unabhängig‘ von der zufälligen <span style="color:#00B000">(Raum-Zeit-)</span>Struktur unserer vergänglichen Welt, und daher ,zeitlos-ewig‘ ist, <span style="color:#00B000">(was <span style="color:#4C58FF">„theologisch“</span> korrekt ist)</span>, begründet durch Definition-1 und Axiom-3. Aus der zeitlosen Ewigkeit GOTTES folgt, dass GOTT, <span style="color:#FF6000">„unverursacht“ <span style="color:#00B000">|</span> „grundlos“</span>, für uns immer schon ‚da‘ ist, denn bei Zeitlosigkeit gibt es keinen ,zeitlichen‘ und damit auch keinen ,ontologischen‘ Unterschied zwischen ‚Ursache‘ und ‚Wirkung‘. Beides ist dann koinzident ,eins‘ ''':''' wie ,Wesen‘ und ,Dasein‘ in GOTT, bzw. wie ,Begriff‘ und ,Sein‘, oder ,Möglichkeit‘ und ,Wirklichkeit‘. <span style="color:#00B000">(Man vergleiche damit auch die ,postulierte‘ Einheit von ,Erkenntnisobjekt‘ und ,Erkenntnissubjekt‘ im ,Gott‘ des ARISTOTELES ''':''' im <span style="color:#FF6000">»<span style="color:#00B000">[ selbstbewussten ]</span> ''Erkennen seiner Erkenntnis''<span style="color:#00B000">[-Tätigkeit ]</span>«<span style="color:#00B000"> | </span>„<span style="font-family: Times;"><big>νοήσεως νόησις</big></span>“<span style="color:#00B000"> | </span>„noêseôs noêsis“</span> <small>(‚<span style="font-family: Times;"><big>''Metaphysik''</big></span>‘ XII 9, 1074b34)</small>, im Vollzug seiner Funktion als ,unbewegtes Bewegungsprinzip‘, als <span style="color:#FF6000">„<span style="font-family: Times;"><big>πρῶτον κινοῦν ἀκίνητον</big></span>“<span style="color:#00B000"> | </span>„prôton kinoûn akinêton“</span> der Welt, das alles Übrige <span style="color:#FF6000">»''wie ein Geliebtes''«<span style="color:#00B000"> | <span style="color:#FF6000">„<span style="font-family: Times;"><big>ὡς ἐρώμενον</big></span>“</span> | <span style="color:#FF6000">„hôs erômenon“</span> bewegt; d.h. christlich ''':''' <span style="color:#FF6000">»''aus Liebe''«</span> ,entstehen‘ lässt.)</span> Anmerkung-4 ''':''' Das <span style="color:#00B000">(im 2. Beweisgang)</span> schon bewiesene Theorem-2, d.i. die Koinzidenz von <span style="color:#FF6000">„Sein“</span> und <span style="color:#FF6000">„Wesen“</span> in GOTT, <span style="color:#00B000">(‚Existenz‘</span> und <span style="color:#00B000">‚Essenz‘)</span>, rechtfertigt sowohl Axiom-5 als auch die Definition-3, und widerlegt den Einwand KANTS. Somit ist deren Setzung <span style="color:#00B000">(hier, im 3. Beweisgang)</span> korrekt, und durch das Theorem-2 schon vorbestimmt und bestätigt, d.h. beide sind <span style="color:#FF6000">„modal wahr“</span> und ,logisch‘ annehmbar, da sie durch die Gültigkeit von Theorem-2 ,verifiziert‘ worden sind. Damit wird klar erkennbar, dass das Theorem-2 tatsächlich die Basis des GÖDEL-Kalküls ist. Und wenn damit Axiom-5 im GÖDEL-Kalkül ‚gerechtfertigt‘ ist, dann ist auch, <span style="color:#00B000">(als Voraussetzung dafür)</span>, das Axiom-4 ''':''' <span style="color:#4C58FF">— ‚'''PX → □PX'''‘ — ''':''' </span> <span style="color:#FF6000">»''Positive Eigenschaften'', <span style="color:#00B000">[ ,Transzendentalia‘ ]</span>, ''sind notwendig aus sich'', <span style="color:#00B000">[ von Natur aus ]</span>, ''positiv''«</span>, im 2. Beweisgang erklärbar, in dem die ‚Positivität‘, <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, einer Eigenschaft schon als ‚notwendig‘, <span style="color:#4C58FF">— '''□''' —</span>, charakterisiert worden ist, äquivalent zu Axiom-5 ''':''' <span style="color:#4C58FF"> — ‚'''PE'''<sub>not</sub>‘ —</span>, in dem die ‚Notwendigkeit‘, <span style="color:#4C58FF">— <sub>not</sub> —</span>, <span style="color:#00B000">(der Existenz <span style="color:#4C58FF">— ‚'''E'''‘ —</span>)</span>, dann als ‚positive‘ Eigenschaft, <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, ‚bestimmt‘ wird; <span style="color:#00B000">(unter der speziellen Voraussetzung, dass <span style="color:#FF6000">„Existieren“</span> definitiv als eine <span style="color:#FF6000">„Wesenseigenschaft“</span> in GOTT ,instanziiert‘ ist; vgl. Definition-3. Eine ,bestimmte‘ Eigenschaft ist genau dann ,instanziiert‘, wenn sie an einem Träger real ,existiert‘. Definition-3 ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x ↔ ∀X(X'''<sub>ess</sub>'''x →□∃yXy)'''‘ —</span>, besagt, dass die, von GÖDEL ,postulierte‘, und im Basis-Theorem-2 verifizierte, <span style="color:#FF6000">„notwendige Existenz“</span> zu den ,ultimativen‘ Transzendentalia in GOTT gehört. Genauer ''':''' Sie ist die ,Summe‘ aller Transzendentalia.)</span> Zum Axiom-4, <span style="color:#00B000">(bzw. zum Term :14:, im 2. Beweisgang)</span>, erklärt GÖDEL in seinen Notizen zum Kalkül ''':''' <span style="color:#FF6000">»''da es'' <span style="color:#00B000">[ das Notwendigsein, <span style="color:#4C58FF">— '''□''' —</span> ]</span> ''aus der Natur der'' <span style="color:#00B000">[ positiven ]</span> ''Eigenschaft folgt'', <span style="color:#00B000">[ deren Positivität, im selben Beweisgang, mit Term :13: vorher schon ,bewiesen‘ (╞ ) worden ist ]</span>«</span>. Die GÖDEL-Erklärung zum Axiom-4 entspricht der Modal-Regel zur sog. ,Nezessisierung‘ in der KRIPKE-Logik nach GÖDEL. <span style="color:#4C58FF">[ Nezessisierungsregel ] '''::''' [ ├ A →├ □ A ]</span> ''':''' <span style="color:#FF6000">»''Angenommen'', <span style="color:#4C58FF">‚'''A'''‘</span> ''ist in einem Kalkül eine Prämisse, oder darin regulär'' <span style="color:#4C58FF">(├ )</span> ''abgeleitet, dann folgt in diesem Kalkül regulär'' <span style="color:#4C58FF">(├ )</span>, ''dass dieses'' <span style="color:#4C58FF">‚'''A'''‘</span> ''auch ,modal‘ notwendig'' <span style="color:#4C58FF">— ,□‘ —</span> ''ist''«</span>. GÖDEL hat jedoch diese modale Notwendigkeit nur in der ,Natur‘ der positiven Eigenschaften, alias ,Transzendentalia‘, gesehen, und mit den Aussagen im Axiom-4 expliziert ''':''' <span style="color:#4C58FF">— ‚'''PX → □PX'''‘ —</span> ''':''' <span style="color:#FF6000">»''unabhängig von der zufälligen Struktur der Welt, nur dann sind die Axiome wahr''«</span>. Ob dieselbe modale Notwendigkeit auch auf Aussagen über Eigenschaften, wie ,rot‘ oder ,schwer‘, die weder positiv noch negativ sind, zutrifft, ist nicht erwiesen. Hier kann nur von modaler ,Kontingenz‘ gesprochen werden, die universal, alles Seiende innerhalb der <span style="color:#FF6000">»''zufälligen Struktur der Welt''«</span> betrifft. Somit sind die Aussagen <span style="color:#4C58FF">— ‚'''A'''‘ —</span> in der GÖDEL-Regel, nur auf Aussagen über ,positive‘ Eigenschaften eingeschränkt, und nicht allgemein gültig. Die <span style="color:#4C58FF">[ Nezessisierungsregel ]</span> ist nur für <span style="color:#FF6000">„Transzendentalia“ „modal wahr“</span>, und für ,Nicht-Transzendentalia‘ immer <span style="color:#FF6000">„modal falsch“</span>. Der unbegrenzt Unendliche, GOTT, — im Glauben der Christen —, ist deswegen ,notwendig für uns da‘ ''':''' <span style="color:#4C58FF">— ‚'''Gx→E'''<sub>not</sub>'''x'''‘ —</span>, weil er als GOTT ,vollkommen‘, ,perfekt‘ und absolut ,positiv‘, d.h. absolut ,gut allein‘ ist, ohne jede Negativität ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>; <span style="color:#00B000">(was auch schon im 2. Beweisgang mit Term :13: verifiziert wurde)</span>. Und wenn GOTT ,vollkommen‘, ,perfekt‘, ,positiv‘, und absolut ,gut‘ ist, dann ist er das auch ,notwendig aus sich‘ ''':''' <span style="color:#4C58FF">— ‚'''PG → □PG'''‘ — ::</span> <span style="color:#00B000">(als Zusatz-Korollar im 2. Beweisgang mit Axiom-4 und der <span style="color:#4C58FF">[ Instanz(X:=G) ]</span>)</span>, d.h. ,aus seinem Wesen‘. Das ist gerade das, ,was‘ GOTT als GOTT ausmacht ''':''' sein ,Wesen‘, bzw. seine <span style="color:#FF6000">„Natur“</span>. Zusammen mit der Definition-1 für GOTT, <span style="color:#00B000">(und der Definition-2 ''':''' Alle Wesenseigenschaften hängen notwendig gleichwertig aus sich zusammen)</span>, ist dieses, aus der <span style="color:#FF6000">„Natur“</span> GOTTES sich ergebende, ‚Notwendigsein‘, <span style="color:#4C58FF">— '''□''' —</span>, aller ‚positiven‘ Eigenschaften im Axiom-4, und ihr logischer Zusammenhang, d.i. die Koinzidenz aller ,Vollkommenheiten‘ und ,Zuschreibungen‘ im Unendlichen, GOTT, ihr ,Zusammenfallen in eins‘, die entscheidende Voraussetzung, aus der sich dann für GÖDEL <span style="color:#00B000">(im 2. Beweisgang)</span> auch der logische Zusammenhang, bzw. die ontologische Identität, <span style="color:#00B000">(die Koinzidenz)</span>, von <span style="color:#FF6000">„Dasein“</span> und <span style="color:#FF6000">„Wesen“</span> in GOTT, im Basis-Theorem-2 ''':''' <span style="color:#4C58FF"> — ‚'''Gx↔G'''<sub>ess</sub>'''x'''‘ —</span> mit Notwendigkeit ergibt. Damit hat GÖDEL ein altes <span style="color:#4C58FF">„theologisches“</span> Theorem der Vergessenheit entrissen. Das Theorem-2 ist dann, in weiterer Folge, die ,modal‘ notwendige, d.h. die transzendentale Voraussetzung auch für den Konsequenz-Teil im Theorem ANSELMS, <span style="color:#00B000">(Term :09: hier im 3. Beweisgang)</span>. <span style="color:#FF6000">„Positive Eigenschaften“<span style="color:#00B000"> | </span>„Vollkommenheiten“</span> sind ,immer‘ auch <span style="color:#FF6000">„notwendige Eigenschaften“</span>, daher ''':''' <span style="color:#4C58FF"> — ‚'''PE'''<sub>not</sub>‘ —</span>. Das ,Dasein‘, die <span style="color:#FF6000">„Existenz“</span> ist ,immer‘ etwas <span style="color:#FF6000">„Positives“</span>, speziell in GOTT, dem Schöpfer jeder ,Existenz‘, bzw. allen ,Seins‘. Axiom-4 begründet im GÖDEL-Kalkül das Basis-Theorem-2, <span style="color:#00B000">(wie auch das Korollar-3 von der exklusiven Einzigartigkeit GOTTES)</span>, und ,verankert‘ diese Theoreme damit zugleich in der <span style="color:#4C58FF">,theologisch‘</span>-philosophischen Tradition der ,Rede von GOTT‘ bei ARISTOTELES, — AVICENNA, — ANSELM, — DESCARTES, — LEIBNIZ, — HEGEL, — und bei GÖDEL mit äußerster ,logischer‘ Klarheit. Anmerkung-5 ''':''' Der ‚Schlüsselbegriff‘ in diesem Kalkül ''':''' <span style="color:#FF6000">„positive Eigenschaft“</span>, bzw. <span style="color:#FF6000">„Vollkommenheit“<span style="color:#00B000"> | </span>„Perfektion“</span>, <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, dominiert alle Axiome des GÖDEL-Kalküls, jedoch ohne inhaltlich genauer ‚bestimmt‘ worden zu sein. Für <span style="color:#4C58FF">— ‚'''P'''‘ — </span> gibt es keine explizite Definition '''!''' <span style="color:#00B000">(Das Theorem-1 ''':''' <span style="color:#4C58FF">— ‚'''PX→◇∃xXx'''‘ —</span>, besagt nur, dass die ,postulierten‘, positiven Eigenschaften, die <span style="color:#FF6000">„Transzendentalia“</span>, formal miteinander verträglich, d.h. ‚widerspruchsfrei‘ sind, wegen Axiom-2. Axiom-2 ''':''' <span style="color:#4C58FF">— ‚'''PX ∧ □∀x(Xx→Yx)→PY'''‘ —</span>, besagt, dass positive Eigenschaften ,gleichwertig‘ sind, d.h. gleich ,wahr‘ sind, weil sie ,notwendig‘, <span style="color:#4C58FF">— '''□''' —</span>, aus sich, alle paarweise mit- und voneinander ,impliziert‘ sind, sich gegenseitig ,einschließen‘, und damit eine Einheit bilden, d.h. in GOTT ,eins‘ sind. Axiom-2 ist somit zugleich eine ,indirekte‘ Definition für ,positive‘ Eigenschaften ''':''' <span style="color:#4C58FF">— ‚'''P'''‘ —</span>. Definition-2 ''':''' <span style="color:#4C58FF">— ‚'''X'''<sub>ess</sub>'''x ↔ Xx ∧ ∀Y(Yx→ □∀y(Xy→Yy))'''‘ —</span>, besagt ''':''' Weil die ,gleichwertigen‘, positiven Eigenschaften sich gegenseitig implizieren, und damit notwendig von einander abhängen, d.h. koinzident in GOTT ,eins‘ sind, — wenn <span style="color:#4C58FF">‚'''x'''‘</span> für GOTT steht —, dann sind sie somit auch die ,wesentlichen‘ Eigenschaften, die <span style="color:#FF6000">„ultimativen Transzendentalia“</span>, in GOTT, der, wesentlich und exklusiv, notwendig ,Einer‘ ist. Die Definition-2 ist nur dann <span style="color:#FF6000">„modal wahr“</span>, wenn ihre Eigenschafts-Variablen, <span style="color:#4C58FF">— ‚'''X'''‘ —</span> und <span style="color:#4C58FF">— ‚'''Y'''‘ —</span>, mit positive Eigenschaften, d.h. mit <span style="color:#FF6000">„Transzendentalien“</span>, besetzt werden. Diese Definition ist jedoch sofort <span style="color:#FF6000">„modal falsch“</span>, wenn ihre Variablen mit nicht-positive Eigenschaften, wie ,rot‘ oder ,schwer‘ belegt werden, die nicht ,transzendental‘-allgemein gültig sind. Fußnote zu Definition-2 in der GÖDEL-Notiz ''':''' <span style="color:#FF6000">»''any two essences of x are nec. equivalent''«</span>. Die paarweise, notwendige Äquivalenz von zwei beliebigen Wesenseigenschaften der Individuum-Variable <span style="color:#4C58FF">‚'''x'''‘</span>, wird hier, spezifisch für GOTT, d.h. wenn <span style="color:#4C58FF">‚'''x'''‘</span> für GOTT, dem ,Einen‘, steht, zur <span style="color:#FF6000">„Koinzidenz“</span>, — zum paarweise ,Zusammenfallen aller Gegensätze in Einem‘ —, dem inneren Zusammenhang aller seiner <span style="color:#FF6000">„ultimativen“</span> Vollkommenheiten, d.h. aller <span style="color:#FF6000">„Transzendentalia“</span> und Zuschreibungen, in dem unbegrenzt Unendlichen, GOTT, den schon der Philosoph und Kardinal NIKOLAUS von Cues als <span style="font-family: Times;"><big>,coincidentia oppositorum‘</big></span> verstanden hat.)</span> In den entscheidenden ‚Schlusssätzen‘ des Kalküls ist der ‚Schlüsselbegriff‘ verschwunden. Hier ist nur mehr von GOTT, <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, die Rede ''':''' Korollar-1, <span style="color:#FF6000">»''Es ist definitiv denkbar, dass es GOTT gibt''«</span>, Theorem-2, <span style="color:#FF6000">»''Dasein, GOTT-Sein, Göttlichkeit ist das Wesen GOTTES''«</span>, Theorem-3, <span style="color:#FF6000">»''Weil GOTT definitiv denkbar, d.h. widerspruchsfrei möglich ist, darum ist auch der Glaube an GOTT widerspruchsfrei, logisch richtig und mathematisch evident, der annimmt, dass es GOTT, mit Notwendigkeit, wirklich gibt''«</span>, <span style="color:#00B000">(nach ANSELM von Canterbury, und was spezifisch das <span style="color:#FF6000">»</span>''Privilegium der Gottheit allein''<span style="color:#FF6000">«</span> ist, nach LEIBNIZ)</span>, und Korollar-3, <span style="color:#FF6000">»''Es gibt notwendig aus sich, d.i. unverursacht, nur einen GOTT''«</span>. Das GÖDEL-Kalkül ist zu diesen Erkenntnissen gekommen, ohne die Eigenschaften, bzw. die ‚Vollkommenheiten‘ GOTTES, d.h. wer oder was GOTT ‚an sich‘ selbst ist, genauer bestimmen zu müssen, <span style="color:#00B000">(was ,für uns‘ ohnehin ,unmöglich‘ ist)</span>; außer im Theorem-2, in dem das <span style="color:#FF6000">„Dasein“</span> GOTTES als die ‚für uns‘ bestimmende und wichtigste <span style="color:#FF6000">„Wesenseigenschaft“</span> in GOTT erkannt worden ist, — immer vorausgesetzt <span style="color:#00B000">(,angenommen‘)</span>, man ‚glaubt‘ an den zeitlos-ewigen GOTT ''':''' <span style="color:#00B000">(Term :01:)</span>. Der GOTT des GÖDEL-Kalküls ist nicht mehr der an Raum und Zeit gebundene ‚Gott‘ des ARISTOTELES, sondern der von Raum und Zeit <span style="color:#FF6000">»''unabhängige''«</span> GOTT der Bibel bei ANSELM und bei LEIBNIZ. Das GÖDEL-Kalkül, <span style="color:#00B000">(wie ja auch der sog. ‚ontologische Gottesbeweis‘ ANSELMS)</span>, kann jedoch, — bei aller ‚Coolness‘ —, keinen GOTT-Glauben ‚erzeugen‘, sondern setzt vielmehr die Existenz GOTTES notwendig als gegeben schon voraus. Das Kalkül des Logiker GÖDEL beweist aber, dass der traditionelle ‚GOTT-Glaube‘, <span style="color:#FF6000">»''die theologische Weltanschauung''«</span>, mit den Maßstäben der modernen Logik <span style="color:#FF6000">»''durchaus vereinbar''«</span>, d.h. logisch ,richtig‘ und <span style="color:#FF6000">»''mathematisch evident''«</span> ist, weil der ‚Nicht-GOTT-Glaube‘, <span style="color:#FF6000">»''die atheistische Weltanschauung''«</span>, im Möglichkeitsbeweis notwendig zu unlösbaren Widersprüchen führt, und somit logisch ,falsch‘ ist. <span style="color:#00B000">(Die ,Logik‘ hat aber, — bekanntlich —, bei allen wichtigen, persönlichen Entscheidungen immer nur eine untergeordnete Rolle '''!''' )</span> Anmerkung-6 ''':''' Das erste, ,regulär‘ <span style="color:#00B000">(├ )</span> abgeleitete, Hauptergebnis im 3. Beweisgang, Term :10: <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span> ''':''' der Glaube, dass GOTT ,notwendig‘ existiert, ist die logische Konsequenz aus der Prämisse, Term :1: <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>. Dieses erste Hauptergebnis hat also den überlieferten, traditionellen GOTT-Glauben zur Voraussetzung, und ist daher davon ,abhängig‘, d.h. Term :10: ist der Ausdruck einer ,Glaubensüberzeugung‘. Das zweite Hauptergebnis im 3. Beweisgang, das Theorem ANSELMS ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx→□∃xGx'''‘ —</span>, dagegen, ist die Darstellung der Abhängigkeit des ersten Hauptergebnisses von dem, vorher schon bewiesenen, ,Axiom‘ von der ,möglichen‘ Existenz GOTTES ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span>, dem Möglichkeits-Korollar-1 aus dem 1. Beweisgang. Dem geht folgende Beobachtung voraus ''':''' Der Term ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span>, hat in seiner syntaktischen Stellung hier, im Theorem-3, nicht mehr den überlieferten, traditionellen GOTT-Glauben zur Voraussetzung, und ist damit, in seiner Position als Konsequenz-Teil im Theorem ANSELMS, auch nicht mehr davon syntaktisch abhängig, sondern stützt sich formal-syntaktisch nur auf die behauptete Möglichkeit GOTTES; daher muss diese ,angenommene‘ Möglichkeit noch bewiesen <span style="color:#00B000">( ╞ )</span> werden. Dazu die Feststellung LEIBNIZ‘, der diesen Zusammenhang, und seinen Mangel, erkannt hat ''':''' ::Das Theorem ANSELMS ist <span style="color:#FF6000">» ''ein unvollständiger Beweis, der etwas voraussetzt, was man noch hätte beweisen'' <span style="color:#00B000">( ╞ )</span> ''sollen, um ihm mathematische Evidenz zu verleihen — nämlich, dass man dabei stillschweigend voraussetzt, diese Vorstellung des durchaus großen oder durchaus vollkommenen Wesens sei möglich und enthalte keinen Widerspruch'' «</span>. Diesen <span style="color:#FF6000">»''unvollständigen Beweis''«</span> hat GÖDEL im 1. Beweisgang mit dem ,regulär‘ <span style="color:#00B000">(├ )</span> abgeleiteten, und widerspruchfreien Möglichkeits-Korollar-1, vervollständigt, und damit hat er mit <span style="color:#FF6000">»''mathematischer Evidenz''«</span> bewiesen ''':''' <span style="color:#FF6000">»''Diese Vorstellung des durchaus großen oder durchaus vollkommenen Wesens''«</span> enthält <span style="color:#FF6000">»''keinen Widerspruch''«</span> '''!''' Das Korollar-1 ist nur vom logischen Axiom-1 und von der mathematischen Äquivalenz der Perfektionen, <span style="color:#00B000">(der Transzendentalien)</span>, im Axiom-2 ,abhängig‘, und nicht mehr von der ,methodologischen‘ Kalkül-Prämisse, dem traditionellen GOTT-Glauben. Damit hat das Glaubens-Theorem ANSELMS die gesuchte <span style="color:#FF6000">»''mathematische Evidenz''«</span> erreicht, unabhängig von jeder Glaubensüberzeugung. Entscheidend dafür ist der mathematisch-logische Beweis GÖDELS, dass der Nicht-GOTT-Glaube zu einem Widerspruch führt. Zusammenfassung ''':''' Theorem-1 ''':''' <span style="color:#4C58FF">— ‚'''PX→◇∃xXx'''‘ —</span> ''':''' <span style="color:#FF6000">»''Positive Eigenschaften sind konsistent''«</span>, ist die logische Konsequenz aus der Prämisse im 1. Beweisgang, Term :01: <span style="color:#4C58FF">— ‚'''PX'''‘ —</span>, den, — <u>modal-frei</u> — gewählten, ,angenommenen‘ positiven Eigenschaften, bzw. ,Transzendentalia‘. Theorem-2 ''':''' <span style="color:#4C58FF"> — ‚'''Gx↔G'''<sub>ess</sub>'''x'''‘ — </span> ''':''' <span style="color:#FF6000">»''GOTT-Sein ist das Wesen GOTTES''«</span>, ist die logische Konsequenz aus der Prämisse im 2. Beweisgang, Term :01: <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, dem, — <u>modal-frei</u> — gewählten, ,angenommenen‘ GOTT-Glauben der Christen. Im Unterschied dazu ist im 3. Beweisgang, das Theorem-3 ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx→□∃xGx'''‘ —</span> ''':''' der Glaube, dass es einen GOTT notwendig gibt ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span>, die logische Konsequenz aus dem, — <u>modal-notwendig</u> — als widerspruchsfrei ,bewiesenen‘, Möglichkeits-Korollar-1 ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span>, im 1. Beweisgang, <span style="color:#00B000">(auch im Beweisgang ,Widerlegung‘ im Anhang)</span>, und damit ist das Glaubens-Theorem-3, als ganzes, ,widerspruchsfrei‘. Das Theorem ANSELMS ist, mit Korollar-1, nur vom logischen Axiom-1 der Widerspruchsfreiheit, und der paarweisen, mathematischen Äquivalenz beliebiger positiver Eigenschaften, <span style="color:#00B000">(aller Transzendentalia)</span>, im Axiom-2, abhängig. Damit ist die Bedingung für die geforderte, spezielle <span style="color:#FF6000">»''mathematische Evidenz''«</span>, und auch für die Widerspruchsfreiheit im Glaubens-Theorem ANSELMS erfüllt; unabhängig von jeder Glaubensüberzeugung. Weil es <span style="color:#FF6000">„modal wahr“</span> ist, dass die Transzendentalien, bzw. die Vollkommenheiten ontologisch, — dem Sein nach —‚ alle <span style="color:#00B000">(zueinander)</span> widerspruchsfrei, und alle <span style="color:#00B000">(miteinander)</span> gleichwertig sind, ist es auch <span style="color:#FF6000">„modal wahr“</span>, dass es möglich ist, dass GOTT, — dem Sein nach —‚ da ist, <span style="color:#00B000">(d.h. existiert)</span>, der die unbegrenzte Summe aller ultimativen Transzendentalia, bzw. der unendlichen Vollkommenheiten allen Grades ist, wie es der ,christliche Glaube‘ des Erzbischofs ANSELM und seiner Anvertrauten ,annimmt‘. ====<div class="center"><span style="color:#660066">Widerlegung</span></div>==== {|class="wikitable" |- ! <div class="center"><span style="color:#660066">GÖDEL-Kalkül : der Möglichkeitsbeweis als Widerlegung des Nicht-GOTT-Glaubens</span></div> |- ! <span style="color:#00B000">''Terme der erweiterten Prädikatenlogik zweiter Stufe_____________ „Benennungen“ und durchgeführte Logik-Operationen''</span> |- | <small> <math>\begin{align} \text{(Axiom 1.1)} & \quad P \neg X \;\Longrightarrow\;\ \neg P\ X\ & \ & \text{„Wenn die Negation von X positiv ist, dann ist X nicht positiv“} \\ \text{(Axiom 2)} & \quad \Box \;\forall x (\ X\ x \Longrightarrow \ Y\ x) \Longrightarrow \ P\ Y & \ & \text{„Die Eigenschaft Y in allen x, die aus der Eigenschaft X in allen x} \\ \text{ } & \quad & \ & \; \; \text{mit modaler Notwendigkeit folgt, ist eine positive Eigenschaft“} \\ \text{[RK]} &\quad \Box\; \forall x A \;\Longrightarrow\;\Box\; \forall x B\; \text{ ├ }\;\Box \; \forall x (A \Longrightarrow\; B)\ & \ & \; \; \text{( :: Modales Prinzip KRIPKE-Γ-Ɐx)} \\ \text{(Korollar-1)} &\quad \Diamond \; \exists x \ G \ x \ & \ & \; \; \text{( „das —,x‘— steht für den GOTT, —,G‘—, der Christen“ )} \\ \text{ } & \text{„Es ist möglich, dass es den GOTT der Christen gibt“} & \ & \Longleftarrow\; \text{was zu beweisen ist !} \\ \text{01} & \quad \; \neg \Diamond \; \exists x \ G \ x \ & \ & \text{ AE: „Es ist unmöglich, dass es diesen GOTT gibt“ (dezidierter Atheismus)} \\ \text{02} & \quad (\neg x = .. )\ & \ & \text{ AE: „Es gibt die Eigenschaft, nicht mit x identisch zu sein“ :: (ungleich)} \\ \text{03} & \quad (\ x = .. )\ & \ & \text{ AE: „Es gibt die Eigenschaft, mit x identisch zu sein“ :: (gleich)} \\ \text{04} & \quad \neg\neg \Box \neg \exists x \ G \ x \ & \ & \text{:01:[ ◇A ↔ ¬□¬A ] :: (Modalregel) } \\ \text{05} & \quad \neg\neg \Box \neg\neg \forall x \neg \ G \ x \ & \ & \text{:04:[ ∃xA ↔ ¬Ɐx¬A ] :: (Quantorenregel) } \\ \text{06} & \quad \text{ ├ }\; \Box \; \forall x \neg G \ x \ & \ & \text{:05:NEG :: [ ¬¬A↔A ] :: (Gesetz der Aussagenlogik) } \\ \text{07} & \quad \Box \; \forall x \neg G \ x \Leftrightarrow\ W & \ & \text{:01:06:[ (:01:↔W) → (├:06:↔W) ] :: (Kalkülregel) } \\ \text{08} & \quad \Box \; \forall x \ G \ x \Leftrightarrow\ F & \ & \text{:07:[ (¬A↔W)↔(A↔F) ] :: (Regel für Wahrheitswerte)} \\ \text{ } & \text{„Jeder GOTT-Glaube ist ganz sicher falsch ! “} & \ & \Longleftarrow\; \text{die logische Konsequenz aus der Prämisse :01: !} \\ \text{09} & \quad \Box \; \forall x (\neg x = x ) \Leftrightarrow \ F \; \ & \text{ } & \text{□ⱯxXx:02:Instanz(X:=(¬x=..)) ⇒ Kontradiktion !} \\ \text{10} & \quad \Box \; \forall x (\ G \ x \Rightarrow\; (\neg x = x)) & \text { } & \text{:08:09:[ (:08:↔F) → (:09:↔F) ] :: „ex falso sequitur quotlibet“ :[RK]} \\ \text{11} & \quad \Box \; \forall x (\ G \ x \Rightarrow \; (\neg x = x)) \Rightarrow \; P (\neg x = .. ) & \ & \text{(A2):Instanz(X:=G):Instanz(Y:=(¬x= ..)) } \\ \text{12} & \quad \ P (\neg x = .. ) & \ & \text{:10:11:[ Modus ponens ] :: [ A→B, A ├ B ]} \\ \text{13} & \quad \ P (\neg x = .. )\;\Rightarrow\ \neg P (\ x = .. )\ & \ & \text{(A1.1):Instanz(X:=(x=..))}\\ \text{14} & \quad \neg P (\ x = .. )\ & \ & \text{:12:13:[ Modus ponens ] :: (log. Schlussregel)}\\ \text{15} & \quad \Box \; \forall x \ (x = x ) \Leftrightarrow \ W \; \ & \ & \text{□ⱯxXx:03:Instanz(X:=(x=..)) ⇒ Tautologie !} \\ \text{16} & \quad \Box \; \forall x (\ G \ x \Rightarrow\; (x = x)) & \ & \text{:08:15:[ (:08:↔F) → (:15:↔W) ] :: „ex falso sequitur etiam verum“ :[RK]} \\ \text{17} & \quad \Box \; \forall x (\ G \ x \Rightarrow\; (x = x)) \Rightarrow \ P (x = .. ) & \ & \text{(A2):Instanz(X:=G):Instanz(Y:=( x= ..))} \\ \text{18} & \quad \ P (\ x = .. )\ & \ & \text{:16:17:[ Modus ponens ]}\\ \text{19} & \quad \text{ ├ }\; (\neg P (\ x = .. )\ \wedge \ P (\ x = .. )) \Leftrightarrow\ F & \ & \text{:14:18:[ Konjunktion ] ⇒ Kontradiktion !}\\ \text{20} & \quad \neg \Diamond \; \exists x \ G \ x \Rightarrow (\neg P (\ x = .. )\ \wedge \ P (\ x = .. )) & \ & \text{:01:19:[ ├A├B╞ A→B ] :: ''KONDITIONALER BEWEIS''}\\ \text{ } & {\color{RedOrange}\text{Der Atheismus führt zu einem logischen Widerspruch ! }} & \ & \Longleftarrow\; \text{was mit Term :20: bewiesen ist !} \\ \text{21} & \quad \neg\neg \Diamond \; \exists x \ G \ x & \ & \text{:20:19:[ Modus tollendo tollens ] :: [ A→B,¬B ├ ¬A ]}\\ \text{22} & \quad \; \Diamond \; \exists x \ G \ x & \ & \text{:21:NEG }\\ \text{(Korollar-1)} & \;\text{„Es ist definitiv möglich, dass es diesen GOTT gibt“} & \ & \Longleftarrow\; \text{was zu beweisen war !} \\ \end{align}</math> </small> |} Anmerkung-7 ''':''' <span style="color:#00B000">( Dieser Beweisgang ist praktisch identisch mit dem 1. Beweisgang, jedoch gestrafft und präzisiert nach G.J.WIRSCHING. Diese Widerlegung des Nicht-GOTT-Glaubens beginnt sofort mit dem Korollar-1 <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span> aus dem 1. Beweisgang, als in Frage gestelltes ,Theorem‘, und beweist, ohne das Axiom-3 <span style="color:#4C58FF">— ,'''PG'''‘ —</span>, und ohne die GÖDEL-Prämisse <span style="color:#4C58FF">— ,'''PX'''‘ —</span>, in einem Zwischenergebnis, die innere Widersprüchlichkeit und damit auch die Unhaltbarkeit der atheistischen Glaubens-Annahme, aus rein logischen ,Gründen‘, bzw. Axiomen. )</span> Dieser Beweisgang geht von der Existenz GOTTES, <span style="color:#4C58FF">— ,'''G'''‘ —</span>, als Glaubens-Annahme, aus, wobei aber die Möglichkeit seiner Existenz, und damit die Sinnhaftigkeit des Glaubens an GOTT, durch die Prämisse :01: in Frage gestellt wird, und daher im Kalkül überprüft werden muss. Denn mit der Behauptung der Existenz GOTTES allein ist es nicht getan. Es muss auch seine ,Möglichkeit‘, d.h. die Sinnhaftigkeit des Glaubens an GOTT aufgewiesen werden. LEIBNIZ hat als erster, <span style="color:#00B000">(nach ANSELM)</span>, dieses Problem gesehen, und GÖDEL hat dafür die Lösung gefunden. Dieser Beweisgang, <span style="color:#00B000">(analog zum Möglichkeitsbeweis von Günther J. WIRSCHING konzipiert)</span>, setzt in den Axiomen, genau wie im 1. Beweisgang, die Existenz von etwas <span style="color:#FF6000">„Positiven“, „Perfekten“, „Vollkommenen“</span>, <span style="color:#4C58FF">— ,'''P'''‘ —</span>, <span style="color:#00B000">(d.h. die Transzendentalien)</span>, allgemein für die Welt voraus, <span style="color:#00B000">(was im Axiom-3 ''':''' <span style="color:#4C58FF">— ,'''PG'''‘ —</span>, auch GOTT ultimativ zugeordnet wird ''':''' <span style="color:#FF6000">»''GOTT ist absolut positiv, perfekt und vollkommen''«</span>)</span>; das dann im 2. Beweisgang mit Term :13: als widerspruchsfrei, <span style="color:#00B000">(als ,wahr‘ und ,annehmbar‘ im Kontext des christlichen Glaubens)</span>, schon ,bewiesen‘ <span style="color:#00B000">( ╞ )</span> worden ist. Die Existenz von ,Transzendentalien‘ in der Welt, ist ein, mit Beispielen belegbares, allgemeines Faktum; ihre Existenz auch in GOTT ist mit dem Term :13: des 2. Beweisganges bewiesen, die jedoch im Unendlichen, GOTT, als Transzendentalia, auch in ,ultimativer‘ Form vorliegen. Axiom-1 ,besagt‘, dass Eigenschaften nicht zugleich, vollkommen und nicht vollkommen, sein können. Axiom-2 ,besagt‘, dass, allgemein, alle Vollkommenheiten, <span style="color:#00B000">(alle Transzendentalien)</span>, gleichwertig, <span style="color:#00B000">(mathematisch äquivalent)</span>, sind. <span style="color:#00B000">(Axiom-2 wird hier um das GÖDEL-Konjunkt <span style="color:#4C58FF">— ,'''PX'''‘ —</span> verkürzt dargestellt. Damit ist auch Axiom-3 für diesen Beweisgang unnötig geworden, ohne dass sich wegen dieser Kürzung am Ergebnis etwas ändert. Axiom-2 wird jedoch sofort <span style="color:#FF6000">„modal falsch“</span>, wenn seine Variablen mit nicht-positive Eigenschaften, wie ,rot‘ oder ,schwer‘ belegt werden, die nicht ,transzendental‘-allgemein gültig sind, die keine ,Transzendentalia‘ sind.)</span> Die Eigenschaft <span style="color:#4C58FF">— (¬x=..) —</span> ,besagt‘, dass GOTT <span style="color:#FF6000">„unvergleichlich“</span> ist, wenn <span style="color:#4C58FF">,'''x'''‘</span> für GOTT steht. <span style="color:#00B000">(Der informelle Term, <span style="color:#4C58FF">— (¬x=..) —</span>, ersetzt hier, wie bei A. FUHRMANN, den formal korrekten Abstraktionsausdruck ''':''' <span style="color:#4C58FF">— λy.(¬x=y) —</span>, aus dem Lambda-Kalkül.)</span> Der Term :16: <span style="color:#4C58FF">— (x=x) ↔ W —</span> steht für die Selbstbezeichnung des GOTTES-JHWH in Exodus 3,14 ''':''' <span style="color:#CC66FF">»''Ich bin der ‚IST‘'' <span style="color:#00B000">(aus mir selbst)</span>«</span>, der Grund für die <span style="color:#FF6000">„Unvergleichlichkeit“</span> GOTTES. Der GOTT der abendländischen, christlichen Tradition wird mit <span style="color:#4C58FF">— ,'''G'''‘ —</span> bezeichnet ''':''' d.i. der <span style="color:#FF6000">„GOTT der Christen“</span>, entsprechend der ,methodologischen‘ Prämisse und der ,Genese‘ des Kalküls, syntaktisch formalisiert in der Definition-1 ''':''' <span style="color:#4C58FF">— ‚'''Gx↔∀X(PX→Xx)'''‘ —</span> ''':''' <span style="color:#FF6000">»''Das Individuum'' <span style="color:#4C58FF">,'''x'''‘</span> ''ist genau dann GOTT'', <span style="color:#4C58FF">,'''G'''‘</span>, ''wenn es alle Vollkommenheiten'', <span style="color:#4C58FF">,'''P'''‘</span>, ''in sich schließt''«</span>, nach der Vorgabe von LEIBNIZ ''':''' <span style="color:#FF6000">»''GOTT ist ein Wesen von äußerster Größe und Vollkommenheit, das alle Grade derselben in sich schließt''«</span>. Mit Korollar-1 hat dieser Beweisgang dasselbe Endergebnis, wie der 1. Beweisgang. Der Beweis, dass der dezidierte Atheismus zu einem logischen Widerspruch führt, und damit falsch ist, ist ein Zwischenergebnis in diesem Beweisgang, und begründet mit <span style="color:#FF6000">»''mathematischer Evidenz''«</span>, und unabhängig von jeder Glaubensüberzeugung, den, von LEIBNIZ gesuchten, Möglichkeitsbeweis für die Existenz GOTTES im Argument des Erzbischofs, und bestätigt damit die Sinnhaftigkeit des GOTT-Glaubens. Einmal Axiom-1 und zweimal Axiom-2 sichern hier das Ergebnis des Kalküls ''':''' das Möglichkeits-Korollar-1 ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span>''':''' <span style="color:#FF6000">»''Es ist definitiv möglich, dass es den GOTT der Christen gibt''«</span>. Diese zwei Axiome sind die einzigen, und modal-notwendigen, d.h. die transzendentalen Voraussetzungen und Bedingungen für das Endergebnis ''':''' der Widerspruchsfreiheit und Sinnhaftigkeit des Glaubens der Christen an GOTT; <span style="color:#00B000">(dasselbe gilt natürlich auch für die <span style="color:#4C58FF">„theologische“</span> Weltanschauung jeder monotheïstischen Religion '''!''' Dem Erzbischof ANSELM ging es damals nur um seinen Glauben an GOTT.)</span>. Die Logik-Regel <span style="color:#FF6000"><span style="font-family: Times;"><big>„ex falso sequitur quotlibet, etiam verum“</big></span></span>, <span style="color:#00B000">(‚Aus Falschem folgt irgendetwas, auch Wahres‘)</span>, ist der scholastische Ausdruck für die ‚Implikation‘ <span style="color:#00B000">(Folgerung)</span> von Aussagen, die nur dann falsch, <span style="color:#4C58FF">— F —</span> ist, wenn das Antezedens wahr, <span style="color:#4C58FF">— W —</span>, und die Konsequenz falsch, <span style="color:#4C58FF">— F —</span> ist. Andernfalls ist sie immer wahr, <span style="color:#4C58FF">— W —</span>, auch wenn die Voraussetzung falsch, <span style="color:#4C58FF">— F —</span> ist ''':''' ‚Modern‘ darstellbar durch die ‚Wahrheitswertetafel‘ für die ‚materiale Implikation‘, <span style="color:#4C58FF">— ,(A → B)‘ —</span> <span style="color:#FF6000">„wenn A, dann B“</span>. Damit ist auch der <span style="color:#4C58FF">[ Modus tollendo tollens ] :: [ A → B, ¬B ├ ¬A ] </span> verstehbar; <span style="color:#00B000">(vgl. die vierte Zeile der ‚materialen Implikation‘)</span>. Der positive hypothetische Syllogismus ''':''' <span style="color:#4C58FF">[ Modus ponendo ponens ] :: [ A → B, A ├ B ] </span> ist aus der ersten Zeile ablesbar. Die folgende Tabelle gibt für jeden ,Wahrheitswert‘ der Aussagen <math>A</math> und <math>B</math> das Resultat einiger zweiwertiger Verknüpfungen an ''':''' {|class="wikitable hintergrundfarbe2" style="text-align:center;" |- !colspan="2"|''Belegung''!!Konjunktion!!Disjunktion!!materiale<br /> Implikation!!Äquivalenz<br /> Bikonditional!!kopulative<br /> Konjunktion |- !<math>A</math> !<math>B</math> !<math>A</math> und <math>B</math> !<math>A</math> oder <math>B</math> !wenn <math>A</math> dann <math>B</math> !sowohl <math>A</math> als auch <math>B</math> !entweder <math>A</math> oder <math>B</math> |- !W!!W |W||W||W||W||F |- !W!!F |F||W||F||F||W |- !F!!W |F||W||W||F||W |- !F!!F |F||F||W||W||F |} <span style="color:#00B000">(Eine ‚Konjunktion‘ ist nur dann ,wahr‘, wenn beide Aussagen einer ‚Konjunktion‘ wahr sind. Eine ‚kopulative Konjunktion‘ ist nur dann ,wahr‘, wenn entweder die eine, oder die andere Aussage der ‚kopulativen Konjunktion‘ wahr ist. Es besteht also eine Wenn-Dann-Verbindung zwischen beiden Aussagen — eine ,Kopplung‘. Das ist die logische Grundlage von Axiom-1 im GÖDEL-Formalismus)</span> Um das Widersprüchliche der ,Annahme‘ nachzuweisen, dass positive Eigenschaften ,nicht konsistent‘ seien, <span style="color:#00B000">(im 1. Beweisgang)</span>, bzw. um das Unlogische und Sinnwidrige der ,Annahme‘ klarzustellen, es sei ,unmöglich‘, dass es einen GOTT gibt, <span style="color:#00B000">(hier, in der Widerlegung)</span>, verwendet das GÖDEL-Kalkül den Gegensatz ''':''' wahr, <span style="color:#4C58FF">— W —</span>, falsch, <span style="color:#4C58FF">— F —</span>, zwischen der dritten und vierten Zeile der Wahrheitswertetafel, für zwei ,wahre‘ <span style="color:#4C58FF">— W —</span> ,materiale Implikationen‘, in denen die Voraussetzung jeweils falsch, <span style="color:#4C58FF">— F —</span>, ist, entsprechend der Regel <span style="color:#FF6000"><span style="font-family: Times;"><big>„ex falso, <span style="color:#4C58FF">— F —</span>, sequitur quotlibet, <span style="color:#4C58FF">— F —</span>, etiam verum, <span style="color:#4C58FF">— W —</span>“</big></span></span>, jeweils mit der Hilfe von Axiom-1 und Axiom-2, in einer <span style="font-family: Times;"><big>,Reductio ad absurdum‘</big></span>; hier unabhängig von jeder Glaubensüberzeugung. Im Gegensatz dazu, wird, <span style="color:#00B000">(im 2. Beweisgang)</span>, aus dem Glauben an GOTT, auch mit einer <span style="font-family: Times;"><big>,Reductio ad absurdum‘</big></span>, speziell mit Axiom-1, das Widersprüchliche in der ,Annahme‘ nachgewiesen, es gäbe in GOTT <span style="color:#FF6000">»''keine Vollkommenheit, nichts Positives, nichts Perfektes''«</span>, d.h. keine ,Transzendentalia‘. In dieser <span style="font-family: Times;"><big>,Reductio ad absurdum‘</big></span>, im 2. Beweisgang, wird vorausgesetzt <span style="color:#00B000">(,angenommen‘)</span> ''':''' es gibt den GOTT der Christen, <span style="color:#00B000">(als Prämisse :01:)</span>, der ,unvergleichlich‘ und ,einzigartig‘ ist, und in dem auch alle ,Transzendentalia‘ <span style="color:#FF6000">„koinzident“</span> ,eins‘ sind, entsprechend Axiom-2. Für KANT entsteht ein Widerspruch in den Prädikaten eines Satzes. ::<span style="color:#FF6000">»</span> ''Wenn ich das Prädicat in einem identischen Urtheile aufhebe'', <span style="color:#00B000">[ durch eine Negation ]</span>, ''und behalte das Subject, so entspringt ein Widerspruch''. <span style="color:#00B000">[ Wenn ich sage ''':''' ,''GOTT ist nicht allmächtig''‘, entsteht ein Widerspruch zur richtigen Aussage ''':''' ,''GOTT ist allmächtig''‘. ]</span> … ''Wenn ihr aber sagt ''':''' ,GOTT ist nicht‘, so ist weder die Allmacht, noch irgendein anderes seiner Prädicate gegeben; denn sie sind alle zusammt dem Subjecte aufgehoben'', <span style="color:#00B000">[ negiert ]</span>, ''und es zeigt sich in diesem Gedanken nicht der mindeste Widerspruch.'' <span style="color:#FF6000">«</span><ref>vgl. ‚''<span style="font-family: Times;"><big>Kritik der reinen Vernunft</big></span>''‘, Seite 398f; https://www.korpora.org/kant/aa03/398.html</ref> Es ist richtig, wie KANT sagt, der Widerspruch entsteht nicht in dem Gedanken ''':''' <span style="color:#FF6000">»</span>''GOTT ist nicht''<span style="color:#FF6000">«</span>. GÖDEL zeigt daher, dass der Widerspruch erst dann entsteht, wenn von der Annahme ausgegangen wird ''':''' ''<span style="color:#FF6000">»</span>Es ist unmöglich, dass GOTT ist''<span style="color:#FF6000">«</span>. Daraus folgt dann ,regulär‘, mit Hilfe von Axiom-1 und Axiom-2, <span style="color:#00B000">(d.h. mit den Theoremen von den Transzendentalien)</span>, die logische ,Möglichkeit‘ GOTTES, unabhängig von jeder Glaubensüberzeugung. Wie LEIBNIZ klar erkannt hat, muss zuerst, aus dem Widerspruch des Gegenteils, die logische ,Möglichkeit‘, <span style="color:#00B000">(die Konsistenz)</span>, der Existenz GOTTES bewiesen werden ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span>, bevor daraus die reale ,Notwendigkeit‘ GOTTES abgeleitet werden kann ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span>, dessen Existenz jedoch, aus dem ,Glauben‘, im Voraus, schon angenommen worden ist. Dieser Sachverhalt ist das ausschließliche Spezifikum GOTTES, <span style="color:#00B000">(das <span style="color:#FF6000">»''Privilegium der Gottheit allein''«</span>)</span>, und gilt nur bei GOTT, als dem Unvergleichlichen und Einzigartigen. Dieses ,Spezifikum‘ wird im Theorem ANSELMS abgebildet ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx→□∃xGx'''‘ —</span>, auf Grund von Axiom-2, das den inneren Zusammenhang, die Koinzidenz auch von ,Möglichkeit‘ und ,Notwendigkeit‘ im Unendlichen, GOTT, erkennen lässt. Bis Zeile 10, im 3. Beweisgang, reicht der Geltungsbereich der ,modal‘-frei gewählten Kalkül-Prämisse :01:, der ,methodologische‘ GOTT-Glaube. In Zeile 11 liegt der ,Schwerpunkt‘ des ontologischen Beweises dann aber am, — modal als notwendig — ,bewiesenen‘ Widerspruch des Gegenteils zum GOTT-Glauben, <span style="color:#00B000"> (formal-syntaktisch dargestellt als widerspruchfreies Antezedens, <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span>, dem Möglichkeits-Korollar-1 aus dem 1. Beweisgang)</span>, und nicht mehr am ,angenommenen‘ GOTT-Glauben der Kalkül-Voraussetzung, <span style="color:#00B000">(nun dargestellt als Konsequenz <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span> im Theorem ANSELMS)</span>. Das Möglichkeits-Korollar-1 muss jetzt immer, wie folgt, gelesen werden ''':''' <span style="color:#FF6000">»''Es ist <u>widerspruchfrei</u> möglich, dass GOTT ist''«</span>. Damit hat er, — angeregt durch LEIBNIZ, und mit ihm —, die fast einhellig akzeptierte Fehldeutung des ontologisch-<span style="color:#4C58FF">„theologischen“</span> Arguments ANSELMS für GOTT durch gewichtige philosophische, <span style="color:#00B000">(KANT<ref>GOTT ist absolut einzigartig und unvergleichlich. KANT macht GOTT jedoch zu einem ,Ding‘ unter den vielen ,Dingen‘ dieser Welt, indem er die Existenz, bzw. das ,Sein‘ GOTTES mit dem ,Sein der Dinge‘ gleich setzt. Eine solche Gleichsetzung ist bei GOTT unangebracht und daher unzulässig! KANT verkennt damit die Einzigartigkeit und Besonderheit GOTTES. Das ,Sein‘ der Dinge ist, — wie KANT sagt —, kein ,reales Prädikat’, d.h. Existenz ist keine Eigenschaft. Jedoch in GOTT ist ,Sein‘ ein ,reales Prädikat‘, d.h. Existieren ist ,real‘ die Wesenseigenschaft GOTTES, denn GOTT ist der, der für uns, — aus Liebe —, immer schon ,da‘ ist ''':''' in der ,Hypostatischen Union‘, sowohl als GOTT von Ewigkeit zu Ewigkeit, als auch als Mensch in unserer Zeitlichkeit. Das ist das, was GOTT für uns ausmacht —, sein Wesen.</ref>)</span>, und <span style="color:#4C58FF">„theologische“</span>, <span style="color:#00B000">(THOMAS<ref>GOTT ist absolut einzigartig und unvergleichlich. THOMAS unterscheidet die ,Natur GOTTES‘ nicht von der ,Natur der Dinge‘, indem er die ,Natur‘ des GOTTES ANSELMS irrtümlich mit der ,Natur‘ der Dinge gleich setzt. Damit reiht er GOTT unter die vielen Dinge unserer Welt ein, indem er für den GOTT ANSELMS annimmt ''':''' GOTT ,esse in rerum natura‘, d.h. wörtlich, dass der GOTT ANSELMS in der ,Natur‘ der Dinge existiert, <span style="color:#00B000">(was ANSELM nie gesagt hat)</span>. Eine solche Gleichsetzung ist bei GOTT unangebracht und daher unzulässig! Die ,zeitlose-überzeitliche‘ Wirklichkeit, (Natur), GOTTES ist völlig verschieden und unabhängig von der zufälligen Wirklichkeit, (die ,Natur‘), unserer ,raum-zeitlichen‘ Welt. Daher ist sie mit dieser auch nicht vergleichbar. Thomas verkennt damit die Einzigartigkeit und Besonderheit GOTTES.</ref>)</span>, Autoritäten zurechtgerückt, welche die Einzigartigkeit und Unvergleichlichkeit des Unendlichen, GOTT, bei ihrer Beurteilung des Theorem ANSELMS nicht berücksichtigt, sondern den Unendlichen, <span style="color:#00B000">(irrtümlich)</span>, unter die endlichen Dinge unserer Welt eingereiht haben. GÖDEL hat mit dem bewiesenen Widerspruch des Gegenteils zum GOTT-Glauben, den Beweis für die <span style="color:#FF6000">»''mathematische Evidenz''«</span> des Theorem ANSELMS geliefert, was, nach LEIBNIZ, für die Akzeptanz dieses Theorems noch gefehlt hat. Das Theorem ANSELMS besagt universell ''':''' Die <span style="color:#FF6000">»''theologische Weltanschauung''«</span> der Juden, Christen und Muslime, die ,annehmen‘, dass es mit ,Notwendigkeit‘ <span style="color:#4C58FF">— ‚'''□'''‘ —</span> <span style="color:#00B000">(nur)</span> einen GOTT gibt, ist logisch richtig und <span style="color:#FF6000">»''mathematisch evident''«</span>, weil es <u>ohne Widerspruch</u> ,denkbar‘ <span style="color:#4C58FF">— ‚'''◇'''‘ —</span> ist, dass es GOTT gibt ''':''' Nicht mehr und nicht weniger, <span style="color:#FF6000">»''rein verstandesmäßig, (ohne sich auf den Glauben an irgendeine Religion zu stützen)''«</span>. Es geht hier bei GÖDEL nicht um Theoriefindung oder ähnliches. GÖDEL ist kein ,spekulierender‘ Theoretiker. GÖDEL ist Logiker und Mathematiker. Was er sagt, ist mathematisch wahr und logisch richtig. Wenn er sagt, dass die Aussage ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ — »''wahr''«</span> ist ''':''' <span style="color:#FF6000">»''es ist möglich, dass es Gott gibt'' ''':''' ''das ist ,wahr‘ wegen Axiom-2 (und Axiom-1)''«</span>, dann spricht er hier von der mathematischen Wahrheit. Logischerweise ist dann die konträre Aussage ''':''' <span style="color:#4C58FF">— ‚'''¬◇∃xGx'''‘ — »''falsch''«</span> ''':''' <span style="color:#FF6000">»''es ist nicht möglich, dass es einen Gott gibt''«</span>, und zwar mathematisch falsch, weil sich aus dieser Aussage ein Widerspruch ergibt. Jeder, der die mathematische Logik GÖDELS lesen kann, kann das sehen und verstehen ''':''' Das Zwischenergebnis, <span style="color:#00B000">(Term :20:)</span>, in dieser Kalkül-Ableitung, die logische Konsequenz aus der Annahme des dezidierten Atheismus, es sei unmöglich, dass es GOTT gibt, ist der faktische, nachprüfbare, und für jeden Menschen sichtbare Beweis dafür, dass diese Annahme in einen Widerspruch mündet, und damit falsch und unlogisch ist. Das bedeutet, es ist eine Tatsache, bzw. es ist Faktum, dass der Atheismus, — mit <span style="color:#FF6000">»''mathematischer Evidenz''«</span> —, wirklich falsch und unlogisch ist, und daher, mit Recht, als ,Unsinn‘ bezeichnet werden darf '''!''' Das ist nicht bloß als eine Theoriefindung, oder als eine Interpretation eines Autors zu verstehen. Das ist vielmehr genau so wahr und <span style="color:#FF6000">»''mathematisch evident''«</span>, wie, dass zwei mal zwei vier ergibt, und wirklich genau so logisch richtig, wie, dass die Erde sich um die Sonne dreht. Das ist gerade das Überraschende und Unerwartete am Gödel-Kalkül. Es geht hier nicht mehr um Theoriefindung oder Interpretationen, denen man zustimmen kann oder nicht. Es geht hier <span style="color:#FF6000">»''rein verstandesmäßig''«</span> um mathematisch-logische Fakten. Damit steht GÖDEL, in seiner Bedeutung, in gewisser Weise, neben KOPERNIKUS, weil seine Kalkül-Ergebnisse, wie die Berechnungs-Ergebnisse dieses Pioniers der damaligen Zeitenwende, heute, in unserem Äon, ebenfalls mit eingefleischte Vorurteile aufräumen, ohne aber, dass GÖDEL für sich selbst, im Glauben, logisch konsequent gewesen wäre. <span style="color:#00B000">(Er ist sich der Tragweite und der Konsequenzen seiner <span style="color:#4C58FF">„axiomatischen Theologie“</span> anscheinend nicht bewusst gewesen, wenn er sagt ''':''' Man sei heute noch <span style="color:#FF6000">»''weit davon entfernt, das theologische Weltbild wissenschaftlich begründen zu können''«</span>, nachdem sein Kalkül das <span style="color:#FF6000">„atheistische Weltbild“</span> fundamental ins Wanken gebracht und als irrationalen ,Unsinn‘ entlarvt hat. Sein Kalkül ,beweist‘ ( ╞ ) indirekt, dass das <span style="color:#FF6000">„theologische Weltbild“</span>, im Beweisgang ,Widerlegung‘, aus dem Widerspruch des Gegenteils, mit <span style="color:#FF6000">»''mathematisch-logischer Evidenz''«</span>, offensichtlich doch, wissenschaftlich begründet werden kann)</span>. ---- Kurt GÖDEL ist auch deswegen ein Ausnahmelogiker. ---- ===<div class="center"><span style="color:#660066">Epilog für Skeptiker</span></div>=== Wenn man das GÖDEL-Argument genau liest, dann ist nur die Annahme ''':''' <span style="color:#FF6000"> „es ist möglich, dass es GOTT gibt“</span> bewiesen, weil aus der Annahme ''':''' <span style="color:#FF6000">„es ist unmöglich, dass es GOTT gibt“</span> ein logischer Widerspruch ableitbar ist. Die Aussage ''':''' <span style="color:#FF6000">„es gibt GOTT“</span> ist dagegen schon eine Glaubensaussage, und damit ist das auch die ,Grundannahme‘ eines gläubigen Menschen, der dann aus der ,bewiesenen Möglichkeit‘, dass es Gott gibt, ableiten kann ''':''' <span style="color:#FF6000">»''es gibt GOTT wirklich''«</span>, wenn er will ''':''' <span style="color:#FF6000">»''Es stimmt also, was ich glaube '''!''''' «</span> Das ist das Argument ANSELMS, der ein christlicher Amtsträger war, und der daher von dieser Grundannahme auch ausgeht. Solange in den Voraussetzungen des Möglichkeitsbeweises im GÖDEL-Kalkül kein Widerspruch nachweisbar ist, und solange in der logischen Durchführung dieses Beweises keine schweren Mängel festgestellt werden können, ist das Ergebnis des Möglichkeitsbeweises, wie GÖDEL ihn durchgeführt hat, korrekt, und die Folgerungen daraus, logisch richtig, dass es sich hier um <span style="color:#FF6000">»''mathematische Evidenz''«</span> handelt, <span style="color:#00B000">(z. B. wie 2 x 2 = 4)</span>. Aber niemand ist gezwungen, aus der Möglichkeit, dass es GOTT gibt, daraus zu schließen, dass es GOTT auch mit Notwendigkeit gibt, wie das im Argument ANSELMS geschieht, außer, er akzeptiert auch die Grundannahme, dass es den Unendlichen und Unvergleichlichen tatsächlich gibt. Dann kann er mit LEIBNIZ, der selbst an GOTT geglaubt hat, mit Bestimmtheit sagen ''':''' <span style="color:#FF6000">»''gesetzt, dass GOTT möglich ist, so ist er, was das Privilegium der Gottheit allein ist''«</span>, weil GÖDEL mit seinem Kalkül den noch ausstehenden Beweis der Widerspruchsfreiheit dafür geliefert hat. Wenn Du den 3. Beweisgang des GÖDEL-Kalküls genauer anschaust, dann siehst Du, dass der Konsequenz-Teil im Argument ANSELMS, der identisch ist mit dem Term in der Zeile 10, <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span>, immer noch formallogisch abhängig ist von der methodologischen Glaubens-Prämisse, Term :01:, <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span> ''':''' <span style="color:#FF6000">»''das'' <span style="color:#4C58FF">‚'''x'''‘</span> ''steht für den Gott der Christen''«</span>. Diese Abhängigkeit ist bis zur Zeile 10 offensichtlich und logisch korrekt. <span style="color:#00B000">(Man könnte nach dieser Zeile, ohne Weiteres, ,regulär‘ die <span style="color:#FF6000">„logische Implikation”</span> :: <span style="color:#4C58FF">[├ A ├ B ╞ A→B ]</span> mit Term :01: und Term :10: als ein mögliches Korollar bilden ''':''' <span style="color:#4C58FF">— ‚'''Gx→□∃xGx'''‘ — </span>)</span>. Das bedeutet, der Konsequenz-Teil im Theorem ANSELMS, der in diesem ,regulär‘-möglichen Korollar an zweiter Stelle steht, ist damit in seiner Formal-Struktur offensichtlich ,regulär‘ von der Glaubens-Prämisse, Term :01:, abhängig, d.h. er ist der Ausdruck einer Glaubensüberzeugung. Im Theorem ANSELMS steht er jetzt, in der Zeile 11, als Konsequenz-Teil auch an zweiter Stelle, hat aber nicht mehr seine Glaubens-Prämisse als notwendige Bedingung an erster Stelle vor sich, wie im ,regulär‘-möglichen Korollar. Jetzt steht eine neue und andere Voraussetzung als Begründung vor ihm. Der Schwerpunkt des Argument ANSELMS liegt damit am Begründungs-Teil des ANSELM-Theorems, der jetzt die erste Stelle im Theorem einnimmt ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span> ''':''' <span style="color:#FF6000">»''es ist möglich, dass es GOTT gibt''«</span>, der erst dadurch entstanden ist, und davon abhängig ist, weil sein Gegenteil ''':''' <span style="color:#4C58FF">— ‚'''¬◇∃xGx'''‘ —</span> ''':''' <span style="color:#FF6000">»''es ist unmöglich, dass es GOTT gibt''«</span>, zu einem Widerspruch geführt hat. Dieser Begründungs-Teil, das Antezedens, im Argument ANSELMS, ist daher nicht mehr von der methodologischen Glaubens-Prämisse, Term :01:, abhängig, sondern nur vom Axiom-1, der Widerspruchsfreiheit, und von der paarweisen, mathematischen Äquivalenz beliebiger positiver Eigenschaften im Axiom-2, die im 1. Beweisgang, bzw. im Beweisgang ,Widerlegung‘, mit dem <span style="color:#4C58FF">[ Modus tollendo tollens ] :: [ A → B, ¬B ├ ¬A ]</span>, die Widerspruchsfreiheit der Möglichkeit des GOTT-Glaubens mit Notwendigkeit herbeigeführt haben. Daraus ergibt sich eine logische Verschiebung in der Argumentationskette, denn dieser Begründungs-Teil, der jetzt die Widerspruchsfreiheit für den Konsequenz-Teil liefert, ist selbst unabhängig und frei von jeder Glaubensüberzeugung. Weil widerspruchsfrei und <span style="color:#FF6000">»''mathematisch evident''«</span>, muss er als logische Begründung für die Widerspruchsfreiheit und als Beweis für die <span style="color:#FF6000">»''mathematische Evidenz''«</span> des Konsequenz-Teils gelesen werden, und damit bestätigt er die Widerspruchsfreiheit und Sinnhaftigkeit der Glaubensüberzeugung eines gläubigen Menschen, <span style="color:#00B000">(was auch das Ziel ANSELMS war)</span>. Das heißt also ''':''' der Glaube dieses Menschen ist widerspruchsfrei und sinnvoll, und enthält keinen Zirkelschluss, weil sein Gegenteil, der Nicht-GOTT-Glaube, zu einem Widerspruch führt; <span style="color:#00B000">(das hat GÖDEL mit seinem Kalkül-System bewiesen, dessen Argumentationskette mit einem Computer-Programm, dem sog. ,Theorembeweiser‘, überprüft worden ist, und als <span style="color:#FF6000">»''nachweisbar korrekt''«</span> befunden wurde)</span>. Das Theorem ANSELMS beweist, nach GÖDEL, dass der Glaube an GOTT, mit <span style="color:#FF6000">»''mathematische Evidenz''«</span> notwendig widerspruchsfrei und sinnvoll ist, weil der Nicht-GOTT-Glaube notwendig zu einem Widerspruch führt. <u>Das Theorem beweist jedoch nicht, dass die Existenz GOTTES notwendig ist</u>, <span style="color:#00B000">(wie es fast immer fälschlich gelesen wurde und wird)</span>, sondern, das Theorem ANSELMS geht davon aus, als nicht hinterfragtes Faktum, dass GOTT notwendig, schon immer existiert, und beweist, mit dem GÖDEL-Kalkül, dass diese Glaubens-Annahme widerspruchsfrei und sinnvoll, und <span style="color:#FF6000">»''mit allen bekannten Tatsachen durchaus vereinbar ist''«</span>, wie GÖDEL abschließend sagt. GOTT hat es ja auch nicht ,nötig‘, bewiesen zu werden. Für den Erzbischof ANSELM war die Existenz GOTTES, überall und jederzeit, die ungefragte und für ihn die selbstverständlichste Voraussetzung aller seiner Bemühungen, in seinem Leben, und in seinem Beruf als christlicher Amtsträger, und auch als Theologe in den philosophischen Überlegungen über seinen Glauben. Mit diesen Überlegungen hat er, mit GÖDEL, bewiesen ''':''' Glaube ist nicht irrational, kein Sprung ins Unbekannte, sondern eine freie, vernünftige Entscheidung. Glaube ist rational und vertrauenswürdig. Zusammengefasst heißt das Ergebnis dieser Bemühungen ANSELMS ''':''' Wenn Du an GOTT glauben willst, dann kannst Du das unbedenklich tun, denn Dein Glaube ist auch logisch in der <u>bewiesenen Möglichkeit</u>, dass es GOTT geben kann, begründet, und damit ist er widerspruchsfrei, sinnvoll und kein Zirkelschluss. Dein Glaube an GOTT beruht jedoch, nach wie vor und in erster Linie, auf Deiner freien Entscheidung für GOTT, und nicht auf dem Zwang einer ,logischen‘ Argumentation. Wenn Du nicht an GOTT glauben willst, dann <u>musst Du, und sollst Du, auch nicht deswegen</u> an GOTT glauben, weil der Nicht-GOTT-Glaube zu einem Widerspruch führt, und damit falsch und unlogisch ist. Denn der Glaube an GOTT muss immer eine freie und Deine ganz persönliche Entscheidung für GOTT sein und bleiben. Niemand darf zum Glauben an GOTT gezwungen werden, auch nicht mit ,logischen‘ Argumenten. Warum '''?''' Weil GOTT die Liebe ist '''!''' Und die Liebe duldet keinen Zwang '''!''' Zum Abschluss, und für eine bessere Verständlichkeit dieser Studie, hat die KI, der ich diese Studie für die Erstellung eines Podcast übergeben habe, eine, — sogar für Kinder —, verständliche Metapher kreiert. Sie sagt, man stelle sich vor ''':''' Es sei irgendwo ein ,Schatz’ vergraben, und es gäbe auch eine ,Schatzkarte’ für diesen ,Schatz’. Kurt GÖDEL ist nun gekommen, und hat mit seinem Kalkül bewiesen, dass diese ,Schatzkarte’ korrekt ist und fehlerfrei. Ob aber jemand, mit Hilfe dieser ,Schatzkarte’ auf ,Schatzsuche’ gehen will oder nicht ''':''' das ist und bleibt jedem selbst überlassen, und ist immer eine freie, und ganz persönliche Entscheidung. Damit hat die KI erstaunlich treffend, sowohl die Bedeutung, als auch die reale Funktion des GOTT-Glaubens in der Lebens-Wirklichkeit unserer Welt und Zeit charakterisiert, in Übereinstimmung mit der Gleichniserzählung JESU vom ,Schatz im Acker’; <small><span style="color:#00B000">( vgl. {{Bibel | Matthäus-Evangelium |13|44|EU}} )</span></small>. Der ,Schatz’ ist die <span style="color:#FF6000">„<span style="font-family: Times;"><big>Βασιλεία του Θεού</big></span>“</span><span style="color:#00B000"> | ,Basileía tou Theoú’</span>, d.h. das <span style="color:#CC66FF">»''Königtum GOTTES''«</span>, oder auch das <span style="color:#CC66FF">»''Himmelreich''«</span>. Die ,Schatzkarte’ ist der Glaube an GOTT. Die ,Schatzsuche’ ist der Weg des Glaubens in der Nachfolge JESU, der uns den Weg zeigt zum Ziel, zur Erfüllung aller unserer Sehnsüchte und Wünsche. ---- ---- ;Fußnoten <references /> 14dgze0efsrmpgpsq81i1hg0ioyihyk 1090600 1090598 2026-09-09T08:15:29Z Santiago 19191 /* Kurt GÖDEL und der sog. ‚ontologische Gottesbeweis‘ */ ::Term , 1090600 wikitext text/x-wiki [[Kategorie: Buch]] {{Regal|ort=Philosophie}} {{Vorlage:StatusBuch|9}} ==<div class="center"><span style="color:#660066">'''Kurt GÖDEL und der sog. ‚ontologische Gottesbeweis‘'''</span></div>== <span style="font-family: Times;"><big><div class="center">לַמְנַצֵּ֗חַ לְדָ֫וִ֥ד אָ֘מַ֤ר נָבָ֣ל בְּ֭לִבּוֹ אֵ֣ין אֱלֹהִ֑ים הִֽשְׁחִ֗יתוּ הִֽתְעִ֥יבוּ עֲלִילָ֗ה אֵ֣ין עֹֽשֵׂה־טֽוֹב׃ (Psalm 14,1)</div></big></span> ---- ===<div class="center"><span style="color:#660066">Vorwort</span></div>=== Zur Orientierung ''':''' Die Diskussion um GOTT läuft schon über zweitausend Jahren. Vor etwa tausend Jahren hat sich ein gewisser ANSELM gesagt ''':''' <span style="color:#FF6000">»''Ich glaube an GOTT'' … <span style="color:#00B000">[ sonst wäre er sicher nicht Erzbischof von Canterbury geworden ]</span> … ''aber ich möchte auch wissen und verstehen, ob das stimmt und sinnvoll ist, was ich da glaube '''!''''' «</span> Dann hat er seine Überlegungen dazu aufgeschrieben, und das kann man in seinen Schriften auch heute noch lesen. Der sehr geschätzte deutsche Professor und Philosoph aus Königsberg, Immanuel KANT, hat das, was ANSELM da aufgeschrieben hat, gelesen, <span style="color:#00B000">(vermittelt durch CARTESIUS)</span>, und das dann den <span style="color:#FF6000">„ontologischen Gottesbeweis“</span> genannt, <span style="color:#00B000">(obwohl es in Wirklichkeit gar kein Gottesbeweis ist; genauer ''':''' es ist kein Beweis für die Existenz GOTTES)</span>, und dieser große KANT hat dann großartig bewiesen, das, was ANSELM da aufgeschrieben hat, sei falsch. Es sei <span style="color:#FF6000">„ja gar kein“</span> Gottesbeweis '''!''' <span style="color:#00B000">( Naja, was denn sonst '''?''' )</span> Wobei er den Fehler gemacht hat, dass er den, an sich, unvergleichbaren GOTT mit hundert Talern in seinem Vermögenszustande verglichen hat. <span style="color:#00B000">(Das ist aber eine andere Geschichte.)</span> Hundert Taler und GOTT haben ,an sich‘ nichts gemeinsam, außer, wenn KANT ,wirklich‘ hundert Taler hat, und GOTT auch ,wirklich‘ existiert, <span style="color:#00B000">(wie ANSELM und gläubige Menschen glauben)</span>, dann gibt es GOTT und die Taler eben ,wirklich‘. Aber damit ist man nicht schlauer geworden. Seit KANT läuft die ganze Diskussion um GOTT immer nur als Diskussion um den <span style="color:#00B000">(von KANT)</span> so genannten <span style="color:#FF6000">„ontologischen, <span style="color:#00B000">[ kosmologischen, teleologischen etc. ]</span> Gottesbeweis“</span> —, obwohl es niemals einen Beweis für die Existenz GOTTES geben kann und niemals geben wird. <span style="color:#00B000">(Das haben Wissenschaftler jeder Richtung und Philosophen aller Weltanschauungen uns immer wieder nachdrücklich versucht zu sagen, weil keiner dieser sog. Beweise für die Existenz eines GOTTES stringent ist.)</span> Beweisen kann man die Existenz von Naturgesetzen. Die sind unveränderlich und fix, immer und überall. Jeder vernünftige Mensch muss sie akzeptieren. Man kann darüber nicht diskutieren und sie dann mit Mehrheitenbeschlüsse verändern. Wenn GOTT ebenso bewiesen werden könnte, dann wäre jeder vernünftige Mensch gezwungen, die Existenz GOTTES wie ein Naturgesetz anzunehmen. Gott ist aber kein Naturgesetz. GOTT ist <span style="color:#FF6000">„Person“</span>, — für Christgläubige ''':''' <span style="color:#FF6000">„ein GOTT in drei Personen“</span>. Und GOTT ist <span style="color:#FF6000">„Geist“</span>. Das besagt, dass GOTT nicht mit materiellen Dingen aus unserer Welt verglichen werden darf; <span style="color:#00B000">(was sowohl THOMAS von Aquin als auch Immanuel KANT doch getan haben)</span>. Und ganz wesentlich ''':''' der Zugang zu GOTT läuft nicht über den Beweis, sondern immer nur über den Glauben. Wer an GOTT glauben will, dem antwortet GOTT auf seine Weise — nämlich <span style="color:#FF6000">„geistig“</span> bzw. <span style="color:#FF6000">„geistlich“</span>. Wer nicht an GOTT glauben will, dessen Entscheidung respektiert GOTT, und drängt sich nicht auf. Glaube ist immer eine freie Entscheidung des Menschen für GOTT. Niemand darf gezwungen werden. Wenn es einen Beweis für GOTT gäbe, wäre jeder vernünftige Mensch gezwungen, an GOTT zu glauben. Und das widerspricht ganz entschieden der Freiheit des Glaubens. Daher gibt es nie und nimmermehr einen Existenzbeweis für GOTT '''!!!''' ... Daher darf man das Kalkül des Logiker GÖDEL, <span style="color:#00B000">(und damit auch das Theorem ANSELMS)</span>, nicht als einen Existenzbeweis für GOTT lesen. Sowohl ANSELM als auch GÖDEL setzen die Existenz GOTTES notwendig als gegeben schon voraus. Das GÖDEL-System, und auch das Theorem ANSELMS, sind bloß die logische Bestätigung der Widerspruchsfreiheit der Glaubensüberzeugung eines Menschen, der sich schon entschieden hat, an GOTT zu glauben; und nicht der Grund für seine Entscheidung. Alle sogenannten ,Gottesbeweise‘, sind in Wirklichkeit nichts anderes, als nachträgliche Evaluierungen eines GOTT-Glaubens, bzw. ,Wege‘, <span style="color:#00B000">(bei THOMAS von Aquin)</span>, die aufzeigen, dass der GOTT-Glaube widerspruchsfrei, sinnvoll, und <span style="color:#FF6000">»''mit allen bekannten Tatsachen durchaus vereinbar ist''«</span>, wie GÖDEL sagt. GOTT hat es nicht nötig, ,bewiesen‘ <span style="color:#00B000">( ╞ )</span> zu werden. ===<div class="center"><span style="color:#660066">Einleitung</span></div>=== Eine Studie zum GÖDEL-Kalkül. Der Logiker Kurt GÖDEL <span style="color:#00B000">(1906-1978)</span> hat mit diesem Kalkül eine moderne Rekonstruktion des, <span style="color:#00B000">(von KANT)</span>, so genannten ‚ontologischen Gottesbeweises‘ nach ANSELM von Canterbury auf modal-logischer Basis vorgelegt. Damit hat er die <span style="color:#FF6000">„Rede von GOTT“</span> auf eine ‚vernünftige Basis‘ gestellt, d.h. sie soll für jeden Menschen nachvollziehbar sein, <span style="color:#FF6000">»''rein verstandesmäßig, (ohne sich auf den Glauben an irgendeine Religion zu stützen)''«</span>, wie er sagt. GÖDEL ,nimmt‘ als Logiker, angeregt durch den Philosophen und Mathematiker Gottfried Wilhelm LEIBNIZ, rein theoretisch, fürs Erste, einmal ‚an‘, <span style="color:#00B000">(als Prämisse, d.i. der Term :01: im 3. Beweisgang zum Theorem ANSELMS im Anhang)</span>, dass es GOTT gibt ''':''' d.i. ein sog. ,methodologischer GOTT-Glaube‘, und untersucht die logischen Konsequenzen. Dabei zeigt sich, beim genaueren Hinsehen, dass der ‚Nicht-GOTT-Glaube‘, der ‚dezidierte‘ Atheismus, <span style="color:#00B000">(im Beweisgang ,Widerlegung‘ im Anhang)</span>, überraschender Weise, zu einem Widerspruch führt, und damit logisch ,falsch‘ ist. Jedoch, GÖDEL kann und will mit seinem Kalkül keinen ,GOTT-Glauben‘ ,erzeugen‘, d.h. das GÖDEL-Kalkül ist kein <span style="color:#FF6000">„Existenz-Beweis"</span> für den GOTT der Bibel, sondern, es setzt die Existenz eines GOTTES, einfach als gegeben, schon voraus. GÖDEL beweist dann mit seinem System, dass der traditionelle abendländische ,GOTT-Glaube‘, <span style="color:#FF6000">»''die theologische Weltanschauung''«</span>, <span style="color:#00B000">(d.i. die Kalkül-Prämisse, und das, daraus ,regulär‘ (├ ) abgeleitete, Theorem ANSELMS)</span>, mit den Maßstäben der modernen Logik <span style="color:#FF6000">»''durchaus vereinbar''«</span> <span style="color:#00B000">(d.h. logisch ,richtig‘)</span> ist, im Gegensatz zum ,Nicht-GOTT-Glauben‘, der davon ausgeht, dass es keinen GOTT gibt. GÖDEL beweist mit seinem System ''':''' der traditionelle GOTT-Glaube ist, — mit mathematisch-logischer Evidenz —, widerspruchfrei und wahr. <span style="color:#00B000">(Der Beweis aus dem Widerspruch des Gegenteils ist ein ,indirekter Beweis‘ und kein ,Zirkelbeweis‘ '''!''' )</span> GÖDEL blieb bis zu seinem Tod ohne ein dezidiertes religiöses Bekenntnis. <span style="color:#00B000">(Das Leben ist nicht immer ,logisch‘.)</span> Entsprechend der <span style="color:#FF6000">»''theologischen Weltanschauung''«</span> ist GOTT der Größte, <span style="color:#FF6000">»''über dem nichts Größeres mehr gedacht werden kann''«</span>, <span style="color:#00B000">(ANSELM)</span>; bzw. <span style="color:#FF6000">»''GOTT ist ein Wesen von äußerster Größe und Vollkommenheit, das alle Grade derselben in sich schließt''«</span>, <span style="color:#00B000">(LEIBNIZ)</span>, und der für uns immer schon ,da‘ ist. Das ist die methodologische Prämisse des GÖDEL-Kalküls. Davon ausgehend, zeigen seine Axiome und Definitionen, dass es zu einem Widerspruch führt, falls man ,annimmt‘, es sei nicht möglich, dass es <span style="color:#FF6000">„GOTT“</span>, <span style="color:#4C58FF">— ‚'''G'''‘ —</span> gibt. Aus dem Widerspruch des Gegenteils wird von GÖDEL, mit dem <span style="color:#4C58FF">[ Modus tollendo tollens ] :: [ A → B, ¬B ├ ¬A ]</span>, dann ,bewiesen‘ <span style="color:#00B000">( ╞ )</span> ''':''' es ist doch möglich, dass es <span style="color:#FF6000">„GOTT“</span> wirklich gibt. Somit ist der Glaube an <span style="color:#FF6000">„GOTT“</span>, — weil widerspruchsfrei —, mit den Worten GÖDELS ''':''' <span style="color:#FF6000">»''mit allen bekannten Tatsachen durchaus vereinbar''«</span>. Immanuel KANT <span style="color:#00B000">(1724-1804)</span> scheint diesen Fall vorausgesehen zu haben, dass versucht werden könnte, die ,Möglichkeit‘ GOTTES aus einem Widerspruch zu ,beweisen‘ ''':''' ::<span style="color:#FF6000">»</span> <span style="color:#00B000">[ Angenommen, es gibt ]</span> ''doch einen und zwar nur diesen '''Einen''' Begriff'' <span style="color:#00B000">[ ,GOTT‘, so dass ]</span> ''das Nichtsein oder das Aufheben seines Gegenstandes'' <span style="color:#00B000">[ GOTT ]</span>, ''in ,sich selbst‘ widersprechend sei; und dieses ist der Begriff des allerrealsten Wesens. Es hat, sagt ihr, alle Realität'', <span style="color:#00B000">[ bzw. alle Vollkommenheit ]</span>, ''und ihr seid berechtigt, ein solches Wesen als ,möglich‘ anzunehmen'' ... <span style="color:#00B000">[ denn das GÖDEL-Kalkül ,beweist‘ ( ╞ ) in der ,Widerlegung‘ im Anhang, wie auch im 1. Beweisgang, aus einem Widerspruch, dass die Existenz GOTTES definitiv logisch ,möglich‘ ist. ]</span> … ''obgleich der sich nicht widersprechende'', <span style="color:#00B000">[ ,mögliche‘ ]</span>, ''Begriff'', <span style="color:#00B000">[ ,GOTT‘ ]</span>, ''noch lange nicht die'' <span style="color:#00B000">[ reale ]</span> ''Möglichkeit des Gegenstandes'', <span style="color:#00B000">[ GOTT ]</span>, ''beweiset. … Das ist eine Warnung, von der Möglichkeit der Begriffe (logische)'', <span style="color:#4C58FF">— '''◇''' —</span>, ''nicht sofort auf die Möglichkeit der Dinge (reale)'', <span style="color:#4C58FF">— '''□''' —</span>, ''zu schließen''<ref>vgl. ‚''<span style="font-family: Times;"><big>Kritik der reinen Vernunft</big></span>''‘, Seite 399; https://www.korpora.org/kant/aa03/399.html</ref>. <span style="color:#00B000">[ Trotz dieser Warnung, wird dieser Schluss dennoch im Theorem ANSELMS vollzogen, bzw. mit GÖDEL im 3. Beweisgang ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx→□∃xGx'''‘ —</span> '''!''' ]</span>. <span style="color:#FF6000">«</span> Warum das <span style="color:#FF6000">»''mit allen bekannten Tatsachen durchaus vereinbar''«</span> ist, und inwieweit KANT sich irrt, wird in dieser Studie gezeigt. ===<div class="center"><span style="color:#660066">Der Schlüsselbegriff im Kalkül</span></div>=== Der ‚Schlüsselbegriff‘ in diesem Kalkül ist <span style="color:#FF6000">„positive Eigenschaft“</span>, bzw. <span style="color:#FF6000">„Perfektion“, „Vollkommenheit“</span> ''':''' <span style="color:#4C58FF">— ‚'''P'''‘ —</span>. Für diesen wichtigen Begriff gibt es aber im Kalkül selbst keine explizite Definition, sondern er wird nur durch seine Verwendung innerhalb des Kalküls indirekt ‚definiert‘. <span style="color:#00B000">(Das heißt ''':''' <span style="color:#4C58FF"> — ‚'''P'''‘ — </span> bezeichnet ein System von ,Eigenschaften‘, die ,positiv‘, bzw. ,vollkommen‘ | ,perfekt‘ | genannt werden, von denen im Kalkül wohl beweisbar ist, dass sie sich gegenseitig ,nicht widersprechen‘, weil sie im System als solche ,gleichwertig‘, bzw. gleich ,wahr‘ sind, jedoch ohne sie erschöpfend aufzählen zu können, oder auch nur sagen zu können, was sie alle im einzelnen bedeuten, außer, dass sie kompatibel sind.)</span> Mit der Wahl dieses Schlüsselbegriffes hat GÖDEL eine wesentliche Vorentscheidung für die Ergebnisse des Kalküls getroffen '''!''' In seinen Notizen zum ‚ontologischen Beweis‘ vom 10. Februar 1970 gibt GÖDEL, — für die nachträgliche Interpretation dieses Begriffes <span style="color:#00B000">(und auch für das Kalkül selbst)</span> —, die richtungsweisende Erklärung ''':''' ::<span style="color:#FF6000">»''Positiv bedeutet positiv im moralisch ästhetischen Sinne...''«</span> ::Und er fügt in Klammer hinzu ''':''' ::<span style="color:#FF6000">»...''(unabhängig von der zufälligen Struktur der Welt). Nur dann sind die Axiome wahr''.«</span><ref>GÖDEL, Kurt, ''<span style="font-family: Times;"><big>‚Ontological proof‘</big></span>'' in ''<span style="font-family: Times;"><big>‚Collected Works‘</big></span>'', vol. III, ed. S.FEFERMAN et al., Oxford (U.P.), 1995; 403–404.</ref> GÖDEL-Axiom-1 ''':''' <span style="color:#4C58FF">— ‚('''PX <small><math>{ \color{Blue} \dot\lor}</math></small> P¬X''')‘ ↔<span style="color:#00B000"> ‚('''¬PX ↔ P¬X''')‘</span> — </span> ''':''' <span style="color:#FF6000"> »''Entweder die Eigenschaft'' <span style="color:#4C58FF">‚'''X'''‘</span> ''oder ihre Negation'' <span style="color:#4C58FF">‚'''¬X'''‘</span> ''ist positiv''«</span>. Hier ist der Hauptkritikpunkt, dass es Eigenschaften gibt, die ,an sich‘ weder positiv noch negativ sind. Beispiele wären ''':''' ‚rothaarig‘ oder ‚schwerwiegend‘; solche Eigenschaften können aber ,für mich‘ entweder positiv oder negativ sein, abhängig von meiner Betrachtungsweise und subjektiven Vorlieben. Diese Eigenschaften, wie ‚rothaarig‘ an sich, oder meine positiv-negativen ‚Betrachtungsweisen‘, sind jedoch der <span style="color:#FF6000">»''zufälligen Struktur der Welt''«</span> entnommen und treffen nicht den <span style="color:#FF6000">»''moralisch ästhetischen Sinn''«</span> von <span style="color:#FF6000">»''positiv''«</span> bei GÖDEL. Er orientierte sich an LEIBNIZ, welcher im Bezug zum ‚ontologischen Beweis‘ definiert ''':''' ::<span style="color:#FF6000">»''Vollkommenheit'' <span style="color:#00B000">[ GOTTES ]</span> ''nenne ich jede einfache Eigenschaft, die sowohl positiv als auch absolut ist, oder dasjenige, was sie ausdrückt, ohne jede Begrenzung ausdrückt''.«</span><ref>Zitiert nach Thomas GAWLICK, in ''<span style="font-family: Times;"><big>‚Was sind und was sollen mathematische Gottesbeweise ?‘</big></span>'', Predigt vom 8.1.2012 in der Kreuzkirche zu Hannover. https://web.archive.org/web/20130524164359/http://www.idmp.uni-hannover.de/fileadmin/institut/IDMP-Studium-Mathematik/downloads/Gawlick/Predigt_Gawlick_Gottesbeweise.pdf</ref> Die Seins-Eigentümlichkeiten <span style="color:#00B000">(Daseinsmodi, Perfektionen)</span> wie ‚wahr‘, ‚gut‘, ‚edel‘ usw. entsprechen dem <span style="color:#FF6000">»''moralisch ästhetischen Sinn''«</span> von <span style="color:#FF6000">»''positiv''«</span> bei GÖDEL. Das sind Beispiele für ‚absolut‘ positive Begriffe aus der Lehre der Seinsanalogie ''':''' <span style="font-family: Times;"><big>‚verissimum‘, ‚optimum‘, ‚nobilissimum‘</big></span>, usw., die, an sich, <span style="color:#FF6000">»''ohne jede Begrenzung gelten''«</span>; zu finden in der <span style="font-family: Times;"><big>‚Via quarta‘</big></span>, bei THOMAS von Aquin, über die <span style="color:#FF6000">„analoge"</span> Abstufung im ‚Sein‘ der Dinge. Diese <span style="color:#FF6000">„analoge"</span> ‚Abstufung‘ ist dann die faktische Begrenztheit <span style="color:#00B000">(d.h. Unvollkommenheit)</span> im <span style="color:#FF6000">»''zufälligen''«</span> ‚Sein‘ der Dinge —. Die <span style="color:#FF6000">„positiven Eigenschaften“</span> GÖDELS ''':''' <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, wie Wahrheit, Einheit, Gutheit, <span style="color:#00B000">(von ,Güte‘)</span>, Schönheit, Adel, <span style="color:#00B000">(von ,edel‘)</span>, Gleichheit, Andersheit, Wirklichkeit, ,Sein‘ im Sinne von Etwas-sein, etc. werden <span style="color:#FF6000">„Perfektionen“</span>, oder auch <span style="color:#FF6000">„Transzendentalia“</span> genannt, <span style="color:#00B000">(von lateinisch ''':''' <span style="font-family: Times;"><big>transcendere</big></span>, <span style="color:#FF6000">„übersteigen“</span>)</span>. In der mittelalterlichen Scholastik sind Transzendentalien die Grundbegriffe, die allem Seienden als <span style="color:#FF6000">„Modus“</span>, <span style="color:#00B000">(d.h. ,Eigentümlichkeit‘, als allgemeine Seinsweisen)</span>, zukommen. Wegen ihrer Allgemeinheit ,übersteigen‘ sie die besonderen Seinsweisen, welche ARISTOTELES die ,Kategorien‘ nannte. Ontologisch betrachtet, werden die Transzendentalien als das allem Seienden Gemeinsame aufgefasst, da sie von allem ausgesagt werden können. Von der KI werden sie, nicht unpassend, als <span style="color:#FF6000">„ultimative Eigenschaften des Seins“</span> bezeichnet, die <span style="color:#FF6000">„jenseits der materiellen Welt existieren“</span>, <span style="color:#00B000">(da sie ,ultimativ‘ nur von GOTT, als den unbegrenzt Vollkommenen, ausgesagt werden können, die jedoch, auch von allen übrigen Seienden, wegen deren seinsmäßigen Unvollkommenheit und Begrenztheit, abgestuft, d.h. <span style="color:#FF6000">„analog"</span>, ausgesagt werden)</span>. Diese Transzendentalien sind ,inakzident‘, das heißt, sie entstehen nicht aus anderen Begriffen, sondern sind erste, unteilbare Bestimmungen <span style="color:#4C58FF">— ‚'''X'''‘ —</span> des Denkens und des Seins, die allen Seienden ''':''' <span style="color:#4C58FF">— ‚'''□∀xXx'''‘ —</span>, unabhängig von ihren speziellen Eigenschaften, als ,relative‘ Vollkommenheiten, <span style="color:#00B000">(bzw. Unvollkommenheiten)</span>, mit ,modaler‘ Notwendigkeit, <span style="color:#4C58FF">— ‚□‘ —</span>, <span style="color:#FF6000">„analogisch"</span> zukommen, d.h. sie sind in allen Seienden, seinsmäßig abgestuft und abgegrenzt, ,relativ‘ zum unbegrenzt Unendlichen ihrer selbst, und <span style="color:#FF6000">»''dasjenige, was sie ausdrücken, drücken sie ohne jede Begrenzung aus''«</span>, <span style="color:#00B000">(LEIBNIZ)</span>; und damit stehen sie ontologisch in einer <span style="color:#FF6000">„analogen"</span> ,Beziehung‘ zu GOTT, dem absolut Vollkommenen und unbegrenzt Unendlichen. In der Erkenntnisordnung wirken sie als die ersten Begriffe des menschlichen Verstehens, die eine Basis für alle weiteren wissenschaftlichen Erkenntnisse bilden. In der Seinsordnung sind die Transzendentalien ontologisch eins, gleichwertig, <span style="color:#00B000">(,mathematisch äquivalent‘)</span>, und daher konvertierbar, d.h. austauschbar, <span style="color:#00B000">(vgl. z. B. den scholastischen ,Merksatz‘ ''':''' <span style="font-family: Times;"><big>,ens et verum convertuntur‘</big></span>)</span>. Damit sind sie auch von einander abhängig, was GÖDEL sowohl im Axiom-2 ''':''' <span style="color:#4C58FF">— ‚'''PX ∧ □∀x(Xx→Yx)→PY'''‘ —</span>, für positive Eigenschaften, als auch in der Definition-2 ''':''' <span style="color:#4C58FF">— ‚'''X'''<sub>ess</sub>'''x ↔ Xx ∧ ∀Y(Yx→ □∀y(Xy→Yy))'''‘ —</span>, für die Wesenseigenschaften, syntaktisch formalisiert hat mit dem Term-Element ''':''' <span style="color:#4C58FF">— ‚'''□∀x(Xx→Yx)'''‘ —</span>, weil sie sich gegenseitig, — mit ,modaler‘ Notwendigkeit —, gleichwertig ,implizieren‘, d.h. einschließen, <span style="color:#00B000">(im Axiom-2 mit der Individuum-Variable <span style="color:#4C58FF"> — ‚'''x'''‘ —</span>, und in der Definition-2 mit der Individuum-Variable <span style="color:#4C58FF"> — ‚'''y'''‘ — </span>)</span>. Man kann die Transzendentalia, <span style="color:#00B000">(wie GÖDEL)</span>, auch ,Wesenseigenschaften‘ ''':''' <span style="color:#4C58FF"> — ‚'''X'''<sub>ess</sub>‘ —</span>, nennen, weil sie allem Seienden <span style="color:#FF6000">„wesentlich analog"</span> zukommen. Weil Transzendentalien miteinander austauschbar sind, sind sie auch widerspruchsfrei, was GÖDEL mit Axiom-1 syntaktisch darstellt. Die Gültigkeit und Wahrheit, d.h. die mathematisch-logische Evidenz von Axiom-1 und Axiom-2, beruht auf der ontologischen Allgemeinheit und Gültigkeit der Transzendentalia, die GÖDEL mit Definition-2, in sein Kalkül explizit eingeführt und als Wesenseigenschaften ,bestimmt‘ hat. <span style="color:#00B000">(Definitionen werden formal-syntaktisch durch das Äquivalenzzeichen <span style="color:#4C58FF">,'''↔'''‘</span> angezeigt, gelesen als <span style="color:#FF6000">„...ist genau dann ... wenn...“</span>)</span> Die GÖDEL-Axiome und -Definitionen werden jedoch sofort <span style="color:#FF6000">„modal falsch"</span>, wenn ihre Eigenschafts-Variablen, <span style="color:#4C58FF">— ‚'''X'''‘ —</span> und <span style="color:#4C58FF">— ‚'''Y'''‘ —</span>, mit ,Nicht-Transzendentalia‘, wie z. B. ,rot‘ oder ,schwer‘, belegt werden. <span style="color:#00B000">(Dieser ,Sachverhalt‘ wird von Kritikern des GÖDEL-Systems, — zu vorschnell —, verwendet, um ihre Behauptungen zu ,belegen‘, das GÖDEL-Kalkül und seine Konsequenzen seien ,falsch‘.)</span> Zum Überblick ''':''' <span style="color:#FF6000">„Transzendentalia“</span> sind universale, alles Seiende charakterisierende Begriffe, die über kategoriale Einteilungen hinausgehen, und sowohl in der klassischen Scholastik, als auch in der modernen Philosophie, <span style="color:#00B000">(KANT, Uwe MEIXNER<ref>vgl. die ,transzendentalen‘ Bedingungen möglicher Erkenntnisse bei KANT; und auch in der ,Axiomatischen Ontologie‘ bei Uwe MEIXNER</ref>)</span>, als Grundlage der Metaphysik und Erkenntnistheorie dienen. Sie sind die <span style="color:#FF6000">„ersten Begriffe des Seins“</span>, die jedem Ding als ,relative‘ Vollkommenheiten, <span style="color:#00B000">(Perfektionen)</span>, inhärent sind, <span style="color:#FF6000">„analogisch"</span> abgestuft, auf einen ,ultimativ‘-unbegrenzten Bezugspunkt ausgerichtet, und die sich im Denken, <span style="color:#00B000">(für uns als wahr)</span>, und in der moralischen Wertung, <span style="color:#00B000">(für uns als gut und edel)</span>, manifestieren, relativ zum ,ultimativ‘-unbegrenzten Bezugspunkt ihrer selbst. Die faktische, zusätzliche Unvollkommenheit, die sich generell in der notwendigen, und unausweichlichen Vergänglichkeit aller Dinge zeigt, ist einem ontologischen Defekt ,geschuldet‘, der stark zeitabhängig ist, d.h. der einen Anfang und ein Ende hat. Das GÖDEL-Axiom-5 ''':''' <span style="color:#4C58FF"> — ‚'''PE'''<sub>not</sub>‘ —</span> ''':''' <span style="color:#FF6000">»''Notwendige Existenz ist eine positive Eigenschaft''«</span>, ist immer falsch, wenn es auf etwas aus der <span style="color:#FF6000">»''zufälligen Struktur der Welt''«</span> angewendet wird, wie z. B. auf einen <span style="color:#FF6000">„Tsunami“</span>, dessen ‚Existenz‘ für uns nicht ‚positiv‘ ist. KANT hat schon festgestellt ''':''' <span style="color:#FF6000">„Existenz ist keine Eigenschaft“</span>. Das gilt für alles, was <span style="color:#FF6000">„existiert“</span>. Das Axiom-5 hat nur dann seine Gültigkeit, ist nur dann ,wahr‘, wenn <span style="color:#FF6000">„Dasein“</span> <span style="color:#00B000">(Existenz)</span> und <span style="color:#FF6000">„Wesenseigenschaften“</span> <span style="color:#00B000">(Essenz)</span> in eins zusammenfallen. Bei allen Dingen, die ‚da‘ sind, ist ihr ‚Da-Sein‘ ontologisch immer verschieden zu dem ‚was‘ sie sind ''':''' zu ihrem ,Was-Sein‘. In der philosophischen Tradition, seit ARISTOTELES, wird die ontologische Identität, d.i. die Koinzidenz, der innere Zusammenhang von ‚Sein‘ und ‚Wesen‘ allein nur dem <span style="color:#FF6000">„selbst ‚unbewegten‘ Erstbewegenden“</span> zugeschrieben, dem <span style="color:#FF6000">„<span style="font-family: Times;"><big>πρῶτον κινοῦν ἀκίνητον</big></span>“</span><span style="color:#00B000"> | ,prôton kinoûn akinêton‘</span>, von dem ARISTOTELES etwas später sagt ''':''' <span style="color:#FF6000">»''denn dies ist der Gott''«</span> und dann hinzufügt ''':''' <span style="color:#FF6000">»''so sagen wir ja''«</span>; d.h. das ist eine Interpretation aus dem Glaubenskontext des ARISTOTELES. Er war ein Gott-gläubiger Grieche. Wer an GOTT glaubt, kann das nachvollziehen. GÖDEL musste dieses Axiom-5 postulieren, sonst wäre sein Kalkül nicht aufgegangen, ohne dass er deswegen schon an GOTT glauben müsste. Er hat für sein Kalkül das ontologische Theorem von der Identität von ‚Sein‘ und ‚Wesen‘ im ‚unbewegten Erstbeweger‘ des ARISTOTELES benutzt, ohne diese Herkunft explizit referenziert zu haben. <span style="color:#00B000">(Gilt auch für Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span> ''':''' <span style="color:#FF6000">»''Göttlichkeit, das GOTT-Sein, das ‚Dasein‘ GOTTES, ist eine positive Wesenseigenschaft, eine Perfektion; d.h. ist das ‚Wesen‘ GOTTES ''':''' GOTT ist perfekt''«</span>)</span>. Die ontologische Identität von Sein und Wesen, Existenz und Essenz, wie auch die Koinzidenz von Möglichkeit und Wirklichkeit, von Ursache und Wirkung, sowie auch die ontologische Einheit von <span style="color:#00B000">(Erkenntnis-)</span>Subjekt und <span style="color:#00B000">(Erkenntnis-)</span>Objekt im <span style="color:#FF6000">»''Erkennen seiner Erkenntnis''<span style="color:#00B000">[-Tätigkeit ]</span>«<span style="color:#00B000"> | </span>„<span style="font-family: Times;"><big>νοήσεως νόησις</big></span>“</span><span style="color:#00B000"> | ,noêseôs noêsis‘ <small>(<span style="font-family: Times;"><big>,''Metaphysik''‘</big></span> XII 9, 1074b34)</small></span>, und der innere Zusammenhang der <span style="color:#FF6000">„ultimativen Transzendentalia“</span>, gilt nur in der <span style="color:#FF6000">„unverursachten Letztursache"</span>, auf die ARISTOTELES bei seiner Prinzipienforschung gestoßen ist. Es gibt verschiedene Versuche, die GÖDEL-Axiome durch sog. ,Modelle‘, relativ zu einfacheren ,Welten‘, zu verifizieren, um damit ihre relative Konsistenz nachzuweisen. Für GÖDEL aber <span style="color:#FF6000">»''sind die Axiome nur dann'' <span style="color:#00B000">[ in unserer ,realen‘ Welt ]</span> ''wahr'' <span style="color:#00B000">[ und annehmbar ]</span>«</span>, wenn sie <span style="color:#FF6000">»''unabhängig von der zufälligen Struktur der Welt'' <span style="color:#00B000">[ d.h. jeder auch nur ,möglichen‘ Welt ]</span> ''sind''«</span>. Diese Bedingung verweist jede Verifikation und jede Interpretation der Axiome auf das ,Nicht-Zufällige‘, das ,Notwendige‘, ,Absolute‘, in dem die Axiome und Definitionen des GÖDEL-Kalküls erst dadurch ihren Sinn und ihre Bedeutung bekommen, wenn sie vom ,Absoluten‘ und ,Unendlichen‘ her erklärt und verstanden werden. Damit insistiert GÖDEL auf eine genuin <span style="color:#4C58FF">,theologische‘</span> Interpretation seines Kalküls, mit der <span style="color:#4C58FF">„Theologie“</span> zum Begriff GOTT, dem unbegrenzt Unendlichen, als Verifikationskriterium. Das entspricht auch der ,methodologischen‘ Prämisse seines Kalküls. Die wichtigsten Axiome und Definitionen im GÖDEL-Kalkül sind jedoch bloße ,Annahmen‘, deren Evidenz, sowohl die ,mathematische‘ als auch die <span style="color:#4C58FF">,theologische‘</span>, erst evaluiert, d.h. ,bewiesen‘ <span style="color:#00B000">( ╞ )</span> werden muss. Das bedeutet ''':''' die logische Verifikation der Axiome und Definitionen von GOTT und seinen Vollkommenheiten kann nur Kalkül-intern durch den Aufweis ihrer Widerspruchsfreiheit erfolgen, d.i. <span style="color:#FF6000">»''unabhängig von der zufälligen Struktur der Welt''«</span>. Logisch evaluierte und verifizierte Axiome und Definitionen sind die ,modal‘ notwendigen, d.h. die ,transzendentalen‘ Voraussetzungen für die Ergebnisse eines Kalküls, damit seine Theoreme und Korollare in unserer ,realen‘ Welt als logisch ,wahr‘ und damit für uns auch als ,annehmbar‘ gelten können, während die Prämissen eines Kalküls, <span style="color:#00B000">(die Argument Einführung, <span style="color:#4C58FF">— '''AE:''' —</span> )</span>, nicht notwendige, und somit ,modal‘ frei gewählte ,Annahmen‘ sind. Jedoch aus diesen ,modal‘ frei gewählten, ,möglichen‘ <span style="color:#00B000">( <span style="color:#4C58FF">'''◇'''</span> )</span> Prämissen folgen mit Hilfe der ,bewiesenen‘ <span style="color:#00B000">( ╞ )</span> Axiome und Definitionen die Ergebnisse mit ,modaler‘ Notwendigkeit <span style="color:#00B000">( <span style="color:#4C58FF">'''□'''</span> )</span>. Die Logik des GÖDEL-Systems ist eine ,Prädikatenlogik‘ zweiter Stufe, in der die Quantoren nicht nur Individuum-Variable, sondern auch Eigenschafts-Variable, <span style="color:#00B000">(als noch ,unbestimmte‘ Prädikate im Allgemeinen)</span>, binden können. Die formale Struktur des GÖDEL-Kalküls besteht aus fünf Axiomen und drei Definitionen, mit deren Hilfe in drei Beweisgängen drei Theoreme und mehrere Korollare aus seiner ,methodologischen‘ Prämisse ,regulär‘ <span style="color:#00B000">(├ )</span> abgeleitet werden können, wobei die beiden ersten Beweisgänge, mit ihren Ergebnissen, den dritten vorbereiten, in dem es dann um das Theorem ANSELMS geht. Die Prämisse des GÖDEL-Kalküls in allen Beweisgängen ist der traditionelle ,GOTT-Glaube‘, in der Formulierung speziell nach LEIBNIZ. Ein Axiom, eine Definition, zwei Theoreme und alle Korollare im GÖDEL-Kalkül sind Aussagen über <span style="color:#FF6000">„GOTT“</span>, <span style="color:#4C58FF">— ‚'''G'''‘ —</span>. Alle fünf Axiome, eine Definition und ein Theorem, <span style="color:#00B000">(und das Korollar aus Axiom-4)</span>, sind auch Aussagen über die Eigenschaft <span style="color:#FF6000">„Vollkommenheit“, „Perfektion“</span>, <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, die in der <span style="color:#FF6000">»''theologischen Weltanschauung''«</span> als die Wesenseigenschaft GOTTES gilt ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, <span style="color:#FF6000">»''GOTT ist vollkommen''«</span> bzw. <span style="color:#FF6000">»''GOTT ist das Vollkommenste der Wesen''«</span>, <span style="color:#00B000">(DESCARTES)</span>. Zwei Definitionen sind Aussagen über die allgemeinen Wesenseigenschaften aller Seienden, <span style="color:#4C58FF">— ‚'''X'''<sub>ess</sub>‘ —</span>, die Transzendentalien, die, als notwendige Existenz, <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>‘ —</span>, auch GOTT zugeordnet werden, mit der Besonderheit bei GOTT, dass sowohl alle Eigenschaften, als auch alle anderen Zuordnungen, wie Sein und Wesen, wie Ursache und Wirkung, usw., im Unendlichen, GOTT, <span style="color:#FF6000">„koinzident“</span> sind, d.h. in GOTT paarweise perspektivisch in ,eins‘ zusammenfallen, und die auch, als Transzendentalia, konvertierbar, d.h. austauschbar sind. Diese Sachverhalte machen deutlich, dass eine spezifische ,Verifikation‘ und sachgerechte ,Evaluierung‘ der GÖDEL-Axiomatik nur genuin <span style="color:#4C58FF">,theologisch‘</span> erfolgen kann. Die Evaluierung der <span style="color:#FF6000">»''mathematischen Evidenz''«</span> des GÖDEL-Systems, im Allgemeinen, muss jedoch entsprechend der Maßstäbe einer modalen Prädikatenlogik zweiter Stufe durchgeführt werden. Das GÖDEL-Kalkül unterscheidet <span style="color:#00B000">(in Definition-3 ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x ↔ ∀X(X'''<sub>ess</sub>'''x →□∃yXy)'''‘ —</span>)</span> formal-syntaktisch zwischen der Eigenschaft ,Existenz‘, <span style="color:#4C58FF"> — ‚'''E'''‘ —</span>, die nur GOTT zugeordnet werden kann, und dem Existenz-Operator, <span style="color:#4C58FF">— ‚'''∃'''‘ —</span>, der auch allem Übrigen, das nicht GOTT ist, zugeordnet wird. Es gibt hier auch den formal-syntaktischen Unterschied zwischen der, <span style="color:#00B000">(von mir notierten, jedoch von GÖDEL schon intendierten und angesprochenen)</span>, speziellen ,Notwendigkeit‘, <span style="color:#4C58FF"> — <sub>not</sub> —</span>, die nur der Existenz GOTTES zugeordnet ist, und der modalen ,Notwendigkeit‘, <span style="color:#4C58FF">— ‚'''□'''‘ —</span>, die auf Verschiedenes bezogen werden kann. Diese Unterschiede sind Hinweise, dass GÖDEL in seiner Kalkül-Logik und -Syntax, die Außerordentlichkeit und Eigenständigkeit GOTTES berücksichtigt, der, als Schöpfer der Welt, prinzipiell und absolut <span style="color:#FF6000">»''unabhängig von der zufälligen Struktur der Welt''«</span> ist, die erst durch GOTT auch das ist, was sie ist. ===<div class="center"><span style="color:#660066">Die Genese des Kalküls</span></div>=== Wie kommt GÖDEL zu seinem Kalkül '''?''' Sein Gewährsmann war Gottfried Wilhelm LEIBNIZ, <span style="color:#00B000">(1646-1716)</span>, den er sehr schätzte. Die rekonstruierbare Genese seines Kalküls findet man in LEIBNIZ ''':''' ''<span style="font-family: Times;"><big>‚Neue Abhandlungen über den menschlichen Verstand‘</big></span>'', <span style="color:#00B000">(1704)</span>‚ ''<span style="font-family: Times;"><big>Viertes Buch, Kapitel X ''':''' ‚Von unserer Erkenntnis des Daseins Gottes‘</big></span>'', Seite 475f. Hier der <span style="color:#00B000">[ kommentierte ]</span> Textausschnitt zum sog. ontologischen ‚Gottesbeweis‘''':''' ::<span style="color:#FF6000">»</span>''Folgendes etwa ist der Gang seines'' <span style="color:#00B000">[ d.h. ANSELMS, Erzbischof von Canterbury; 1033-1109, ]</span> ''Beweises ''':''' GOTT ist das Größte'', <span style="color:#00B000">[ ANSELM spricht vom biblischen GOTT des Glaubens, als ''':''' <span style="color:#FF6000">»''den, über dem ,Größeres‘'' | <span style="font-family: Times;"><big>‚maius‘</big></span> | ''nicht mehr gedacht werden kann''«</span> ]</span>, ''oder, wie DESCARTES es ausdrückt ''':''' das Vollkommenste der Wesen oder auch ein Wesen von äußerster Größe und Vollkommenheit'' ''':''' <span style="color:#00B000"> [ GÖDEL ''':''' </span><span style="color:#4C58FF">‚'''P'''‘</span> <span style="color:#00B000">:= ‚Perfektion‘, ‚positive Eigenschaft‘ ]</span>, ''das alle Grade derselben in sich schließt.''<span style="color:#00B000"> [ GÖDEL-Definition-1 ''':''' <span style="color:#4C58FF">— ‚'''Gx↔∀X(PX→Xx)'''‘ —</span> ''':''' <span style="color:#FF6000">»''Das Individuum'' <span style="color:#4C58FF">,'''x'''‘</span> ''ist genau dann GOTT'', <span style="color:#4C58FF">,'''G'''‘</span>, ''wenn'' <span style="color:#4C58FF">,'''x'''‘</span> ''alle Vollkommenheiten'', <span style="color:#4C58FF">,'''P'''‘</span>, ''in sich schließt''«</span>. Definition-1 bildet die traditionelle Vorstellung von GOTT ab. ]</span> ''Dies also ist der Begriff GOTTES.'' <span style="color:#00B000">[ Der Term <span style="color:#4C58FF">— ,'''G'''‘ —</span> steht hier für den biblischen ‚Begriff‘ <span style="color:#FF6000">„GOTT“</span> als ,Individuumname‘ '''!''' ]</span> ''Sehen wir nun, wie aus diesem Begriff das ‚Dasein’ folgt.''<span style="color:#00B000"> [ GÖDEL ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span> ''':''' <span style="color:#FF6000">»''GOTT ist notwendig aus sich ‚da‘''«</span> ''':''' Term :10:, 1. Hauptergebnis im 3. Beweisgang. ]</span> ''Es ist etwas <u>mehr</u>, ‚da‘ zu sein, als nicht ‚da‘ zu sein, oder auch das ‚Dasein‘ fügt der Größe oder der Vollkommenheit'' <span style="color:#00B000">[ GOTTES ]</span> ''einen Grad hinzu, und wie DESCARTES es ausspricht, das ‚Dasein‘ ist selbst eine Vollkommenheit.''<span style="color:#FF6000">«</span> <span style="color:#00B000">(Diesen Ausspruch DESCARTES übernimmt GÖDEL im Axiom-5 ''':''' <span style="color:#4C58FF"> — ‚'''PE'''<sub>not</sub>‘ —</span> ''':''' <span style="color:#FF6000">»''notwendige Existenz''</span> [ alias ‚Dasein GOTTES’ ] <span style="color:#FF6000">''ist eine positive Eigenschaft''</span> [ alias Vollkommenheit ]<span style="color:#FF6000">«</span>. Dem widerspricht KANT ''':''' <span style="color:#FF6000">„Existenz ist keine Eigenschaft“</span>, bzw. <span style="color:#FF6000">»''Sein ist kein reales Prädikat''«</span>. Das Axiom-5 ist daher nur dann ‚wahr‘, wenn ‚Wirklichsein‘ | <span style="color:#FF6000">„<span style="font-family: Times;"><big>ἐνέργεια οὖσα</big></span>“</span> | ‚enérgeia oúsa‘ | d.h. ‚Dasein‘ und ‚Wesen‘ | <span style="color:#FF6000">„<span style="font-family: Times;"><big>οὐσία</big></span>“</span> | ‚ousía‘ | — genauer ''':''' ‚Wesenseigenschaften’ —, ontologisch ,eins‘ sind, d.h. wenn <span style="color:#FF6000">„Existieren“</span> immer schon die <span style="color:#FF6000">„Wesenseigenschaft“</span> GOTTES ist. Was nach ARISTOTELES nur im <span style="color:#FF6000">„unbewegten Erstbeweger“</span> der Fall ist; bzw. mit LEIBNIZ ''':''' <span style="color:#FF6000">»''was das Privilegium der Gottheit allein ist''«</span> '''!''' Aus der ,methodologischen‘ ,Annahme‘ im 2. Beweisgang GÖDELS ''':''' <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span> ''':''' <span style="color:#FF6000">»''das'' <span style="color:#4C58FF">‚'''x'''‘</span> ''steht für den GOTT der Christen''«</span>, und mit Hilfe von Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span> ''':''' <span style="color:#FF6000">»''Göttlichkeit ist eine positive Eigenschaft''«</span>, bzw. <span style="color:#FF6000">»''GOTT ist perfekt''«</span>, mit Axiom-4 ''':''' <span style="color:#4C58FF">— ‚'''PX → □PX'''‘ —</span> ''':''' <span style="color:#FF6000">»''Positive Eigenschaften sind notwendig aus sich, — von Natur aus —, positiv''«</span>, mit Definition-2 ''':''' <span style="color:#4C58FF">— ‚'''X'''<sub>ess</sub>'''x ↔ Xx ∧ ∀Y(Yx→ □∀y(Xy→Yy))'''‘ —</span> ''':''' <span style="color:#FF6000">»''Zum Wesen gehören notwendig auch alle Konsequenzen aus einer Wesenseigenschaft''«</span>, und mit Axiom-1 und der Definition für GOTT, folgt nach einigen logischen Umformungen das GÖDEL-Theorem-2 ''':''' <span style="color:#4C58FF">— ‚'''Gx↔G'''<sub>ess</sub>'''x'''‘ —</span> ''':''' <span style="color:#FF6000">»''Das'' <span style="color:#4C58FF">‚'''x'''‘</span> ''ist genau dann der GOTT der Christen, wenn das Wesen dieses GOTTES sein eigenes Sein ist''«</span>. Dasein und Wesen sind im Unendlichen, GOTT <span style="color:#FF6000">„koinzident“</span> ,eins‘, übereinstimmend mit dem Theorem des ARISTOTELES. Mit diesem, im Kalkül <u>ohne</u> Axiom-5 ,regulär‘ (├ ) abgeleiteten Theorem, widerlegt er KANT für den individuellen Spezialfall <span style="color:#4C58FF">‚'''G'''‘</span> := <span style="color:#FF6000">„GOTT“</span>. Nachprüfbar im Anhang ''':''' im ‚ontologischen‘ Beweis für das Basis-Theorem-2. Somit ist Axiom-5 ,wahr‘, und KANT, der <span style="color:#FF6000">»''eine Abneigung gegen das Gebet hatte''«</span> und auch <span style="color:#FF6000">»''nie zu den sonntäglichen Kirchgängern zählte''«</span><ref>Uwe SCHULTZ ''':''' ‚''<span style="font-family: Times;"><big>Immanuel Kant</big></span>''‘, Rowohlt Monographie 50659, Seite 12</ref>, hat sich hier, im Bezug auf GOTT, geirrt. <span style="color:#4C58FF">„Theologie“</span>, als Wissenschaft von GOTT, war für KANT nie eine ernstzunehmende Option. Die <span style="color:#4C58FF">„Theologie“</span>, als Wissenschaft von GOTT, die natürlich immer auch verbunden sein muss mit der täglichen ,Erfahrung‘ einer Glaubens-Praxis, im Gebet und in den Gottesdienst-Feiern des <span style="color:#4C58FF">„Theologen“</span>, und die daraus entsteht, ist eine ziemlich ,ausgereifte‘ Disziplin. Es haben sich, durch Jahrhunderte hindurch, viele gläubige und auch gescheite Menschen, schon im Judentum, und dann im Christentum, und ebenfalls im Islam, darum bemüht.)</span> :: <span style="color:#FF6000">»</span>''Darum ist dieser Grad von Größe und Vollkommenheit oder auch diese Vollkommenheit, welche im ‚Dasein‘ besteht, in diesem höchsten, durchaus großen, ganz vollkommenen Wesen, denn sonst würde ihm ein Grad fehlen, was gegen seine Definition wäre. Und folglich ist dies höchste Wesen ‚da‘. Die Scholastiker, ohne selbst ihren'' <span style="font-family: Times;"><big>doctor angelicus</big></span> <span style="color:#00B000">[ := THOMAS von Aquin ]</span> ''auszunehmen, haben diesen Beweis verachtet'', <span style="color:#00B000">[ wie später auch Immanuel KANT ]</span>, ''und ihn als einen Paralogismus'' <span style="color:#00B000">[ := Fehlschluss ]</span> ''betrachtet, worin sie sehr unrecht gehabt haben; und DESCARTES, welcher die scholastische Philosophie im Kolleg der Jesuiten zu La Flèche lange genug studiert hatte, hat sehr recht gehabt, ihn wieder zu Ehren zu bringen. Es ist nicht ein Paralogismus, sondern ein unvollständiger Beweis'', <span style="color:#00B000">[ den GÖDEL vervollständigt hat ]</span>, ''der etwas voraussetzt, was man noch hätte beweisen sollen, um ihm mathematische Evidenz zu verleihen — nämlich, dass man dabei stillschweigend voraussetzt, diese Vorstellung des durchaus großen oder durchaus vollkommenen Wesens sei möglich und enthalte keinen Widerspruch'' <span style="color:#00B000">[ '''::''' <span style="color:#4C58FF">— '''◇''' —</span> '''::''' ,möglich‘, ,konsistent‘, ,denkbar‘; GÖDEL beweist im 1. Beweisgang aus Theorem-1 ''':''' <span style="color:#4C58FF">— ‚'''PX→◇∃xXx'''‘ —</span>, <span style="color:#FF6000">»''positive Eigenschaften'', <span style="color:#00B000">[ die allgemeinen Transzendentalien ]</span>, ''sind widerspruchsfrei''«</span>, mit Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, folgt Korollar-1 ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span>, <span style="color:#FF6000">»''GOTT ist widerspruchsfrei möglich''«</span> ]</span>. ''Und es ist schon etwas, dass man durch diese Bemerkung beweist ''':''' gesetzt, dass GOTT'' <span style="color:#00B000">['' <span style="color:#FF6000">»widerspruchsfrei«</span> '']</span> '',möglich‘ ist, so ‚ist‘ er'' <span style="color:#00B000">[ ,notwendig‘ '''::''' <span style="color:#4C58FF">— '''□''' —</span> '''::''' für jede mögliche Welt auch wirklich aus sich ‚da‘ ]</span>, ''was das Privilegium der Gottheit allein ist'' ''':''' <span style="color:#00B000">[ Im 3. Beweisgang, Theorem-3 ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx→□∃xGx'''‘ —</span> ''':''' ‚ANSELMS Prinzip‘ ''':''' <span style="color:#FF6000">»''Weil GOTT widerspruchsfrei ,möglich‘ ist, darum ist auch der Glaube widerspruchsfrei, der annimmt, dass GOTT aus sich ,notwendig‘ da ist''«</span>; mit Korollar-3 ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx ∧ □∀y(Gy→x=y)'''‘ —</span>, <span style="color:#FF6000">»''Es gibt notwendig nur einen einzigen GOTT''«</span>. Damit ist auch der Monotheïsmus bewiesen. ]</span> ''Man hat recht, die Möglichkeit eines jeden Wesens anzunehmen und vor allem die GOTTES, bis ein anderer das Gegenteil beweist''. <span style="color:#00B000">[ Das Gegenteil besagt, dass GOTT ,unmöglich‘ ist. Hier setzt der Möglichkeitsbeweis im GÖDEL-Kalkül an, und beweist, dass diese Aussage zu einem Widerspruch führt. ]</span> ''Somit gibt dieser metaphysische Beweis schon einen moralischen zwingenden Schluss ab, wonach wir dem gegenwärtigen Stande unserer Erkenntnisse zufolge urteilen müssen, dass GOTT ‚da‘ sei, und demgemäß handeln.'' <span style="color:#00B000">[ Aber nicht logisch zwingend '''!''' Denn die Interpretation <span style="color:#4C58FF">— ‚'''G'''‘ —</span> mit dem GOTT der Bibel, als ,methodologische‘ Kalkül-Prämisse, ist nicht zwingend, jedoch ,modal‘ möglich, <span style="color:#4C58FF">— '''◇''' —</span>, und im christlichen Glaubenskontext sinnvoll, was mit einer stimmigen <span style="color:#4C58FF">„theologischen“</span> Interpretation des GÖDEL-Kalküls gezeigt werden kann. Damit wäre dann auch die Frage beantwortet, ob das GÖDEL-System sich plausibel als eine Theorie von GOTT und seinen Eigenschaften interpretieren lässt, bzw. als eine <span style="color:#FF6000">»''axiomatische''«</span> <span style="color:#4C58FF">„Theologie“</span>, wie sie André FUHRMANN apostrophiert. Das <span style="color:#4C58FF">— ‚'''G'''‘ —</span> ist der ,Individuumname‘ für den GOTT der Bibel, — ,GOTT‘ groß geschrieben —, im monotheïstischen, christlichen Glaubenskontext, den auch LEIBNIZ teilt. Dann steht der ,Name‘ auch synonym für das ,existierende‘ Individuum, d.h. für dessen ,Existenz‘. ]</span> ''Es wäre aber doch zu wünschen, dass gescheite Männer'' <span style="color:#00B000">[ sic ! ]</span> ''den Beweis mit der Strenge einer mathematischen Evidenz vollendeten'', <span style="color:#00B000">[ was GÖDEL veranlasst hat, seine Version eines ‚ontologischen Beweises’ zu kreieren, dessen <span style="color:#FF6000">»''mathematische Evidenz''«</span> man heute mit Computerprogrammen<ref>siehe Fußnote 12</ref> schon nachgewiesen hat ]</span> ... <span style="color:#FF6000">«</span>. Für GÖDEL war dieser Text eine intellektuelle Herausforderung, und er hat sie angenommen. Das war für GÖDEL sicher keine Glaubensangelegenheit. GOTT hat es ja auch nicht nötig, ‚bewiesen‘ zu werden. Wer <span style="color:#4C58FF">— ‚'''G'''‘ —</span> z. B. mit dem sog. ‚Urknall‘ gleich setzt, macht die <span style="color:#FF6000">»''zufällige Struktur der Welt''«</span> im ‚Urknall‘, <span style="color:#00B000">(pantheistisch)</span> zu einem ,Gott‘, was GÖDEL dezidiert für sein Kalkül ausgeschlossen haben wollte. Kurt GÖDEL schreibt 1961 in einem Brief, in Anlehnung an den obigen Text ''':''' ::<span style="color:#FF6000">»...''ich glaube, schon heute dürfte es möglich sein, rein verstandesmäßig ''<span style="color:#00B000">[ sic '''!''' ]</span>, ''(ohne sich auf den Glauben an irgendeine Religion zu stützen) einzusehen, dass die theologische Weltanschauung'', <span style="color:#00B000">[ dass es GOTT gibt ]</span>, ''mit allen bekannten Tatsachen'', <span style="color:#00B000">[ z. B. mit den Maßstäben einer modernen Logik ]</span>, ''durchaus vereinbar ist. Das hat schon vor 250 Jahren der berühmte Philosoph und Mathematiker LEIBNIZ versucht''.«</span><ref>Zitiert nach SCHIMANOVICH-GALIDESCU, M.-E. ''':''' ‚''<span style="font-family: Times;"><big>Princeton–Wien 1946–1966. Briefe an die Mutter</big></span>''‘, in ‚''<span style="font-family: Times;"><big>Kurt Gödel – Leben und Werk</big></span>''‘, Hg. B.BULDT et alia, Wien (HÖLDER–PICHLER–TEMSKY), 2001, Band 1</ref> ===<div class="center"><span style="color:#660066">Die Interpretation des Kalküls</span></div>=== Wenn man sich das GÖDEL-Kalkül ansieht, wie es heute formalisiert vorliegt, stellt sich die Frage ''':''' <span style="color:#FF6000">„Lässt sich dieses System plausibel als eine Theorie von GOTT <span style="color:#00B000">(als eine ‚Rede von GOTT’ := <span style="color:#4C58FF">,Theologie’</span>)</span> und seiner Eigenschaften verstehen '''?''' “ — „Ist hier eine genuin <span style="color:#4C58FF">,theologische’</span> Interpretation möglich '''?''' “</span> Seine Herkunft aus der intellektuellen Auseinandersetzung des Logikers GÖDEL mit dem GOTT-gläubigen Philosophen LEIBNIZ und dem christlichen Theologen und Erzbischof ANSELM rechtfertigt diese Frage. Die <span style="color:#FF6000">„mathematische Evidenz“</span> des GÖDEL-Formalismus, <span style="color:#00B000">(im Anhang nachgestellt)</span>, ist allgemein anerkannt, <span style="color:#00B000">(Vorbehalte dagegen gibt es nur bei der Interpretation seiner Syntax, d.h. ob die Axiome und Definitionen, wie GÖDEL sie konzipiert hat, bzw. ob die Theoreme und Korollare, die aus diesen Axiomen ,regulär’ (├ ) abgeleitet werden, auch in unserer realen Welt ,wahr’ und ,annehmbar’ sind)</span>. Die <span style="color:#FF6000">„theologische Evidenz“</span> des GÖDEL-Systems wird durch eine ,Verankerung’ der Axiome und Definitionen in den <span style="color:#4C58FF">,theologisch’</span>-philosophischen Diskurs über GOTT evaluiert, der schon seit zweieinhalbtausend Jahren läuft. In diesen zweieinhalbtausend Jahren hat sich, — gegen ARISTOTELES und die antike Philosophie —, die Erkenntnis durchgesetzt, dass GOTT <span style="color:#FF6000">»''unabhängig''«</span> von der <span style="color:#FF6000">»''zufälligen''«</span> Raum-Zeit-Struktur unserer vergänglichen Welt ist. In meiner Darstellung des GÖDEL-Kalküls folge ich, <span style="color:#00B000">(im Unterschied zum Autographen GÖDELS, vom 10. Feb 1970)</span>, in der Axiom-Formulierung und -Nummerierung, in der Syntax, und in der Beweis-Struktur, der Arbeit von André FUHRMANN ''':''' ''<span style="font-family: Times;"><big>‚Existenz und Notwendigkeit. Kurt Gödels axiomatische Theologie‘</big></span>'' in ''<span style="font-family: Times;"><big>‚Logik in der Philosophie‘</big></span>'' Hg. SCHROEDER-HEISTER, SPOHN und OLSSON, 2005, Synchron, Heidelberg, Seite 349–374. <span style="color:#00B000">(Die tiefer gestellte Notation der spezifischen ,Eigenschaft‘ einer Eigenschaft ist meine Ergänzung zur formalen Syntax, z. B. ''':''' <span style="color:#4C58FF"> — ‚'''G'''<sub>ess</sub>'''x'''‘ — </span>, angeregt durch die indizierende Schreibweise GÖDELS ''':''' <span style="color:#4C58FF">— ,'''G''' Ess. '''x'''’ —</span>.)</span> Die Erkenntnisse zur Straffung und Präzisierung der GÖDEL-Syntax, <span style="color:#00B000">(besonders im Möglichkeitsbeweis)</span>, stammen aus der Arbeit von Günther J. WIRSCHING ''':''' ,''<span style="font-family: Times;"><big>Der Gödelsche Gottesbeweis</big></span>''‘, im Web <ref>https://edoc.ku.de/id/eprint/10243/1/OntBw.pdf</ref>. <span style="color:#00B000">(Auch der Hinweis auf AVICENNA kommt von WIRSCHING.)</span> Die Zitate von THOMAS von Aquin´s Stellungnahme zum Theorem ANSELMS, und von Georg Wilhelm Friedrich HEGEL zur Immanuel KANTS Ablehnung des Theorem ANSELMS, befinden sich in Franz SCHUPP, ,<span style="font-family: Times;"><big>''Geschichte der Philosophie im Überblick''</big></span>‘, Band 2 ‚<span style="font-family: Times;"><big>''Christliche Antike, Mittelalter''</big></span>‘, Hamburg 2003, Seite 168 und Seite 170. Meines Erachtens ist der entscheidende Ansatzpunkt einer <span style="color:#4C58FF">„theologischen“</span> Interpretation das GÖDEL-Axiom-5 ''':''' <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub>‘ —</span>, <span style="color:#FF6000">»''notwendige Existenz ist eine positive Eigenschaft''«</span>. ‚Frei‘ nach KANT ‚formuliere‘ ich ‚kurz‘ ''':''' <span style="color:#FF6000">„Existenz ist keine Eigenschaft“</span>. Hier die Positionen KANTS zum Thema ‚Existenz‘ und ‚Eigenschaften‘ ''':''' ::<span style="color:#FF6000">»</span>''… unbeschadet der wirklichen Existenz äußerer Dinge'', <span style="color:#00B000">[ kann man ]</span> ''von einer Menge ihrer Prädikate'', <span style="color:#00B000">[ d.h. Eigenschaften ],</span> ''sagen'' … ''':''' ''sie gehöreten nicht zu diesen ‚Dingen an sich selbst‘, sondern nur zu ihren Erscheinungen, und hätten außer unserer Vorstellung'' <span style="color:#00B000">[ ihrer, als ,wirklich‘ gedachten Erscheinung, ]</span> ''keine eigene Existenz, … weil ich finde, dass … '''alle Eigenschaften, die die Anschauung eines Körpers ausmachen''', bloß zu seiner Erscheinung gehören; denn die Existenz des Dinges, was erscheint, wird dadurch nicht … aufgehoben, sondern nur gezeigt, dass wir es'', <span style="color:#00B000">[ das Ding ]</span>, ''wie es ‚an sich selbst‘ sei'', <span style="color:#00B000">[ d.h. existiert ]</span>, ''durch Sinne gar nicht erkennen können''.<span style="color:#FF6000">«</span><ref>vgl. ‚''<span style="font-family: Times;"><big>Prolegomena zu einer jeden künftigen Metaphysik, die als Wissenschaft wird auftreten können</big></span>''‘, Seite 289; https://www.korpora.org/kant/aa04/289.html</ref> <span style="color:#00B000"><small>(Hervorhebung durch KANT.)</small> [ Seine Prädikate, d.h. Eigenschaften, jedoch können wir mit unseren Sinnen ,anschauen‘, aber nur in Kombination mit unserer Vorstellung ihrer, als ,wirklich‘ gedachten Erscheinung, vermittelt durch den sog. ,transzendentalen Schematismus‘ unserer Einbildungskraft ''':'''</span> <span style="color:#FF6000">»</span>''Eine verborgene Kunst in den Tiefen der menschlichen Seele''<span style="color:#FF6000">«</span>, <span style="color:#00B000">jedoch auch eines der ,dunkelsten‘ Kapitel in der K.d.r.V., bedingt durch KANTS Konzept von ,Wirklichkeit‘, bzw. ,Sein‘. ]</span> Mit anderen Worten, man kann die ‚Existenz‘, bzw. das ‚Sein‘ der Dinge, <span style="color:#00B000">(das ‚Ding an sich’ bei KANT)</span>, nicht unter dem Mikroskop finden. Die ‚Existenz‘ bzw. das ‚Sein‘ ist keine sinnlich registrierbare ‚Eigenschaft‘ z. B. des rekonstruierten ‚Stadt-Schlosses‘ in Berlin. <span style="color:#00B000">(‚Sein‘ ist kein reales ‚Prädikat‘.)</span> Dafür haben wir andere Fähigkeiten ''':''' Ich kann seine ‚Existenz‘ mit meinem Verstand einsehen, weil auch ich selbst ‚existiere‘. Seine ‚Ansicht‘, wie ‚gefällig‘ es ist, und auch weitere ‚Eigenschaften‘, die mir auffallen, kann ich mit einem Handy-Foto dokumentieren. Diese ‚Eigenschaften‘ sind nicht die Ursache, dass das ‚Berliner Schloss‘ existiert. Wohl aber die Rekonstruktion dieses Schlosses ist die ‚Ursache‘, dass es ,existiert‘, und jetzt so aussieht. Insofern ist ‚Existenz‘ keine ‚Eigenschaft‘, sondern die ‚Existenz‘ des Dinges ist die Voraussetzung, der ‚Grund‘, dass ich die ‚Eigenschaften‘ des Dinges mit meinen Sinnen feststellen kann. In einer Auseinandersetzung mit CARTESIUS schreibt KANT, philosophisch ‚tiefgründig‘ und logisch ‚exakt‘, über dessen <span style="color:#FF6000"><span style="font-family: Times;"><big>„Cogito, ergo sum“</big></span></span> ''':''' ::<span style="color:#FF6000">»</span>''Das ‚Ich denke‘ ist ein empirischer Satz, und hält den Satz ‚Ich existiere‘ in sich. Ich kann aber nicht sagen ''':''' ‚Alles, was denkt, existiert‘; denn da würde die Eigenschaft des Denkens'', <span style="color:#00B000">[ eine essentielle Eigenschaft ]</span>, ''alle Wesen, die sie besitzen, zu notwendigen'' <span style="color:#00B000">[ d.h. notwendig existierenden ]</span> ''Wesen machen''. <span style="color:#00B000">[ Was allein nur von GOTT ausgesagt werden kann; mit AVICENNA, als anerkannter ARISTOTELES-Kommentator ''':''' <span style="color:#FF6000">»''GOTT ist das einzige Sein, bei dem Essenz'' <span style="color:#00B000">[ ‚Wesenseigenschaften‘ ]</span> ''und Existenz'' <span style="color:#00B000">[ ‚Dasein‘ ]</span> ''nicht zu trennen sind und das daher notwendig an sich da ist''«, <span style="color:#00B000">— konform mit GÖDEL ''':'''</span> »''notwendige Existenz ist eine positive'' <span style="color:#00B000">[ essentielle ]</span> ''Eigenschaft''«</span> ].</span> ''Daher kann meine Existenz auch nicht aus dem Satz, ‚Ich denke‘, als'' <span style="color:#00B000">[ logisch ]</span> ''gefolgert angesehen werden, wie CARTESIUS dafür hielt (weil sonst der Obersatz : ‚Alles, was denkt, existiert‘, vorausgehen müsste), sondern ist mit ihm identisch.'' <span style="color:#00B000">[ Eine einfache Schlussfolgerung ''':''' meine ‚Existenz‘ ist auch nicht von meiner ‚Eigenschaft‘ Denken ‚verursacht‘. ,Existenz‘ ist nicht bloß ein ,Gedanke‘ von mir. ]</span><span style="color:#FF6000">«</span> <span style="color:#00B000">(Aus der Anmerkung 41 zu den ‚''<span style="font-family: Times;"><big>Paralogismen der reinen Vernunft</big></span>''‘, in ‚''<span style="font-family: Times;"><big>Kritik der reinen Vernunft</big></span>''‘, Seite 275,<ref>https://korpora.org/kant/aa03/275.html</ref> mit meinem Einschub des AVICENNA-Zitat aus Wikipedia.<ref>{{w|Avicenna#Metaphysik}}</ref>)</span> Mit anderen Worten ''':''' <span style="color:#FF6000">„Die Eigenschaft, dass ich denken kann, ist nicht die Ursache meiner ‚Existenz‘“</span>, sondern, <span style="color:#FF6000">„Die Liebe meiner Eltern und ihre Entscheidung füreinander ist die Ursache meiner ‚Existenz‘. Daher ‚bin’ ich. Und weil ich ein Mensch ‚bin‘, kann ich denken.“</span> Auch mit diesen Anmerkungen ist leicht einsehbar, dass ‚Existenz‘ keine ‚Eigenschaft‘ ist — außer bei GOTT. In GOTT ist ‚Dasein‘ die ‚Wesenseigenschaft‘ GOTTES, d.h. ‚Dasein‘ und ‚Wesen‘ sind in GOTT untrennbar verbunden; sind <span style="color:#FF6000">„koinzident“</span> ‚eins‘. Das ist die Einzigartigkeit im Wesen GOTTES, dass GOTT immer schon ‚da‘ ist. Die Frage nach dem ‚Wesen‘ GOTTES lautet ''':''' <span style="color:#FF6000">„Was bist du ? “</span>/<span style="color:#CC66FF">„Wer bist Du ? “</span> Antwort, Exodus 3,14 ''':''' <span style="color:#CC66FF">»''Ich bin der ‚Ich-Bin-Da‘'' <span style="color:#00B000">[ für euch und für immer ]</span>«.</span> Weil GOTT für uns immer schon ‚da‘ ist, — <span style="color:#CC66FF">„von Ewigkeit zu Ewigkeit“</span> —, hat GOTT es nicht nötig, ‚bewiesen‘ zu werden. <span style="color:#00B000">(In der Mathematik ist ein ‚Satz‘ erst dann ‚wahr‘ und ‚existent‘, wenn er bewiesen ist. Bei GOTT ist es jedoch nicht so ''':''' GOTTES ‚Existenz‘ ist nicht erst dann ‚wahr‘, wenn seine ‚Existenz‘ von uns ‚bewiesen‘ ist. Sein ‚Dasein‘ ist jedem unserer ‚Beweisversuche‘ immer schon voraus. Der Zugang zu GOTT ist nicht der ,Beweis‘, sondern der ,Glaube‘. Wer an GOTT glauben ,will‘, dem antwortet GOTT. Wer nicht an GOTT glauben ,will‘, dessen Entscheidung respektiert GOTT, und drängt sich nicht auf. Die Glaubens-Entscheidung hat jedoch für jeden Menschen eine existenzielle Konsequenz ''':''' <span style="color:#CC66FF">»''Wer glaubt und sich taufen lässt, wird gerettet; wer aber nicht glaubt'', <span style="color:#00B000">[ und diese Entscheidung auch im Augenblick der ,Wahrheit‘, im Tod, in der sog. ,Endentscheidung‘, nicht widerruft ]</span>, ''wird verurteilt werden''«,</span> <small>({{Bibel | Markus Evangelium |16|16|EU}})</small>. Das Urteil lautet ''':''' <span style="color:#CC66FF">»''zweiter Tod ''':''' der Feuersee''«</span>, <small>({{Bibel | Offenbarung |20|14f|EU}})</small>, ohne Berufungsmöglichkeit. <span style="color:#CC66FF">»''Ohne Glauben aber ist es unmöglich, Gott zu gefallen; denn wer zu Gott kommen will, muss glauben, dass er ist und dass er denen, die ihn suchen, ihren Lohn geben wird''«.</span> <small>({{Bibel | Hebräer Brief |11|6|LUT}})</small>)</span> Das GÖDEL-Axiom-5 ist m.E. der entscheidende Ansatzpunkt einer stimmigen <span style="color:#4C58FF">„theologischen“</span> Interpretation der GÖDEL-Axiomatik. ===<div class="center"><span style="color:#660066">Das Kalkül ist kein Existenz-Beweis für GOTT</span></div>=== Die allgemeine <span style="color:#FF6000">»''mathematische Evidenz''«</span> des GÖDEL-Formalismus, d.h. seine ‚Schlusskraft‘, ist von kompetenten Leuten<ref>„GÖDELS Argumentationskette ist nachweisbar korrekt – so viel hat der Computer nach Ansicht der Wissenschaftler Christoph BENZMÜLLER und Bruno WOLTZENLOGEL-PALEO nun gezeigt;“ vgl. https://www.fu-berlin.de/presse/informationen/fup/2013/fup_13_308/index.html</ref> schon festgestellt worden, <span style="color:#00B000">(im Anhang ‚nachrechenbar‘ mit den Regeln und Gesetzen einer modalen Prädikatenlogik 2. Stufe)</span>. Das GÖDEL-Kalkül ist jedoch kein ‚moderner‘<span style="color:#FF6000">„Existenz-Beweis“</span> für GOTT, wofür es gehalten oder meistens bezweifelt wird, sondern setzt, <span style="color:#00B000">(theoretisch methodisch)</span>, den <span style="color:#FF6000">„Glauben an die Existenz GOTTES“</span> schon voraus, ohne ihn zu hinterfragen. Das <span style="color:#FF6000">„Dasein“</span> bzw. die <span style="color:#FF6000">„Existenz“</span> GOTTES wird mit der Definition-1 für <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, bzw. mit dem Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ — </span>, im Kalkül ‚definitorisch‘ bzw. ‚axiomatisch‘ als Kalkül-,Annahme‘, als <span style="color:#FF6000">„Prämisse“</span>, eingeführt, unter der Voraussetzung, dass die ‚Eigenschaft‘ <span style="color:#4C58FF">‚'''G'''‘ := </span><span style="color:#FF6000">„Göttlichkeit“</span> <span style="color:#00B000">(Essenz)</span> und das <span style="color:#FF6000">„Dasein GOTTES“</span>, <span style="color:#4C58FF">— ‚'''G'''‘ —</span> <span style="color:#00B000">(Existenz)</span>, ontologisch ‚identisch‘, genauer ''':''' <span style="color:#FF6000">„koinzident“</span> sind, was GÖDEL im Axiom-5 definitiv für sein System vorschreibt ''':''' <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub>‘ — </span> ''':''' <span style="color:#FF6000">»''notwendige Existenz ist eine positive Eigenschaft''«</span>. Das <span style="color:#FF6000">„Dasein GOTTES“</span> ist faktisch äquivalent zur <span style="color:#FF6000">„notwendigen Existenz als GOTT“</span>; und <span style="color:#FF6000">„Göttlichkeit“</span> ist die <span style="color:#FF6000">„positive Eigenschaft in GOTT“</span>. Beides ist nach Axiom-5 ‚identisch‘, d.h. dem ‚Sein nach‘ dasselbe, und daher konvertierbar. Beide, <span style="color:#00B000">(sowohl die Essenz, als auch die Existenz GOTTES)</span>, werden daher auch mit demselben Term ''':''' <span style="color:#4C58FF">— ‚'''G'''‘ —</span> im Kalkül dargestellt. Der traditionelle, christliche ,GOTT-Glaube‘ wird zugleich mit diesem Term <span style="color:#4C58FF">‚'''G'''‘ := </span> <span style="color:#FF6000">„GOTT“ <span style="color:#00B000">|</span> „göttlich“</span>, im 2. Beweisgang, dem Basisbeweis, und im 3. Beweisgang für das Theorem ANSELMS, jeweils als ,methodologische‘ Prämisse :01: <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span> regulär <span style="color:#00B000">( ├ )</span> und explizit eingeführt ''':''' <span style="color:#FF6000">»''Das'' <span style="color:#4C58FF">,'''x'''‘</span> ''steht für den GOTT'' <span style="color:#4C58FF">‚'''G'''‘</span> ''der Christen''«</span>. Das ist die ,modal‘-frei gewählte, <span style="color:#4C58FF">„theologische“</span> Kalkül-,Annahme‘, <span style="color:#00B000">(als ,Argument-Einführung‘ := <span style="color:#4C58FF">‚'''AE:'''‘</span> )</span>, und wird dann mit Definition-1 näher ,bestimmt‘ ''':''' <span style="color:#4C58FF">— ‚'''Gx↔∀X(PX→Xx)'''‘ — </span> ''':''' <span style="color:#FF6000"> »''Das'' <span style="color:#4C58FF">,'''x'''‘</span> ''steht genau dann für ‚GOTT‘'' <span style="color:#00B000">|</span> ''‚göttlich‘'', <span style="color:#4C58FF">‚'''G'''‘</span>, ''wenn'' <span style="color:#4C58FF">,'''x'''‘</span> ''alle positiven Eigenschaften, bzw. Vollkommenheiten'', <span style="color:#4C58FF">‚'''PX'''‘</span>, ''hat''«</span>, entsprechend dem ‚Quelltext‘ bei LEIBNIZ. <span style="color:#00B000">(Das ,postulierte‘ Axiom-3 ''':''' <span style="color:#4C58FF"> — ‚'''PG'''‘ —</span>, wird standardmäßig gelesen als <span style="color:#FF6000">»''Göttlichkeit ist eine positive Eigenschaft''«</span>, hat aber auch die alternative Leseart ''':''' <span style="color:#FF6000">»''GOTT ist perfekt d.h. vollkommen''«</span>, was <span style="color:#4C58FF">„theologisch“</span> auch richtig ist; mit <span style="color:#4C58FF">‚'''P'''‘ </span> := <span style="color:#FF6000">„Perfektion“/„Vollkommenheit“</span> ist dann die Summe aller <span style="color:#FF6000">„positiven Eigenschaften“</span>.)</span> Mit Axiom-3, — in dieser <span style="color:#4C58FF">„theologischen“</span> Leseart —, ist der ‚Wenn-Satz‘ in Definition-1 ‚aufgelöst‘ ''':''' <span style="color:#FF6000">»''GOTT hat alle positiven Eigenschaften, weil er ‚perfekt‘ ist''«</span>. In Definition-3 ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x ↔ ∀X(X'''<sub>ess</sub>'''x →□∃yXy)'''‘ —</span>, wird die ,für uns‘ <span style="color:#FF6000">„notwendige Existenz“</span> ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>‘ —, </span> durch die ,aus sich‘ <span style="color:#FF6000">„notwendig“</span> <span style="color:#4C58FF">— '''□''' —</span> instanziierten <span style="color:#FF6000">„Wesenseigenschaften“</span>, <span style="color:#4C58FF">— ‚'''X'''<sub>ess</sub>‘ —</span>, <span style="color:#00B000">(als zu den Transzendentalia gehörig)</span>, bestimmt. Das GÖDEL-Kalkül setzt sowohl in Definition-3 als auch im Axiom-5 das Theorem des ARISTOTELES von der ontologischen ‚Identität‘, d.i. die Koinzidenz von <span style="color:#FF6000">„Dasein“</span>, <span style="color:#00B000">(Existenz)</span> und <span style="color:#FF6000">„Wesenseigenschaften“</span>, <span style="color:#00B000">(Essenz)</span> im prinzipiell <span style="color:#FF6000">„unbewegten Erstbewegenden“</span> voraus. Ohne diese Annahme bzw. ohne Axiom-5, würde das GÖDEL-Kalkül nicht ‚funktionieren‘. Das GÖDEL-Theorem-2.1 ''':''' <span style="color:#4C58FF">— ‚'''Gx→G'''<sub>ess</sub>'''x'''‘ —</span>, kann unter dieser Voraussetzung dann, <span style="color:#4C58FF">„theologisch“</span> richtig und eindeutig, so gelesen werden ''':''' <span style="color:#FF6000">»''Wenn'' <span style="color:#4C58FF">‚'''x'''‘</span> ''für GOTT'', <span style="color:#4C58FF">‚'''G'''‘</span>, ''als Individuum steht, dann ist GOTT-Sein'', <span style="color:#4C58FF">‚'''G'''‘</span>, <span style="color:#00B000">(,Existenz‘)</span>, ''das Wesen'', <span style="color:#4C58FF">—<sub>ess</sub>—, </span> <span style="color:#00B000">(,Essenz‘)</span>, ''GOTTES'' <span style="color:#4C58FF">‚'''x'''‘</span>«</span><ref>vgl. z.B. THOMAS von Aquin ''':''' ,''<span style="font-family: Times;"><big>De Ente et Essentia</big></span>''’, Kapitel 5 ''':''' „Deus, cuius essentia est ipsummet suum esse“ ''':''' „GOTT, dessen Wesen sein eigenes Sein ist“.</ref>, statt der <span style="color:#4C58FF">„theologisch“</span> unrichtigen Lesearten in der Wikipedia ''':''' <span style="color:#FF6000">»''Göttlich ist eine essentielle Eigenschaft jedes göttlichen Wesens''«</span><ref>{{w|Gottesbeweis#Kurt_Gödel|Gottesbeweis 2.1.2, Theorem 2}}; Version vom 10.09.2025</ref>, oder bei Christoph BENZMÜLLER et alia, im sog. ,Theorembeweiser‘ ''':''' <span style="color:#FF6000">»''Gottähnlich zu sein ist eine Essenz von jeder gottähnlichen Entität''«</span><ref>[https://www.fu-berlin.de/presse/informationen/fup/2013/fup_13_308/index.html ‚Gödels „Gottesbeweis“ bestätigt’, Theorem 2]</ref>, mit der suggestiven Annahme, es gäbe polytheïstisch, mehrere ,göttliche Wesen‘, bzw. ,gottähnliche Entitäten‘, was der monotheïstischen, abendländischen Tradition, bzw. dem <span style="color:#4C58FF">„theologischen“</span> Theorem von der ,Unvergleichlichkeit‘ und ,Einzigartigkeit‘ GOTTES widerspricht, das im GÖDEL-Kalkül mit Korollar-3 bestätigt wird. <span style="color:#00B000">(Die Interpretation <span style="color:#4C58FF">‚'''G'''‘ :=</span> <span style="color:#FF6000">„GOTT“</span>, als ,Individuumname‘, ist synonym zum <span style="color:#FF6000">„Dasein <span style="color:#00B000">(Existenz)</span> GOTTES“</span>, und äquivalent zur ‚positiven Eigenschaft‘ <span style="color:#FF6000">„Göttlichkeit“</span>, alias <span style="color:#FF6000">„göttlich zu sein“</span> = <span style="color:#FF6000">„GOTT zu sein“</span> = <span style="color:#FF6000">„GOTT-Sein“</span>; und mit dem GÖDEL-Term ''':''' <span style="color:#4C58FF">‚'''G'''<sub>ess</sub>‘ :=</span> <span style="color:#FF6000">„das Wesen <span style="color:#00B000">(Essenz)</span> GOTTES“</span>.)</span> <div class="center"><span style="color:#FF6000"><span style="color:#4C58FF">‚'''G'''‘ :=</span> „'''G'''öttlichkeit“ <span style="color:#4C58FF">↔</span> „'''G'''OTT“ <span style="color:#4C58FF">↔</span> „'''G'''OTT-Sein“</span> </div> Die Rechtfertigung für diese <span style="color:#4C58FF">„theologische“</span> Dreifach-Äquivalenz für <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, im GÖDEL-Kalkül, gibt Axiom-5 ''':''' <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub>‘ — </span> ''':''' <span style="color:#FF6000">»''die positive <u>Eigenschaft</u>'', <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, ''Göttlichkeit'', <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, ''äquivalent zu GOTT als Individuum-Name'', <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, ''ist auch äquivalent zum Dasein GOTTES'', <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, ''gleichbedeutend mit notwendiger <u>Existenz</u>'', <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>‘ —</span>'', dem <u>Sein</u> GOTTES für uns''«</span>. Hier hat GÖDEL explizit <span style="color:#FF6000">„Eigenschaft“</span> mit <span style="color:#FF6000">„Existenz“</span> bzw. <span style="color:#FF6000">„Sein“</span> gleichgesetzt; <span style="color:#00B000">(was jedoch nach KANT für alles, was in unserer Welt ‚existiert‘, bzw. für alles, was zur <span style="color:#FF6000">»''zufälligen Struktur der Welt''«</span> gehört, wie GÖDEL selbst sagt, in jedem Fall ‚unstatthaft‘ ist ''':''' <span style="color:#FF6000">„Existenz ist keine Eigenschaft“</span>, bzw. <span style="color:#FF6000">»''Sein ist kein reales Prädikat''«</span>)</span>. Jedoch wegen dieser ‚Gleichsetzung‘, die einzig und allein, der aristotelisch-<span style="color:#4C58FF">,theologischen‘</span> Tradition entsprechend, singulär nur in GOTT ‚statthaft‘ ist, kann jetzt die ‚positive Eigenschaft‘ <span style="color:#00B000">(Essenz)</span> <span style="color:#FF6000">„Göttlichkeit“</span> <span style="color:#00B000">(ontologisch korrekt)</span> gelesen werden als <span style="color:#FF6000">„das, was GOTT zu dem macht, ‚was‘ GOTT an sich selbst ist“</span>, nämlich zu seinem <span style="color:#FF6000">„GOTT-Sein“</span> <span style="color:#00B000">(Existenz)</span>, zu seinem <span style="color:#FF6000">„Dasein als GOTT“</span>; zur Tatsache, dass <span style="color:#FF6000">„GOTT GOTT ist“</span>, d.h. dass <span style="color:#FF6000">„GOTT als GOTT ‚da‘ ist“</span>. Das ist, <span style="color:#00B000">(und da folgt ARISTOTELES seinem Lehrer PLATO)</span>, nach traditioneller Auslegung, die übliche, ontologische Funktion des ‚Wesens‘<span style="color:#00B000"> | <span style="color:#FF6000">„<span style="font-family: Times;"><big>οὐσία</big></span>“</span> | ‚ousía‘ |</span> eines Seienden ''':''' es ‚macht‘ das Seiende zu dem, ‚was‘ es ist; es ist die ‚Ursache‘ dafür, dass das Seiende, das ‚ist‘, ‚was‘ es ist | ‚Was-Sein‘ — ‚Wesen‘. <span style="color:#00B000">(ARISTOTELES lokalisiert jedoch das ,Wesen‘ im Seienden, im Gegensatz zu PLATO, der das ,Wesen‘, — ,getrennt‘ vom Seienden —, in den allgemeinen ,Ideen‘ lokalisiert.)</span> Da aber in ‚Gott‘, <span style="color:#00B000">(dem <span style="color:#FF6000">„unbewegten, ‚unverursachten‘ Erstbeweger“</span>)</span>, Prozesshaftes, ‚Ursächliches‘ auszuschließen ist, ist die übliche prozesshafte, ‚ursächliche‘ Funktion von <span style="color:#FF6000">„<span style="font-family: Times;"><big>οὐσία</big></span>“</span><span style="color:#00B000"> | ‚ousía‘ |</span> ,Wesen‘ im <span style="color:#FF6000">„Erstbewegenden“</span> nach ARISTOTELES, sozusagen, schon ‚zum Abschluss‘ gekommen, schon ‚verwirklicht‘, — <span style="color:#FF6000">„<span style="font-family: Times;"><big>ἐν-έργεια οὖσα</big></span>“</span><span style="color:#00B000"> | ‚en-érgeia oúsa‘</span> —, schon ‚ins-Werk‘ gesetzt; <span style="color:#00B000">(<span style="color:#FF6000">„<span style="font-family: Times;"><big>τὸ ἔργον</big></span>“</span> | ‚to érgon‘ | ‚das Werk‘; <span style="color:#FF6000">„<span style="font-family: Times;"><big>ἐνέργεια</big></span>“</span> | ‚enérgeia‘ | ,Wirksamkeit‘, ,Wirklichkeit‘, ,Aktualität‘, ,Energie‘; und <span style="color:#FF6000">„<span style="font-family: Times;"><big>οὖσα</big></span>“</span> | ,oúsa‘ | feminin Nominativ Singular von <span style="color:#FF6000">„<span style="font-family: Times;"><big>ὤν</big></span>“</span> | ‚ón‘ | ‚seiend‘)</span>. Sein ,Wesen‘ ist im ,Dasein‘ vollendet, ist ,wirkliches, verwirklichendes Sein‘, ‚seiende Aktualität‘, <span style="color:#FF6000">„<span style="font-family: Times;"><big>actus purus</big></span>“</span> ''':''' sein Wesen ist ‚reine Tätigkeit‘, ,reine verwirklichende Gegenwärtigkeit‘, d.h. ,existent‘, ohne jede prozesshafte ‚Potenzialität‘. Aus der wichtigen und richtigen Erkenntnis, dass GOTT <span style="color:#FF6000">»''unabhängig von der zufälligen'' <span style="color:#00B000">[ Raum-Zeit-]</span>''Struktur unserer Welt''«</span> ist, folgt mit der ontologischen Identität von ,Dasein‘ und ,Wesen‘ in GOTT ''':''' Der zeitlos ewige GOTT ist <span style="color:#FF6000">»''notwendig aus sich'' <span style="color:#00B000">(von Natur aus)</span> ''immer schon da''«</span>, m.a.W. ist <span style="color:#FF6000">„zeitlos-ursprungslos“</span>. Insofern ist <span style="color:#FF6000">„Göttlichkeit“</span> die <span style="color:#FF6000">„Wesenseigenschaft“</span>, die im <span style="color:#FF6000">„Dasein GOTTES“</span> d.h. in <span style="color:#FF6000">„GOTT“</span>, schon ihr ‚Ziel‘, ihre Vollendung, — <span style="color:#FF6000">„Perfektion“</span>, Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, erreicht hat. GOTT ist <span style="color:#FF6000">»''vollkommen''«</span> und darum auch <span style="color:#FF6000">»''notwendig für uns immer schon ‚da‘''«</span> ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x'''‘ — </span>. GOTT ist in seinem ‚zeitlosen Wesen‘ <span style="color:#FF6000">„unverursacht“</span>, da er <span style="color:#FF6000">»''notwendig aus sich'' <span style="color:#00B000">(von Natur aus)</span> ''vollkommen''«</span> ist ''':''' <span style="color:#4C58FF">— ‚'''□PG'''‘ —</span>, <span style="color:#00B000">(eine Instanz von Axiom-4)</span>. <span style="color:#FF6000">„Vollkommenheit“</span>, <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, ist die <span style="color:#FF6000">„Wesenseigenschaft“</span>, bzw. das <span style="color:#FF6000">„Wesen GOTTES“</span> ''':''' <span style="color:#4C58FF"> — ‚'''G'''<sub>ess</sub>‘ —</span>. <span style="color:#FF6000">»''GOTT ist ,der‘ Vollkommenste''«</span> ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, d.h. <span style="color:#4C58FF">— ‚'''G'''‘ —</span> ''':''' <span style="color:#FF6000">»''GOTT ist die unbegrenzte Summe der unendlichen Vollkommenheiten''«</span>. Und zur absoluten <span style="color:#FF6000">„Vollkommenheit“</span> gehört <span style="color:#FF6000">„notwendig“</span> auch das <span style="color:#FF6000">„Existieren“</span> ''':''' <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub>‘ — </span>. <span style="color:#FF6000">„Notwendige Existenz“</span> gehört zu den ,ultimativen‘ Transzendentalia in GOTT, was GÖDEL mit Definition-3 ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x ↔ ∀X(X'''<sub>ess</sub>'''x →□∃yXy)'''‘ —</span>, syntaktisch formalisiert hat, wenn sowohl das <span style="color:#4C58FF">— ‚'''x'''‘ —</span>, als auch alle <span style="color:#4C58FF">— ‚'''∀y'''‘ —</span> im Kalkül, für den Dreifaltigen GOTT der Christen stehen, was dann im Korollar-3, mit der Identität, <span style="color:#4C58FF">— ‚'''x=y'''‘ —</span>, bzw. der Koinzidenz beider Individuum-Variablen, explizit gezeigt wird. Entscheidend für diese Interpretation des GÖDEL-Systems ist ''':''' nur unter der ,modal‘ notwendigen Voraussetzung der ontologischen ‚Identität‘ von <span style="color:#FF6000">„Sein“</span> und <span style="color:#FF6000">„Wesen“</span> in GOTT, Theorem-2 ''':''' <span style="color:#4C58FF"> — '''Gx↔G'''<sub>ess</sub>'''x'''‘ —</span>, bzw. der ‚Gleichsetzung‘, <span style="color:#00B000">(Koinzidenz)</span>, von <span style="color:#FF6000">„notwendiger Existenz“</span> mit den ‚positiven‘ Wesenseigenschaften, der <span style="color:#FF6000">„Essenz“</span> in GOTT, Axiom-5 ''':''' <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub>‘ —</span>, ‚funktioniert‘ die GÖDEL-Axiomatik '''!''' Diese ‚Identität‘, bzw. ,Koinzidenz‘ wird in ARISTOTELES, ‚''<span style="font-family: Times;"><big>Metaphysik</big></span>''‘, Buch XII 7, in einem Indizienbeweis erbracht, der mit der Methode der philosophischen Induktion zum Ergebnis kommt ''':''' ::<span style="color:#FF6000">» … ''es muss'' <span style="color:#00B000">[ notwendig ]</span> ''etwas geben, das, ohne selbst ‚bewegt‘'' <span style="color:#00B000">[ </span>''worden''<span style="color:#00B000"> ]</span> ''zu sein'', <span style="color:#00B000">[ ‚unentstanden‘ ]</span>, ''alles Übrige wie ein Geliebtes ‚bewegt‘'' <span style="color:#00B000">[ ‚entstehen lässt‘ ]</span>«</span>, das darum selbst ‚zugleich‘ <span style="color:#FF6000">„<span style="font-family: Times;"><big>αἴδιον καί οὐσία καί ἐνέργεια οὖσα</big></span>“ <span style="color:#00B000">| ,aídion kai ousía kai enérgeia oúsa‘ |</span> »<span style="color:#00B000">[ zeitlich-]</span>''ewig, sowohl <u>Wesen</u>'', <span style="color:#00B000">[ etwas Konkretes, Essentielles ]</span>, ''als auch seiende Wirksamkeit — ''<span style="color:#00B000">[ </span>„<span style="font-family: Times;"><big>actus purus</big></span>“, „reine Tätigkeit“<span style="color:#00B000"> ]</span> ''— verwirklichendes, wirkliches <u>Sein</u> ist'', <span style="color:#00B000">[ ein Existierendes, das alles Übrige ,zur Existenz‘ bringen kann ]</span> «</span>, bzw. <span style="color:#FF6000">„<span style="font-family: Times;"><big>ὀρεκτόν καί νοητόν</big></span>“ <span style="color:#00B000"> | ,orektón kai noêtón‘ | </span>»''das ersehnt und erkennbar ist''.«</span> <span style="color:#00B000">(''<span style="font-family: Times;"><big>vgl. ,Metaphysik</big></span>''‘ XII 7, 1072a,23 – 1072b,4)</span> Was <span style="color:#FF6000">»''alles Übrige''«</span> ,zur Existenz‘ bringen kann, bzw. ,verwirklichen‘ kann, ohne selbst ,entstanden‘ zu sein, muß auch selbst, als etwas Konkretes, Essentielles, immer schon ,existieren‘, bzw. ,wirklich sein‘. Die, daraus abgeleitete, und damit ,erkannte‘, ontologische ‚Identität‘, — ,Koinzidenz‘ —, von ‚Wesen‘ und ‚Sein‘, <span style="color:#00B000">(Ziel aller Sehnsucht und jedes Erkenntnisstrebens)</span>, <span style="color:#FF6000">»''ist das Privilegium der Gottheit allein''«</span> ''':''' mit Gottfried Wilhelm LEIBNIZ interpretiert, entsprechend einer adäquaten, aristotelisch-<span style="color:#4C58FF">,theologischen‘</span> Tradition. Dieses induktive, ‚ontologisch‘ a-posteriori Ergebnis aus der ‚Prinzipienforschung‘ des ARISTOTELES ist die metaphysische und logische Voraussetzung, dass GÖDEL seine Axiomatik im Kalkül des sog. ‚ontologischen Gottesbeweises‘ a-priori des ANSELM von Canterbury, und nach LEIBNIZ, deduktiv korrekt formulieren konnte; <span style="color:#00B000">(vgl. 3. Beweisgang)</span>. Angenommen, die Variable <span style="color:#4C58FF">— ‚'''x'''‘ —</span> steht für den <span style="color:#FF6000">„GOTT“</span>, <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, der Christen, <span style="color:#00B000">(siehe Anhang, Term :01: im 2. Beweisgang)</span>, dann ist, — auf Grund von diesem Beweisgang —, in unserer Welt ,wahr‘ und evident ''':''' sowohl die ‚positive Eigenschaft‘ <span style="color:#FF6000">»''Göttlichkeit''«</span>, <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, als auch das faktische <span style="color:#FF6000">»''‚Da‘-Sein'' <span style="color:#00B000">[ Existenz ]</span> ''GOTTES''«</span>, <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, ‚benennen‘, ontologisch ident, denselben Sachverhalt ''':''' nämlich das, was wir das <span style="color:#FF6000">»''Wesen'' <span style="color:#00B000">[ Essenz ]</span> ''GOTTES''«</span>, <span style="color:#4C58FF"> — ‚'''G'''<sub>ess</sub>‘ —</span>, nennen. <span style="color:#FF6000">»''Göttlichkeit'', bzw. ''GOTT-‚Sein‘ ist das Wesen GOTTES''«</span>, <span style="color:#00B000">(Theorem-2.1)</span>, und dann umgedreht und äquivalent ''':''' <span style="color:#FF6000">»''Das Wesen GOTTES ist sein ‚Da‘-Sein als GOTT'', bzw. ''seine Göttlichkeit''«</span>, <span style="color:#00B000">(Theorem-2.2)</span>, m.a.W. ''':''' <span style="color:#FF6000">»''GOTT ist wesentlich ‚grundlos‘'' <span style="color:#00B000">[ d.h. </span> ''notwendig aus sich''<span style="color:#00B000"> ]</span> ''‚da‘''«</span>. Das ist das Einzigartige im <span style="color:#FF6000">»''Wesen GOTTES''«</span> ''':''' GOTT ist ohne zeitlichen Anfang, zeitlos-ewig, für uns immer schon ‚da‘, und das ‚ist‘ sein <span style="color:#FF6000">»''Wesen''«</span>; vorausgesetzt, ,angenommen‘, man glaubt an GOTT ''':''' Term :01:. <span style="color:#00B000">(Der schon von GÖDEL indizierte Term <span style="color:#4C58FF"> — ‚'''G'''<sub>ess</sub>‘ — </span> ,expliziert‘ nur eine der drei Lesearten, die der Term <span style="color:#4C58FF"> — ‚'''G'''‘ — „theologisch“</span> ,impliziert‘.)</span> Theorem-2 hat somit die syntaktische Form einer Definition ''':''' <div class="center"><span style="color:#4C58FF"> — ‚'''Gx↔G'''<sub>ess</sub>'''x'''‘ — </span></div> Somit kann GOTT ‚explizit‘ <span style="color:#00B000">(aus einer bewiesenen Kalkül-Definition)</span> <span style="color:#4C58FF">„theologisch“</span> genauer ‚bestimmt‘ werden ''':''' <span style="color:#FF6000">»''GOTT ist gerade deswegen GOTT, weil sein überzeitlich-ewiges und an sich ‚grundloses‘'' <span style="color:#00B000">[ aber für uns notwendiges ]</span> ''Dasein'' <span style="color:#00B000">[ Existenz ]</span> ''als GOTT, ontologisch, — dem Sein nach —, identisch ist mit seinem persönlichen und für uns liebevollen Wesen'' <span style="color:#00B000">[ Essenz ]</span> ''als GOTT; diese Identität von Dasein und Wesen gilt einzig und allein nur bei GOTT.''«</span> Die philosophische Frage nach dem <span style="color:#FF6000">„Wesen GOTTES“</span> lautet, <span style="color:#00B000">(auf die Person bezogen)</span> ''':''' <span style="color:#FF6000">„Was bist du ? “</span> Sie ist äquivalent zur <span style="color:#4C58FF">,theologisch’</span>-biblischen Frage des MOSE ''':''' <span style="color:#CC66FF">„Wer bist Du ? “</span> Die bekannte Antwort des GOTTES-JHWH aus ‚Exodus 3,14‘, im Dornbusch, thematisiert das persönliche, für uns liebevolle und für immer notwendige <span style="color:#FF6000">„Dasein GOTTES“</span> ''':''' <span style="font-family: Times;"><big>‘אֶֽהְיֶ֖ה אֲשֶׁ֣ר אֶֽהְיֶ֑ה‚</big></span> <span style="color:#00B000">| ‚eh'jeh asher eh'jeh‘ |</span> <span style="color:#CC66FF">»''Ich bin der ‚Ich-Bin-Da‘'', <span style="color:#00B000">[ für euch und für immer ]</span>«.</span> Mit diesem Zitat aus der Bibel ist die GÖDEL-Axiomatik, sozusagen, <span style="color:#4C58FF">„theologisch“</span> ‚verifiziert‘. Sie hat einerseits im Theorem-2 ihren philosophischen ‚Abschluss’ erreicht, und andererseits damit formal-syntaktisch den ‚Anschluss‘ an eine allgemeine Basis-Glaubensaussage gefunden, die ‚an sich‘ für jeden CHRIST-gläubigen Menschen ‚selbstverständlich‘ ist. Was in der Metaphysik des ARISTOTELES das Ergebnis einer philosophischen ,Induktion‘ a-posteriori ist ''':''' <span style="color:#FF6000">„,Dasein‘ ist das ,Wesen‘ GOTTES“</span>, — <span style="color:#00B000">(das mit Theorem-2, auch ein Ergebnis der deduktiven GÖDEL-Axiomatik a-priori ist ''':''' die Beweisgrundlage für den Konsequenz-Teil im Theorem AMSELMS)</span>, — das ist in der Bibel die Grundüberzeugung jedes Menschen, der an GOTT glaubt ''':''' GOTT ist für uns immer schon <span style="color:#FF6000">„da“</span>, weil er uns liebt. Das ist das, <span style="color:#FF6000">„was“</span> GOTT für uns als GOTT ausmacht, — sein Wesen ''':''' <span style="color:#CC66FF">»''Wir haben die Liebe, die GOTT zu uns hat, erkannt und gläubig angenommen. GOTT ist Liebe, und wer in der Liebe bleibt, bleibt in GOTT und GOTT bleibt in ihm''«</span>, <small>({{Bibel | 1. Johannesbrief |4|16|EU}})</small>. Das eigentliche Ergebnis der GÖDEL-Axiomatik ist somit die ‚triviale‘ Erkenntnis, dass GOTT, <span style="color:#FF6000">„unverursacht“ <span style="color:#00B000">|</span> „grundlos“</span>, für uns immer schon ‚da‘ ist, — <span style="color:#CC66FF">„von Ewigkeit zu Ewigkeit“</span> —, vorausgesetzt <span style="color:#00B000">(‚angenommen‘)</span>, man ‚glaubt‘ an den zeitlos-ewigen GOTT ''':''' <span style="color:#CC66FF">»''Ehe die Berge geboren wurden, ehe die Erde entstand und das Weltall erschaffen wurden, bist du, o GOTT, von Ewigkeit zu Ewigkeit''«</span>, <small>({{Bibel | Psalm |90|2|LUT}})</small>. <span style="color:#00B000">(Der Glaube an die Zeitlosigkeit GOTTES ist mit der ‚Annahme‘ von Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span> ''':''' <span style="color:#FF6000">»''GOTT ist perfekt''«</span>, und der ‚Annahme‘ der Definition-1 für <span style="color:#4C58FF"> ‚'''Gx'''‘ := </span> den <span style="color:#FF6000">„GOTT der Christen“</span>, im Kalkül ‚implizit‘ schon eingeführt, da die Axiome und Definitionen, — nach GÖDEL —, nur dann <span style="color:#FF6000">»''wahr''«</span> sind, wenn sie <span style="color:#FF6000">»''unabhängig von der zufälligen''</span> [ Raum-Zeit-]<span style="color:#FF6000">''Struktur''«</span> unserer Welt sind. Das ,impliziert‘ auch, dass der GOTT von Axiom-3 und Definition-1 ebenfalls <span style="color:#FF6000">»''unabhängig''«</span> von Raum und Zeit, d.h. zeitlos-ewig ist '''!''' )</span> Wer an den GOTT der Bibel glaubt, kann sich von der ‚Vernünftigkeit‘ seines Glaubens mit Hilfe des sog. ,ontologischen‘ Gottesbeweises nach ANSELM von Canterbury, mit Kurt GÖDEL <span style="color:#FF6000">»''rein verstandesmäßig''«</span>, überzeugen. <span style="color:#00B000">(Das war auch die Absicht ANSEMS '''!''' )</span> Die Annahme, es sei ‚unmöglich‘, dass es GOTT gibt ''':''' <span style="color:#4C58FF">— ‚'''¬◇∃xGx'''‘ —</span>, <span style="color:#00B000">(dezidierter Atheismus)</span>, führt im GÖDEL-Kalkül formal zu einem logischen Widerspruch; vgl. z. B. ‚''<span style="font-family: Times;"><big>Gödels Möglichkeitsbeweis</big></span>''‘, in ‚''<span style="font-family: Times;"><big>Der Gödelsche Gottesbeweis</big></span>''‘, Seite 17, von Günther J. WIRSCHING; (https://edoc.ku.de/id/eprint/10243/1/OntBw.pdf), d.h. es ist also nicht ‚unmöglich‘, dass es GOTT gibt. Der GOTT-Glaube ist mit den Maßstäben einer modernen Logik <span style="color:#FF6000">»''durchaus vereinbar''«</span> und darum ,vernünftig‘. Damit steht fest ''':''' das GÖDEL-Kalkül ist kein moderner ‚Existenz-Beweis‘ für den GOTT der Bibel, sondern es setzt, <span style="color:#FF6000">»''rein verstandesmäßig''«</span>, ,methodologisch‘, den Glauben an die Existenz eines zeitlos-ewigen GOTTES voraus, der, — <span style="color:#FF6000">»''unabhängig von der zufälligen'' <span style="color:#00B000">[ Raum-Zeit-]</span>''Struktur unserer '' <span style="color:#00B000">[ vergänglichen ]</span> ''Welt''«</span> —, für uns immer schon ‚da‘ ist. Wenn aber einmal als fix ‚angenommen‘ worden ist, <span style="color:#00B000">(als Prämisse)</span>, dass es wahr ist, dass GOTT ‚existiert‘, dann ist natürlich die ‚Annahme‘, dass GOTT ‚nicht existiert‘, falsch. Aber sie ist auch ,unlogisch‘ und ,unsinnig‘, weil die Annahme ''':''' <span style="color:#FF6000">»''Es ist unmöglich, dass es einen GOTT gibt''«</span>, offensichtlich und eindeutig zu einem Widerspruch führt; was z. B. Günther J. WIRSCHING mit seiner Version des <span style="color:#00B000">(nicht umkehrbaren)</span> ‚Möglichkeitsbeweises‘ für ,GOTT‘, explizit vorexerziert hat; <span style="color:#00B000">( nachgestellt im Anhang ''':''' GÖDELS ‚Möglichkeitsbeweis‘ als ,Widerlegung‘ eines Nicht-GOTT-Glaubens; in Entsprechung zu Psalm 14,1 und Psalm 53,2 ''':''' <span style="color:#CC66FF">»''Der'' <span style="color:#00B000">[ ,unvernünftige‘ ]</span> ''Tor sagt in seinem Herzen ''':''' Es gibt keinen Gott. Sie handeln verderbt, handeln abscheulich; da ist keiner, der Gutes tut''«</span>. Historischer Hintergrund zu diesem Psalm-Text ''':''' Die Zerstörung des Tempels in Jerusalem 586 v.Ch. durch die Truppen des NEBUKADNEZAR II.)</span> Der Logiker GÖDEL hat in seinem System zum ,ontologischen Beweis‘ keine ‚formale Unentscheidbarkeit‘ <span style="color:#00B000">(Agnostizismus)</span> feststellen können, wie auf einem anderen Feld seiner Forschungsarbeiten. Das GÖDEL-Konsequenz-Teil von der ‚Notwendigkeit‘ GOTTES ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span>, <span style="color:#00B000">(die ‚Konsequenz’ aus dem ‚widerspruchsfreien‘ Korollar-1 ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —,</span>)</span> im ‚Theorem ANSELMS‘, ist <span style="color:#00B000">(im 3. Beweisgang, Term :10:)</span> dann auch eine weitere Explikation des Basis-Theorems-2 des Kalküls ''':''' <span style="color:#4C58FF"> — ‚'''Gx↔G'''<sub>ess</sub>'''x'''‘ — </span>, über die ‚ontologische Identität‘ vom <span style="color:#FF6000">„Dasein GOTTES“</span> ''':''' <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, mit seinem <span style="color:#FF6000">„Wesen“</span> ''':''' <span style="color:#4C58FF"> — <sub>ess</sub> —</span>, nach einem <span style="color:#4C58FF">[ Modus ponens ]</span>, dargestellt mit Term :09:. <span style="color:#00B000">(Die ontologische Identität von Dasein und Wesen in GOTT, ist die, für uns, <span style="color:#FF6000">„notwendige Präsenz <span style="color:#00B000">[ das Sein, <span style="color:#4C58FF">— ‚'''E'''‘ —</span>]</span> GOTTES“</span> ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x'''‘ —</span>, die äquivalent, bzw. koinzident ist zur <span style="color:#FF6000">„Vollkommenheit <span style="color:#00B000">[ das Wesen, <span style="color:#4C58FF">— ‚'''P'''‘ —</span>]</span> GOTTES“</span> ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>. Diese Identität von Sein und Wesen in GOTT ''':''' <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub> —</span>, bedeutet <span style="color:#4C58FF">,theologisch‘</span> konkret ''':''' die, für uns, notwendige Gegenwärtigkeit GOTTES, [ sein Dasein ], ist verwirklicht worden in der liebevollen [ Wesens-]Zuwendung GOTTES zu uns Menschen, in seiner Kindwerdung in Bethlehem, durch die Jungfrau MARIA ''':''' GOTTES Wesen ist ,Sein-mit-uns‘ ''':''' <span style="color:#CC66FF">»''sein Name'', <span style="color:#00B000">[ sein Wesen ]</span>, ''ist IMMANUEL, das heiß übersetzt ''':''' GOTT-ist-mit-uns''«, <small>({{Bibel | Matthäus Evangelium |1|23|EU}})</small></span>, der unsere Not-,wenden‘-wird, d.h. der uns und die Welt von der Korruption der Sünde und des Todes <span style="color:#4C58FF">,erlösen‘</span> will und wird; jedoch nicht ohne uns. Die <span style="color:#4C58FF">„Menschwerdung“</span> GOTTES in JESUS CHRISTUS, die <span style="color:#4C58FF">„Hypostatische Union“</span>, bzw. diese außergewöhnliche und einzigartige <span style="color:#FF6000">„Koinzidenz“</span> von GOTT und Mensch, ist der wirkliche und historische Beginn der <span style="color:#4C58FF">„Erlösung“</span> des Menschen und der Welt; vergegenwärtigt für jede Generation der Menschen in und durch die <span style="color:#4C58FF">„Kirche“</span> JESU CHRISTI.)</span> Die, von GÖDEL im 1. Beweisgang, als Prämissen schon vorausgesetzten und ,angenommenen‘ Perfektionen, bzw. Vollkommenheiten, <span style="color:#00B000">(das sind die allgemeinen ,Transzendentalia‘ für alles Nicht-Göttliche in der Welt)</span>, werden im ersten Teil des 2. Beweisganges, mit Term :13: <span style="color:#4C58FF">— ‚'''PY'''‘ —</span>, dann auch als <span style="color:#FF6000">„positive Wesenseigenschaften“</span>, <span style="color:#00B000">(als die ultimativen ,Transzendentalia‘)</span>, in GOTT ‚definitiv‘ <span style="color:#00B000">( ╞ )</span> bestätigt; <span style="color:#00B000">(siehe Anhang, 2. Beweisgang, Anmerkung-2)</span>. Im 3. Beweisgang ist das Basis-Theorem-2 die ,modal‘ notwendige, bzw. transzendentale, Voraussetzung, sowohl für das <span style="color:#FF6000">„an sich notwendige Dasein GOTTES“</span>, <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span>, im Term :10:, als auch für die <span style="color:#FF6000">„für uns notwendige Existenz GOTTES“</span>, <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>‘ —</span>, in den Ressourcen dieses Beweisganges ''':''' in der Definition-3, und im Axiom-5; <span style="color:#00B000">(das <span style="color:#4C58FF">— ‚'''E'''‘ —</span> wird nur GOTT zugeordnet; vgl. auch Anhang, 3. Beweisgang, Anmerkung-4)</span>. Dieses Basis-Theorem-2 ist auch zugleich die Antwort auf die Frage nach dem ‚Ursprung‘ GOTTES ''':''' GOTT ist <span style="color:#FF6000">„unverursacht“ <span style="color:#00B000">|</span> „ursprungslos“</span> ‚da‘, von <span style="color:#CC66FF">„Ewigkeit zu Ewigkeit“</span>, denn es ‚ist‘ sein <span style="color:#FF6000">„Wesen“</span>, <span style="color:#00B000">(überzeitlich-ewig)</span> für uns immer schon ‚da‘ zu sein. Weitere ‚Einzelheiten‘ über Wesen und Eigenschaften GOTTES gehören in die Mystik, bzw. in die <span style="color:#4C58FF">„Theologie“</span>. ===<div class="center"><span style="color:#660066">Die Bedeutung des Kalküls</span></div>=== <div class="center">Immanuel KANT und Kurt GÖDEL im ‚Dialog‘</div> KANT sagt ''':''' ::<span style="color:#FF6000">»</span>'''''Sein''' ist offenbar kein reales Prädikat''. ... ''Es ist bloß die'' <span style="color:#00B000">[ gedachte ]</span>'' Position'' <span style="color:#00B000">[ latinisiert, deutsch für ''':''' ,Setzung‘ ]</span> ''eines Dinges ... Nehme ich nun das Subjekt (Gott) mit allen seinen Prädikaten'' <span style="color:#00B000">[ d.h. Eigenschaften ]</span> ''(worunter auch die Allmacht gehört) zusammen, und sage ''':''' ‚'''Gott ist'''‘'', <span style="color:#00B000">[ ,GOTT existiert wirklich‘ ]</span>, ''oder ‚es ist ein Gott‘, so <u>setze</u> ich kein neues Prädikat'' <span style="color:#00B000">[ keine neue Eigenschaft ]</span> ''zum ‚Begriffe‘ von Gott ''':''''' <span style="color:#00B000">[ <span style="color:#0000FF; background-color:#FFFF00">‚Sein’ ist kein ‚reales Prädikat’ in GOTT</span>; ‚Existenz‘ ist in GOTT keine ‚Eigenschaft‘ ],</span> ... ''es kann daher zu dem Begriffe'', <span style="color:#00B000">[ ,GOTT‘ ]</span>, ''der bloß die'' <span style="color:#00B000">[ gedachte ]</span>'' Möglichkeit ausdrückt, darum, dass ich dessen Gegenstand'', <span style="color:#00B000">[ GOTT ]</span>, ''als schlechthin gegeben (durch den Ausdruck ''':''' er ist'', <span style="color:#00B000">[ GOTT ist wirklich ]</span>'' ) <u>denke</u>, nichts weiter hinzukommen.'' <span style="color:#00B000">[ Beides ist ,bloß gedacht‘ '''!''' ]</span> ''Und so enthält das Wirkliche nichts mehr als das bloß Mögliche. Hundert ‚wirkliche‘ Taler enthalten nicht das mindeste <u>mehr</u>, als hundert ‚mögliche‘. Denn, da diese den'' <span style="color:#00B000">[ gedachten ]</span>'' ‚Begriff‘, jene aber den Gegenstand und dessen'' <span style="color:#00B000">[ gedachte ]</span>'' Position an sich selbst bedeuten, so würde, im Fall dieser'', <span style="color:#00B000">[ die 100, als ,wirklich‘ bloß gedachten Taler ]</span>, ''<u>mehr</u> enthielte als jener,'' <span style="color:#00B000">[ als ihr ‚gedachter‘ Begriff im Verstand, wie ΑNSELM von Canterbury für GOTT, als ‚wirklich‘ Existierenden, argumentierte, …''so würde'' ]</span> ''mein ‚Begriff‘'' <span style="color:#00B000">[ die 100 im Verstand ‚gedachten‘ Taler ]</span> ''nicht den ganzen Gegenstand ausdrücken, und also auch <u>nicht der angemessene Begriff</u> von ihm sein. Aber in meinem Vermögenszustande ist <u>mehr</u> bei hundert ‚wirklichen‘ Talern, als bei dem bloßen Begriffe derselben'', <span style="color:#00B000">[ als bei 100 bloß ‚gedachten‘ Talern ]</span> ... <span style="color:#FF6000">«</span> <span style="color:#00B000"><ref>‚''<span style="font-family: Times;"><big>Kritik der reinen Vernunft</big></span>''‘, Seite 401; https://www.korpora.org/kant/aa03/401.html</ref></span>. GÖDEL würde darauf <span style="color:#00B000">(korrespondierend zur aristotelisch-<span style="color:#4C58FF">,theologischen‘</span> Tradition von der Identität von Sein und Wesen in GOTT)</span> antworten ''':''' ::<span style="color:#FF6000">»</span>Die <span style="color:#FF6000">„100 Taler“</span> sind der <span style="color:#FF6000">»''zufälligen Struktur der'' <span style="color:#00B000">[ vergänglichen ]</span> ''Welt''«</span> entnommen, und sind daher nicht mit GOTT vergleichbar, der, <span style="color:#FF6000">»''unabhängig von der zufälligen'' <span style="color:#00B000">[ Raum-Zeit-]</span>''Struktur''«</span> unserer Welt, <span style="color:#FF6000">„über“</span> dieser Welt steht. Einzig und allein nur von GOTT gilt ''':''' Der mit Dingen aus unserer Welt ,nicht vergleichbare‘ GOTT, <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, <span style="color:#FF6000">„existiert notwendig für uns“</span>, <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x'''‘ —</span>, und <span style="color:#FF6000">„notwendiges Existieren, <u>Sein</u>“</span> ,ist‘ eine <span style="color:#FF6000">„positive <u>Wesen</u>seigenschaft“</span> in GOTT, <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub>‘ —</span>, weil GOTT aus sich <span style="color:#FF6000">„vollkommen“ <span style="color:#00B000">|</span> „perfekt“</span> ist, <span style="color:#4C58FF">— ‚'''PG'''‘ —</span> ''':''' <span style="color:#0000FF; background-color:#FFFF00">‚Sein‘ ist in GOTT ein ‚reales Prädikat‘</span>; <span style="color:#00B000">(notwendige ‚Existenz’ ist eine positive ‚Wesenseigenschaft’ in GOTT)</span>, und nur bei GOTT '''!''' Zum zeitlos-ewigen GOTT der Christen ''':''' <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, <span style="color:#00B000">(als methodologische Kalkül-Prämisse)</span>, kann man sagen ''':''' Weil es, wegen Axiom-1 und Axiom-2, <span style="color:#FF6000">„widerspruchsfrei möglich"</span> ist, dass es GOTT gibt ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span>, darum ist GOTT auch das ‚einzige‘ <span style="color:#FF6000">„Wesen“</span>, <span style="color:#4C58FF">— ‚'''x'''‘ —</span>, von dem ein Christ sagen kann, dass es <span style="color:#FF6000">„notwendig aus sich“</span> ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span>, d.h. <span style="color:#FF6000">„grundlos“ <span style="color:#00B000">|</span> „unverursacht“</span>, für uns immer schon ‚da’ ist, und immer ,da’ sein wird; und zusätzlich gilt ''':''' Es gibt für jede mögliche Welt ‚nur‘ diesen einen GOTT ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx ∧ □∀y(Gy→x=y)'''‘ — </span><span style="color:#00B000">(Monotheïsmus, Korollar-3)</span>; vorausgesetzt, man geht von der ,Existenz’ dieses GOTTES aus, wobei diese Annahme für GÖDEL <span style="color:#FF6000">»''mit allen bekannten Tatsachen durchaus vereinbar''«</span> ist.<span style="color:#FF6000">«</span> Eine Beobachtung ''':''' KANT sagt, gleichsam als ,krönenden‘ Abschluss seiner Widerlegung des, — von ihm so genannten —, ,ontologischen Gottesbeweises‘ ''':''' <span style="color:#FF6000">»</span>''Aber in meinem Vermögenszustande ist <u>mehr</u> bei hundert ‚wirklichen‘ Talern, als bei dem bloßen Begriffe derselben, (d.i. ihrer Möglichkeit).''<span style="color:#FF6000">«</span> Diese Feststellung KANTS entspricht jedoch genau der Argumentation ANSELMS ''':''' GOTT <span style="color:#FF6000">„<span style="font-family: Times;"><big>esse et in re</big></span>“</span>, d.h. GOTT ,existiert auch in Wirklichkeit‘, <span style="color:#FF6000">„<span style="font-family: Times;"><big>quod maius est</big></span>“</span>, was <u>mehr</u> ist, als <span style="color:#FF6000">„<span style="font-family: Times;"><big>esse solo in intellectu</big></span>“</span>, als nur ein bloßer Begriff ,im Verstand zu sein‘. Der ,Mehr-Wert‘ ergibt sich in beiden Fällen, sowohl bei den Talern als auch bei GOTT, aus der ,Wirklichkeit‘ ihrer Existenz, im Gegensatz zur bloßen, <span style="color:#00B000">(im Begriff gedachten)</span>, ,Möglichkeit‘ ihrer Existenz, so dass, in jedem Fall, der ,Begriff‘ im Verstand ohne Abstriche <span style="color:#FF6000">»</span>''den ganzen Gegenstand ausdrückt''<span style="color:#FF6000">«</span>, und von diesem auch <span style="color:#FF6000">»</span>''der angemessene Begriff''<span style="color:#FF6000">«</span> ist. Alles andere wäre eine ,Lüge‘. Mit dieser ,Beobachtung‘ ist das implizit ,Widersprüchliche‘ in KANTS Argumentation aufgedeckt ''':''' Das Wirkliche in KANTS Vermögenszustande enthält <span style="color:#FF6000">,doch mehr‘</span> als das bloß Mögliche, konträr zu seiner vorigen Behauptung ''':''' <span style="color:#FF6000">»</span>''das Wirkliche''<span style="color:#FF6000">«</span> enthalte <span style="color:#FF6000">»'',nichts mehr‘</span> als das bloß Mögliche''<span style="color:#FF6000">«</span>. Diese Behauptung ist offensichtlich falsch. Das ist somit ein indirekter Beweis und damit eine Bestätigung für die analoge Argumentation ANSELMS aus dem Wiederspruch des Gegenteils, am Beispiel KANTS <span style="color:#FF6000">»</span>''Vermögenzustandes bei hundert wirklichen Talern''<span style="color:#FF6000">«</span>, in dem in Wirklichkeit <span style="color:#FF6000">,doch mehr‘</span> ist, <span style="color:#FF6000">»</span>''als bei dem bloßen Begriffe derselben''<span style="color:#FF6000">«</span>. <span style="color:#00B000">(Diese ,Beobachtung‘ ist zugleich auch das entscheidende Indiz dafür, dass das systembedingte Konzept KANTS von der ,Existenz‘, bzw. vom ,Sein‘ eines jeden Gegenstandes, als</span> <span style="color:#FF6000">»</span>''dessen bloße Position''<span style="color:#FF6000">«</span>, <span style="color:#00B000">d.i. als seine ,Setzung‘ bloß im- und durch den Verstand, ,falsch‘ ist, — d.h. im Klartext ''':''' für KANT ist das ,Sein‘ eines Gegenstandes bloß ein ,Gedanke‘ in uns, wenn er meint, dass uns ein Gegenstand erst dann wirklich ,gegeben‘ sei, wenn wir uns den</span> <span style="color:#FF6000">»</span>''Gegenstand als schlechthin gegeben (durch den Ausdruck : <u>er ist</u>) <u>denken</u>''<span style="color:#FF6000">«</span>, <span style="color:#00B000">was nur dem Irrtum einer falschen System-Konzeption geschuldet sein kann. Auf Grund dieser Konzeption ist das</span> <span style="color:#FF6000">»</span>''Ding, wie es an sich selbst ist''<span style="color:#FF6000">«</span>, <span style="color:#00B000">für KANT systembedingt weder ,anschaubar‘, noch ,erkennbar‘. Diese falsche Konzeption über die ,Existenz‘, bzw. das ,Sein‘ eines Dinges, als</span> <span style="color:#FF6000">»</span>''dessen bloße Position''<span style="color:#FF6000">«</span>, <span style="color:#00B000">ist für KANT letztendlich auch die Beweisgrundlage und Voraussetzung für seine Ablehnung des ontologischen Argumentes für GOTT im Theorem ANSELMS. Wenn das ,wirkliche‘ Sein eines Dinges nichts anderes ist, als</span> <span style="color:#FF6000">»</span>''dessen'' <span style="color:#00B000">[ bloß gedachte ]</span> ''Position''<span style="color:#FF6000">«</span>, <span style="color:#00B000">d.h. als seine ,mögliche‘ Setzung bloß im- und durch den Verstand, — das ist das, als ,wirklich‘ bloß nur ,gedachte‘ Ding —, dann</span> <span style="color:#FF6000">»</span>''enthält''<span style="color:#FF6000">«</span> <span style="color:#00B000">natürlich</span> <span style="color:#FF6000">»</span>''das Wirkliche''<span style="color:#00B000">, [ als die bloß gedachte Existenz ],</span> ''nichts mehr als das bloß Mögliche''<span style="color:#00B000">, [ als der gedachte Begriff ]<span style="color:#FF6000">«</span>, was offensichtlich unhaltbar ist. <span style="color:#4C58FF">[ Modus tollendo tollens ] </span> ''':''' Wenn die Konsequenz einer Wenn-Dann-Folgerung ,falsch‘ ist, dann ist auch ihre Voraussetzung, das System-Konzept KANTS, ,falsch‘ ''':''' d.i. seine ,Kopernikanische Wende‘ für die Metaphysik, soweit sie KANTS ,Sein’-Konzept betrifft. Korrekt und ,wahr‘ ist in jedem Fall ''':''' Das Wirkliche enthält <span style="color:#FF6000">,doch mehr‘</span> als das bloß Mögliche, und die Dinge ,existieren‘ schon immer unabhängig von unserem Denken. ,Existenz‘, das ,Sein‘, ist <span style="color:#FF6000">,doch mehr‘</span>, als bloß ein ,Gedanke‘ von uns.)</span> Somit ist die Argumentation KANTS gegen den ontologischen Beweis ANSELMS für GOTT ,falsch‘ und unhaltbar, weil sie auf der ,falschen‘ Voraussetzung beruht ''':''' die ,Existenz‘, bzw. das ,Sein‘ eines jeden ,Gegenstandes‘, — wie z. B. auch die Existenz bei GOTT —, sei bloß dessen gedachte ,Position‘ an sich selbst, d.h. bloß seine ,Setzung‘ im- und durch den Verstand. Damit ,macht‘ er GOTT außerdem zu einem ,Ding‘ unter den vielen ,Dingen‘ dieser Welt, und verkennt so, — wie vor ihm THOMAS von Aquin —, auch die Einzigartigkeit und Exklusivität GOTTES im Theorem ANSELMS. <div class="center">Die <span style="color:#FF6000">„Rede von GOTT“</span> in der philosophischen Tradition</div> Wenn man die philosophische Tradition der <span style="color:#FF6000">„Rede von GOTT“</span> im Lichte der Ergebnisse der <span style="color:#4C58FF">„axiomatischen Theologie“</span> GÖDELS liest, dann stellt sie sich am Beispiel bei ARISTOTELES, — AVICENNA, — ANSELM, und bei GÖDEL wie folgt dar ''':''' <span style="color:#FF6000">»''Das Erstbewegende,'' (<span style="font-family: Times;"><big>,πρῶτον κινοῦν‘</big></span>), ''das, ohne selbst ‚bewegt‘ zu sein'', (<span style="font-family: Times;"><big>,ἀκίνητον‘</big></span> <span style="color:#00B000">| ''unverursacht, ,entstehungslos‘'' |</span> ), ''alles Übrige wie ein Geliebtes ‚bewegt‘'', (<span style="font-family: Times;"><big>,κινεῖ δὴ ὡς ἐρώμενον‘</big></span> <span style="color:#00B000"> | ''-verursacht, ,entstehen‘ lässt'' |</span> ), ''ist sowohl'' <span style="color:#00B000">[ zeitlich-]</span>''ewiges ‚Wesen‘'', (<span style="font-family: Times;"><big>,ἀΐδιον καί οὐσία‘</big></span> <span style="color:#00B000">| ''‚Substanz‘'' |</span> ), ''als auch'' <span style="color:#00B000">[ zeitlich-]</span>''ewiges ‚wirksames, verwirklichendes Sein‘'', (<span style="font-family: Times;"><big>‚ἀΐδιον καί ἐνέργεια οὖσα‘ = ‚actus purus‘</big></span><span style="color:#00B000"> | '',reine Tätigkeit‘'' |</span> ), … ''ersehnt'', (<span style="font-family: Times;"><big>,ὀρεκτόν‘</big></span>), ''und erkennbar'', (<span style="font-family: Times;"><big>,νοητόν‘</big></span>), ... ''denn dies ist der ‚Gott‘'', (<span style="font-family: Times;"><big>,τοῦτο γὰρ ὁ θεός‘</big></span>), <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, ''der'' <span style="color:#00B000">[ zeitlich-]</span>''Ewige'', (<span style="font-family: Times;"><big>,ἀΐδιον‘</big></span>), — ''der Unvergleichliche'', (<span style="font-family: Times;"><big>,ἄριστον‘</big></span> <span style="color:#00B000">| ''‚der Beste‘'' |</span> ), — ''der Lebendige'', (<span style="font-family: Times;"><big>,ζῷον‘</big></span> <span style="color:#00B000">| ,''das Leben selbst‘'' |</span> ), — ... ''so sagen wir ja'', (<span style="font-family: Times;"><big>,φαμὲν δὴ‘</big></span>), — ...«</span> ''':''' <span style="color:#00B000">(ARISTOTELES — Grieche)</span>. Der ‚Begriff’ <span style="color:#FF6000">„GOTT“</span>, <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, als ,Individuumname‘, ist synonym mit <span style="color:#FF6000">„göttliches ‚Da-Sein’“</span>, das sowohl <span style="color:#FF6000">„aus sich vollkommen“</span>, als auch <span style="color:#FF6000">„notwendig für uns“</span> ‚da‘ ist; <span style="color:#00B000">(das ist das, an sich, vollkommene ‚Was-Sein‘ GOTTES ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ — </span>, das zugleich, für uns, das notwendige ‚Da-Sein‘ GOTTES ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x'''‘</span> — ist)</span>; <span style="color:#CC66FF">„von Ewigkeit zu Ewigkeit“</span>. Das ist der <u>angemessene Begriff</u> von GOTT, und gilt ‚nur‘ von GOTT. Weil GOTT <span style="color:#FF6000">„vollkommen“</span> ist, ist <span style="color:#FF6000">„Da-Sein“ <span style="color:#00B000">|</span> „GOTT-Sein“ <span style="color:#00B000">|</span> „Göttlichkeit“</span> das <span style="color:#FF6000">„Wesen“</span> GOTTES ''':''' <span style="color:#4C58FF">— ‚'''Gx↔G'''<sub>ess</sub>'''x'''‘ —</span>. Im Unendlichen, GOTT, sind <span style="color:#FF6000">„Essenz“</span> und <span style="color:#FF6000">„Existenz“</span> koinzident ,eins‘, und daher untrennbar, und <span style="color:#FF6000">»''darum ist GOTT das einzige ‚Sein’, das notwendig an sich ‚da‘ ist''«</span> ''':''' <span style="color:#00B000">(ABU ALI SINA alias AVICENNA — Muslim)</span>. Der <span style="color:#00B000">(gedachte)</span> ‚Eigenschafts-Begriff‘ <span style="color:#FF6000">„Vollkommenheit (die Größe) GOTTES“</span>, <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, <span style="color:#00B000">(‚Perfektion‘, die unbegrenzte Summe aller ‚positiven Eigenschaften‘ in GOTT)</span> schließt koinzident die ‚Eigenschaft’ <span style="color:#FF6000">„notwendige Existenz für uns“</span> mit ein ''':''' <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub>‘ —</span>. GOTT wäre nicht <span style="color:#FF6000">„vollkommen“</span>, wenn er nicht auch real für uns ‚da‘ wäre, wenn er nicht ,immer schon’ <span style="color:#FF6000">„existierte“</span>. ‚Sein’ ist <u>mehr</u> als ‚Nicht-Sein’. ,Sein’, bzw. ,Existenz’ gehört in GOTT zu den ,Transzendentalia’. Das sind die <span style="color:#00B000">(ultimativen)</span> ,Wesenseigenschaften’ in GOTT. Der unbegrenzt Unendliche, GOTT, ist daher das <span style="color:#FF6000">»''vollkommenste Wesen, über das nichts ,Größeres‘ d.h. Vollkommeneres <u>mehr</u> ‚gedacht‘ werden kann''«</span> ''':''' <span style="color:#00B000">(ANSELM von Canterbury — Christ)</span>. Der ‚Begriff’ <span style="color:#FF6000">„Perfektion GOTTES“</span>, <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, schließt koinzident das <span style="color:#FF6000">„notwendige Dasein GOTTES“</span>, <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x'''‘</span> —, für uns mit ein, ohne einen zeitlichen Anfang und ohne ein zeitliches Ende. Das ist die ‚zeitlos-ewige‘, an sich absolute, und <span style="color:#FF6000">„für uns notwendige Existenz GOTTES“</span> ''':''' <span style="color:#4C58FF">— ‚'''Gx→E'''<sub>not</sub>'''x'''‘ —</span> ''':''' <span style="color:#00B000">(Das ist ein ,regulär‘-mögliches Korollar im 2. Beweisgang aus Term :16: ''':''' <span style="color:#4C58FF">— ‚'''Gy→Yy'''‘ —</span>, mit der <span style="color:#4C58FF">[ Instanz(Y:=E<sub>not</sub>) ]</span>, und der <span style="color:#4C58FF">[ FUB(y:=x) ]</span>; und auch ein ,regulär‘-mögliches Korollar im 3. Beweisgang ''':''' entsprechend der <span style="color:#FF6000">„logischen Implikation”</span> :: <span style="color:#4C58FF">[├ A ├ B ╞ A → B ]</span> von Term :01: <span style="color:#4C58FF">— ‚'''Gx'''‘ — </span> und Term :05: <span style="color:#4C58FF"> —‚'''E'''<sub>not</sub>'''x'''‘ —</span> aus diesem Beweisgang. In Worten ''':''' <span style="color:#FF6000">»</span>''Angenommen, '' <span style="color:#4C58FF">— ‚'''x'''‘ —</span> ''steht für den GOTT der Christen'' ''':''' <span style="color:#4C58FF">— ‚'''G'''‘ — </span>, ''dann existiert dieser GOTT'', <span style="color:#4C58FF">— ‚'''x'''‘ —</span>, ''für uns notwendig'', <span style="color:#4C58FF">— <sub>not</sub> —</span> <span style="color:#FF6000">«</span>.)</span> Der Unendliche, GOTT, ist <span style="color:#FF6000">»''unabhängig von der zufälligen'' <span style="color:#00B000">[ Raum-Zeit-]</span>''Struktur''«</span> unserer ‚vergänglichen‘, ,endlichen‘ Welt, welche prinzipiell vom dreidimensionalen Raum und von der unwiederbringlich ‚vergehenden‘ Zeit geprägt ist. Der ,GOTT der Christen‘ ist <span style="color:#FF6000">»''unabhängig''«</span> von dieser <span style="color:#FF6600">„vergehenden Raum-Zeit“, — »''jenes rätselhafte und anscheinend in sich widersprüchliche Etwas''« <span style="color:#00B000">(GÖDEL)<ref>Kurt GÖDEL, ‚''<span style="font-family: Times;"><big>Eine Bemerkung über die Beziehungen zwischen der Relativitätstheorie und der idealistischen Philosophie‘</big></span>'', in P.A.SCHILPP (Hg.): ‚''<span style="font-family: Times;"><big>Albert Einstein, Philosoph und Naturforscher‘</big></span>'', Seite 406</ref></span> —</span>. Ohne ‚Zeit‘ gibt es keinen zeitlichen Unterschied zwischen ‚Ursache‘ und ‚Wirkung‘, <span style="color:#00B000">(beides ist zeitlos ,eins‘)</span>, und so ist der zeitlos-ewige GOTT, der <span style="color:#FF6000">»''notwendig aus sich ,existiert‘'' «</span> ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ — </span>, <span style="color:#FF6000">„unverursacht“ <span style="color:#00B000">|</span> „ursprungslos“</span> für uns immer schon ‚da‘ ''':''' <span style="color:#00B000">(GÖDEL — ohne religiöses Bekenntnis)</span>. Mit dem GÖDEL-Kalkül ist die <span style="color:#FF6000">„Rede von GOTT“</span> auf eine ‚vernünftige Basis‘ gestellt worden, und ist somit für jeden Menschen nachvollziehbar, <span style="color:#FF6000">»''rein verstandesmäßig, (ohne sich auf den Glauben an irgendeine Religion zu stützen)''«</span>, wie obige Beispiele zeigen. '''Resümee :''' Das GÖDEL-Kalkül zeigt mit <span style="color:#FF6000">»''mathematischer Evidenz''«</span>, was notwendig folgt, wenn die Axiome ‚wahr‘ sind, <span style="color:#00B000">(die Axiome bilden formal-syntaktisch <span style="color:#FF6000">»''die theologische Weltanschauung''«</span> ab)</span>, unter der Voraussetzung, dass die Axiome <span style="color:#FF6000">»''unabhängig von der zufälligen'' <span style="color:#00B000">[ Raum-Zeit-]</span>'' Struktur''«</span> unserer Welt sind. Die ,Verifikation‘ der Axiome und Definitionen von GOTT und seiner Vollkommenheiten gelingt GÖDEL, — entsprechend seiner Unabhängigkeits-Bedingung —, durch den Aufweis ihrer Widerspruchsfreiheit ''':''' sie sind somit ,wahr‘ und, — im Kontext einer <span style="color:#FF6000">»''theologischen Weltanschauung''«</span> —, auch ,annehmbar‘ in unserer ,realen‘ Welt ''':''' <span style="color:#00B000">(siehe Anhang, 2. Beweisgang und Anmerkung-2)</span>. Er vermeidet damit den Fehler, der immer wieder im Diskurs über Gottesbeweise gemacht wird ''':''' GOTT mit seinen Geschöpfen zu vergleichen. Diese logisch-philosophische Rede von GOTT <span style="color:#00B000">(<span style="color:#FF6000">»''ohne sich auf den Glauben an irgendeine Religion zu stützen''«</span>)</span> hat eine <u>mehr</u> als zweitausendjährige Tradition hinter sich. Der <span style="color:#FF6000">„100-Taler-Gott“</span> des Philosophen KANT, hat heute, nachdem der Logiker und Systemtheoretiker GÖDEL sein System vorgelegt hat, an ‚Strahlkraft‘ verloren. Kurt GÖDEL ''':''' ::<span style="color:#FF6000">» ''Die theologische Weltanschauung'', <span style="color:#00B000">[ dass GOTT für uns immer schon ‚da‘ ist ]</span>, ''ist rein verstandesmäßig mit allen bekannten Tatsachen durchaus vereinbar'';«</span> <span style="color:#00B000">[ d.h. sie ist das ,Resultat‘ der, — vom Glauben geleiteten —, ‚theoretischen Vernunft‘, alias ‚reinen Vernunft‘, und nicht bloß das ‚Postulat‘ einer ‚praktischen Vernunft‘, wie KANT meint ]. <span style="color:#FF6000">»''Der'' <span style="color:#00B000">[ christliche ]</span> ''Glaube ist die ‚Pupille‘ im ‚Auge‘ unseres Verstandes.''«</span> (Heilige KATHARINA von Siena, Lehrerin der Kirche, Patronin Europas<ref>vgl. <span style="font-family: Times;"><big>''Gebet 7 ‚Für die neuen Kardinäle‘, Rom, 21. Dezember 1378,''</big></span> aus <span style="font-family: Times;"><big>''Caterina von Siena ,Die Gebete‘.''</big></span> Kleinhain 2019, online: https://caterina.at/werke/gebete/gebete-detailansicht/gebet-7.html</ref> )</span> Der sonst so rationale KANT, hier doch etwas emotionell, <span style="color:#00B000">(als wolle er die Ergebnisse im GÖDEL-Kalkül nicht wahr haben, die belegen, dass er sich bei GOTT geirrt, und die Funktion des christlichen Glaubens für die Philosophie falsch eingeschätzt hat)</span> ''':''' ::<span style="color:#FF6000">»</span> ''Es war etwas ganz Unnatürliches und eine bloße Neuerung des Schulwitzes, aus einer ganz willkürlich entworfenen Idee das Dasein des ihr entsprechenden Gegenstandes selbst ausklauben zu wollen''<ref>vgl. ‚''<span style="font-family: Times;"><big>Kritik der reinen Vernunft</big></span>''‘, Seite 403. https://www.korpora.org/kant/aa03/403.html</ref>.<span style="color:#FF6000">«</span> Für KANT, für die Scholastiker, <span style="color:#00B000">(und auch für uns)</span>, ist es natürlich ‚logisch‘, dass aus einem als ‚möglich’ gedachten Begriff, <span style="color:#FF6000">»</span>''aus einer ganz willkürlich entworfenen Idee''<span style="color:#FF6000">«</span>, keine Existenzaussage abgeleitet werden kann. <span style="color:#00B000">(Aus dem bloß gedachten Begriff ,goldene Berge‘ folgt natürlich nicht, dass es solche in Wirklichkeit auch gibt.)</span> In der philosophisch-<span style="color:#4C58FF">,theologischen’</span> Tradition, die von ARISTOTELES herkommt, ist der Begriff <span style="color:#FF6000">»''GOTT''«</span> jedoch von allen anderen Begriffen so verschieden, so dass für GOTT diese Logik KANTS nicht mehr gilt. GOTT ist ,unvergleichlich‘ und ,einzigartig‘. Dazu der Kommentar von HEGEL ''':''' ::<span style="color:#FF6000">»''Wenn KANT sagt, man könne aus dem Begriff'' <span style="color:#00B000">[ ‚GOTT‘ ]</span> ''die Realität nicht ,herausklauben‘, so ist da der Begriff als endlich gefasst''.« <span style="color:#00B000">[ In der Endlichkeit unserer Welt trifft die Logik KANTS zu, dass dem ‚Begriff‘ nicht ,notwendig‘ das ‚Sein‘ folgt, denn es gibt in ihr die ,Lüge‘, die das ,Wirklich-Sein‘ im Begriff bloß behauptet, ohne dass es ,in Wirklichkeit‘ zutrifft, was sie behauptet. Es gilt hier nach KANT ''':''' »''Sein ist kein reales Prädikat''«. Somit ist ]</span> »''...der Begriff ohne'' <span style="color:#00B000">[ reales ]</span> ''Sein ein Einseitiges und Unwahres, und ebenso das Sein, in dem kein Begriff ist'', <span style="color:#00B000">[ ist ]</span> ''das begrifflose Sein,'' <span style="color:#00B000">[ d.i. das relative ,Noch-Nicht-Begriffene‘ ]</span>.'' Dieser Gegensatz, der in die Endlichkeit fällt'' <span style="color:#00B000">[ im Endlichen zutrifft ]</span>, ''kann bei dem Unendlichen, GOTT, gar nicht statthaben''<ref>Georg Wilhelm Friedrich HEGEL, ‚<span style="font-family: Times;"><big>''Ausführungen des ontologischen Beweises''</big></span>‘ in den ‚<span style="font-family: Times;"><big>''Vorlesungen über die Philosophie der Religion vom Jahr 1831''</big></span>‘ . Hamburg 1966, Seiten 175 bzw. 174</ref>; <span style="color:#00B000">[ denn ,Begriff‘, bzw. ,Denken‘ und ,Sein‘ sind in dem Unendlichen, GOTT, untrennbar und real immer dasselbe. Auf Grund dieser ontologischen Identität ,personifiziert‘ und ,repräsentiert‘ GOTT die ,Wahrheit‘ ''':''' GOTT ist die ,Wahrheit‘. In GOTT, dem <span style="color:#FF6000">„Schöpfer der Welt“</span>, folgt dem ,Begriff‘ immer ,notwendig‘ das ,Sein‘ ''':''' <span style="color:#CC66FF">»''GOTT sprach ''':''' Es werde ,Licht‘. Und es wurde Licht''«, <small>{{Bibel | Genesis |1|3|EU}}</small>;</span> oder auch ''':''' <span style="color:#CC66FF">»''Der Herr sprach, und sogleich geschah es; er gebot, und alles war da''«,</span> <small>{{Bibel | Psalm |33|9|EU}}</small>.]</span>«</span> Das Entscheidende bei der <span style="color:#4C58FF">„theologischen“</span> Interpretation des GÖDEL-Kalküls ist, dass der <span style="color:#00B000">(Begriff)</span> GOTT der Christen ''':''' <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, nicht auf die Ebene seiner ,endlichen‘ Geschöpfe und unserer Welt gestellt wird, <span style="color:#00B000">(d.i. das ‚Universum‘ im ,Urknall‘, die ‚100-Taler‘, ein ‚Tsunami‘, auch ,einfache Modelle‘ von unserer Welt, etc.)</span>, und damit verglichen wird, sondern, dass der GOTT der Christen in seiner Einzigartigkeit und Besonderheit als <span style="color:#FF6000">»''der Unendliche''«</span> belassen und als <span style="color:#FF6000">»''unabhängig von der zufälligen'' <span style="color:#00B000">[ Raum-Zeit-]</span>''Struktur''«</span> unserer vergänglichen Welt, — als <span style="color:#FF6000">»''der Unvergleichliche''«</span> —, verstanden wird. <span style="color:#00B000">(Alle Kritiken des sog. ,ontologischen‘ Gottesbeweises übersehen die Einzigartigkeit und Besonderheit des <span style="color:#FF6000">»''Unendlichen''«</span>, und/oder wollen diese nicht ,wahr‘ haben.)</span> Auch THOMAS von Aquin ,verortet‘ den GOTT ANSELMS, — in seiner Kritik an dessen Theorem —, irrtümlich unter die ,Dinge‘ der uns umgebenden ,Natur‘, wenn er sagt ''':''' GOTT <span style="color:#FF6000">„<span style="font-family: Times;"><big>esse in rerum natura</big></span>“</span>, d.h. wörtlich, dass der GOTT ANSELMS <span style="color:#FF6000">»</span>''in der Natur der Dinge'' <span style="color:#00B000">(unserer Welt)</span> ''existiert''<span style="color:#FF6000">«</span>, und verkennt somit, — wie nach ihm auch KANT —, die ,Unvergleichlichkeit‘ GOTTES, <span style="color:#00B000">(vgl. STh I q.2 a.1 ad 2<ref>„Deus … illud quo maius cogitari non potest; non tamen propter hoc sequitur quod intelligat id quod significatur per nomen, esse in rerum natura; sed in apprehensione intellectus tantum.“ ——— »''GOTT ist'' (nach ANSELM) ''der, über den Größeres nicht mehr gedacht werden kann. Aber nicht deswegen, weil er'', (der Narr von Psalm 14.1, den ANSELM zitiert), ''das versteht, was durch diesen Namen,'' (d.h. mit dem Begriff ,GOTT‘, als der ,Größte‘, im Theorem ANSELMS), ''bezeichnet wird, folgt daraus'', (wie ANSELM meint), ''dass er auch versteht, dass er'', (der GOTT ANSELMS), ''auch in der ,Natur‘ der Dinge'' (unserer Welt) ''existiert''; <span style="color:#00B000">[ was ANSELM so nie gesagt hat ]</span>. ''Daraus folgt nur, dass er'', (als ,GOTT‘), ''bloß in der Auffassung seines Verstandes'', (d.h. nur im Denken des Narren als ,Begriff‘), ''existiert.''« ——— Hier ,verortet‘ THOMAS einerseits den unendlichen GOTT, von dem das Theorem ANSELMS spricht, irrtümlich unter die endlichen Dinge der uns umgebenden ,Natur‘, was sachlich dem theologischen Theorem der Unvergleichlichkeit GOTTES widerspricht, der nicht unter die Dinge unserer Welt eingereiht werden darf. Anderseits verliert er dadurch auch den ,Blick‘ für die Außerordentlichkeit und Besonderheit GOTTES, dessen Natur völlig verschieden und unabhängig von der ,Natur‘ unserer raum-zeitlichen Welt ist. GÖDEL beweist jedoch, mit ANSELM, weil es notwendig, ohne Widerspruch, (»''bloß in der Auffassung unseres Verstandes''«), möglich ist, dass GOTT existiert, ist es korrekt, daraus auch mit Notwendigkeit zu folgern, dass der Glaube des Erzbischofs ANSELM, und der Glaube seiner Anvertrauten, von der Wirklichkeit GOTTES, widerspruchsfrei, logisch richtig, und damit sinnvoll ist; denn Möglichkeit und Wirklichkeit sind in GOTT koinzident ,eins‘. Das ist das Privilegium GOTTES allein, der einzigartig und unvergleichlich ist. Damit zeigt er auf, dass THOMAS die Unvergleichlichkeit und Einzigartigkeit GOTTES in seinem Vorhalt nicht bedacht hat; und außerdem ANSELM missverstanden hat.</ref>)</span>; jedenfalls hier in der Auseinandersetzung mit ANSELM. Dagegen spricht ANSELM im ,''<span style="font-family: Times;"><big>Proslogion</big></span>''‘, Seite 85f, nur von einem <span style="color:#FF6000">„<span style="font-family: Times;"><big>esse et in re</big></span>“</span> GOTTES, d.h. dass GOTT ,auch in Wirklichkeit existiert‘, <span style="color:#FF6000">„<span style="font-family: Times;"><big>quod maius est</big></span>“</span>, was ,größer‘, bzw. ,mehr‘ ist, als <span style="color:#FF6000">„<span style="font-family: Times;"><big>esse solo in intellectu</big></span>“</span>, als nur ,im Verstand zu sein‘; wobei die ,zeitlose-überzeitliche‘ Wirklichkeit, <span style="color:#00B000">(Natur)</span>, GOTTES jedoch völlig verschieden und <span style="color:#FF6000">»''unabhängig von der zufälligen''«</span> Wirklichkeit <span style="color:#00B000">(die ,Natur‘)</span> der ,raum-zeitlichen‘ Welt der Dinge ist. Daher ist sie mit dieser auch nicht vergleichbar. GOTT ist <span style="color:#FF6000">„vollkommen“</span> und alle <span style="color:#FF6000">„Vollkommenheiten“</span> in GOTT, <span style="color:#00B000">(die ultimativen ,Transzendentalia‘)</span>, sind koinzident ,eins‘, — ,fallen <span style="color:#FF6000">„notwendig“</span> perspektivisch in eins zusammen‘, und sind daher konvertierbar. Darum ist auch die Wirklichkeit, <span style="color:#00B000">(Natur)</span>, GOTTES ,einzigartig‘ und ,unvergleichlich‘. Mit Korollar-3 ist die Exklusivität und Außerordentlichkeit GOTTES definitiv im Kalkül ,bewiesen‘ <span style="color:#00B000">( ╞ )</span>. Der abendländische Monotheïsmus ist somit eine ,logische‘ Konsequenz aus den GÖDEL-Axiomen. <span style="color:#00B000">(Das <span style="color:#4C58FF">„theologische“</span> Theorem von der ,Einzigartigkeit‘ und Exklusivität GOTTES, d.h. hier im Kontext ''':''' die exklusive Einheit von GOTT und Mensch in JESUS CHRISTUS; von Vater, Sohn und Geist im <span style="color:#4C58FF">„Dreifaltigen“</span>; von Essenz und Existenz, von Begriff und Sein, von Ursache und Wirkung, von Subjekt und Objekt, von Möglichkeit und Wirklichkeit, und die unbegrenzte Summeneinheit und Koinzidenz der unendlichen Transzendentalien in GOTT, ist, — mit HEGEL —, die Voraussetzung und Bedingung jeder Philosophie ''':''' <span style="color:#FF6000">»''Die Einheit muss am Anfang der Philosophie stehen''«</span>; und ist zugleich auch ihr gesuchtes und bewiesenes Endergebnis und Ziel ''':''' <span style="color:#FF6000">»''Diese Einheit muss auch das Resultat der Philosophie sein''«</span><ref>https://hegel-system.de/de/gottesbeweis.htm#hegels-kritik-an-kant</ref>, was hier im GÖDEL-Kalkül ,logisch‘ mit Korollar-3 verifiziert wird ''':''' <span style="color:#4C58FF">— ‚'''□(∃xGx ∧ ∀y(Gy→x=y))'''‘ —</span> ''':''' <span style="color:#FF6000">»''GOTT ist exklusiv einzigartig''«</span>.)</span> Die Einzigartigkeit GOTTES bedingt die Koinzidenz, den inneren Zusammenhang aller seiner Vollkommenheiten und Zuschreibungen, <span style="color:#00B000">(Axiom-2)</span>, d.h. ihr paarweise, perspektivisches ,Zusammenfallen in eins‘ im Unendlichen, GOTT. ——— Aus der Notwendigkeit aller positiven Eigenschaften und Zuschreibungen, <span style="color:#00B000">(d.h. aus den, an sich, notwendigen, ultimativen Transzendentalien, Axiom-4)</span>, die in GOTT paarweise, als ,Wesenseigenschaften‘ koinzident ,eins‘ sind, <span style="color:#00B000">(Definition-2)</span>, ist die Einzigkeit GOTTES für uns erschließbar, <span style="color:#00B000">(Korollar-3)</span>. Axiom-4 ist die erste, ,modal‘ <span style="color:#FF6000">„notwendige“</span>, d.h. die transzendentale Voraussetzung für Korollar-3. Wenn im Korollar-3 das <span style="color:#4C58FF">— ‚'''x'''‘ —</span> z. B. für GOTT, dem ,Vater‘ der Christen, und das <span style="color:#4C58FF">— ‚'''y'''‘ —</span> für GOTT, dem ,Sohn‘, d.h. für ,JESUS CHRISTUS‘ steht, oder für den ,HEILIGEN GEIST‘, <span style="color:#00B000">(den ,Dreifaltigen GOTT‘ der Christenheit)</span>; oder auch für die Gottesbezeichnung ,GOTT-ADONAI‘ der Juden, oder für die Gottesbezeichnung ,ALLAH‘ der Muslime steht, dann weist dieses Korollar, für <span style="color:#4C58FF">— ‚'''∀y'''‘ —</span>, mit der ,ontologischen Identität‘ ''':''' <span style="color:#4C58FF">— ‚'''x=y'''‘ —</span>, auf die ,Koinzidenz‘ des <span style="color:#4C58FF">„Dreifaltigen“</span>, und auf die <span style="color:#4C58FF">„Hypostatische Union“</span> der Naturen von GOTT und Mensch in JESUS CHRISTUS, bzw. auch auf den inneren Zusammenhang der drei Buch-Religionen hin. ===<div class="center"><span style="color:#660066">Anhang : das GÖDEL-Kalkül</span></div>=== In der ,Legende zum GÖDEL-Kalkül‘ wird an einige Basics erinnert, und diese für die operative Praxis im anstehenden Kalkül, mit Hilfe von logischen Meta-Terme, adaptiert. Zusätzliche, notwendige Regeln und Gesetze werden dann ,benannt‘, wenn sie in der Kalkül-Durchführung auftreten. {|class="wikitable" |- ! <div class="center"><span style="color:#660066">Legende zum GÖDEL-Kalkül</span></div> |- | <small> <math>\begin{align} {\color{blue}\text{ ◇}} \text{ :: konsistent ↔ widerspruchsfrei ↔ möglich ↔ denkbar, } & {\color{blue}\text{ □}} \text{ :: notwendig ↔ wirklich, für jede mögliche Welt ↔ exklusiv} \\ \text{logischer Meta-Term ::} {\color{blue}\text{ [ A ├ B ]}} \text{ ::} & \text{ „aus A folgt im Kalkül ,regulär‘ (├ ) B.“} \\ \text{ A, B sind Aussagen über Eigenschaften, (A ist keine Eigenschaft);} & \text{ die Aussage, z.B. in der Kalkül-Zeile 10, wird als ,Term :10:‘ bezeichnet} \\ {\color{blue}\text{ AE}} \text{ ::} & \text{ Argument Einführung, Prämisse, Postulat } \\ {\color{blue}\text{ Xx}} \text{ ::} & \text{ „X ist eine Eigenschaft der Individuum-Variable x.“ } \\ {\color{blue}\text{ ¬PX}} \text{ ::} & \text{ „X ist keine positive Eigenschaft, ist keine Perfektion, ist nicht vollkommen.“ } \\ {\color{blue}\text{ Instanz(X := Y)}} \text{ ::} & \text{ Substitution der Eigenschaft X durch die ,bestimmte‘ Eigenschaft Y } \\ \text{ (Eine ,Instanz‘ ist ein Exemplar aus einer Menge gleichartiger Dinge;} & \text{ hier die ,bestimmte‘ Eigenschaft Y, als Ersatz für das unbestimmte X.) } \\ {\color{blue}\text{ FUB(x := y)}} \text{ ::} & \text{ Freie-Um-Benennung der Individuum-Variable x in y } \\ \text{ ,modal‘-frei gewählte Kalkül-Prämisse ::} {\color{blue}\text{ Gx}} \text{ ::} & \text{ „Die Variable x steht für den GOTT der Christen.“ } \\ {\color{blue}\text{ [ G(y) ├ ⱯyG(y) ]}} \text{ ::} & \text{ All-Operator-Einführung der Variable y für GOTT } \\ \text{ „Angenommen, die Variable y steht für GOTT, dann } & \text{folgt ,regulär‘ (├ ), dass auch jedes y im Kalkül für GOTT steht.“}\\ {\color{blue}\text{[ ⱯXA(X) ├ A(X) ]}} \text{ ::} & \text{ All-Operator-Beseitigung für die substituierte Eigenschaft X } \\ \text{ „Wenn X durch eine ,bestimmte‘ Eigenschaft ,instanziiert‘ ist oder } & \text{wird, dann kann der All-Operator von X ,regulär‘ (├ ) beseitigt werden.}\\ {\color{blue}\text{ KOMM(↔)}} \text{ ::} & \;{\color{blue}\text{[ (A↔ B) ↔ (B ↔ A) ]}} \text{ :: Kommutativgesetz für ( ↔ )}\\ {\color{blue}\text{ DIST(□∧)}} \text{ ::} & \;{\color{blue}\text{[ (□A ∧ □B) ↔ □(A ∧ B) ]}} \text{ :: Distributivgesetz für (□∧ )} \\ \text{ (hypothetischer Syllogismus, häufige logische Schlussregel) ::} & \;{\color{blue}\text{[ A → B, A ├ B ]}} \text{ :: (Modus ponendo ponens) :: Abtrennregel.} \\ \text{ „Wenn es wahr ist, dass aus A ein B folgt, und wenn A wahr ist, } & \text{dann ist im Kalkül ,regulär‘ (├ ) ableitbar, dass auch B wahr ist.“} \\ \text{ (negativer hypothetischer Syllogismus) ::} & \;{\color{blue}\text{[ A → B, ¬B ├ ¬A ]}} \text{ :: (Modus tollendo tollens)} \\ \text{ „Wenn es wahr ist, dass aus A ein B folgt, und wenn B falsch ist, } & \text{dann ist im Kalkül ,regulär‘ (├ ) ableitbar, dass auch A falsch ist.“} \\ \text{''KONDITIONALER BEWEIS“ ::} & \;{\color{blue}\text{[ ├ A ├ B ╞ A → B ]}} \text{ :: (logische Implikation)} \\ \text{ „Angenommen, A ist ,regulär‘ Axiom oder Prämisse, und B ist im } & \text{Kalkül ,regulär‘ abgeleitet, dann ist ,bewiesen‘ ( ╞ ) : A impliziert B, ist wahr.“} \\ \text{''INDIREKTER BEWEIS“ ::} & \;{\color{blue}\text{[ ├ ¬A → F ╞ A ]}} \text{ :: (Reductio ad absurdum)} \\ \text{ „Wenn im Kalkül aus ¬A ,regulär‘ eine Kontradiktion } & \text{F folgt, dann ist A ,bewiesen‘ ( ╞ ) : A ist ,wahr‘.“} \\ \end{align}</math> </small> |} A. FUHRMANN ''':''' <span style="color:#FF6000">»</span> ''Eine Prädikatenlogik zweiter Stufe ist eine Logik, in der die Quantoren auch Eigenschaftsausdrücke <span style="color:#00B000">(<span style="color:#FF6000">„Prädikate”</span>)</span> binden können''. <span style="color:#00B000">[ Die ,Prädikate‘ werden in einem Kalkül dieser Logik durch Definitionen ,bestimmt‘ ]</span>. ''Wir werden uns im folgenden recht frei einer dafür geeigneten formalen Sprache bedienen. Äußere Quantoren werden meist weggelassen und wir schreiben kurz'' <span style="color:#4C58FF">— ‚'''Xx'''‘ — </span> ''bzw.'' <span style="color:#4C58FF">— ‚'''PX'''‘ — </span> ''um auszudrücken, dass das Individuum'' <span style="color:#4C58FF">— ‚'''x'''‘ — </span> ''die Eigenschaft'' <span style="color:#4C58FF">— ‚'''X'''‘ — </span> ''hat, bzw. dass die Eigenschaft'' <span style="color:#4C58FF">— ‚'''X'''‘ — </span> ''die höherstufige Eigenschaft'' <span style="color:#4C58FF">— ‚'''P'''‘ — </span> ''<span style="color:#00B000">(für <span style="color:#FF6000">„positiv”</span>)</span> hat;'' <span style="color:#00B000"> [ wobei die Eigenschaft <span style="color:#4C58FF">— ‚'''P'''‘ — </span> als einzige im Kalkül ,unbestimmt‘ bleibt ]</span>. <span style="color:#FF6000">«</span><ref>A. FUHRMANN ‚''<span style="font-family: Times;"><big>‚G‘ wie Gödel. Kurt Gödels axiomatische Theologie</big></span>''‘, Seite 6, Anmerkung 3. Konform mit seinem Artikel in ‚''<span style="font-family: Times;"><big>Logik in der Philosophie</big></span>''‘ hg. v. P. SCHROEDER-HEISTER, W. SPOHN und E. OLSSON. 2005, Synchron, Heidelberg.</ref> Der All-Quantor für Eigenschaften, hier im GÖDEL-Kalkül der ,modalen‘ Prädikatenlogik zweiter Stufe, bindet die ,unbestimmte‘ Eigenschafts-Variable <span style="color:#4C58FF">— ‚'''X'''‘ —</span> ausschließlich nur in den Definitionen im 2. und 3. Beweisgang . <span style="color:#00B000"> (Im ersten Beweisgang gibt es keine Definition.)</span> Dieser All-Quantor wird dann jedes Mal in der Beweis-Durchführung durch die Substitution ''':''' <span style="color:#4C58FF"> [ Instanz(X:= ..) ]</span> mit ,bestimmte‘ Eigenschafts-Konstanten wie <span style="color:#4C58FF">— (X:= G) —</span>, bzw. <span style="color:#4C58FF">— (X:= ¬Y) —</span>, oder <span style="color:#4C58FF">— (X:= E<sub>not</sub>) —</span> ,regulär‘ <span style="color:#00B000">(├ )</span> beseitigt ''':''' <span style="color:#4C58FF"> [ ⱯXA(X) ├ A(X) ]</span>; wobei die Eigenschafts-Konstante im Kalkül entweder als Zwischenergebnis ,regulär‘ abgeleitet, <span style="color:#00B000">(,errechnet‘)</span>, oder mit einer Definition schon ,bestimmt‘ worden ist. Die spezifische ‚Eigenschaft‘ einer Eigenschaft wird hier, in der formalen Syntax der ,modalen‘ Prädikatenlogik zweiter Stufe, als eine tiefer gestellte Abkürzung <span style="color:#00B000">(als Index)</span> an ihre Trägereigenschaft angehängt, wie z. B. ‚wesentlich‘, bzw. ‚essentiell‘ durch <span style="color:#4C58FF"> — <sub>ess</sub> —</span>, oder ‚notwendig‘ durch <span style="color:#4C58FF"> — <sub>not</sub> —</span>. In der Definition-3 steht der Term ''':''' <span style="color:#4C58FF"> —‚'''E'''<sub>not</sub>'''x'''‘ —</span>, um auszudrücken, dass das Individuum <span style="color:#4C58FF">— ‚'''x'''‘ —</span> notwendig <span style="color:#4C58FF">— <sub>not</sub> —</span> die Eigenschaft ''':''' <span style="color:#4C58FF">— ‚'''E'''‘ —</span>, für ,Existenz‘, hat, d.h. <span style="color:#FF6000">»''das <span style="color:#4C58FF">‚'''x'''‘</span> existiert notwendig''«</span>. Der schon von GÖDEL indizierte Term ''':''' <span style="color:#4C58FF">—‚'''G'''<sub>ess</sub>'''x'''‘ —</span> kann gelesen werden als ''':''' <span style="color:#FF6000">»''Das Individuum <span style="color:#4C58FF">‚'''x'''‘</span> hat die Wesenseigenschaft, <span style="color:#4C58FF"> — <sub>ess</sub> — </span> ''':''' GOTT zu sein, <span style="color:#4C58FF">‚'''G'''‘ </span>''«</span>, statt der ,an sich‘ konformen, aber <span style="color:#4C58FF">„theologisch“</span> etwas ungenauen Formulierung ''':''' <span style="color:#FF6000">»''das'' <span style="color:#4C58FF">‚'''x'''‘</span> ''ist wesentlich göttlich''«</span>; oder mit der Voraussetzung ''':''' <span style="color:#4C58FF">— ‚'''Gx'''→'''G'''<sub>ess</sub>'''x'''‘ — </span> deutlicher und <span style="color:#4C58FF">„theologisch“</span> korrekt ''':''' <span style="color:#FF6000">»''Wenn'' <span style="color:#4C58FF">‚'''x'''‘</span> ''für den GOTT der Christen'', <span style="color:#4C58FF">‚'''G'''‘</span>, ''steht, dann ist GOTT-Sein'', <span style="color:#4C58FF">‚'''G'''‘</span>, <span style="color:#00B000">(,Existenz‘)</span> ''das Wesen dieses GOTTES'', <span style="color:#4C58FF">— <sub>ess</sub>‚'''x'''‘ —</span>, <span style="color:#00B000">(,Essenz‘)</span>«</span>; wobei, — entsprechend der ,methodologischen‘ Prämisse des Kalküls <span style="color:#00B000">(<span style="color:#4C58FF">— ‚'''Gx'''‘ — </span> ''':''' das <span style="color:#4C58FF">‚'''x'''‘</span> steht für den ,GOTT der Christen‘)</span> —, bei der Interpretation der Terme dieses besonderen Kalküls, die <span style="color:#4C58FF">„christliche Theologie”</span> für den Begriff <span style="color:#FF6000">„GOTT”</span>, Korrektur und die leitende Instanz ist. Dabei muss die Dreifach-Äquivalenz von <span style="color:#4C58FF"><span style="color:#4C58FF">— ‚'''G'''‘ — </span></span>berücksichtigt werden. Welche der drei Äquivalenzen, bzw. Lesearten von <span style="color:#4C58FF">— ‚'''G'''‘ — </span> bei einem bestimmten Term im Kalkül zulässig ist, muss <span style="color:#4C58FF">„theologisch”</span> überprüft und evaluiert werden. Bei manchen können sogar alle drei Lesearten <span style="color:#4C58FF">„theologisch”</span> zulässig sein. Warum es in der modalen Prädikatenlogik zweiter Stufe, im GÖDEL-System, ,Definitionen‘ gibt, erklärt GÖDEL formal-syntaktisch ''':''' <span style="color:#FF6000">»''Definitionen dienen ja nur der kürzeren Schreibwelse und sind daher prinzipiell überflüssig.''«</span> <span style="color:#00B000">(Aus der Anmerkung 6 in seinem Hauptwerk ''':''' ,''<span style="font-family: Times;"><big>Über formal unentscheidbare Sätze der Principia Mathematica und verwandter Systeme I</big></span>''‘.)</span> Für die <span style="color:#4C58FF">„theologische”</span> Interpretation und Hermeneutik seines Kalküls, sind die ,Definitionen‘ im GÖDEL-System jedoch wesentlich, und letztlich entscheidend. Erst dadurch wird sein Axiomensystem zur <span style="color:#4C58FF">„axiomatischen Theologie”</span>. GÖDEL gibt selbst den hermeneutischen Hinweis dazu, wenn er über den höherstufigen Eigenschaftsbegriff <span style="color:#FF6000">»''positiv''«</span> sagt, der nur ,indirekt‘ definiert wird, jedoch mit seinem gesamten Axiomensystem ''':''' <span style="color:#FF6000">»''Positiv bedeutet positiv im moralisch ästhetischen Sinne, (unabhängig von der zufälligen Struktur der Welt). Nur dann sind die Axiome wahr''.«</span> Die Deutung dieses ,höherstufigen‘ Begriffs als ein anderes Wort für <span style="color:#FF6000">„Transzendentalia“</span> ergibt sich aus der <span style="color:#4C58FF">„theologischen”</span> Evaluierung, d.h. der Einordnung des GÖDEL-Systems in die ,laufende‘ <span style="color:#FF6000">„Rede von GOTT“</span>, seit Menschen, sich über den Sinn der Welt und unseres Lebens in ihr, Gedanken machen. GOTT, der ,transzendent‘, — unabhängig —, zur Welt ist, ist Thema im Theorem ANSELMS, um das es ja im GÖDEL-Kalkül geht. Eine <span style="color:#4C58FF">„theologische”</span> Hermeneutik des GÖDEL-Systems ist daher legitim, die, als ein Bemühen um ein überzeugendes Verstehen, aus dem <span style="color:#4C58FF">„theologischen”</span> Vorwissen vieler Generationen schöpft. Um philosophische, und sogar <span style="color:#4C58FF">„theologische”</span> Theoreme exakt zu formulieren, und untersuchen zu können, hat der Ausnahmelogiker GÖDEL, im 20. Jahrhundert, ein Tor aufgestoßen, das uns ermöglichen kann, <span style="color:#FF6000">»''mathematisch evident''«</span>, und logisch objektiv nachprüfbar, in diesen Disziplinen zu argumentieren. Mit seiner modalen Prädikatenlogik zweiter Stufe, hat GÖDEL dem alten Wunsch eines Raimundus LULLUS, eines Gottfried Wilhelm LEIBNIZ, eines Immanuel KANT, und anderer, nach einer nachprüfbaren ,Universalsprache‘ in den Geisteswissenschaften, entsprochen; analog zur Mathematik, als Universalsprache in den Naturwissenschaften. Der sog. ,Theorembeweiser‘ der Wissenschaftler Christoph BENZMÜLLER und Bruno WOLTZENLOGEL-PALEO, mit Hilfe eines Computers, im 21. Jahrhundert, ist die kongeniale und logische Folge aus diesem Quanten-Schritt GÖDELS. In der folgenden Neu-Kalkülisierung, wird jeder einzelne operative Logik-Schritt des Kalküls in der '''linken Spalte''' nummeriert und als Term-Ergebnis angezeigt, und in der '''rechten Spalte''' werden die dafür benötigten Term-Komponenten und die dabei angewendeten Logik-Regeln und -Gesetze, mit Meta-Terme, dokumentiert. Am Anfang stehen die Ressourcen und das angestrebte Ziel des Beweisganges, <span style="color:#00B000">(das Theorem)</span>. Die GÖDEL Axiome und Definitionen, die Theoreme und Korollare, die Zwischenergebnisse, das Endergebnis, und die logischen Meta-Terme, <span style="color:#00B000">[ in eckigen Klammern ]</span>, werden kontextabhängig, <span style="color:#00B000">(durch ''„Benennungen“'')</span>, interpretiert, <span style="color:#00B000">(angezeigt durch ,Interpretationspunkte‘ — '''::''' —, falls nötig)</span>. Der jeweilige Beweisgang wird in den Anmerkungen ausführlich und umfassend kommentiert. Die Kalkül-Prämissen, <span style="color:#00B000">(<span style="color:#4C58FF">'''AE:'''</span> Argument Einführung)</span>, sind der modal-frei gewählte Einstieg in das Kalkül. Sie dokumentieren, zusammen mit dem angestrebten Beweis-Ziel, eine bestimmte Problemlage in einem externen Diskurs, der mit dem modalen Logik-System hier, formal-syntaktisch überprüft, und gegebenenfalls, verifiziert oder falsifiziert werden soll. Korollare sind einfache, logische Folgerungen aus dem jeweiligen Beweisgang. Theoreme und Korollare sind ,modal‘ gleichwertig. ====<div class="center"><span style="color:#660066">1. Beweisgang</span></div>==== {|class="wikitable" |- ! <div class="center"><span style="color:#660066">GÖDELS ontologischer Beweis für Theorem 1, (Möglichkeitsbeweis)</span></div> |- ! <span style="color:#00B000">''Terme der erweiterten Prädikatenlogik zweiter Stufe__________ „Benennungen“ und durchgeführte Logik-Operationen''</span> |- | <small> <math>\begin{align} \text{(Axiom 1.1)} & \quad P \neg X \;\Longrightarrow\;\ \neg P\ X\ & \ & \text{„Wenn die Negation von X positiv ist, dann ist die Eigenschaft X nicht positiv“} \\ \text{(Axiom 2)} & \quad (P\ X \wedge \;\Box \;\forall x (\ X\ x \Longrightarrow \ Y\ x)) \Longrightarrow \ P\ Y & \ & \text{„Die Eigenschaften Y, die aus einer positiven Eigenschaft X modal} \\ \text{ } & \quad & \ & \; \; \text{notwendig folgen, sind auch positive Eigenschaften“} \\ \text{(Axiom 3)} & \quad P\ G \ & \ & \text{„Göttlichkeit, GOTT-Sein, ist eine pos. Eigenschaft“ ↔ „GOTT ist perfekt“} \\ \text{[RK]} &\quad \Box\; \forall x A \;\Longrightarrow\;\Box\; \forall x B\; \text{ ├ }\;\Box \; \forall x (A \Longrightarrow\; B)\ & \ & \; \text{( :: Modales Prinzip KRIPKE-Γ-Ɐx)} \\ \text{(Theorem 1)} &\quad P\ X \;\Longrightarrow\; \Diamond \; \exists x \ X \ x \ & \ & \text{ (◇ :: „möglich“ ↔ „konsistent“ ↔ „denkbar“; □ :: „notwendig“) } \\ \text{ } & \text{„Positive Eigenschaften sind konsistent“} & \ & \Longleftarrow\; \text{was zu beweisen ist !} \\ \text{01} & \quad P\ X \ & \ & \text{ AE: „Angenommen, es gibt positive Eigenschaften, Perfektionen“} \\ \text{02} & \quad P\ X \;\Rightarrow\; \neg \Diamond \; \exists x \ X \ x \ & \ & \text{ AE: „Angenommen, positive Eigenschaften sind nicht konsistent“} \\ \text{03} & \quad (\neg x = .. )\ & \ & \text{ AE: „Es gibt die Eigenschaft, nicht mit x identisch zu sein“ :: (ungleich)} \\ \text{04} & \quad (\ x = .. )\ & \ & \text{ AE: „Es gibt die Eigenschaft, mit x identisch zu sein“ :: (gleich)} \\ \text{05} & \quad \text{ ├ }\; \neg \Diamond \; \exists x \ X \ x \ & \ & \text{:01:02:[Modus ponendo ponens] :: [A, A → B├ B] :AE:} \\ \text{06} & \quad \neg\neg \Box \neg \exists x \ X \ x \ & \ & \text{:05:[ ◇A ↔ ¬□¬A] :: (Modalregel)} \\ \text{07} & \quad \neg\neg \Box \neg\neg \forall x \neg X \ x \ & \ & \text{:06:[∃xA ↔ ¬Ɐx¬A] :: (Quantoren Regel)} \\ \text{08} & \quad \text{ ├ }\; \Box \; \forall x \neg X \ x \ & \ & \text{:07:NEG :: [¬¬A↔A] :: (Gesetz der Aussagenlogik)} \\ \text{09} & \quad \Box \; \forall x \neg X \ x \Leftrightarrow\ W & \ & \text{:02:08:[(:02:↔W) → (├:08:↔W)] :: (Kalkülregel)} \\ \text{10} & \quad \Box \; \forall x \ X \ x \Leftrightarrow\ F & \ & \text{:09:[(¬A↔W)↔(A↔F)] :: (Regel für Wahrheitswerte)} \\ \text{11} & \quad \Box \; \forall x (\neg x = x ) \Leftrightarrow \ F \; \ & \text{ } & \text{□ⱯxXx:03:Instanz(X:=(¬x=..)) ⇒ Kontradiktion !} \\ \text{12} & \quad \Box \; \forall x (\ X \ x \Rightarrow\; (\neg x = x)) & \text{ } & \text{:10:11:[(:10:↔F) → (:11:↔F)] :: „ex falso sequitur quotlibet“ :[RK]} \\ \text{13} & \quad \ P\ X \wedge \;\Box \; \forall x (\ X \ x \Rightarrow\; (\neg x = x)) & \ & \text{:01:12:[Konjunktion] :: [A, B ├ A∧B]} \\ \text{14} & \quad \ (P\ X \wedge \;\Box \; \forall x (\ X \ x \Rightarrow \; (\neg x = x))) \Rightarrow \; P (\neg x = .. ) & \ & \text{(A2):Instanz(Y:=( ¬x= ..)) :: (Substitution für Eigenschaften)} \\ \text{15} & \quad \ P (\neg x = .. ) & \ & \text{:13:14:[Modus ponens] :: (logische Schlussregel)} \\ \text{16} & \quad \ P (\neg x = .. )\;\Rightarrow\ \neg P (\ x = .. )\ & \ & \text{(A1.1):Instanz(X:=(x=..))}\\ \text{17} & \quad \neg P (\ x = .. )\ & \ & \text{:15:16:[Modus ponens]}\\ \text{18} & \quad \Box \; \forall x \ (x = x ) \Leftrightarrow \ W \; \ & \ & \text{□ⱯxXx:04:Instanz(X:=(x=..)) ⇒ Tautologie !} \\ \text{19} & \quad \Box \; \forall x (\ X \ x \Rightarrow\; (x = x)) & \text{ } & \text{:10:18:[(:10:↔F) → (:18:↔W)] :: „ex falso sequitur etiam verum“ :[RK]} \\ \text{20} & \quad \ P\ X \wedge \;\Box \; \forall x (\ X \ x \Rightarrow\; (x = x)) & \ & \text{:01:19:[Konjunktion] } \\ \text{21} & \quad \ (P\ X \wedge \;\Box \; \forall x (\ X \ x \Rightarrow\; (x = x))) \Rightarrow \ P (x = .. ) & \ & \text{(A2):Instanz(Y:=(x=..))} \\ \text{22} & \quad \ P (\ x = .. )\ & \ & \text{:20:21:[Modus ponens]}\\ \text{23} & \quad \text{ ├ }\; (\neg P (\ x = .. )\ \wedge \ P (\ x = .. )) \Leftrightarrow\ F & \ & \text{:17:22:[Konjunktion] ⇒ Kontradiktion !}\\ \text{24} & \quad \neg \Diamond \; \exists x \ X \ x \Rightarrow (\neg P (\ x = .. )\ \wedge \ P (\ x = .. )) & \ & \text{:05:23:[├A├B╞ A→B] :: ''KONDITIONALER BEWEIS''}\\ \text{25} & \quad \neg\neg \Diamond \; \exists x \ X \ x & \ & \text{:24:23:[Modus tollendo tollens] :: [A→B,¬B ├ ¬A]}\\ \text{26} & \quad \text{ ├ }\; \Diamond \; \exists x \ X \ x & \ & \text{:25:NEG; bzw. :05:23:[├¬A→F ╞ A] :: ''INDIREKTER BEWEIS''}\\ \text{27} & \quad \ P\ X \;\Longrightarrow\; \Diamond \; \exists x \ X \ x \ & \ & \text{:01:26:[├A├B ╞ A→B]} \\ \text{(Theorem 1)} & \;\text{„Positive Eigenschaften sind konsistent“} & \ & \Longleftarrow\; \text{was zu beweisen war !} \\ \text{28} & \quad \ P\ G \;\Longrightarrow\; \Diamond \; \exists x \ G \ x \ & \ & \text{:27:Instanz(X:=G) } \\ \text{29} & \quad \Diamond \; \exists x \ G \ x \ & \ & \text{(A3):28:[Modus ponens]} \\ \text{(Korollar 1)} & \;\text{„Das Dasein GOTTES ist definitiv denkbar“} & \ & \text{„Es ist widerspruchsfrei möglich, dass es GOTT gibt“} \\ \end{align}</math> </small> |} Anmerkung-1 ''':''' <span style="color:#00B000">(Der GÖDEL-Term <span style="color:#4C58FF">— ‚'''PX'''‘ —</span>, im Axiom-2 ist an sich überflüssig, da dieser hier als Prämisse :01: ohnehin ,angenommen‘ wird. Der Beweisgang kommt mit Axiom-2 auch ohne diesen GÖDEL-Term zum selben Ergebnis, und verkürzt sich damit sogar um zwei Schritte ''':''' Zeile 13 und Zeile 20 sind dann unnötig.)</span> Der Beweisgang geht mit Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, als Kalkül-Ressource, prinzipiell von der Existenz eines GOTTES aus. Mit der Prämisse :01: <span style="color:#00B000">(hier im 1. Beweisgang)</span> postuliert GÖDEL vorerst allgemein, dass es <span style="color:#FF6000">»''Vollkommenheit, d.h. positive Eigenschaften''«</span> in unserer Welt gibt ''':''' <span style="color:#4C58FF">— ‚'''PX'''‘ —</span>, ohne im Kalkül zu definieren, was darunter zu verstehen ist. Definiert wird dann <span style="color:#00B000">(im 2. Beweisgang)</span>, was eine <span style="color:#FF6000">»''wesentliche Eigenschaft''«</span> ist ''':''' <span style="color:#4C58FF">— ‚'''X'''<sub>ess</sub>‘ —</span>, <span style="color:#00B000">(im Sinne von ,Transzendentalia‘)</span>; und mit Hilfe dieser Eigenschaft definiert GÖDEL <span style="color:#00B000">(im 3. Beweisgang)</span>, was eine <span style="color:#FF6000">»''notwendige Existenz''«</span> ist ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>‘ —</span>, die er <span style="color:#00B000">(im selben Beweisgang)</span> axiomatisch mit den <span style="color:#FF6000">»''positiven Eigenschaften in GOTT''«</span> gleich setzt ''':''' Axiom-5 ''':''' <span style="color:#4C58FF"> —‚'''PE'''<sub>not</sub>‘ —</span>. Erst im 2. Beweisgang wird mit Term :13:, nach einer <span style="font-family: Times;"><big>,Reductio ad absurdum‘</big></span>, definitiv bewiesen <span style="color:#00B000">( ╞ )</span>, dass die, von GÖDEL, hier postulierten, <span style="color:#00B000">(allgemeinen)</span>, positiven Eigenschaften, <span style="color:#4C58FF">— ‚'''PX'''‘ —</span>, tatsächlich auch in GOTT <span style="color:#FF6000">»''positive Eigenschaften''«</span>, <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, sind; <span style="color:#00B000">(das sind die ultimativen ,Transzendentalia‘ in GOTT)</span>. Jetzt aber muss vorerst der ,Wunsch‘, bzw. die LEIBNIZ-Frage beantwortet werden ''':''' Ob, mit <span style="color:#FF6000">»''mathematischer Evidenz''«</span>, <span style="color:#FF6000">»''GOTT''«</span> ,möglich‘ ist, der, nach traditioneller Auffassung, <span style="color:#FF6000">»''ein Wesen von äußerster Größe und Vollkommenheit'' <span style="color:#00B000">[ ist ]</span>, ''das alle Grade derselben in sich schließt''«</span>, <span style="color:#00B000">(nach LEIBNIZ; was GÖDEL mit Definition-1 ,abbildet‘)</span>. Wenn man also beweisen will, dass die Existenz eines solchen ''<span style="color:#FF6000">»GOTTES«</span>'' ,möglich‘ sein soll, dann muss man beweisen, dass dieses postulierte System der <span style="color:#FF6000">»''positiven Eigenschaften in GOTT''«</span> möglich und formal ,widerspruchsfrei‘ ist. Das Ergebnis des 1. Beweisganges, das ,Theorem-1‘, <span style="color:#00B000">(,Erster Satz‘)</span>, fasst A. FUHRMANN zusammen als ''':''' <span style="color:#FF6000">»''Positive Eigenschaften sind konsistent''«</span>. Wenn sie nicht konsistent wären, käme es zu unlösbaren Widersprüchen, <span style="color:#00B000">(Term :24:)</span>. Term :27: ,besagt‘ ''':''' <span style="color:#FF6000">»''Es ist definitiv, d.h. ohne Widerspruch möglich, dass es positive Eigenschaften gibt''«</span>; denn die Behauptung, es sei nicht möglich, dass es positive Eigenschaften, <span style="color:#00B000">(das sind die ,Transzendentalia‘)</span>, in unserer Welt gibt, führt zu einem Widerspruch, und ist daher falsch und ,unlogisch’. Einmal Axiom-1 und zweimal Axiom-2, <span style="color:#00B000">(das die Gleichwertigkeit aller positiven Eigenschaften nachdrücklich klarstellt)</span>, sichern hier die Konsistenz <span style="color:#FF6000">»''aller positiven Eigenschaften in der Welt'', <span style="color:#00B000">[ die ,Transzendentalien‘ ]</span>, ''und damit auch die, die in GOTT sind''«</span>. <span style="color:#00B000">(Der 2. Beweisgang bestätigt, dass es in GOTT tatsächlich positive Eigenschaften gibt.)</span> Die ,Gleichwertigkeit‘ aller Transzendentalia, <span style="color:#00B000">(ihre ,Äquivalenz‘)</span>, ist formal-syntaktisch daran erkennbar, dass die beiden Eigenschafts-Variablen <span style="color:#4C58FF">— ‚'''X'''‘ —</span> und <span style="color:#4C58FF">— ‚'''Y'''‘ —</span> im Axiom-2 für beliebige, unterschiedliche ,positive‘ Eigenschaften gegenseitig austauschbar, <span style="color:#00B000">(,konvertierbar‘)</span>, sind. Das heißt, dass beliebige, unterschiedliche ,positive‘ Eigenschaften, für die diese Variablen stehen, sich paarweise, wechselseitig ,implizieren‘, einschließen, und damit notwendig voneinander abhängen, d.h. koinzident ,eins‘ sind, konvertierbar, und somit gleichwertig sind; entsprechend dem Theorem von den Transzendentalia. Zu Term :29:, dem Korollar zu Theorem-1, notiert GÖDEL am 10. Feb. 1970, <span style="color:#00B000">(übersetzt von Joachim BROMAND)</span> ''':''' <span style="color:#FF6000">»''◇∃xG(x) besagt, dass das System aller positiver Eigenschaften kompatibel ist'',</span> <span style="color:#00B000">[ d.h. miteinander verträglich, weil ohne Widersprüche ].</span> <span style="color:#FF6000">''Dies ist ,wahr‘ auf Grund von Axiom-2,'' <span style="color:#00B000">[ weil alle positiven Eigenschaften, d.h. die Transzendentalien, koinzident gleichwertig und konvertierbar sind ]</span>.«</span> Darum ist es definitiv ,möglich‘, dass es diesen GOTT gibt, der <span style="color:#FF6000">»''alle Grade der Vollkommenheit in sich schließt''«</span> und <span style="color:#FF6000">»''über dem ,Größeres‘ nicht mehr gedacht werden kann''«</span>, und, in weiterer Konsequenz, ist der GOTT-Glaube deshalb ,notwendig‘ widerspruchsfrei und sinnvoll, nach Theorem-3 ''':''' <u>Wenn</u> es ,ohne Widerspruch‘ ''<span style="color:#FF6000">»möglich, bzw. denkbar«</span>'' ist, dass es ''<span style="color:#FF6000">»GOTT«</span>'' gibt, <u>dann</u> folgt daraus ''<span style="color:#FF6000">»notwendig«</span>'' ''':''' es ist auch ,widerspruchsfrei‘, wenn man als Voraussetzung ,annimmt‘, dass es ''<span style="color:#FF6000">»GOTT wirklich, für jede mögliche Welt«</span>'' gibt ''':''' Term :11: im 3. Beweisgang. Der Wenn-Satz ist hier mit Korollar-1 bewiesen; der Dann-Satz wird im 3. Beweisgang bewiesen <span style="color:#00B000">( ╞ )</span>, d.i. die Widerspruchsfreiheit und Sinnhaftigkeit des GOTT-Glaubens. Die ontologische ,Identität‘, d.h. die ,Gleichsetzung‘, bzw. die ,Koinzidenz‘ von Strukturen, die in der Endlichkeit für uns verschieden sind, jedoch in dem unbegrenzt Unendlichen, GOTT, paarweise, perspektivisch in eins zusammenfallen, wie ,Sein‘ und ,Wesen‘, wie ,Ursache‘ und ,Wirkung‘ usw., und auch die Äquivalenz und Austauschbarkeit der Transzendentalien, haben im GÖDEL-Kalkül die logisch-syntaktische Form einer, aus sich, ,modal‘ notwendigen Implikation zwischen zwei verschiedenen, gegenseitig austauschbaren Eigenschafts-Variablen ''':''' <span style="color:#4C58FF">— ‚'''□∀x(Xx→Yx)'''‘ —</span>. Dieses Term-Element stellt formal-syntaktisch die Gleichwertigkeit, <span style="color:#00B000">(Äquivalenz)</span>, bzw. die paarweise Koinzidenz aller positiven Eigenschaften und Zuordnungen in GOTT dar; sowohl hier im Axiom-2, als auch in der Definition-2 über die ,Wesenseigenschaften‘, im 2. Beweisgang, mit jeweils verschiedenen, frei umbenennbaren, Individuum-Variablen. Dieses Term-Element ,gilt‘ allgemein jedoch nur für positive Eigenschaften, alias ,Transzendentalia‘, und wird sofort <span style="color:#FF6000">„modal falsch“</span>, wenn für <span style="color:#4C58FF">— ‚'''X'''‘ —</span>, oder <span style="color:#4C58FF">— ‚'''Y'''‘ —</span>, Eigenschaften eingesetzt werden, die, — von Natur aus —, weder positiv noch negativ sind, wie z. B. ,rot‘ oder ,schwer‘. Die wechselseitige Austauschbarkeit der noch ,unbestimmten‘ Eigenschafts-Variablen, für beliebige positive Eigenschaften, ist formal äquivalent zur freien Umbenennung der noch ,unbestimmten‘ Individuum-Variablen ''':''' <span style="color:#4C58FF">[ FUB(x:=y) ]</span>. Der formale, gegenseitige, allgemeine Austausch der positiven Eigenschafts-Variablen, bzw. die formale Gleichsetzung beliebiger positiver Eigenschaften, kann, auf Grund der Äquivalenz aller Vollkommenheiten, bzw. ,Transzendentalia‘, auch dann noch durchgeführt werden, wenn eine, von zwei Eigenschafts-Variablen, durch eine Definition oder eine Schlussfolgerung ,bestimmt‘ worden ist, und dadurch zu einer positiven Eigenschafts-Konstante, d.h. zu einer ,bestimmten‘, positiven Eigenschaft geworden ist. Das ist z. B. bei einer instanziierenden Substitution der Fall ''':''' <span style="color:#4C58FF">[ Instanz(X:=..) ]</span>. Das ist eine spezifische Eigenheit der GÖDEL-Axiomatik, weil alle relevanten, positiven Eigenschaften und Zuordnungen in GOTT, als <span style="color:#FF6000">„ultimative Transzendentalia“</span>, immer auch miteinander kompatibel sind. Mit dem Term-Element ''':''' <span style="color:#4C58FF">— ‚'''□∀x(Xx→Yx)'''‘ —</span>, wird formal die <span style="color:#FF6000">„Koinzidenz“</span> aller ,Transzententalia‘ in der Welt, und auch der ,Zusammenfall‘ aller Gegensätze in GOTT, abgebildet. Da die Variable <span style="color:#4C58FF">‚'''x'''‘</span> für GOTT steht, <span style="color:#4C58FF">‚'''G'''‘</span>, <span style="color:#00B000">(im Korollar-1)</span>, ist die Eigenschaft ''':''' ''<span style="color:#FF6000">„nicht mit x identisch zu sein“</span>'' ''':''' <span style="color:#4C58FF">(¬x=..)</span>, d.h. das <span style="color:#FF6000">„Ungleichsein“</span>, das <span style="color:#FF6000">„Anderssein“</span> GOTTES, <span style="color:#00B000">(Prämisse :03:)</span>, die entscheidende Voraussetzung und Norm für jeden Diskurs über GOTT ''':''' um der <span style="color:#FF6000">„Unvergleichlichkeit“</span> GOTTES gerecht zu werden, darf GOTT niemals mit etwas aus der ''<span style="color:#FF6000">»zufälligen Struktur der Welt«</span>'' verglichen, d.h. gleich gesetzt werden. Der Term :18: <span style="color:#4C58FF">(x=x) ↔ W</span> erinnert an die Selbstbezeichnung des GOTTES-JHWH in Exodus 3,14 ''':''' <span style="color:#CC66FF">»''Ich bin der ‚Ich-Bin‘''«</span>. <span style="color:#00B000">(In der mystischen Tradition, im ''<span style="font-family: Times;"><big>‚Dialog über die Vorsehung‘</big></span>'', dem Hauptwerk der Heiligen KATHARINA von Siena, Mystikerin und Lehrerin der Kirche, sagt GOTT-VATER zur KATHARINA ''':''' <span style="color:#FF6000">»''ICH BIN der IST'', <span style="color:#00B000">[ aus mir selbst ]</span>, ''du bist, die nicht ist'', <span style="color:#00B000">[ aus dir selbst ]</span>.«</span> Das ist eine wichtige, deutende Ergänzung, und die authentische <span style="color:#4C58FF">,theologische‘</span> Interpretation dieser Exodus Text-Stelle. Das ist der Grund für die <span style="color:#FF6000">„Unvergleichlichkeit“</span> GOTTES.)</span> Zum Term :03: notiert A. FUHRMANN ''':''' <span style="color:#FF6000">»</span> ''Die Notation'' <span style="color:#4C58FF">(¬x=..)</span> ''für die Eigenschaft ''':''' <span style="color:#FF6000">„nicht mit x identisch zu sein“</span>'', <span style="color:#00B000">[ d.h. <span style="color:#FF6000">„Ungleichheit“, „Anderssein“</span>, bzw. die Notation <span style="color:#4C58FF">(x=..)</span> für den Existenzmodus-Perfektion ''':''' <span style="color:#FF6000">„Gleichheit“, „Idendität“</span> ]</span>, ''ist suggestiv und informell und ersetzt hier einen formal korrekten Abstraktionsausdruck wie'' <span style="color:#4C58FF">λy.(¬x=y)</span>, <span style="color:#00B000">[ bzw. <span style="color:#4C58FF">λy.(x=y)</span> ]</span>. ''Für die formal korrektere Notation bedarf es der zusätzlichen Vereinbarung, dass der Ausdruck'' <span style="color:#4C58FF">λy.(¬x=y)</span> ''gleichbedeutend sei mit dem Ausdruck'' <span style="color:#4C58FF">¬λy.(x=y)</span>. ''Diese Vereinbarung ist harmlos, da wir aufgrund der Regel der λ–Konversion'' ''':''' <span style="color:#4C58FF">λy.Xy.x ↔ Xx</span>, <span style="color:#00B000">[ mit der <span style="color:#4C58FF">Instanz(X:=(¬x=..))</span> ]</span>, ''so schließen dürfen'' ''':''' <span style="color:#4C58FF">λy.(¬x=y).x ↔ ¬x=x ↔ <span style="color:#00B000">¬(x=x)</span> ↔ ¬λy.(x=y).x</span> .<span style="color:#FF6000">«</span> <ref>A. FUHRMANN a.a.O. Seite 7, Anmerkung 4 (von mir korrigiert und ergänzt)</ref> In der Kalkül-Zeile 29 wird das Möglichkeits-Korollar-1 durch einen <span style="color:#4C58FF">[ Modus ponens ]</span> mit Axiom-3 von der Kalkül-Prämisse-Term :01: ,abgekoppelt‘, d.h. es ist nicht mehr vom Term :01: <span style="color:#4C58FF">— ‚'''PX'''‘ —</span> logisch abhängig. Das Möglichkeits-Korollar-1 behält jedoch die bewiesene Widerspruchsfreiheit von Theorem-1, und ist damit nur mehr von Axiom-1 und Axiom-2 abhängig, was für das Theorem-ANSELMS am Schluss entscheidend ist. Erklärung zu Term :05: Das Ergebnis einer Logik-Operation zwischen Prämissen ist ,regulär‘ <span style="color:#00B000">(├ )</span> den Prämissen zuzurechnen. Das Modale-Prinzip KRIPKE-Γ-Ɐx, <span style="color:#4C58FF">['''RK''']</span>, in Worten ''':''' <span style="color:#FF6000">»''Wenn mit ,modaler‘ Notwendigkeit'' <span style="color:#00B000">( □ )</span>, ''für alle'' <span style="color:#4C58FF">‚'''x'''‘</span> ''die Aussage'' <span style="color:#4C58FF">‚'''A'''‘</span> ''gilt, und daraus logisch folgt, dass mit ,modaler‘ Notwendigkeit'' <span style="color:#00B000">( □ )</span>, ''für alle'' <span style="color:#4C58FF">‚'''x'''‘</span> ''auch die Aussage'' <span style="color:#4C58FF">‚'''B'''‘</span> ''gilt, dann ist in einem Kalkül regulär'' <span style="color:#00B000">( ├ )</span> ''ableitbar'' ''':''' ''es ist wahr, dass mit ,modaler‘ Notwendigkeit'' <span style="color:#00B000">( □ )</span>, ''für alle'' <span style="color:#4C58FF">‚'''x'''‘</span> ''aus der Aussage'' <span style="color:#4C58FF">‚'''A'''‘</span> ''die Aussage'' <span style="color:#4C58FF">‚'''B'''‘</span> ''logisch folgt''«</span>. Der Term <span style="color:#4C58FF">— ‚'''□∀xXx'''‘ —</span> steht formal-syndaktisch, allgemein für ,Transzendentalia‘, und ist für alle ,Nicht-Transzendentalia‘ <span style="color:#FF6000">„modal falsch“</span>. ====<div class="center"><span style="color:#660066">2. Beweisgang</span></div>==== {|class="wikitable" |- ! <div class="center"><span style="color:#660066">GÖDELS ontologischer Beweis für Theorem 2, (,Basisbeweis‘)</span></div> |- ! <span style="color:#00B000">''Terme der erweiterten Prädikatenlogik zweiter Stufe____________„Benennungen“ und durchgeführte Logik-Operationen''</span> |- | <small> <math>\begin{align} \text{(Axiom 1.2)} & \quad \neg P\ X \;\Longrightarrow\;\ P\neg X\ & \ & \text{„Wenn X nicht positiv ist, dann ist die Negation ¬X positiv“} \\ \text{(Axiom 3)} & \quad \ P\ G \ & \ & \text{„Göttlichkeit, GOTT-Sein, ist eine pos. Eigenschaft“ ↔ „GOTT ist perfekt“} \\ \text{(Axiom 4)} & \quad \ P\ X \;\Longrightarrow\; \Box \; \ P\ X \ & \ & \text{„Positive Eigenschaften sind notwendig aus sich positiv“} \\ \text{(Definition 1)} &\quad \ G\ x \;\Longleftrightarrow\; \forall X(\ P \ X \Longrightarrow \ X \ x)\ & \ & \text{„x ist genau dann GOTT, wenn x alle positiven Eigenschaften hat“} \\ \text{(Definition 2)} & \quad \ X_{ess}\ x \;\Leftrightarrow X\ x \wedge \forall Y \left(\ Y\ x \Rightarrow \Box \; \forall y (\ X\ y \Rightarrow \ Y\ y)\right) & \ & \text{„X ist genau dann eine wesentliche Eigenschaft von x, wenn x sie hat, und} \\ \text{ } & \quad & \text { } & \;\;\text{alle anderen Eigenschaften Y von x notwendig aus dieser Eigenschaft X folgen“} \\ \text{[RM]} &\quad \ A \;\Longrightarrow\;\ B\; \text{ ├ }\;\Box \; A \Longrightarrow\;\Box\; \ B\ & \ & \text{( :: Modales Prinzip)} \\ \text{(Theorem 2)} &\quad \ G\ x \;\Longleftrightarrow\; \ G_{ess}\ x \ & \ & \text{(,G‘ :: „Göttlichkeit“ ↔ „GOTT“ ↔ „Dasein GOTTES“)} \\ \text{ } &\;\text{„Das Wesen GOTTES ist sein Dasein“} & \ & \Longleftarrow\; \text{was zu beweisen ist !} \\ \text{01} &\quad \ G\ x \ & \ & \text{ AE: „Angenommen, x steht für den GOTT der Christen“} \\ \text{02} &\quad \ Y\ x \ & \ & \text{ AE: „Angenommen, GOTT hat die Eigenschaften Y“} \\ \text{03} &\quad \neg P\ Y & \ & \text{ AE: „Angenommen, die Y in GOTT sind nicht positiv“} \\ \text{04} &\quad \neg P \ Y \Rightarrow \ P \neg Y\ & \ &\text{(A1.2):Instanz(X:=Y) :: (Substitution für Eigenschaften) } \\ \text{05} &\quad \ P \neg Y \ & \ & \text {:03:04:[Modus ponens] :: [A, A → B├ B] } \\ \text{06} &\quad \forall X(\ P \ X \Rightarrow \ X \ x)\ & \ &\text{(D1):01:[Modus ponens] :: (logische Schlussregel)} \\ \text{07} &\quad \ P \ X \Rightarrow \ X \ x\ & \ &\text{:06:[ⱯXA(X) ├ A(X)] :: (Quantorenregel)} \\ \text{08} &\quad \ P \neg Y \Rightarrow \neg Y \ x\ & \ &\text{:07:Instanz(X:=¬Y)} \\ \text{09} &\quad \neg Y \ x\ & \ &\text{:05:08:[Modus ponens]} \\ \text{10} &\quad \text{ ├ }\; (Y\ x \wedge \neg Y \ x) \;\Leftrightarrow\;\ F\ & \ & \text{:02:09:[Konjunktion] ⇒ Kontradiktion !} \\ \text{11} &\quad \neg P\ Y \; \Rightarrow \; (Y\ x \wedge \neg Y \ x )\ & \ &\text{:03:10:[├A├B ╞ A → B] :: ''KONDITIONALER BEWEIS''} \\ \text{12} &\quad \neg\neg P\ Y \ & \ &\text{:11:10:[Modus tollendo tollens] :: [A → B,¬B├ ¬A]} \\ \text{13} &\quad \text{ ├ }\; P\ Y \ & \ &\text{:12:NEG; bzw. :03:10:[├¬A→F ╞ A] :: ''INDIREKTER BEWEIS'' :AE:} \\ \text{14} &\quad \ P\ Y \;\Rightarrow\;\Box \; \ P\ Y \ & \ & \text{(A4):Instanz(X:=Y)} \\ \text{15} &\quad \Box \; \ P\ Y \ & \ & \text{:13:14:[Modus ponens]} \\ \text{16} &\quad \ G \ y \Rightarrow \ Y \ y\ & \ &\text{:01:02:[├A├B ╞ A→B]:FUB(x:=y)} \\ \text{17} &\quad \text{ ├ }\; \forall y(\ G \ y \Rightarrow \ Y \ y)\ & \ &\text{:16:[G(y) ├ ⱯyG(y)]} \\ \text{18} &\quad \Box \; \ P\ Y \;\Rightarrow\; \Box \; \forall y(\ G \ y \Rightarrow \ Y \ y)\ & \ &\text{:13:17:[├A├B ╞ A→B]:[RM]} \\ \text{19} &\quad \text{ ├ }\; \Box \; \forall y(\ G \ y \Rightarrow \ Y \ y)\ & \ &\text{:15:18:[Modus ponens]} \\ \text{20} &\quad \ Y\ x \;\Rightarrow\; \Box \; \forall y(\ G \ y \Rightarrow \ Y \ y)\ & \ &\text{:02:19:[├A├B ╞ A→B]} \\ \text{21} &\quad \ (Y\ x \;\Rightarrow\; \Box \; \forall y(\ G \ y \Rightarrow \ Y \ y)) \wedge \ G \ x & \ &\text{:20:01:[Konjunktion] :: [A, B├ A ∧ B]} \\ \text{22} &\quad \ (Y\ x \;\Rightarrow\; \Box \; \forall y(\ X \ y \Rightarrow \ Y \ y)) \wedge \ X \ x\;\Leftrightarrow\; X_{ess}\ x \ & \ &\text{(D2):KOMM(↔):KOMM(∧):[ⱯYA(Y) ├ A(Y)] wegen :13:} \\ \text{23} &\quad \ (Y\ x \;\Rightarrow\; \Box \; \forall y(\ G \ y \Rightarrow \ Y \ y)) \wedge \ G \ x\;\Leftrightarrow\; G_{ess}\ x \ & \ &\text{:22:Instanz(X:=G)} \\ \text{24} & \quad \text{ ├ }\; G_{ess}\ x \ & \ &\text{:21:23:[Modus ponens]:AE: wegen :30:} \\ \text{25} &\quad \ G\ x \;\Rightarrow\; \ G_{ess}\ x \ & \ & \text{:01:24:[├A├B ╞ A→B] :: Theorem 2.1} \\ \text{26} &\quad \forall X(\ P \ X \Rightarrow \ X \ x)\ & \ &\text{(D1):01:[Modus ponens] } \\ \text{27} &\quad \ P \ X \Rightarrow \ X \ x\ & \ &\text{:26:[ⱯXA(X) ├ A(X)]} \\ \text{28} &\quad \ P \ G \Rightarrow \ G \ x\ & \ &\text{:27:Instanz(X:=G)} \\ \text{29} &\quad \text{ ├ }\; G \ x\ & \ &\text{(A3):28:[Modus ponens]} \\ \text{30} &\quad \ G_{ess}\ x \;\Rightarrow \ G \ x\ & \ &\text{:24:29:[├A├B ╞ A→B] :: Theorem 2.2 } \\ \text{31} &\quad \ G\ x \;\Longleftrightarrow\; \ G_{ess}\ x \ & \ & \text{:25:30:[Konjunktion]:BIKONDITIONAL :: [(A→B) ∧ (B→A) ↔ (A↔B)] } \\ \text{(Theorem 2)} &\; \text{„Dasein, GOTT-Sein, ist das Wesen GOTTES“} & \ & \Longleftarrow\; \text{was zu beweisen war ! } \\ \text{32} &\quad \text{ ├ }\; \Box \; \forall y(\ G \ y \Rightarrow \ (x = y))\ & \ & \text{:19:Instanz(Y:=(x=..))} \\ \text{33} &\quad \ G\ x \;\Rightarrow\; \Box \; \forall y(\ G \ y \Rightarrow \ (x = y))\ & \ & \text{:01:32:[├A├B ╞ A→B]} \\ \text{(Korollar 2)} & \;\text{„Es gibt notwendig höchstens einen GOTT“} & \ & \text{„Wenn es GOTT gibt, dann gibt es für jede mögliche Welt nur einen GOTT“} \\ \end{align}</math> </small> |} <span style="color:#00B000"><small>(In den Kalkül-Zeilen 16, 18, 31 mussten zwei-, und in Zeile 22 drei Kalkül-Schritte, d.h. Logik-Operationen in eine Zeile zusammengezogen werden, weil der Parser dieser speziellen Mathematik-Funktion in Wikibooks jedes Mal wegen Puffer-Überlauf abstürzt, wenn zu den bestehenden Zeilen noch eine neue Zeile, oder ein Text-Element, zusätzlich eingefügt wird. Das vermindert etwas die Transparenz des Kalküls.)</small></span> Anmerkung-2 ''':''' <span style="color:#00B000">(Dieser Beweisgang kommt auch ohne das ,unbestimmte‘ Konjunkt <span style="color:#4C58FF"> — ‚'''Xx'''‘ —</span> in der Definition-2 zum gleichen Ergebnis, und wird dadurch um eine Zeile verkürzt ''':''' Zeile 21 entfällt, und <span style="color:#4C58FF">[ KOMM(∧) ]</span> ist dann unnötig. Dieses Konjunkt wird hier ebenfalls schon in der Kalkül-Prämisse :01: <span style="color:#4C58FF"> — ‚'''Gx'''‘ —</span>, als ,Annahme‘ gesetzt, vorentschieden und ,bestimmt‘ mit der <span style="color:#4C58FF">[ Instanz(X:=G) ]</span>. Es war also logisch korrekt, dass GÖDEL, in seiner Notiz vom 10. Feb. 1970 zum ontologischen Beweis, dieses Konjunkt weggelassen hat, was ihm von Kommentatoren als ein Flüchtigkeitsfehler angerechnet worden war. Der gesamte 2. Beweisgang bewegt sich im Geltungsbereich der Prämisse Term :01:, d.h. ist in jeder Zeile von der Annahme abhängig ''':''' die Variable <span style="color:#4C58FF"> — ‚'''x'''‘ —</span> steht für den GOTT der Christen. In der Kalkül-Zeile 33 wird mit Korollar-2 diese Abhängigkeit, für den Term :32:, explizit dargestellt.)</span> Der Beweisgang geht mit der Prämisse :01: prinzipiell, als ,modal‘ freigewählte Voraussetzung, von der Existenz eines GOTTES aus. Im 1. Beweisgang wurde bewiesen, dass die von GÖDEL ,postulierten‘ <span style="color:#FF6000">»''allgemeinen positiven Eigenschaften, Vollkommenheiten, Perfektionen'', <span style="color:#00B000">[ die sog. ,Transzendentalien‘ ]</span> ''konsistent''«</span>, d.i. widerspruchsfrei sind. Hier, in diesem Beweisgang wird nun die Prämisse vom 1. Beweisgang, <span style="color:#4C58FF"> — ‚'''PX'''‘ —</span>, im Bezug auf GOTT hinterfragt ''':''' Gibt es auch in GOTT so Etwas, wie <span style="color:#FF6000">»''Vollkommenheit, Positives, Perfektes''«</span> '''?''' Die ,Annahme‘ jedoch, dass es <span style="color:#FF6000">»''in GOTT keine Vollkommenheit, nichts Positives, nichts Perfektes''«</span> <span style="color:#00B000">(keine Transzendentalien)</span> gibt, <span style="color:#00B000">(Prämisse Term :03:)</span>,<span style="color:#4C58FF"> — ‚'''¬PY'''‘ —</span>, d.h. dass die <span style="color:#00B000">(wesentlichen)</span> Eigenschaften in GOTT keine <span style="color:#FF6000">„Vollkommenheiten“</span> seien, führt aber zu einem unlösbaren Widerspruch, <span style="color:#00B000">(Term :10:)</span>. Mit Term :13:, als 1. Hauptergebnis, ist damit, — als ,neue‘ Prämisse, <span style="color:#00B000">(ersetzt Term :03:)</span> —, definitiv ,bewiesen‘ <span style="color:#00B000">( ╞ , d.h. es ist ,wahr‘ und ,widerspruchsfrei‘)</span>, dass alle Eigenschaften, die hier mit <span style="color:#4C58FF">— ‚'''Y'''‘ —</span> symbolisiert werden, <span style="color:#FF6000">„positive Eigenschaften“</span>, d.h. <span style="color:#FF6000">„Perfektionen“</span> sind, von denen das Kalkül ,annimmt‘, <span style="color:#00B000">(Prämissen Term :01:, Term :02: und speziell Term :16:)</span>, dass der GOTT der Christen sie besitzt. Alle ,Wesenseigenschaften‘ in GOTT ''':''' <span style="color:#4C58FF">— ‚'''Y'''<sub>ess</sub>‘ —</span>, die durch den Term :13:, <span style="color:#4C58FF">— ‚'''PY'''‘ —, </span> dargestellt werden, sind somit <span style="color:#FF6000">„Vollkommenheiten“</span> ''':''' <span style="color:#4C58FF">— ‚'''P'''‘ —</span><span style="color:#00B000">, (,ultimative Transzendentalien‘, aller ,Grade‘)</span>. Damit ist definitiv ‚bestätigt‘, <span style="color:#00B000">( ╞ , es ist ,wahr‘ und ,widerspruchsfrei‘)</span>, was mit Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, schon ‚angenommen‘ worden ist ''':''' <span style="color:#FF6000">»''GOTT ist perfekt; er hat alle positiven Eigenschaften''«</span>; und auch Definition-1 ist damit ,verifiziert‘ ''':''' <span style="color:#FF6000">»''GOTT ist genau deswegen GOTT, weil er, als GOTT, positive Eigenschaften aller Grade in sich schließt''«</span>; entsprechend dem Quelltext bei LEIBNIZ ''':''' <span style="color:#FF6000">»''GOTT ist ein Wesen von äußerster Größe und Vollkommenheit, das alle Grade derselben in sich schließt''«</span>. Immer vorausgesetzt, <span style="color:#00B000">(,angenommen‘)</span>, man glaubt an GOTT ''':''' <span style="color:#00B000">(Term :01:)</span>. <span style="color:#00B000">(Der ,Schlüsselbegriff‘ <span style="color:#4C58FF">— ‚'''P'''‘ —</span> ist der ,Schlüssel‘ zur Erkenntnis, dass GOTT ,notwendig‘, sowohl ,wesentlich‘ für uns, als auch an sich ,grundlos‘, immer schon ,da‘ ist.)</span> Hier, <span style="color:#00B000">(im 2. Beweisgang)</span>, hat Axiom-1, <span style="color:#00B000">(im Term :04:)</span>, sicher gestellt, dass die Eigenschaften in GOTT, <span style="color:#00B000">(Definition-1; Term :06:)</span>, tatsächlich <span style="color:#FF6000">„ultimativ positiv, perfekt und vollkommen“</span> sind ''':''' <span style="color:#4C58FF">— ‚'''PY'''‘ —</span>. Das GÖDEL-Axiom-1 bezieht seine ,Potenz‘ aus dem Prinzip vom ,auszuschließenden‘ Widerspruch ''':''' eine Eigenschaft kann nicht zugleich ,positiv‘ und ,nicht positiv‘ sein '''!''' Formal lässt sich das 2. Hauptergebnis, Theorem-2 ''':''' <span style="color:#4C58FF">— ‚'''Gx'''↔'''G'''<sub>ess</sub>'''x'''‘ — </span> ''':''' schon aus Term :23: in diesem Beweisgang mit der <span style="color:#4C58FF">[ Vereinfachung ] :: [ A∧B ├ B ]</span> ohne Weiteres ,regulär‘ ableiten, — analog zu den Vorgehensweisen bei A. FUHRMANN und G.J. WIRSCHING. <span style="color:#00B000">(Beide Aussagen dieser ,Konjunktion‘ sind ,gleichwertig‘ und wahr, daher partizipiert das Theorem-2 auch am Ergebnis der Widerspruchsfreiheit von Term :13:, <span style="color:#4C58FF">— ‚'''PY'''‘ —</span>, dem 1. Hauptergebnis. Beide Aussagen im Term :23: interpretieren sich gegenseitig.)</span> Der hier gewählte, etwas längere Weg zum Ergebnis, soll die innere Struktur und Abhängigkeit der Ergebnisse von bestimmten Voraussetzungen offen legen, und ihren ,Zweck‘ verdeutlichen. Die beiden Hauptergebnisse im Basisbeweis gehen vom vorgefundenen und traditionell vorgegebenen Begriff von ,GOTT‘ aus, <span style="color:#00B000">(Term :06:, Term :16: und Term :26:)</span>. Das ,bewiesene‘ <span style="color:#00B000">( ╞ )</span> 1. Hauptergebnis, hier im 2. Beweisgang, Term :13: <span style="color:#4C58FF">— ‚'''PY'''‘ —</span> ''':''' <span style="color:#FF6000">»''die Eigenschaften in GOTT sind vollkommen, d.h. sind die ultimativen Transzendentalia''«</span>, rechtfertigt, bzw. verifiziert sowohl Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, als auch die Definition-1 ''':''' <span style="color:#4C58FF">— ‚'''Gx↔∀X(PX→Xx)'''‘ —</span>, für die Annahme ''':''' den ,GOTT der Christen‘, der deswegen GOTT ist, weil er alle Grade der Vollkommenheit in sich schließt. Und das ebenfalls ,bewiesene‘ <span style="color:#00B000">( ╞ )</span> 2. Hauptergebnis, hier im selben Beweisgang, Theorem-2 ''':''' <span style="color:#4C58FF">— ‚'''Gx'''↔'''G'''<sub>ess</sub>'''x'''‘ —</span> ''':''' <span style="color:#FF6000">»''das Wesen GOTTES ist sein eigenes Sein''«</span>, rechtfertigt, bzw. verifiziert sowohl Axiom-5 ''':''' <span style="color:#4C58FF"> — ‚'''PE'''<sub>not</sub>‘ —</span>, als auch die Definition-3 ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x ↔ ∀X(X'''<sub>ess</sub>'''x →□∃yXy)'''‘ —</span>, für die Wesenseigenschaft ''':''' ,notwendige Existenz‘, und widerlegt den Einwand KANTS, für den Spezialfall ''':''' <span style="color:#4C58FF">— ‚'''x'''‘ —</span> steht für ,GOTT‘. Zwei Axiome und zwei Definitionen von GOTT und seinen Vollkommenheiten werden durch die Ergebnisse im Basisbeweis des GÖDEL-Kalküls in unserer realen Welt als ,wahr‘, <span style="color:#00B000">(genauer als ,widerspruchsfrei‘)</span>, und, — im Rahmen des christlichen Glaubens —, als ,annehmbar‘ bestätigt. <span style="color:#00B000">(Anmerkung zu Term :24: ''':''' eine Prämisse ist regulär-,modal‘ immer ,frei‘ wählbar.)</span> Zusammengefasst heißt das ''':''' die ,strittige‘ Begründung der ,methodologischen‘ Prämisse des GÖDEL-Kalküls ''':''' <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span> ''':''' <span style="color:#00B000">(Prämisse, Term :01:)</span>, weil <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span> ''':''' <span style="color:#00B000">(Korollar-1)</span> ''':''' <span style="color:#FF6000">»''Das <span style="color:#4C58FF">‚'''x'''‘</span> steht für den GOTT der Christen, für den es ohne Widerspruch denkbar ist, dass es ihn gibt''«</span>, <span style="color:#00B000">(ANSELMS Prinzip, trotz der ,Warnung‘ KANTS)</span>, ist ,wahr‘ und für uns ,annehmbar, denn es ist auch, auf Grund der Ergebnisse des 2. Beweisganges, in unserer realen Welt ,wahr‘ und ,annehmbar‘, weil schon als ,widerspruchsfrei‘ verifiziert ''':''' <span style="color:#FF6000">»''Der GOTT der Christen'' <span style="color:#00B000">(Term :01:)</span> '',existiert‘ für uns ,notwendig‘''«</span> ''':''' <span style="color:#4C58FF"> — ‚'''Gx→E'''<sub>not</sub>'''x'''‘ —</span>, <span style="color:#00B000">(d.i. das ,regulär‘-mögliche Korollar sowohl im 2. als auch im 3. Beweisgang)</span>, denn dieser GOTT ist aus sich ,vollkommen‘ ''':''' <span style="color:#4C58FF"> — ‚'''PG'''‘ —</span>, und zu seiner ,Vollkommenheit‘ <span style="color:#4C58FF">— ‚'''P'''‘ —</span> gehört auch notwendig sein ,Existieren‘ ''':''' <span style="color:#4C58FF"> — ‚'''PE'''<sub>not</sub>‘ —</span>. <span style="color:#00B000">(Jeder dieser Terme ist im-, und durch den 2. Beweisgang, im Geltungsbereich der Prämisse Term :01:, als ,wahr‘ und ,annehmbar‘ bewiesen, bzw. verifiziert.)</span> Das ist der ,Kern‘ des ontologischen Arguments, und somit ist auch diese ,strittige‘ Begründung der Prämisse des GÖDEL-Kalküls mit den Maßstäben der modernen Logik <span style="color:#FF6000">»''durchaus vereinbar''«</span>, d.h. sie ist logisch ,richtig‘ und, im Kontext des christlichen Glaubens, vernünftig. Die Annahme des Gegenteils zu dieser Prämisse ''':''' <span style="color:#4C58FF">— ‚'''¬◇∃xGx'''‘ —</span> ''':''' <span style="color:#FF6000">»''Es ist undenkbar, dass es diesen GOTT gibt''«</span>, führt jedoch, unabhängig von jeder Glaubensüberzeugung, zu einem Widerspruch — ist unlogisch und daher ,falsch‘, <span style="color:#00B000">(siehe Anhang ''':''' Widerlegung)</span>. Die Behauptung einer ,formalen Unentscheidbarkeit‘ zu den Annahmen über die Existenz GOTTES, ob oder nicht, <span style="color:#00B000">(d.h. ein ,methodologischer‘ Agnostizismus)</span>, ist gegen jede ,Logik‘; und ist auch ,falsch‘, d.h. der Agnostizismus ist einfach nur ein ,logischer Irrtum‘. Denn aus dem, im Kalkül abgeleiteten, Widerspruch aus der einen Annahme, und damit ihrer Unrichtigkeit, folgt notwendig die Richtigkeit der gegenteiligen Annahme. Damit ist eine klare Entscheidung getroffen. Das Modale-Prinzip <span style="color:#4C58FF">['''RM''']</span> in Worten ''':''' <span style="color:#FF6000">»''Wenn es wahr ist, dass aus'' <span style="color:#4C58FF"> — ‚'''A'''‘ —</span> ''ein'' <span style="color:#4C58FF"> — ‚'''B'''‘ —</span> ''logisch folgt, dann ist in einem Kalkül regulär'' <span style="color:#00B000">( ├ )</span> ''ableitbar, dass, wenn'' <span style="color:#4C58FF"> — ‚'''A'''‘ —</span> '',modal‘ notwendig'' <span style="color:#00B000">( □ )</span> ''ist, auch'' <span style="color:#4C58FF"> — ‚'''B'''‘ —</span> '',modal‘ notwendig'' <span style="color:#00B000">( □ )</span> ''ist''«</span>. <span style="color:#00B000">(Das <span style="color:#4C58FF"> — ‚'''A'''‘ —</span> in Term :18: ist als ,modal notwendig‘ durch den Term :15: verifiziert '''!''' )</span> Mit dem 2. Hauptergebnis, Theorem-2 ''':''' <span style="color:#FF6000">»'',Dasein‘ ist das ,Wesen‘ GOTTES''«</span>, folgt die GÖDEL-Axiomatik der philosophisch-<span style="color:#4C58FF">,theologischen‘</span> Tradition der ,Rede von GOTT‘ seit ARISTOTELES, und schließt sich damit formal-syntaktisch zugleich auch der religiösen Überzeugung der Christen an, die glauben, dass GOTT, als unser Vater, aus Liebe, in seinem Sohn, JESUS CHRISTUS, für uns immer schon <span style="color:#FF6000">»''da''«</span> ist, <span style="color:#00B000">(der Sohn ist koinzident ,eins‘ mit GOTT, dem Vater und dem GEIST)</span>, wirksam in und durch seine <span style="color:#4C58F0">„Kirche“</span>, im HEILIGEN GEIST, bis ans Ende der Zeit. Das ist das, <span style="color:#FF6000">»''was''«</span> GOTT eigentlich für uns ausmacht, — die Selbstmitteilung seines unergründlichen Wesens in den Sakramenten der <span style="color:#4C58F0">„Kirche“</span> ''':''' <span style="font-family: Times;"><big>‘אֶֽהְיֶ֖ה אֲשֶׁ֣ר אֶֽהְיֶ֑ה‚</big></span> <span style="color:#00B000">| ‚eh'jeh asher eh'jeh‘ |</span> <span style="color:#CC66FF">»''Ich bin da für euch und für immer, als der ich ''<span style="color:#00B000">[ immer schon gewesen ]</span> ''bin''«</span>; <span style="color:#00B000">(d.i. das <span style="color:#4C58FF">,theologisch‘</span>-exegetische ,Axiom‘ der Christen, und eine <span style="color:#4C58FF">,theologisch‘</span> korrekte Explikation der ,regulären‘ Kalkül-Prämisse Term :01: <span style="color:#4C58FF"> — ‚'''Gx'''‘ —</span>, jeweils im 2. und 3. Beweisgang)</span>. Das heißt aber nicht, dass der Autor des Kalküls sich mit diesem Glauben identifiziert hat, <span style="color:#00B000">(,hat‘ er auch nicht)</span>, oder dass der Leser des ontologischen Beweises von Kurt GÖDEL sich damit identifizieren muss, wenn er dessen <span style="color:#FF6000">»''mathematische Evidenz''«</span> anerkennt. Zur erweiterten <span style="color:#4C58FF">„theologischen“</span> Explikation der Kalkül-Prämisse ''':''' Die <span style="color:#4C58F0">„Kirche“</span> ist das ,Meisterwerk‘ GOTTES ''':''' In ihr ist es GOTT gelungen, etwas Göttliches und Unzerstörbares in unsere korrupte Welt einzupflanzen ''':''' <span style="color:#4C58FF"> — ‚'''Gx→E'''<sub>not</sub>'''x'''‘ —</span> ''':''' <span style="color:#FF6000">»''Etwas Göttliches existiert notwendig, d.h. ,unzerstörbar‘ in unserer Welt''«</span>. Sie ist, durch die Menschwerdung des GOTTES Sohnes, JESUS CHRISTUS, dessen <span style="color:#4C58F0">„Leib“</span> die <span style="color:#4C58F0">„Kirche“</span> ist, untrennbar mit Menschen verbunden, die schon, von allem Anfang an, und jetzt immer noch, durch die Sünde korrumpiert sind. Mit ihr will und wird GOTT unsere Welt und die Menschheit, bis ans Ende der Zeit, von der Sünde und von deren Konsequenz, dem <span style="color:#00B000">(ewigen)</span> Tod <span style="color:#4C58FF">„erlösen“</span>, <span style="color:#00B000">(jedoch nicht ohne die Zustimmung des Menschen)</span>. Mit dieser Explikation wird die Tragweite des ontologischen Arguments ANSELMS, und damit auch die <span style="color:#4C58FF">„theologische“</span> Relevanz der GÖDEL-Axiomatik erkennbar. Immer vorausgesetzt, <span style="color:#00B000">(,angenommen‘)</span>, man glaubt an GOTT, <span style="color:#00B000">(Term :01:)</span>. ====<div class="center"><span style="color:#660066">3. Beweisgang</span></div>==== {|class="wikitable" |- ! <div class="center"><span style="color:#660066">GÖDELS ontologischer Beweis für Theorem 3, (ANSELMS Theorem)</span></div> |- ! <span style="color:#00B000">''Terme der erweiterten Prädikatenlogik zweiter Stufe___________________„Benennungen“ und durchgeführte Logik-Operationen''</span> |- | <small> <math>\begin{align} \text{(Axiom 5)} & \quad P\ E_{not}\; \ & \text { } & \text{„Notwendige Existenz ist eine positive Eigenschaft“} \\ \text{ } & \text{( :: Das ist nur dann wahr, wenn ,Dasein‘ und ,Wesen‘ } & \ & \text{( :: dagegen KANT : ,Existenz‘ ist keine ,Eigenschaft‘,} \\ \text{ } & \;\;\text{in eins zusammenfallen ! ARISTOTELES : Theorem-2)}\ & \ & \;\;\text{,Sein‘ ist für alles, was existiert, kein ,reales Prädikat‘ ! )} \\ \text{(Definition 1)} &\quad \ G\ x \;\Longleftrightarrow\; \forall X(\ P \ X \Longrightarrow \ X \ x)\ & \ & \text{„x ist genau dann GOTT, wenn x alle positiven Eigenschaften hat“} \\ \text{(Definition 3)} & \quad \ E_{not}\ x \;\Longleftrightarrow\;\ \forall X \left(\ X_{ess}\ x \Longrightarrow \Box \; \exists y \ X\ y \right) & \ & \text{„Notwendige Existenz ist genau dann eine Eigenschaft von x, wenn} \\ \text{ } & \quad & \ & \;\;\text{alle wesentl. Eigenschaften von x notwendig instanziiert sind“} \\ \text{(Korollar 1)} & \quad \Diamond \; \exists x \ G \ x \ & \ & \text{„Es ist widespruchsfrei möglich, dass es GOTT gibt“} \\ \text{(Theorem 2)} &\quad \ G\ x \;\Longleftrightarrow\; \ G_{ess}\ x \ & \ &\text{„Dasein, GOTT-Sein, Existenz ist das Wesen, die Essenz GOTTES“} \\ \text{(Korollar 2)} &\quad \ G\ x \;\Longrightarrow\; \Box \; \forall y(\ G \ y \Longrightarrow \ (x = y))\ & \ &\text{„Wenn es GOTT gibt, dann gibt es notwendig nur einen GOTT“} \\ \text{(Theorem 3)} & \quad \Diamond \; \exists x \ G \ x \;\Longrightarrow\; \Box \; \exists x \ G \ x \ & \ & \text{( :: ANSELMS Prinzip)} \\ \text{ } & \text{„Weil es widerspruchsfrei möglich ist, dass es GOTT gibt,} & \ & \Longleftarrow\; \text{was zu beweisen ist !} \\ \text{ } & \;\;\text{ist der Glaube, dass es GOTT wirklich gibt, widerspruchsfrei“} \\ \text{01} & \quad \ G \ x\ & \ & \text{ AE: „Angenommen, x steht für den GOTT der Christen“} \\ \text{02} & \quad \forall X(\ P \ X \Rightarrow \ X \ x)\ & \ & \text{(D1):01:[Modus ponens] :: (logische Schlussregel)} \\ \text{03} & \quad \ P \ X \Rightarrow \ X \ x\ & \ & \text{:02:[ⱯXA(X) ├ A(X)] :: (Quantorenregel)} \\ \text{04} & \quad \ P \ E_{not}\;\Rightarrow \ E_{not}\ x\ & \ & \text{:03:Instanz(X:= Enot) :: (Substitution für Eigenschaften)} \\ \text{05} & \quad \ E_{not}\ x\ & \ & \text{(A5):04:[Modus ponens] :: [A, A → B├ B]} \\ \text{06} & \quad \forall X \left(\ X_{ess}\ x \Rightarrow \Box \; \exists y \ X\ y \right) & \ & \text{(D3):05:[Modus ponens]} \\ \text{07} & \quad \ X_{ess}\ x \Rightarrow \Box \; \exists y \ X\ y & \ & \text{:06:[ⱯXA(X) ├ A(X)]} \\ \text{08} & \quad \ G_{ess}\ x \Rightarrow \Box \; \exists y \ G\ y & \ & \text{:07:Instanz(X:= G)} \\ \text{09} & \quad \ G_{ess}\ x \ & \ & \text{(Th2):01:[Modus ponens]} \\ \text{10} & \quad \text{ ├ }\;\Box \; \exists x \ G\ x & \ & \text{:08:09:[Modus ponens]:FUB(y:=x) :: (Freie-Um-Benennung der Var.)} \\ \text{ } & \text{„Es gibt GOTT wirklich, für jede mögliche Welt“} & \ & \Longleftarrow\; \text{1. Hauptergebnis !} \\ \text{11} & \quad \;\Diamond \exists x \ G \ x \;\Longrightarrow \; \Box \; \exists x \ G\ x & \ & \text{(K1):10:[├A├B ╞ A→B] :: ''KONDITIONALER BEWEIS''} \\ \text{(Theorem 3)} & \;\text{„Weil es widerspruchsfrei möglich ist, dass es GOTT gibt,} & \ & \Longleftarrow\; \text{was zu beweisen war ! 2. Hauptergebnis ! } \\ \text{ } & \;\;\text{ist der Glaube, dass es GOTT wirklich gibt, widerspruchsfrei“} \\ \text{12} & \quad \;\Box \; \forall y(\ G \ y \Longrightarrow \ (x = y))\ & \ &\text{(K2):01:[Modus ponens]} \\ \text{13} & \quad \;\Box \; (\exists x \ G\ x \wedge \; \forall y(\ G \ y \Longrightarrow \ (x = y)))\ & \ & \text{:10:12:[Konjunktion]:DIST(□∧)} \\ \text{(Korollar 3)} & \;\text{„Es gibt notwendig genau nur einen GOTT“} & \ & \text{„Es gibt für jede mögliche Welt nur den GOTT der Christen“} \\ \end{align}</math> </small> |} Anmerkung-3 ''':''' <span style="color:#00B000">(Ein Theorem und zwei Korollare, aus den beiden vorhergehenden Beweisgängen, werden hier, im 3. Beweisgang, zu ,Axiomen‘, die das Theorem-ANSELMS und sein Korollar mit-verifizieren und bestätigen.)</span> Dieser Beweisgang ist das Ziel aller Bemühungen. Hier wird der sog. ,ontologische Gottesbeweis‘ nach ANSELM von Canterbury formal-syntaktisch dargestellt und als logisch nachvollziehbar von GÖDEL bestätigt. Damit hat er aber auch klar gestellt, dass der ontologische Beweis ANSELMS kein Beweis für die ,Existenz‘ des GOTTES der Bibel sein kann, bzw. sein ,will‘ ''':''' Denn mit der Prämisse, <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, <span style="color:#00B000">(Term :01:, wie auch schon im ,Basisbeweis‘, und ausformuliert hier in Term :02:, mit der Definition für GOTT)</span>, wird mit dem traditionellen, abendländischen ,GOTT-Glauben‘, der ,glaubt‘, dass der Gott der Christen tatsächlich existiert, — methodologisch als ,Annahme‘ —, der Beweisgang schon regulär und explizit eröffnet, aus dem sich dann, logisch korrekt, mit Hilfe der GÖDEL-Axiome und Definitionen, das ,Theorem ANSELMS‘ ergibt; <span style="color:#00B000">(hier jedoch, mit Günther J. WIRSCHING, ohne den Umweg bei GÖDEL über den <span style="color:#4C58FF">[ Modus Barbara ] :: [ A → B, B → C ├ A → C ] </span>, mit dem modalen Axiom-BECKER ''':''' <span style="color:#4C58FF">— ‚'''◇□A→□A'''‘ —</span>, als <span style="color:#4C58FF">‚B → C‘</span> im kategorischen Syllogismus, das André FUHRMANN recherchiert hat)</span>. GÖDEL verwendet zur Darstellung des sog. ,ontologischen Gottesbeweises‘ nach ANSELM die Struktur eines modal-logischen Kalküls. Ein modal-logisches Kalkül ist ein genau geregeltes Schema, in dem bei bestimmten ,Annahmen‘ <span style="color:#00B000">(Axiome, Definitionen, Prämissen)</span> etwas anderes als das Vorausgesetzte, auf Grund des Vorausgesetzten mit Notwendigkeit folgt. Entsprechend der ,Modalität‘ der sechs ,modal‘ notwendigen, d.h. transzendentalen Voraussetzungen, hier, für den 3. Beweisgang, die in den <span style="color:#00B000">(und durch die)</span> beiden vorhergehenden Beweisgängen schon als <span style="color:#FF6000">„modal wahr“</span>, bzw. als logisch annehmbar, verifiziert und/oder ,bewiesen‘ wurden, sind auch die beiden ,Schlusssätze‘ <span style="color:#00B000">(Theorem-3 und Korollar-3)</span> <span style="color:#FF6000">„modal wahr“</span>, bzw. logisch annehmbar '''!''' Die Wahl der Prämisse :01: dagegen ist nicht ,modal‘ notwendig, sondern beruht auf einer freien Entscheidung, und damit ist auch ihre Interpretation eine freie Entscheidung, mit der Voraussetzung, dass man das Kalkül mit Theoremen aus der <span style="color:#4C58FF">„christlichen Theologie“</span> evaluieren, und damit interpretieren will. Dazu berechtigt die Genese des Kalküls. Der Glaube an den GOTT der Christen ''':''' <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, beruht immer auf einer freien Entscheidung. Das Kalkül, als solches, unabhängig von jeder Interpretation seiner Syntax, ist genau dann ,allgemein‘ <span style="color:#FF6000">»''mathematisch evident''«</span>, d.h. ,ist allgemein gültig‘, wenn es gültigen Logik-Regeln folgt. Die Bestimmung seiner Syntax jedoch, d.h. seine Interpretation, unterliegt hermeneutischen Kriterien, die nicht von Logik-Regeln abhängen, wie hier ''':''' <span style="color:#FF6000">»''(unabhängig von der zufälligen Struktur der Welt). Nur dann sind die Axiome wahr''«</span>, wie GÖDEL selbst hinzufügt. Mit der, — von GÖDEL eingeforderten —, ‚Unabhängigkeit‘ der Kalkül-Axiome von der zufälligen Struktur der Welt, wird implizit für das Kalkül auch festgelegt, dass <span style="color:#FF6000">„GOTT“</span> ‚unabhängig‘ von der zufälligen <span style="color:#00B000">(Raum-Zeit-)</span>Struktur unserer vergänglichen Welt, und daher ,zeitlos-ewig‘ ist, <span style="color:#00B000">(was <span style="color:#4C58FF">„theologisch“</span> korrekt ist)</span>, begründet durch Definition-1 und Axiom-3. Aus der zeitlosen Ewigkeit GOTTES folgt, dass GOTT, <span style="color:#FF6000">„unverursacht“ <span style="color:#00B000">|</span> „grundlos“</span>, für uns immer schon ‚da‘ ist, denn bei Zeitlosigkeit gibt es keinen ,zeitlichen‘ und damit auch keinen ,ontologischen‘ Unterschied zwischen ‚Ursache‘ und ‚Wirkung‘. Beides ist dann koinzident ,eins‘ ''':''' wie ,Wesen‘ und ,Dasein‘ in GOTT, bzw. wie ,Begriff‘ und ,Sein‘, oder ,Möglichkeit‘ und ,Wirklichkeit‘. <span style="color:#00B000">(Man vergleiche damit auch die ,postulierte‘ Einheit von ,Erkenntnisobjekt‘ und ,Erkenntnissubjekt‘ im ,Gott‘ des ARISTOTELES ''':''' im <span style="color:#FF6000">»<span style="color:#00B000">[ selbstbewussten ]</span> ''Erkennen seiner Erkenntnis''<span style="color:#00B000">[-Tätigkeit ]</span>«<span style="color:#00B000"> | </span>„<span style="font-family: Times;"><big>νοήσεως νόησις</big></span>“<span style="color:#00B000"> | </span>„noêseôs noêsis“</span> <small>(‚<span style="font-family: Times;"><big>''Metaphysik''</big></span>‘ XII 9, 1074b34)</small>, im Vollzug seiner Funktion als ,unbewegtes Bewegungsprinzip‘, als <span style="color:#FF6000">„<span style="font-family: Times;"><big>πρῶτον κινοῦν ἀκίνητον</big></span>“<span style="color:#00B000"> | </span>„prôton kinoûn akinêton“</span> der Welt, das alles Übrige <span style="color:#FF6000">»''wie ein Geliebtes''«<span style="color:#00B000"> | <span style="color:#FF6000">„<span style="font-family: Times;"><big>ὡς ἐρώμενον</big></span>“</span> | <span style="color:#FF6000">„hôs erômenon“</span> bewegt; d.h. christlich ''':''' <span style="color:#FF6000">»''aus Liebe''«</span> ,entstehen‘ lässt.)</span> Anmerkung-4 ''':''' Das <span style="color:#00B000">(im 2. Beweisgang)</span> schon bewiesene Theorem-2, d.i. die Koinzidenz von <span style="color:#FF6000">„Sein“</span> und <span style="color:#FF6000">„Wesen“</span> in GOTT, <span style="color:#00B000">(‚Existenz‘</span> und <span style="color:#00B000">‚Essenz‘)</span>, rechtfertigt sowohl Axiom-5 als auch die Definition-3, und widerlegt den Einwand KANTS. Somit ist deren Setzung <span style="color:#00B000">(hier, im 3. Beweisgang)</span> korrekt, und durch das Theorem-2 schon vorbestimmt und bestätigt, d.h. beide sind <span style="color:#FF6000">„modal wahr“</span> und ,logisch‘ annehmbar, da sie durch die Gültigkeit von Theorem-2 ,verifiziert‘ worden sind. Damit wird klar erkennbar, dass das Theorem-2 tatsächlich die Basis des GÖDEL-Kalküls ist. Und wenn damit Axiom-5 im GÖDEL-Kalkül ‚gerechtfertigt‘ ist, dann ist auch, <span style="color:#00B000">(als Voraussetzung dafür)</span>, das Axiom-4 ''':''' <span style="color:#4C58FF">— ‚'''PX → □PX'''‘ — ''':''' </span> <span style="color:#FF6000">»''Positive Eigenschaften'', <span style="color:#00B000">[ ,Transzendentalia‘ ]</span>, ''sind notwendig aus sich'', <span style="color:#00B000">[ von Natur aus ]</span>, ''positiv''«</span>, im 2. Beweisgang erklärbar, in dem die ‚Positivität‘, <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, einer Eigenschaft schon als ‚notwendig‘, <span style="color:#4C58FF">— '''□''' —</span>, charakterisiert worden ist, äquivalent zu Axiom-5 ''':''' <span style="color:#4C58FF"> — ‚'''PE'''<sub>not</sub>‘ —</span>, in dem die ‚Notwendigkeit‘, <span style="color:#4C58FF">— <sub>not</sub> —</span>, <span style="color:#00B000">(der Existenz <span style="color:#4C58FF">— ‚'''E'''‘ —</span>)</span>, dann als ‚positive‘ Eigenschaft, <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, ‚bestimmt‘ wird; <span style="color:#00B000">(unter der speziellen Voraussetzung, dass <span style="color:#FF6000">„Existieren“</span> definitiv als eine <span style="color:#FF6000">„Wesenseigenschaft“</span> in GOTT ,instanziiert‘ ist; vgl. Definition-3. Eine ,bestimmte‘ Eigenschaft ist genau dann ,instanziiert‘, wenn sie an einem Träger real ,existiert‘. Definition-3 ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x ↔ ∀X(X'''<sub>ess</sub>'''x →□∃yXy)'''‘ —</span>, besagt, dass die, von GÖDEL ,postulierte‘, und im Basis-Theorem-2 verifizierte, <span style="color:#FF6000">„notwendige Existenz“</span> zu den ,ultimativen‘ Transzendentalia in GOTT gehört. Genauer ''':''' Sie ist die ,Summe‘ aller Transzendentalia.)</span> Zum Axiom-4, <span style="color:#00B000">(bzw. zum Term :14:, im 2. Beweisgang)</span>, erklärt GÖDEL in seinen Notizen zum Kalkül ''':''' <span style="color:#FF6000">»''da es'' <span style="color:#00B000">[ das Notwendigsein, <span style="color:#4C58FF">— '''□''' —</span> ]</span> ''aus der Natur der'' <span style="color:#00B000">[ positiven ]</span> ''Eigenschaft folgt'', <span style="color:#00B000">[ deren Positivität, im selben Beweisgang, mit Term :13: vorher schon ,bewiesen‘ (╞ ) worden ist ]</span>«</span>. Die GÖDEL-Erklärung zum Axiom-4 entspricht der Modal-Regel zur sog. ,Nezessisierung‘ in der KRIPKE-Logik nach GÖDEL. <span style="color:#4C58FF">[ Nezessisierungsregel ] '''::''' [ ├ A →├ □ A ]</span> ''':''' <span style="color:#FF6000">»''Angenommen'', <span style="color:#4C58FF">‚'''A'''‘</span> ''ist in einem Kalkül eine Prämisse, oder darin regulär'' <span style="color:#4C58FF">(├ )</span> ''abgeleitet, dann folgt in diesem Kalkül regulär'' <span style="color:#4C58FF">(├ )</span>, ''dass dieses'' <span style="color:#4C58FF">‚'''A'''‘</span> ''auch ,modal‘ notwendig'' <span style="color:#4C58FF">— ,□‘ —</span> ''ist''«</span>. GÖDEL hat jedoch diese modale Notwendigkeit nur in der ,Natur‘ der positiven Eigenschaften, alias ,Transzendentalia‘, gesehen, und mit den Aussagen im Axiom-4 expliziert ''':''' <span style="color:#4C58FF">— ‚'''PX → □PX'''‘ —</span> ''':''' <span style="color:#FF6000">»''unabhängig von der zufälligen Struktur der Welt, nur dann sind die Axiome wahr''«</span>. Ob dieselbe modale Notwendigkeit auch auf Aussagen über Eigenschaften, wie ,rot‘ oder ,schwer‘, die weder positiv noch negativ sind, zutrifft, ist nicht erwiesen. Hier kann nur von modaler ,Kontingenz‘ gesprochen werden, die universal, alles Seiende innerhalb der <span style="color:#FF6000">»''zufälligen Struktur der Welt''«</span> betrifft. Somit sind die Aussagen <span style="color:#4C58FF">— ‚'''A'''‘ —</span> in der GÖDEL-Regel, nur auf Aussagen über ,positive‘ Eigenschaften eingeschränkt, und nicht allgemein gültig. Die <span style="color:#4C58FF">[ Nezessisierungsregel ]</span> ist nur für <span style="color:#FF6000">„Transzendentalia“ „modal wahr“</span>, und für ,Nicht-Transzendentalia‘ immer <span style="color:#FF6000">„modal falsch“</span>. Der unbegrenzt Unendliche, GOTT, — im Glauben der Christen —, ist deswegen ,notwendig für uns da‘ ''':''' <span style="color:#4C58FF">— ‚'''Gx→E'''<sub>not</sub>'''x'''‘ —</span>, weil er als GOTT ,vollkommen‘, ,perfekt‘ und absolut ,positiv‘, d.h. absolut ,gut allein‘ ist, ohne jede Negativität ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>; <span style="color:#00B000">(was auch schon im 2. Beweisgang mit Term :13: verifiziert wurde)</span>. Und wenn GOTT ,vollkommen‘, ,perfekt‘, ,positiv‘, und absolut ,gut‘ ist, dann ist er das auch ,notwendig aus sich‘ ''':''' <span style="color:#4C58FF">— ‚'''PG → □PG'''‘ — ::</span> <span style="color:#00B000">(als Zusatz-Korollar im 2. Beweisgang mit Axiom-4 und der <span style="color:#4C58FF">[ Instanz(X:=G) ]</span>)</span>, d.h. ,aus seinem Wesen‘. Das ist gerade das, ,was‘ GOTT als GOTT ausmacht ''':''' sein ,Wesen‘, bzw. seine <span style="color:#FF6000">„Natur“</span>. Zusammen mit der Definition-1 für GOTT, <span style="color:#00B000">(und der Definition-2 ''':''' Alle Wesenseigenschaften hängen notwendig gleichwertig aus sich zusammen)</span>, ist dieses, aus der <span style="color:#FF6000">„Natur“</span> GOTTES sich ergebende, ‚Notwendigsein‘, <span style="color:#4C58FF">— '''□''' —</span>, aller ‚positiven‘ Eigenschaften im Axiom-4, und ihr logischer Zusammenhang, d.i. die Koinzidenz aller ,Vollkommenheiten‘ und ,Zuschreibungen‘ im Unendlichen, GOTT, ihr ,Zusammenfallen in eins‘, die entscheidende Voraussetzung, aus der sich dann für GÖDEL <span style="color:#00B000">(im 2. Beweisgang)</span> auch der logische Zusammenhang, bzw. die ontologische Identität, <span style="color:#00B000">(die Koinzidenz)</span>, von <span style="color:#FF6000">„Dasein“</span> und <span style="color:#FF6000">„Wesen“</span> in GOTT, im Basis-Theorem-2 ''':''' <span style="color:#4C58FF"> — ‚'''Gx↔G'''<sub>ess</sub>'''x'''‘ —</span> mit Notwendigkeit ergibt. Damit hat GÖDEL ein altes <span style="color:#4C58FF">„theologisches“</span> Theorem der Vergessenheit entrissen. Das Theorem-2 ist dann, in weiterer Folge, die ,modal‘ notwendige, d.h. die transzendentale Voraussetzung auch für den Konsequenz-Teil im Theorem ANSELMS, <span style="color:#00B000">(Term :09: hier im 3. Beweisgang)</span>. <span style="color:#FF6000">„Positive Eigenschaften“<span style="color:#00B000"> | </span>„Vollkommenheiten“</span> sind ,immer‘ auch <span style="color:#FF6000">„notwendige Eigenschaften“</span>, daher ''':''' <span style="color:#4C58FF"> — ‚'''PE'''<sub>not</sub>‘ —</span>. Das ,Dasein‘, die <span style="color:#FF6000">„Existenz“</span> ist ,immer‘ etwas <span style="color:#FF6000">„Positives“</span>, speziell in GOTT, dem Schöpfer jeder ,Existenz‘, bzw. allen ,Seins‘. Axiom-4 begründet im GÖDEL-Kalkül das Basis-Theorem-2, <span style="color:#00B000">(wie auch das Korollar-3 von der exklusiven Einzigartigkeit GOTTES)</span>, und ,verankert‘ diese Theoreme damit zugleich in der <span style="color:#4C58FF">,theologisch‘</span>-philosophischen Tradition der ,Rede von GOTT‘ bei ARISTOTELES, — AVICENNA, — ANSELM, — DESCARTES, — LEIBNIZ, — HEGEL, — und bei GÖDEL mit äußerster ,logischer‘ Klarheit. Anmerkung-5 ''':''' Der ‚Schlüsselbegriff‘ in diesem Kalkül ''':''' <span style="color:#FF6000">„positive Eigenschaft“</span>, bzw. <span style="color:#FF6000">„Vollkommenheit“<span style="color:#00B000"> | </span>„Perfektion“</span>, <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, dominiert alle Axiome des GÖDEL-Kalküls, jedoch ohne inhaltlich genauer ‚bestimmt‘ worden zu sein. Für <span style="color:#4C58FF">— ‚'''P'''‘ — </span> gibt es keine explizite Definition '''!''' <span style="color:#00B000">(Das Theorem-1 ''':''' <span style="color:#4C58FF">— ‚'''PX→◇∃xXx'''‘ —</span>, besagt nur, dass die ,postulierten‘, positiven Eigenschaften, die <span style="color:#FF6000">„Transzendentalia“</span>, formal miteinander verträglich, d.h. ‚widerspruchsfrei‘ sind, wegen Axiom-2. Axiom-2 ''':''' <span style="color:#4C58FF">— ‚'''PX ∧ □∀x(Xx→Yx)→PY'''‘ —</span>, besagt, dass positive Eigenschaften ,gleichwertig‘ sind, d.h. gleich ,wahr‘ sind, weil sie ,notwendig‘, <span style="color:#4C58FF">— '''□''' —</span>, aus sich, alle paarweise mit- und voneinander ,impliziert‘ sind, sich gegenseitig ,einschließen‘, und damit eine Einheit bilden, d.h. in GOTT ,eins‘ sind. Axiom-2 ist somit zugleich eine ,indirekte‘ Definition für ,positive‘ Eigenschaften ''':''' <span style="color:#4C58FF">— ‚'''P'''‘ —</span>. Definition-2 ''':''' <span style="color:#4C58FF">— ‚'''X'''<sub>ess</sub>'''x ↔ Xx ∧ ∀Y(Yx→ □∀y(Xy→Yy))'''‘ —</span>, besagt ''':''' Weil die ,gleichwertigen‘, positiven Eigenschaften sich gegenseitig implizieren, und damit notwendig von einander abhängen, d.h. koinzident in GOTT ,eins‘ sind, — wenn <span style="color:#4C58FF">‚'''x'''‘</span> für GOTT steht —, dann sind sie somit auch die ,wesentlichen‘ Eigenschaften, die <span style="color:#FF6000">„ultimativen Transzendentalia“</span>, in GOTT, der, wesentlich und exklusiv, notwendig ,Einer‘ ist. Die Definition-2 ist nur dann <span style="color:#FF6000">„modal wahr“</span>, wenn ihre Eigenschafts-Variablen, <span style="color:#4C58FF">— ‚'''X'''‘ —</span> und <span style="color:#4C58FF">— ‚'''Y'''‘ —</span>, mit positive Eigenschaften, d.h. mit <span style="color:#FF6000">„Transzendentalien“</span>, besetzt werden. Diese Definition ist jedoch sofort <span style="color:#FF6000">„modal falsch“</span>, wenn ihre Variablen mit nicht-positive Eigenschaften, wie ,rot‘ oder ,schwer‘ belegt werden, die nicht ,transzendental‘-allgemein gültig sind. Fußnote zu Definition-2 in der GÖDEL-Notiz ''':''' <span style="color:#FF6000">»''any two essences of x are nec. equivalent''«</span>. Die paarweise, notwendige Äquivalenz von zwei beliebigen Wesenseigenschaften der Individuum-Variable <span style="color:#4C58FF">‚'''x'''‘</span>, wird hier, spezifisch für GOTT, d.h. wenn <span style="color:#4C58FF">‚'''x'''‘</span> für GOTT, dem ,Einen‘, steht, zur <span style="color:#FF6000">„Koinzidenz“</span>, — zum paarweise ,Zusammenfallen aller Gegensätze in Einem‘ —, dem inneren Zusammenhang aller seiner <span style="color:#FF6000">„ultimativen“</span> Vollkommenheiten, d.h. aller <span style="color:#FF6000">„Transzendentalia“</span> und Zuschreibungen, in dem unbegrenzt Unendlichen, GOTT, den schon der Philosoph und Kardinal NIKOLAUS von Cues als <span style="font-family: Times;"><big>,coincidentia oppositorum‘</big></span> verstanden hat.)</span> In den entscheidenden ‚Schlusssätzen‘ des Kalküls ist der ‚Schlüsselbegriff‘ verschwunden. Hier ist nur mehr von GOTT, <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, die Rede ''':''' Korollar-1, <span style="color:#FF6000">»''Es ist definitiv denkbar, dass es GOTT gibt''«</span>, Theorem-2, <span style="color:#FF6000">»''Dasein, GOTT-Sein, Göttlichkeit ist das Wesen GOTTES''«</span>, Theorem-3, <span style="color:#FF6000">»''Weil GOTT definitiv denkbar, d.h. widerspruchsfrei möglich ist, darum ist auch der Glaube an GOTT widerspruchsfrei, logisch richtig und mathematisch evident, der annimmt, dass es GOTT, mit Notwendigkeit, wirklich gibt''«</span>, <span style="color:#00B000">(nach ANSELM von Canterbury, und was spezifisch das <span style="color:#FF6000">»</span>''Privilegium der Gottheit allein''<span style="color:#FF6000">«</span> ist, nach LEIBNIZ)</span>, und Korollar-3, <span style="color:#FF6000">»''Es gibt notwendig aus sich, d.i. unverursacht, nur einen GOTT''«</span>. Das GÖDEL-Kalkül ist zu diesen Erkenntnissen gekommen, ohne die Eigenschaften, bzw. die ‚Vollkommenheiten‘ GOTTES, d.h. wer oder was GOTT ‚an sich‘ selbst ist, genauer bestimmen zu müssen, <span style="color:#00B000">(was ,für uns‘ ohnehin ,unmöglich‘ ist)</span>; außer im Theorem-2, in dem das <span style="color:#FF6000">„Dasein“</span> GOTTES als die ‚für uns‘ bestimmende und wichtigste <span style="color:#FF6000">„Wesenseigenschaft“</span> in GOTT erkannt worden ist, — immer vorausgesetzt <span style="color:#00B000">(,angenommen‘)</span>, man ‚glaubt‘ an den zeitlos-ewigen GOTT ''':''' <span style="color:#00B000">(Term :01:)</span>. Der GOTT des GÖDEL-Kalküls ist nicht mehr der an Raum und Zeit gebundene ‚Gott‘ des ARISTOTELES, sondern der von Raum und Zeit <span style="color:#FF6000">»''unabhängige''«</span> GOTT der Bibel bei ANSELM und bei LEIBNIZ. Das GÖDEL-Kalkül, <span style="color:#00B000">(wie ja auch der sog. ‚ontologische Gottesbeweis‘ ANSELMS)</span>, kann jedoch, — bei aller ‚Coolness‘ —, keinen GOTT-Glauben ‚erzeugen‘, sondern setzt vielmehr die Existenz GOTTES notwendig als gegeben schon voraus. Das Kalkül des Logiker GÖDEL beweist aber, dass der traditionelle ‚GOTT-Glaube‘, <span style="color:#FF6000">»''die theologische Weltanschauung''«</span>, mit den Maßstäben der modernen Logik <span style="color:#FF6000">»''durchaus vereinbar''«</span>, d.h. logisch ,richtig‘ und <span style="color:#FF6000">»''mathematisch evident''«</span> ist, weil der ‚Nicht-GOTT-Glaube‘, <span style="color:#FF6000">»''die atheistische Weltanschauung''«</span>, im Möglichkeitsbeweis notwendig zu unlösbaren Widersprüchen führt, und somit logisch ,falsch‘ ist. <span style="color:#00B000">(Die ,Logik‘ hat aber, — bekanntlich —, bei allen wichtigen, persönlichen Entscheidungen immer nur eine untergeordnete Rolle '''!''' )</span> Anmerkung-6 ''':''' Das erste, ,regulär‘ <span style="color:#00B000">(├ )</span> abgeleitete, Hauptergebnis im 3. Beweisgang, Term :10: <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span> ''':''' der Glaube, dass GOTT ,notwendig‘ existiert, ist die logische Konsequenz aus der Prämisse, Term :1: <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>. Dieses erste Hauptergebnis hat also den überlieferten, traditionellen GOTT-Glauben zur Voraussetzung, und ist daher davon ,abhängig‘, d.h. Term :10: ist der Ausdruck einer ,Glaubensüberzeugung‘. Das zweite Hauptergebnis im 3. Beweisgang, das Theorem ANSELMS ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx→□∃xGx'''‘ —</span>, dagegen, ist die Darstellung der Abhängigkeit des ersten Hauptergebnisses von dem, vorher schon bewiesenen, ,Axiom‘ von der ,möglichen‘ Existenz GOTTES ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span>, dem Möglichkeits-Korollar-1 aus dem 1. Beweisgang. Dem geht folgende Beobachtung voraus ''':''' Der Term ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span>, hat in seiner syntaktischen Stellung hier, im Theorem-3, nicht mehr den überlieferten, traditionellen GOTT-Glauben zur Voraussetzung, und ist damit, in seiner Position als Konsequenz-Teil im Theorem ANSELMS, auch nicht mehr davon syntaktisch abhängig, sondern stützt sich formal-syntaktisch nur auf die behauptete Möglichkeit GOTTES; daher muss diese ,angenommene‘ Möglichkeit noch bewiesen <span style="color:#00B000">( ╞ )</span> werden. Dazu die Feststellung LEIBNIZ‘, der diesen Zusammenhang, und seinen Mangel, erkannt hat ''':''' ::Das Theorem ANSELMS ist <span style="color:#FF6000">» ''ein unvollständiger Beweis, der etwas voraussetzt, was man noch hätte beweisen'' <span style="color:#00B000">( ╞ )</span> ''sollen, um ihm mathematische Evidenz zu verleihen — nämlich, dass man dabei stillschweigend voraussetzt, diese Vorstellung des durchaus großen oder durchaus vollkommenen Wesens sei möglich und enthalte keinen Widerspruch'' «</span>. Diesen <span style="color:#FF6000">»''unvollständigen Beweis''«</span> hat GÖDEL im 1. Beweisgang mit dem ,regulär‘ <span style="color:#00B000">(├ )</span> abgeleiteten, und widerspruchfreien Möglichkeits-Korollar-1, vervollständigt, und damit hat er mit <span style="color:#FF6000">»''mathematischer Evidenz''«</span> bewiesen ''':''' <span style="color:#FF6000">»''Diese Vorstellung des durchaus großen oder durchaus vollkommenen Wesens''«</span> enthält <span style="color:#FF6000">»''keinen Widerspruch''«</span> '''!''' Das Korollar-1 ist nur vom logischen Axiom-1 und von der mathematischen Äquivalenz der Perfektionen, <span style="color:#00B000">(der Transzendentalien)</span>, im Axiom-2 ,abhängig‘, und nicht mehr von der ,methodologischen‘ Kalkül-Prämisse, dem traditionellen GOTT-Glauben. Damit hat das Glaubens-Theorem ANSELMS die gesuchte <span style="color:#FF6000">»''mathematische Evidenz''«</span> erreicht, unabhängig von jeder Glaubensüberzeugung. Entscheidend dafür ist der mathematisch-logische Beweis GÖDELS, dass der Nicht-GOTT-Glaube zu einem Widerspruch führt. Zusammenfassung ''':''' Theorem-1 ''':''' <span style="color:#4C58FF">— ‚'''PX→◇∃xXx'''‘ —</span> ''':''' <span style="color:#FF6000">»''Positive Eigenschaften sind konsistent''«</span>, ist die logische Konsequenz aus der Prämisse im 1. Beweisgang, Term :01: <span style="color:#4C58FF">— ‚'''PX'''‘ —</span>, den, — <u>modal-frei</u> — gewählten, ,angenommenen‘ positiven Eigenschaften, bzw. ,Transzendentalia‘. Theorem-2 ''':''' <span style="color:#4C58FF"> — ‚'''Gx↔G'''<sub>ess</sub>'''x'''‘ — </span> ''':''' <span style="color:#FF6000">»''GOTT-Sein ist das Wesen GOTTES''«</span>, ist die logische Konsequenz aus der Prämisse im 2. Beweisgang, Term :01: <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, dem, — <u>modal-frei</u> — gewählten, ,angenommenen‘ GOTT-Glauben der Christen. Im Unterschied dazu ist im 3. Beweisgang, das Theorem-3 ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx→□∃xGx'''‘ —</span> ''':''' der Glaube, dass es einen GOTT notwendig gibt ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span>, die logische Konsequenz aus dem, — <u>modal-notwendig</u> — als widerspruchsfrei ,bewiesenen‘, Möglichkeits-Korollar-1 ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span>, im 1. Beweisgang, <span style="color:#00B000">(auch im Beweisgang ,Widerlegung‘ im Anhang)</span>, und damit ist das Glaubens-Theorem-3, als ganzes, ,widerspruchsfrei‘. Das Theorem ANSELMS ist, mit Korollar-1, nur vom logischen Axiom-1 der Widerspruchsfreiheit, und der paarweisen, mathematischen Äquivalenz beliebiger positiver Eigenschaften, <span style="color:#00B000">(aller Transzendentalia)</span>, im Axiom-2, abhängig. Damit ist die Bedingung für die geforderte, spezielle <span style="color:#FF6000">»''mathematische Evidenz''«</span>, und auch für die Widerspruchsfreiheit im Glaubens-Theorem ANSELMS erfüllt; unabhängig von jeder Glaubensüberzeugung. Weil es <span style="color:#FF6000">„modal wahr“</span> ist, dass die Transzendentalien, bzw. die Vollkommenheiten ontologisch, — dem Sein nach —‚ alle <span style="color:#00B000">(zueinander)</span> widerspruchsfrei, und alle <span style="color:#00B000">(miteinander)</span> gleichwertig sind, ist es auch <span style="color:#FF6000">„modal wahr“</span>, dass es möglich ist, dass GOTT, — dem Sein nach —‚ da ist, <span style="color:#00B000">(d.h. existiert)</span>, der die unbegrenzte Summe aller ultimativen Transzendentalia, bzw. der unendlichen Vollkommenheiten allen Grades ist, wie es der ,christliche Glaube‘ des Erzbischofs ANSELM und seiner Anvertrauten ,annimmt‘. ====<div class="center"><span style="color:#660066">Widerlegung</span></div>==== {|class="wikitable" |- ! <div class="center"><span style="color:#660066">GÖDEL-Kalkül : der Möglichkeitsbeweis als Widerlegung des Nicht-GOTT-Glaubens</span></div> |- ! <span style="color:#00B000">''Terme der erweiterten Prädikatenlogik zweiter Stufe_____________ „Benennungen“ und durchgeführte Logik-Operationen''</span> |- | <small> <math>\begin{align} \text{(Axiom 1.1)} & \quad P \neg X \;\Longrightarrow\;\ \neg P\ X\ & \ & \text{„Wenn die Negation von X positiv ist, dann ist X nicht positiv“} \\ \text{(Axiom 2)} & \quad \Box \;\forall x (\ X\ x \Longrightarrow \ Y\ x) \Longrightarrow \ P\ Y & \ & \text{„Die Eigenschaft Y in allen x, die aus der Eigenschaft X in allen x} \\ \text{ } & \quad & \ & \; \; \text{mit modaler Notwendigkeit folgt, ist eine positive Eigenschaft“} \\ \text{[RK]} &\quad \Box\; \forall x A \;\Longrightarrow\;\Box\; \forall x B\; \text{ ├ }\;\Box \; \forall x (A \Longrightarrow\; B)\ & \ & \; \; \text{( :: Modales Prinzip KRIPKE-Γ-Ɐx)} \\ \text{(Korollar-1)} &\quad \Diamond \; \exists x \ G \ x \ & \ & \; \; \text{( „das —,x‘— steht für den GOTT, —,G‘—, der Christen“ )} \\ \text{ } & \text{„Es ist möglich, dass es den GOTT der Christen gibt“} & \ & \Longleftarrow\; \text{was zu beweisen ist !} \\ \text{01} & \quad \; \neg \Diamond \; \exists x \ G \ x \ & \ & \text{ AE: „Es ist unmöglich, dass es diesen GOTT gibt“ (dezidierter Atheismus)} \\ \text{02} & \quad (\neg x = .. )\ & \ & \text{ AE: „Es gibt die Eigenschaft, nicht mit x identisch zu sein“ :: (ungleich)} \\ \text{03} & \quad (\ x = .. )\ & \ & \text{ AE: „Es gibt die Eigenschaft, mit x identisch zu sein“ :: (gleich)} \\ \text{04} & \quad \neg\neg \Box \neg \exists x \ G \ x \ & \ & \text{:01:[ ◇A ↔ ¬□¬A ] :: (Modalregel) } \\ \text{05} & \quad \neg\neg \Box \neg\neg \forall x \neg \ G \ x \ & \ & \text{:04:[ ∃xA ↔ ¬Ɐx¬A ] :: (Quantorenregel) } \\ \text{06} & \quad \text{ ├ }\; \Box \; \forall x \neg G \ x \ & \ & \text{:05:NEG :: [ ¬¬A↔A ] :: (Gesetz der Aussagenlogik) } \\ \text{07} & \quad \Box \; \forall x \neg G \ x \Leftrightarrow\ W & \ & \text{:01:06:[ (:01:↔W) → (├:06:↔W) ] :: (Kalkülregel) } \\ \text{08} & \quad \Box \; \forall x \ G \ x \Leftrightarrow\ F & \ & \text{:07:[ (¬A↔W)↔(A↔F) ] :: (Regel für Wahrheitswerte)} \\ \text{ } & \text{„Jeder GOTT-Glaube ist ganz sicher falsch ! “} & \ & \Longleftarrow\; \text{die logische Konsequenz aus der Prämisse :01: !} \\ \text{09} & \quad \Box \; \forall x (\neg x = x ) \Leftrightarrow \ F \; \ & \text{ } & \text{□ⱯxXx:02:Instanz(X:=(¬x=..)) ⇒ Kontradiktion !} \\ \text{10} & \quad \Box \; \forall x (\ G \ x \Rightarrow\; (\neg x = x)) & \text { } & \text{:08:09:[ (:08:↔F) → (:09:↔F) ] :: „ex falso sequitur quotlibet“ :[RK]} \\ \text{11} & \quad \Box \; \forall x (\ G \ x \Rightarrow \; (\neg x = x)) \Rightarrow \; P (\neg x = .. ) & \ & \text{(A2):Instanz(X:=G):Instanz(Y:=(¬x= ..)) } \\ \text{12} & \quad \ P (\neg x = .. ) & \ & \text{:10:11:[ Modus ponens ] :: [ A→B, A ├ B ]} \\ \text{13} & \quad \ P (\neg x = .. )\;\Rightarrow\ \neg P (\ x = .. )\ & \ & \text{(A1.1):Instanz(X:=(x=..))}\\ \text{14} & \quad \neg P (\ x = .. )\ & \ & \text{:12:13:[ Modus ponens ] :: (log. Schlussregel)}\\ \text{15} & \quad \Box \; \forall x \ (x = x ) \Leftrightarrow \ W \; \ & \ & \text{□ⱯxXx:03:Instanz(X:=(x=..)) ⇒ Tautologie !} \\ \text{16} & \quad \Box \; \forall x (\ G \ x \Rightarrow\; (x = x)) & \ & \text{:08:15:[ (:08:↔F) → (:15:↔W) ] :: „ex falso sequitur etiam verum“ :[RK]} \\ \text{17} & \quad \Box \; \forall x (\ G \ x \Rightarrow\; (x = x)) \Rightarrow \ P (x = .. ) & \ & \text{(A2):Instanz(X:=G):Instanz(Y:=( x= ..))} \\ \text{18} & \quad \ P (\ x = .. )\ & \ & \text{:16:17:[ Modus ponens ]}\\ \text{19} & \quad \text{ ├ }\; (\neg P (\ x = .. )\ \wedge \ P (\ x = .. )) \Leftrightarrow\ F & \ & \text{:14:18:[ Konjunktion ] ⇒ Kontradiktion !}\\ \text{20} & \quad \neg \Diamond \; \exists x \ G \ x \Rightarrow (\neg P (\ x = .. )\ \wedge \ P (\ x = .. )) & \ & \text{:01:19:[ ├A├B╞ A→B ] :: ''KONDITIONALER BEWEIS''}\\ \text{ } & {\color{RedOrange}\text{Der Atheismus führt zu einem logischen Widerspruch ! }} & \ & \Longleftarrow\; \text{was mit Term :20: bewiesen ist !} \\ \text{21} & \quad \neg\neg \Diamond \; \exists x \ G \ x & \ & \text{:20:19:[ Modus tollendo tollens ] :: [ A→B,¬B ├ ¬A ]}\\ \text{22} & \quad \; \Diamond \; \exists x \ G \ x & \ & \text{:21:NEG }\\ \text{(Korollar-1)} & \;\text{„Es ist definitiv möglich, dass es diesen GOTT gibt“} & \ & \Longleftarrow\; \text{was zu beweisen war !} \\ \end{align}</math> </small> |} Anmerkung-7 ''':''' <span style="color:#00B000">( Dieser Beweisgang ist praktisch identisch mit dem 1. Beweisgang, jedoch gestrafft und präzisiert nach G.J.WIRSCHING. Diese Widerlegung des Nicht-GOTT-Glaubens beginnt sofort mit dem Korollar-1 <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span> aus dem 1. Beweisgang, als in Frage gestelltes ,Theorem‘, und beweist, ohne das Axiom-3 <span style="color:#4C58FF">— ,'''PG'''‘ —</span>, und ohne die GÖDEL-Prämisse <span style="color:#4C58FF">— ,'''PX'''‘ —</span>, in einem Zwischenergebnis, die innere Widersprüchlichkeit und damit auch die Unhaltbarkeit der atheistischen Glaubens-Annahme, aus rein logischen ,Gründen‘, bzw. Axiomen. )</span> Dieser Beweisgang geht von der Existenz GOTTES, <span style="color:#4C58FF">— ,'''G'''‘ —</span>, als Glaubens-Annahme, aus, wobei aber die Möglichkeit seiner Existenz, und damit die Sinnhaftigkeit des Glaubens an GOTT, durch die Prämisse :01: in Frage gestellt wird, und daher im Kalkül überprüft werden muss. Denn mit der Behauptung der Existenz GOTTES allein ist es nicht getan. Es muss auch seine ,Möglichkeit‘, d.h. die Sinnhaftigkeit des Glaubens an GOTT aufgewiesen werden. LEIBNIZ hat als erster, <span style="color:#00B000">(nach ANSELM)</span>, dieses Problem gesehen, und GÖDEL hat dafür die Lösung gefunden. Dieser Beweisgang, <span style="color:#00B000">(analog zum Möglichkeitsbeweis von Günther J. WIRSCHING konzipiert)</span>, setzt in den Axiomen, genau wie im 1. Beweisgang, die Existenz von etwas <span style="color:#FF6000">„Positiven“, „Perfekten“, „Vollkommenen“</span>, <span style="color:#4C58FF">— ,'''P'''‘ —</span>, <span style="color:#00B000">(d.h. die Transzendentalien)</span>, allgemein für die Welt voraus, <span style="color:#00B000">(was im Axiom-3 ''':''' <span style="color:#4C58FF">— ,'''PG'''‘ —</span>, auch GOTT ultimativ zugeordnet wird ''':''' <span style="color:#FF6000">»''GOTT ist absolut positiv, perfekt und vollkommen''«</span>)</span>; das dann im 2. Beweisgang mit Term :13: als widerspruchsfrei, <span style="color:#00B000">(als ,wahr‘ und ,annehmbar‘ im Kontext des christlichen Glaubens)</span>, schon ,bewiesen‘ <span style="color:#00B000">( ╞ )</span> worden ist. Die Existenz von ,Transzendentalien‘ in der Welt, ist ein, mit Beispielen belegbares, allgemeines Faktum; ihre Existenz auch in GOTT ist mit dem Term :13: des 2. Beweisganges bewiesen, die jedoch im Unendlichen, GOTT, als Transzendentalia, auch in ,ultimativer‘ Form vorliegen. Axiom-1 ,besagt‘, dass Eigenschaften nicht zugleich, vollkommen und nicht vollkommen, sein können. Axiom-2 ,besagt‘, dass, allgemein, alle Vollkommenheiten, <span style="color:#00B000">(alle Transzendentalien)</span>, gleichwertig, <span style="color:#00B000">(mathematisch äquivalent)</span>, sind. <span style="color:#00B000">(Axiom-2 wird hier um das GÖDEL-Konjunkt <span style="color:#4C58FF">— ,'''PX'''‘ —</span> verkürzt dargestellt. Damit ist auch Axiom-3 für diesen Beweisgang unnötig geworden, ohne dass sich wegen dieser Kürzung am Ergebnis etwas ändert. Axiom-2 wird jedoch sofort <span style="color:#FF6000">„modal falsch“</span>, wenn seine Variablen mit nicht-positive Eigenschaften, wie ,rot‘ oder ,schwer‘ belegt werden, die nicht ,transzendental‘-allgemein gültig sind, die keine ,Transzendentalia‘ sind.)</span> Die Eigenschaft <span style="color:#4C58FF">— (¬x=..) —</span> ,besagt‘, dass GOTT <span style="color:#FF6000">„unvergleichlich“</span> ist, wenn <span style="color:#4C58FF">,'''x'''‘</span> für GOTT steht. <span style="color:#00B000">(Der informelle Term, <span style="color:#4C58FF">— (¬x=..) —</span>, ersetzt hier, wie bei A. FUHRMANN, den formal korrekten Abstraktionsausdruck ''':''' <span style="color:#4C58FF">— λy.(¬x=y) —</span>, aus dem Lambda-Kalkül.)</span> Der Term :16: <span style="color:#4C58FF">— (x=x) ↔ W —</span> steht für die Selbstbezeichnung des GOTTES-JHWH in Exodus 3,14 ''':''' <span style="color:#CC66FF">»''Ich bin der ‚IST‘'' <span style="color:#00B000">(aus mir selbst)</span>«</span>, der Grund für die <span style="color:#FF6000">„Unvergleichlichkeit“</span> GOTTES. Der GOTT der abendländischen, christlichen Tradition wird mit <span style="color:#4C58FF">— ,'''G'''‘ —</span> bezeichnet ''':''' d.i. der <span style="color:#FF6000">„GOTT der Christen“</span>, entsprechend der ,methodologischen‘ Prämisse und der ,Genese‘ des Kalküls, syntaktisch formalisiert in der Definition-1 ''':''' <span style="color:#4C58FF">— ‚'''Gx↔∀X(PX→Xx)'''‘ —</span> ''':''' <span style="color:#FF6000">»''Das Individuum'' <span style="color:#4C58FF">,'''x'''‘</span> ''ist genau dann GOTT'', <span style="color:#4C58FF">,'''G'''‘</span>, ''wenn es alle Vollkommenheiten'', <span style="color:#4C58FF">,'''P'''‘</span>, ''in sich schließt''«</span>, nach der Vorgabe von LEIBNIZ ''':''' <span style="color:#FF6000">»''GOTT ist ein Wesen von äußerster Größe und Vollkommenheit, das alle Grade derselben in sich schließt''«</span>. Mit Korollar-1 hat dieser Beweisgang dasselbe Endergebnis, wie der 1. Beweisgang. Der Beweis, dass der dezidierte Atheismus zu einem logischen Widerspruch führt, und damit falsch ist, ist ein Zwischenergebnis in diesem Beweisgang, und begründet mit <span style="color:#FF6000">»''mathematischer Evidenz''«</span>, und unabhängig von jeder Glaubensüberzeugung, den, von LEIBNIZ gesuchten, Möglichkeitsbeweis für die Existenz GOTTES im Argument des Erzbischofs, und bestätigt damit die Sinnhaftigkeit des GOTT-Glaubens. Einmal Axiom-1 und zweimal Axiom-2 sichern hier das Ergebnis des Kalküls ''':''' das Möglichkeits-Korollar-1 ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span>''':''' <span style="color:#FF6000">»''Es ist definitiv möglich, dass es den GOTT der Christen gibt''«</span>. Diese zwei Axiome sind die einzigen, und modal-notwendigen, d.h. die transzendentalen Voraussetzungen und Bedingungen für das Endergebnis ''':''' der Widerspruchsfreiheit und Sinnhaftigkeit des Glaubens der Christen an GOTT; <span style="color:#00B000">(dasselbe gilt natürlich auch für die <span style="color:#4C58FF">„theologische“</span> Weltanschauung jeder monotheïstischen Religion '''!''' Dem Erzbischof ANSELM ging es damals nur um seinen Glauben an GOTT.)</span>. Die Logik-Regel <span style="color:#FF6000"><span style="font-family: Times;"><big>„ex falso sequitur quotlibet, etiam verum“</big></span></span>, <span style="color:#00B000">(‚Aus Falschem folgt irgendetwas, auch Wahres‘)</span>, ist der scholastische Ausdruck für die ‚Implikation‘ <span style="color:#00B000">(Folgerung)</span> von Aussagen, die nur dann falsch, <span style="color:#4C58FF">— F —</span> ist, wenn das Antezedens wahr, <span style="color:#4C58FF">— W —</span>, und die Konsequenz falsch, <span style="color:#4C58FF">— F —</span> ist. Andernfalls ist sie immer wahr, <span style="color:#4C58FF">— W —</span>, auch wenn die Voraussetzung falsch, <span style="color:#4C58FF">— F —</span> ist ''':''' ‚Modern‘ darstellbar durch die ‚Wahrheitswertetafel‘ für die ‚materiale Implikation‘, <span style="color:#4C58FF">— ,(A → B)‘ —</span> <span style="color:#FF6000">„wenn A, dann B“</span>. Damit ist auch der <span style="color:#4C58FF">[ Modus tollendo tollens ] :: [ A → B, ¬B ├ ¬A ] </span> verstehbar; <span style="color:#00B000">(vgl. die vierte Zeile der ‚materialen Implikation‘)</span>. Der positive hypothetische Syllogismus ''':''' <span style="color:#4C58FF">[ Modus ponendo ponens ] :: [ A → B, A ├ B ] </span> ist aus der ersten Zeile ablesbar. Die folgende Tabelle gibt für jeden ,Wahrheitswert‘ der Aussagen <math>A</math> und <math>B</math> das Resultat einiger zweiwertiger Verknüpfungen an ''':''' {|class="wikitable hintergrundfarbe2" style="text-align:center;" |- !colspan="2"|''Belegung''!!Konjunktion!!Disjunktion!!materiale<br /> Implikation!!Äquivalenz<br /> Bikonditional!!kopulative<br /> Konjunktion |- !<math>A</math> !<math>B</math> !<math>A</math> und <math>B</math> !<math>A</math> oder <math>B</math> !wenn <math>A</math> dann <math>B</math> !sowohl <math>A</math> als auch <math>B</math> !entweder <math>A</math> oder <math>B</math> |- !W!!W |W||W||W||W||F |- !W!!F |F||W||F||F||W |- !F!!W |F||W||W||F||W |- !F!!F |F||F||W||W||F |} <span style="color:#00B000">(Eine ‚Konjunktion‘ ist nur dann ,wahr‘, wenn beide Aussagen einer ‚Konjunktion‘ wahr sind. Eine ‚kopulative Konjunktion‘ ist nur dann ,wahr‘, wenn entweder die eine, oder die andere Aussage der ‚kopulativen Konjunktion‘ wahr ist. Es besteht also eine Wenn-Dann-Verbindung zwischen beiden Aussagen — eine ,Kopplung‘. Das ist die logische Grundlage von Axiom-1 im GÖDEL-Formalismus)</span> Um das Widersprüchliche der ,Annahme‘ nachzuweisen, dass positive Eigenschaften ,nicht konsistent‘ seien, <span style="color:#00B000">(im 1. Beweisgang)</span>, bzw. um das Unlogische und Sinnwidrige der ,Annahme‘ klarzustellen, es sei ,unmöglich‘, dass es einen GOTT gibt, <span style="color:#00B000">(hier, in der Widerlegung)</span>, verwendet das GÖDEL-Kalkül den Gegensatz ''':''' wahr, <span style="color:#4C58FF">— W —</span>, falsch, <span style="color:#4C58FF">— F —</span>, zwischen der dritten und vierten Zeile der Wahrheitswertetafel, für zwei ,wahre‘ <span style="color:#4C58FF">— W —</span> ,materiale Implikationen‘, in denen die Voraussetzung jeweils falsch, <span style="color:#4C58FF">— F —</span>, ist, entsprechend der Regel <span style="color:#FF6000"><span style="font-family: Times;"><big>„ex falso, <span style="color:#4C58FF">— F —</span>, sequitur quotlibet, <span style="color:#4C58FF">— F —</span>, etiam verum, <span style="color:#4C58FF">— W —</span>“</big></span></span>, jeweils mit der Hilfe von Axiom-1 und Axiom-2, in einer <span style="font-family: Times;"><big>,Reductio ad absurdum‘</big></span>; hier unabhängig von jeder Glaubensüberzeugung. Im Gegensatz dazu, wird, <span style="color:#00B000">(im 2. Beweisgang)</span>, aus dem Glauben an GOTT, auch mit einer <span style="font-family: Times;"><big>,Reductio ad absurdum‘</big></span>, speziell mit Axiom-1, das Widersprüchliche in der ,Annahme‘ nachgewiesen, es gäbe in GOTT <span style="color:#FF6000">»''keine Vollkommenheit, nichts Positives, nichts Perfektes''«</span>, d.h. keine ,Transzendentalia‘. In dieser <span style="font-family: Times;"><big>,Reductio ad absurdum‘</big></span>, im 2. Beweisgang, wird vorausgesetzt <span style="color:#00B000">(,angenommen‘)</span> ''':''' es gibt den GOTT der Christen, <span style="color:#00B000">(als Prämisse :01:)</span>, der ,unvergleichlich‘ und ,einzigartig‘ ist, und in dem auch alle ,Transzendentalia‘ <span style="color:#FF6000">„koinzident“</span> ,eins‘ sind, entsprechend Axiom-2. Für KANT entsteht ein Widerspruch in den Prädikaten eines Satzes. ::<span style="color:#FF6000">»</span> ''Wenn ich das Prädicat in einem identischen Urtheile aufhebe'', <span style="color:#00B000">[ durch eine Negation ]</span>, ''und behalte das Subject, so entspringt ein Widerspruch''. <span style="color:#00B000">[ Wenn ich sage ''':''' ,''GOTT ist nicht allmächtig''‘, entsteht ein Widerspruch zur richtigen Aussage ''':''' ,''GOTT ist allmächtig''‘. ]</span> … ''Wenn ihr aber sagt ''':''' ,GOTT ist nicht‘, so ist weder die Allmacht, noch irgendein anderes seiner Prädicate gegeben; denn sie sind alle zusammt dem Subjecte aufgehoben'', <span style="color:#00B000">[ negiert ]</span>, ''und es zeigt sich in diesem Gedanken nicht der mindeste Widerspruch.'' <span style="color:#FF6000">«</span><ref>vgl. ‚''<span style="font-family: Times;"><big>Kritik der reinen Vernunft</big></span>''‘, Seite 398f; https://www.korpora.org/kant/aa03/398.html</ref> Es ist richtig, wie KANT sagt, der Widerspruch entsteht nicht in dem Gedanken ''':''' <span style="color:#FF6000">»</span>''GOTT ist nicht''<span style="color:#FF6000">«</span>. GÖDEL zeigt daher, dass der Widerspruch erst dann entsteht, wenn von der Annahme ausgegangen wird ''':''' ''<span style="color:#FF6000">»</span>Es ist unmöglich, dass GOTT ist''<span style="color:#FF6000">«</span>. Daraus folgt dann ,regulär‘, mit Hilfe von Axiom-1 und Axiom-2, <span style="color:#00B000">(d.h. mit den Theoremen von den Transzendentalien)</span>, die logische ,Möglichkeit‘ GOTTES, unabhängig von jeder Glaubensüberzeugung. Wie LEIBNIZ klar erkannt hat, muss zuerst, aus dem Widerspruch des Gegenteils, die logische ,Möglichkeit‘, <span style="color:#00B000">(die Konsistenz)</span>, der Existenz GOTTES bewiesen werden ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span>, bevor daraus die reale ,Notwendigkeit‘ GOTTES abgeleitet werden kann ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span>, dessen Existenz jedoch, aus dem ,Glauben‘, im Voraus, schon angenommen worden ist. Dieser Sachverhalt ist das ausschließliche Spezifikum GOTTES, <span style="color:#00B000">(das <span style="color:#FF6000">»''Privilegium der Gottheit allein''«</span>)</span>, und gilt nur bei GOTT, als dem Unvergleichlichen und Einzigartigen. Dieses ,Spezifikum‘ wird im Theorem ANSELMS abgebildet ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx→□∃xGx'''‘ —</span>, auf Grund von Axiom-2, das den inneren Zusammenhang, die Koinzidenz auch von ,Möglichkeit‘ und ,Notwendigkeit‘ im Unendlichen, GOTT, erkennen lässt. Bis Zeile 10, im 3. Beweisgang, reicht der Geltungsbereich der ,modal‘-frei gewählten Kalkül-Prämisse :01:, der ,methodologische‘ GOTT-Glaube. In Zeile 11 liegt der ,Schwerpunkt‘ des ontologischen Beweises dann aber am, — modal als notwendig — ,bewiesenen‘ Widerspruch des Gegenteils zum GOTT-Glauben, <span style="color:#00B000"> (formal-syntaktisch dargestellt als widerspruchfreies Antezedens, <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span>, dem Möglichkeits-Korollar-1 aus dem 1. Beweisgang)</span>, und nicht mehr am ,angenommenen‘ GOTT-Glauben der Kalkül-Voraussetzung, <span style="color:#00B000">(nun dargestellt als Konsequenz <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span> im Theorem ANSELMS)</span>. Das Möglichkeits-Korollar-1 muss jetzt immer, wie folgt, gelesen werden ''':''' <span style="color:#FF6000">»''Es ist <u>widerspruchfrei</u> möglich, dass GOTT ist''«</span>. Damit hat er, — angeregt durch LEIBNIZ, und mit ihm —, die fast einhellig akzeptierte Fehldeutung des ontologisch-<span style="color:#4C58FF">„theologischen“</span> Arguments ANSELMS für GOTT durch gewichtige philosophische, <span style="color:#00B000">(KANT<ref>GOTT ist absolut einzigartig und unvergleichlich. KANT macht GOTT jedoch zu einem ,Ding‘ unter den vielen ,Dingen‘ dieser Welt, indem er die Existenz, bzw. das ,Sein‘ GOTTES mit dem ,Sein der Dinge‘ gleich setzt. Eine solche Gleichsetzung ist bei GOTT unangebracht und daher unzulässig! KANT verkennt damit die Einzigartigkeit und Besonderheit GOTTES. Das ,Sein‘ der Dinge ist, — wie KANT sagt —, kein ,reales Prädikat’, d.h. Existenz ist keine Eigenschaft. Jedoch in GOTT ist ,Sein‘ ein ,reales Prädikat‘, d.h. Existieren ist ,real‘ die Wesenseigenschaft GOTTES, denn GOTT ist der, der für uns, — aus Liebe —, immer schon ,da‘ ist ''':''' in der ,Hypostatischen Union‘, sowohl als GOTT von Ewigkeit zu Ewigkeit, als auch als Mensch in unserer Zeitlichkeit. Das ist das, was GOTT für uns ausmacht —, sein Wesen.</ref>)</span>, und <span style="color:#4C58FF">„theologische“</span>, <span style="color:#00B000">(THOMAS<ref>GOTT ist absolut einzigartig und unvergleichlich. THOMAS unterscheidet die ,Natur GOTTES‘ nicht von der ,Natur der Dinge‘, indem er die ,Natur‘ des GOTTES ANSELMS irrtümlich mit der ,Natur‘ der Dinge gleich setzt. Damit reiht er GOTT unter die vielen Dinge unserer Welt ein, indem er für den GOTT ANSELMS annimmt ''':''' GOTT ,esse in rerum natura‘, d.h. wörtlich, dass der GOTT ANSELMS in der ,Natur‘ der Dinge existiert, <span style="color:#00B000">(was ANSELM nie gesagt hat)</span>. Eine solche Gleichsetzung ist bei GOTT unangebracht und daher unzulässig! Die ,zeitlose-überzeitliche‘ Wirklichkeit, (Natur), GOTTES ist völlig verschieden und unabhängig von der zufälligen Wirklichkeit, (die ,Natur‘), unserer ,raum-zeitlichen‘ Welt. Daher ist sie mit dieser auch nicht vergleichbar. Thomas verkennt damit die Einzigartigkeit und Besonderheit GOTTES.</ref>)</span>, Autoritäten zurechtgerückt, welche die Einzigartigkeit und Unvergleichlichkeit des Unendlichen, GOTT, bei ihrer Beurteilung des Theorem ANSELMS nicht berücksichtigt, sondern den Unendlichen, <span style="color:#00B000">(irrtümlich)</span>, unter die endlichen Dinge unserer Welt eingereiht haben. GÖDEL hat mit dem bewiesenen Widerspruch des Gegenteils zum GOTT-Glauben, den Beweis für die <span style="color:#FF6000">»''mathematische Evidenz''«</span> des Theorem ANSELMS geliefert, was, nach LEIBNIZ, für die Akzeptanz dieses Theorems noch gefehlt hat. Das Theorem ANSELMS besagt universell ''':''' Die <span style="color:#FF6000">»''theologische Weltanschauung''«</span> der Juden, Christen und Muslime, die ,annehmen‘, dass es mit ,Notwendigkeit‘ <span style="color:#4C58FF">— ‚'''□'''‘ —</span> <span style="color:#00B000">(nur)</span> einen GOTT gibt, ist logisch richtig und <span style="color:#FF6000">»''mathematisch evident''«</span>, weil es <u>ohne Widerspruch</u> ,denkbar‘ <span style="color:#4C58FF">— ‚'''◇'''‘ —</span> ist, dass es GOTT gibt ''':''' Nicht mehr und nicht weniger, <span style="color:#FF6000">»''rein verstandesmäßig, (ohne sich auf den Glauben an irgendeine Religion zu stützen)''«</span>. Es geht hier bei GÖDEL nicht um Theoriefindung oder ähnliches. GÖDEL ist kein ,spekulierender‘ Theoretiker. GÖDEL ist Logiker und Mathematiker. Was er sagt, ist mathematisch wahr und logisch richtig. Wenn er sagt, dass die Aussage ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ — »''wahr''«</span> ist ''':''' <span style="color:#FF6000">»''es ist möglich, dass es Gott gibt'' ''':''' ''das ist ,wahr‘ wegen Axiom-2 (und Axiom-1)''«</span>, dann spricht er hier von der mathematischen Wahrheit. Logischerweise ist dann die konträre Aussage ''':''' <span style="color:#4C58FF">— ‚'''¬◇∃xGx'''‘ — »''falsch''«</span> ''':''' <span style="color:#FF6000">»''es ist nicht möglich, dass es einen Gott gibt''«</span>, und zwar mathematisch falsch, weil sich aus dieser Aussage ein Widerspruch ergibt. Jeder, der die mathematische Logik GÖDELS lesen kann, kann das sehen und verstehen ''':''' Das Zwischenergebnis, <span style="color:#00B000">(Term :20:)</span>, in dieser Kalkül-Ableitung, die logische Konsequenz aus der Annahme des dezidierten Atheismus, es sei unmöglich, dass es GOTT gibt, ist der faktische, nachprüfbare, und für jeden Menschen sichtbare Beweis dafür, dass diese Annahme in einen Widerspruch mündet, und damit falsch und unlogisch ist. Das bedeutet, es ist eine Tatsache, bzw. es ist Faktum, dass der Atheismus, — mit <span style="color:#FF6000">»''mathematischer Evidenz''«</span> —, wirklich falsch und unlogisch ist, und daher, mit Recht, als ,Unsinn‘ bezeichnet werden darf '''!''' Das ist nicht bloß als eine Theoriefindung, oder als eine Interpretation eines Autors zu verstehen. Das ist vielmehr genau so wahr und <span style="color:#FF6000">»''mathematisch evident''«</span>, wie, dass zwei mal zwei vier ergibt, und wirklich genau so logisch richtig, wie, dass die Erde sich um die Sonne dreht. Das ist gerade das Überraschende und Unerwartete am Gödel-Kalkül. Es geht hier nicht mehr um Theoriefindung oder Interpretationen, denen man zustimmen kann oder nicht. Es geht hier <span style="color:#FF6000">»''rein verstandesmäßig''«</span> um mathematisch-logische Fakten. Damit steht GÖDEL, in seiner Bedeutung, in gewisser Weise, neben KOPERNIKUS, weil seine Kalkül-Ergebnisse, wie die Berechnungs-Ergebnisse dieses Pioniers der damaligen Zeitenwende, heute, in unserem Äon, ebenfalls mit eingefleischte Vorurteile aufräumen, ohne aber, dass GÖDEL für sich selbst, im Glauben, logisch konsequent gewesen wäre. <span style="color:#00B000">(Er ist sich der Tragweite und der Konsequenzen seiner <span style="color:#4C58FF">„axiomatischen Theologie“</span> anscheinend nicht bewusst gewesen, wenn er sagt ''':''' Man sei heute noch <span style="color:#FF6000">»''weit davon entfernt, das theologische Weltbild wissenschaftlich begründen zu können''«</span>, nachdem sein Kalkül das <span style="color:#FF6000">„atheistische Weltbild“</span> fundamental ins Wanken gebracht und als irrationalen ,Unsinn‘ entlarvt hat. Sein Kalkül ,beweist‘ ( ╞ ) indirekt, dass das <span style="color:#FF6000">„theologische Weltbild“</span>, im Beweisgang ,Widerlegung‘, aus dem Widerspruch des Gegenteils, mit <span style="color:#FF6000">»''mathematisch-logischer Evidenz''«</span>, offensichtlich doch, wissenschaftlich begründet werden kann)</span>. ---- Kurt GÖDEL ist auch deswegen ein Ausnahmelogiker. ---- ===<div class="center"><span style="color:#660066">Epilog für Skeptiker</span></div>=== Wenn man das GÖDEL-Argument genau liest, dann ist nur die Annahme ''':''' <span style="color:#FF6000"> „es ist möglich, dass es GOTT gibt“</span> bewiesen, weil aus der Annahme ''':''' <span style="color:#FF6000">„es ist unmöglich, dass es GOTT gibt“</span> ein logischer Widerspruch ableitbar ist. Die Aussage ''':''' <span style="color:#FF6000">„es gibt GOTT“</span> ist dagegen schon eine Glaubensaussage, und damit ist das auch die ,Grundannahme‘ eines gläubigen Menschen, der dann aus der ,bewiesenen Möglichkeit‘, dass es Gott gibt, ableiten kann ''':''' <span style="color:#FF6000">»''es gibt GOTT wirklich''«</span>, wenn er will ''':''' <span style="color:#FF6000">»''Es stimmt also, was ich glaube '''!''''' «</span> Das ist das Argument ANSELMS, der ein christlicher Amtsträger war, und der daher von dieser Grundannahme auch ausgeht. Solange in den Voraussetzungen des Möglichkeitsbeweises im GÖDEL-Kalkül kein Widerspruch nachweisbar ist, und solange in der logischen Durchführung dieses Beweises keine schweren Mängel festgestellt werden können, ist das Ergebnis des Möglichkeitsbeweises, wie GÖDEL ihn durchgeführt hat, korrekt, und die Folgerungen daraus, logisch richtig, dass es sich hier um <span style="color:#FF6000">»''mathematische Evidenz''«</span> handelt, <span style="color:#00B000">(z. B. wie 2 x 2 = 4)</span>. Aber niemand ist gezwungen, aus der Möglichkeit, dass es GOTT gibt, daraus zu schließen, dass es GOTT auch mit Notwendigkeit gibt, wie das im Argument ANSELMS geschieht, außer, er akzeptiert auch die Grundannahme, dass es den Unendlichen und Unvergleichlichen tatsächlich gibt. Dann kann er mit LEIBNIZ, der selbst an GOTT geglaubt hat, mit Bestimmtheit sagen ''':''' <span style="color:#FF6000">»''gesetzt, dass GOTT möglich ist, so ist er, was das Privilegium der Gottheit allein ist''«</span>, weil GÖDEL mit seinem Kalkül den noch ausstehenden Beweis der Widerspruchsfreiheit dafür geliefert hat. Wenn Du den 3. Beweisgang des GÖDEL-Kalküls genauer anschaust, dann siehst Du, dass der Konsequenz-Teil im Argument ANSELMS, der identisch ist mit dem Term in der Zeile 10, <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span>, immer noch formallogisch abhängig ist von der methodologischen Glaubens-Prämisse, Term :01:, <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span> ''':''' <span style="color:#FF6000">»''das'' <span style="color:#4C58FF">‚'''x'''‘</span> ''steht für den Gott der Christen''«</span>. Diese Abhängigkeit ist bis zur Zeile 10 offensichtlich und logisch korrekt. <span style="color:#00B000">(Man könnte nach dieser Zeile, ohne Weiteres, ,regulär‘ die <span style="color:#FF6000">„logische Implikation”</span> :: <span style="color:#4C58FF">[├ A ├ B ╞ A→B ]</span> mit Term :01: und Term :10: als ein mögliches Korollar bilden ''':''' <span style="color:#4C58FF">— ‚'''Gx→□∃xGx'''‘ — </span>)</span>. Das bedeutet, der Konsequenz-Teil im Theorem ANSELMS, der in diesem ,regulär‘-möglichen Korollar an zweiter Stelle steht, ist damit in seiner Formal-Struktur offensichtlich ,regulär‘ von der Glaubens-Prämisse, Term :01:, abhängig, d.h. er ist der Ausdruck einer Glaubensüberzeugung. Im Theorem ANSELMS steht er jetzt, in der Zeile 11, als Konsequenz-Teil auch an zweiter Stelle, hat aber nicht mehr seine Glaubens-Prämisse als notwendige Bedingung an erster Stelle vor sich, wie im ,regulär‘-möglichen Korollar. Jetzt steht eine neue und andere Voraussetzung als Begründung vor ihm. Der Schwerpunkt des Argument ANSELMS liegt damit am Begründungs-Teil des ANSELM-Theorems, der jetzt die erste Stelle im Theorem einnimmt ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span> ''':''' <span style="color:#FF6000">»''es ist möglich, dass es GOTT gibt''«</span>, der erst dadurch entstanden ist, und davon abhängig ist, weil sein Gegenteil ''':''' <span style="color:#4C58FF">— ‚'''¬◇∃xGx'''‘ —</span> ''':''' <span style="color:#FF6000">»''es ist unmöglich, dass es GOTT gibt''«</span>, zu einem Widerspruch geführt hat. Dieser Begründungs-Teil, das Antezedens, im Argument ANSELMS, ist daher nicht mehr von der methodologischen Glaubens-Prämisse, Term :01:, abhängig, sondern nur vom Axiom-1, der Widerspruchsfreiheit, und von der paarweisen, mathematischen Äquivalenz beliebiger positiver Eigenschaften im Axiom-2, die im 1. Beweisgang, bzw. im Beweisgang ,Widerlegung‘, mit dem <span style="color:#4C58FF">[ Modus tollendo tollens ] :: [ A → B, ¬B ├ ¬A ]</span>, die Widerspruchsfreiheit der Möglichkeit des GOTT-Glaubens mit Notwendigkeit herbeigeführt haben. Daraus ergibt sich eine logische Verschiebung in der Argumentationskette, denn dieser Begründungs-Teil, der jetzt die Widerspruchsfreiheit für den Konsequenz-Teil liefert, ist selbst unabhängig und frei von jeder Glaubensüberzeugung. Weil widerspruchsfrei und <span style="color:#FF6000">»''mathematisch evident''«</span>, muss er als logische Begründung für die Widerspruchsfreiheit und als Beweis für die <span style="color:#FF6000">»''mathematische Evidenz''«</span> des Konsequenz-Teils gelesen werden, und damit bestätigt er die Widerspruchsfreiheit und Sinnhaftigkeit der Glaubensüberzeugung eines gläubigen Menschen, <span style="color:#00B000">(was auch das Ziel ANSELMS war)</span>. Das heißt also ''':''' der Glaube dieses Menschen ist widerspruchsfrei und sinnvoll, und enthält keinen Zirkelschluss, weil sein Gegenteil, der Nicht-GOTT-Glaube, zu einem Widerspruch führt; <span style="color:#00B000">(das hat GÖDEL mit seinem Kalkül-System bewiesen, dessen Argumentationskette mit einem Computer-Programm, dem sog. ,Theorembeweiser‘, überprüft worden ist, und als <span style="color:#FF6000">»''nachweisbar korrekt''«</span> befunden wurde)</span>. Das Theorem ANSELMS beweist, nach GÖDEL, dass der Glaube an GOTT, mit <span style="color:#FF6000">»''mathematische Evidenz''«</span> notwendig widerspruchsfrei und sinnvoll ist, weil der Nicht-GOTT-Glaube notwendig zu einem Widerspruch führt. <u>Das Theorem beweist jedoch nicht, dass die Existenz GOTTES notwendig ist</u>, <span style="color:#00B000">(wie es fast immer fälschlich gelesen wurde und wird)</span>, sondern, das Theorem ANSELMS geht davon aus, als nicht hinterfragtes Faktum, dass GOTT notwendig, schon immer existiert, und beweist, mit dem GÖDEL-Kalkül, dass diese Glaubens-Annahme widerspruchsfrei und sinnvoll, und <span style="color:#FF6000">»''mit allen bekannten Tatsachen durchaus vereinbar ist''«</span>, wie GÖDEL abschließend sagt. GOTT hat es ja auch nicht ,nötig‘, bewiesen zu werden. Für den Erzbischof ANSELM war die Existenz GOTTES, überall und jederzeit, die ungefragte und für ihn die selbstverständlichste Voraussetzung aller seiner Bemühungen, in seinem Leben, und in seinem Beruf als christlicher Amtsträger, und auch als Theologe in den philosophischen Überlegungen über seinen Glauben. Mit diesen Überlegungen hat er, mit GÖDEL, bewiesen ''':''' Glaube ist nicht irrational, kein Sprung ins Unbekannte, sondern eine freie, vernünftige Entscheidung. Glaube ist rational und vertrauenswürdig. Zusammengefasst heißt das Ergebnis dieser Bemühungen ANSELMS ''':''' Wenn Du an GOTT glauben willst, dann kannst Du das unbedenklich tun, denn Dein Glaube ist auch logisch in der <u>bewiesenen Möglichkeit</u>, dass es GOTT geben kann, begründet, und damit ist er widerspruchsfrei, sinnvoll und kein Zirkelschluss. Dein Glaube an GOTT beruht jedoch, nach wie vor und in erster Linie, auf Deiner freien Entscheidung für GOTT, und nicht auf dem Zwang einer ,logischen‘ Argumentation. Wenn Du nicht an GOTT glauben willst, dann <u>musst Du, und sollst Du, auch nicht deswegen</u> an GOTT glauben, weil der Nicht-GOTT-Glaube zu einem Widerspruch führt, und damit falsch und unlogisch ist. Denn der Glaube an GOTT muss immer eine freie und Deine ganz persönliche Entscheidung für GOTT sein und bleiben. Niemand darf zum Glauben an GOTT gezwungen werden, auch nicht mit ,logischen‘ Argumenten. Warum '''?''' Weil GOTT die Liebe ist '''!''' Und die Liebe duldet keinen Zwang '''!''' Zum Abschluss, und für eine bessere Verständlichkeit dieser Studie, hat die KI, der ich diese Studie für die Erstellung eines Podcast übergeben habe, eine, — sogar für Kinder —, verständliche Metapher kreiert. Sie sagt, man stelle sich vor ''':''' Es sei irgendwo ein ,Schatz’ vergraben, und es gäbe auch eine ,Schatzkarte’ für diesen ,Schatz’. Kurt GÖDEL ist nun gekommen, und hat mit seinem Kalkül bewiesen, dass diese ,Schatzkarte’ korrekt ist und fehlerfrei. Ob aber jemand, mit Hilfe dieser ,Schatzkarte’ auf ,Schatzsuche’ gehen will oder nicht ''':''' das ist und bleibt jedem selbst überlassen, und ist immer eine freie, und ganz persönliche Entscheidung. Damit hat die KI erstaunlich treffend, sowohl die Bedeutung, als auch die reale Funktion des GOTT-Glaubens in der Lebens-Wirklichkeit unserer Welt und Zeit charakterisiert, in Übereinstimmung mit der Gleichniserzählung JESU vom ,Schatz im Acker’; <small><span style="color:#00B000">( vgl. {{Bibel | Matthäus-Evangelium |13|44|EU}} )</span></small>. Der ,Schatz’ ist die <span style="color:#FF6000">„<span style="font-family: Times;"><big>Βασιλεία του Θεού</big></span>“</span><span style="color:#00B000"> | ,Basileía tou Theoú’</span>, d.h. das <span style="color:#CC66FF">»''Königtum GOTTES''«</span>, oder auch das <span style="color:#CC66FF">»''Himmelreich''«</span>. Die ,Schatzkarte’ ist der Glaube an GOTT. Die ,Schatzsuche’ ist der Weg des Glaubens in der Nachfolge JESU, der uns den Weg zeigt zum Ziel, zur Erfüllung aller unserer Sehnsüchte und Wünsche. ---- ---- ;Fußnoten <references /> p2xa0dqkqnf2bur30geb4m41u5ljgo1 1090603 1090600 2026-09-09T08:40:08Z Santiago 19191 /* Kurt GÖDEL und der sog. ‚ontologische Gottesbeweis‘ */ 1090603 wikitext text/x-wiki [[Kategorie: Buch]] {{Regal|ort=Philosophie}} {{Vorlage:StatusBuch|9}} ==<div class="center"><span style="color:#660066">'''Kurt GÖDEL und der sog. ‚ontologische Gottesbeweis‘'''</span></div>== <span style="font-family: Times;"><big><div class="center">לַמְנַצֵּ֗חַ לְדָ֫וִ֥ד אָ֘מַ֤ר נָבָ֣ל בְּ֭לִבּוֹ אֵ֣ין אֱלֹהִ֑ים הִֽשְׁחִ֗יתוּ הִֽתְעִ֥יבוּ עֲלִילָ֗ה אֵ֣ין עֹֽשֵׂה־טֽוֹב׃ (Psalm 14,1)</div></big></span> ---- ===<div class="center"><span style="color:#660066">Vorwort</span></div>=== Zur Orientierung ''':''' Die Diskussion um GOTT läuft schon über zweitausend Jahren. Vor etwa tausend Jahren hat sich ein gewisser ANSELM gesagt ''':''' <span style="color:#FF6000">»''Ich glaube an GOTT'' … <span style="color:#00B000">[ sonst wäre er sicher nicht Erzbischof von Canterbury geworden ]</span> … ''aber ich möchte auch wissen und verstehen, ob das stimmt und sinnvoll ist, was ich da glaube '''!''''' «</span> Dann hat er seine Überlegungen dazu aufgeschrieben, und das kann man in seinen Schriften auch heute noch lesen. Der sehr geschätzte deutsche Professor und Philosoph aus Königsberg, Immanuel KANT, hat das, was ANSELM da aufgeschrieben hat, gelesen, <span style="color:#00B000">(vermittelt durch CARTESIUS)</span>, und das dann den <span style="color:#FF6000">„ontologischen Gottesbeweis“</span> genannt, <span style="color:#00B000">(obwohl es in Wirklichkeit gar kein Gottesbeweis ist; genauer ''':''' es ist kein Beweis für die Existenz GOTTES)</span>, und dieser große KANT hat dann großartig bewiesen, das, was ANSELM da aufgeschrieben hat, sei falsch. Es sei <span style="color:#FF6000">„ja gar kein“</span> Gottesbeweis '''!''' <span style="color:#00B000">( Naja, was denn sonst '''?''' )</span> Wobei er den Fehler gemacht hat, dass er den, an sich, unvergleichbaren GOTT mit hundert Talern in seinem Vermögenszustande verglichen hat. <span style="color:#00B000">(Das ist aber eine andere Geschichte.)</span> Hundert Taler und GOTT haben ,an sich‘ nichts gemeinsam, außer, wenn KANT ,wirklich‘ hundert Taler hat, und GOTT auch ,wirklich‘ existiert, <span style="color:#00B000">(wie ANSELM und gläubige Menschen glauben)</span>, dann gibt es GOTT und die Taler eben ,wirklich‘. Aber damit ist man nicht schlauer geworden. Seit KANT läuft die ganze Diskussion um GOTT immer nur als Diskussion um den <span style="color:#00B000">(von KANT)</span> so genannten <span style="color:#FF6000">„ontologischen, <span style="color:#00B000">[ kosmologischen, teleologischen etc. ]</span> Gottesbeweis“</span> —, obwohl es niemals einen Beweis für die Existenz GOTTES geben kann und niemals geben wird. <span style="color:#00B000">(Das haben Wissenschaftler jeder Richtung und Philosophen aller Weltanschauungen uns immer wieder nachdrücklich versucht zu sagen, weil keiner dieser sog. Beweise für die Existenz eines GOTTES stringent ist.)</span> Beweisen kann man die Existenz von Naturgesetzen. Die sind unveränderlich und fix, immer und überall. Jeder vernünftige Mensch muss sie akzeptieren. Man kann darüber nicht diskutieren und sie dann mit Mehrheitenbeschlüsse verändern. Wenn GOTT ebenso bewiesen werden könnte, dann wäre jeder vernünftige Mensch gezwungen, die Existenz GOTTES wie ein Naturgesetz anzunehmen. Gott ist aber kein Naturgesetz. GOTT ist <span style="color:#FF6000">„Person“</span>, — für Christgläubige ''':''' <span style="color:#FF6000">„ein GOTT in drei Personen“</span>. Und GOTT ist <span style="color:#FF6000">„Geist“</span>. Das besagt, dass GOTT nicht mit materiellen Dingen aus unserer Welt verglichen werden darf; <span style="color:#00B000">(was sowohl THOMAS von Aquin als auch Immanuel KANT doch getan haben)</span>. Und ganz wesentlich ''':''' der Zugang zu GOTT läuft nicht über den Beweis, sondern immer nur über den Glauben. Wer an GOTT glauben will, dem antwortet GOTT auf seine Weise — nämlich <span style="color:#FF6000">„geistig“</span> bzw. <span style="color:#FF6000">„geistlich“</span>. Wer nicht an GOTT glauben will, dessen Entscheidung respektiert GOTT, und drängt sich nicht auf. Glaube ist immer eine freie Entscheidung des Menschen für GOTT. Niemand darf gezwungen werden. Wenn es einen Beweis für GOTT gäbe, wäre jeder vernünftige Mensch gezwungen, an GOTT zu glauben. Und das widerspricht ganz entschieden der Freiheit des Glaubens. Daher gibt es nie und nimmermehr einen Existenzbeweis für GOTT '''!!!''' ... Daher darf man das Kalkül des Logiker GÖDEL, <span style="color:#00B000">(und damit auch das Theorem ANSELMS)</span>, nicht als einen Existenzbeweis für GOTT lesen. Sowohl ANSELM als auch GÖDEL setzen die Existenz GOTTES notwendig als gegeben schon voraus. Das GÖDEL-System, und auch das Theorem ANSELMS, sind bloß die logische Bestätigung der Widerspruchsfreiheit der Glaubensüberzeugung eines Menschen, der sich schon entschieden hat, an GOTT zu glauben; und nicht der Grund für seine Entscheidung. Alle sogenannten ,Gottesbeweise‘, sind in Wirklichkeit nichts anderes, als nachträgliche Evaluierungen eines GOTT-Glaubens, bzw. ,Wege‘, <span style="color:#00B000">(bei THOMAS von Aquin)</span>, die aufzeigen, dass der GOTT-Glaube widerspruchsfrei, sinnvoll, und <span style="color:#FF6000">»''mit allen bekannten Tatsachen durchaus vereinbar ist''«</span>, wie GÖDEL sagt. GOTT hat es nicht nötig, ,bewiesen‘ <span style="color:#00B000">( ╞ )</span> zu werden. ===<div class="center"><span style="color:#660066">Einleitung</span></div>=== Eine Studie zum GÖDEL-Kalkül. Der Logiker Kurt GÖDEL <span style="color:#00B000">(1906-1978)</span> hat mit diesem Kalkül eine moderne Rekonstruktion des, <span style="color:#00B000">(von KANT)</span>, so genannten ‚ontologischen Gottesbeweises‘ nach ANSELM von Canterbury auf modal-logischer Basis vorgelegt. Damit hat er die <span style="color:#FF6000">„Rede von GOTT“</span> auf eine ‚vernünftige Basis‘ gestellt, d.h. sie soll für jeden Menschen nachvollziehbar sein, <span style="color:#FF6000">»''rein verstandesmäßig, (ohne sich auf den Glauben an irgendeine Religion zu stützen)''«</span>, wie er sagt. GÖDEL ,nimmt‘ als Logiker, angeregt durch den Philosophen und Mathematiker Gottfried Wilhelm LEIBNIZ, rein theoretisch, fürs Erste, einmal ‚an‘, <span style="color:#00B000">(als Prämisse, d.i. der Term :01: im 3. Beweisgang zum Theorem ANSELMS im Anhang)</span>, dass es GOTT gibt ''':''' d.i. ein sog. ,methodologischer GOTT-Glaube‘, und untersucht die logischen Konsequenzen. Dabei zeigt sich, beim genaueren Hinsehen, dass der ‚Nicht-GOTT-Glaube‘, der ‚dezidierte‘ Atheismus, <span style="color:#00B000">(im Beweisgang ,Widerlegung‘ im Anhang)</span>, überraschender Weise, zu einem Widerspruch führt, und damit logisch ,falsch‘ ist. Jedoch, GÖDEL kann und will mit seinem Kalkül keinen ,GOTT-Glauben‘ ,erzeugen‘, d.h. das GÖDEL-Kalkül ist kein <span style="color:#FF6000">„Existenz-Beweis"</span> für den GOTT der Bibel, sondern, es setzt die Existenz eines GOTTES, einfach als gegeben, schon voraus. GÖDEL beweist dann mit seinem System, dass der traditionelle abendländische ,GOTT-Glaube‘, <span style="color:#FF6000">»''die theologische Weltanschauung''«</span>, <span style="color:#00B000">(d.i. die Kalkül-Prämisse, und das, daraus ,regulär‘ (├ ) abgeleitete, Theorem ANSELMS)</span>, mit den Maßstäben der modernen Logik <span style="color:#FF6000">»''durchaus vereinbar''«</span> <span style="color:#00B000">(d.h. logisch ,richtig‘)</span> ist, im Gegensatz zum ,Nicht-GOTT-Glauben‘, der davon ausgeht, dass es keinen GOTT gibt. GÖDEL beweist mit seinem System ''':''' der traditionelle GOTT-Glaube ist, — mit mathematisch-logischer Evidenz —, widerspruchfrei und wahr. <span style="color:#00B000">(Der Beweis aus dem Widerspruch des Gegenteils ist ein ,indirekter Beweis‘ und kein ,Zirkelbeweis‘ '''!''' )</span> GÖDEL blieb bis zu seinem Tod ohne ein dezidiertes religiöses Bekenntnis. <span style="color:#00B000">(Das Leben ist nicht immer ,logisch‘.)</span> Entsprechend der <span style="color:#FF6000">»''theologischen Weltanschauung''«</span> ist GOTT der Größte, <span style="color:#FF6000">»''über dem nichts Größeres mehr gedacht werden kann''«</span>, <span style="color:#00B000">(ANSELM)</span>; bzw. <span style="color:#FF6000">»''GOTT ist ein Wesen von äußerster Größe und Vollkommenheit, das alle Grade derselben in sich schließt''«</span>, <span style="color:#00B000">(LEIBNIZ)</span>, und der für uns immer schon ,da‘ ist. Das ist die methodologische Prämisse des GÖDEL-Kalküls. Davon ausgehend, zeigen seine Axiome und Definitionen, dass es zu einem Widerspruch führt, falls man ,annimmt‘, es sei nicht möglich, dass es <span style="color:#FF6000">„GOTT“</span>, <span style="color:#4C58FF">— ‚'''G'''‘ —</span> gibt. Aus dem Widerspruch des Gegenteils wird von GÖDEL, mit dem <span style="color:#4C58FF">[ Modus tollendo tollens ] :: [ A → B, ¬B ├ ¬A ]</span>, dann ,bewiesen‘ <span style="color:#00B000">( ╞ )</span> ''':''' es ist doch möglich, dass es <span style="color:#FF6000">„GOTT“</span> wirklich gibt. Somit ist der Glaube an <span style="color:#FF6000">„GOTT“</span>, — weil widerspruchsfrei —, mit den Worten GÖDELS ''':''' <span style="color:#FF6000">»''mit allen bekannten Tatsachen durchaus vereinbar''«</span>. Immanuel KANT <span style="color:#00B000">(1724-1804)</span> scheint diesen Fall vorausgesehen zu haben, dass versucht werden könnte, die ,Möglichkeit‘ GOTTES aus einem Widerspruch zu ,beweisen‘ ''':''' ::<span style="color:#FF6000">»</span> <span style="color:#00B000">[ Angenommen, es gibt ]</span> ''doch einen und zwar nur diesen '''Einen''' Begriff'' <span style="color:#00B000">[ ,GOTT‘, so dass ]</span> ''das Nichtsein oder das Aufheben seines Gegenstandes'' <span style="color:#00B000">[ GOTT ]</span>, ''in ,sich selbst‘ widersprechend sei; und dieses ist der Begriff des allerrealsten Wesens. Es hat, sagt ihr, alle Realität'', <span style="color:#00B000">[ bzw. alle Vollkommenheit ]</span>, ''und ihr seid berechtigt, ein solches Wesen als ,möglich‘ anzunehmen'' ... <span style="color:#00B000">[ denn das GÖDEL-Kalkül ,beweist‘ ( ╞ ) in der ,Widerlegung‘ im Anhang, wie auch im 1. Beweisgang, aus einem Widerspruch, dass die Existenz GOTTES definitiv logisch ,möglich‘ ist. ]</span> … ''obgleich der sich nicht widersprechende'', <span style="color:#00B000">[ ,mögliche‘ ]</span>, ''Begriff'', <span style="color:#00B000">[ ,GOTT‘ ]</span>, ''noch lange nicht die'' <span style="color:#00B000">[ reale ]</span> ''Möglichkeit des Gegenstandes'', <span style="color:#00B000">[ GOTT ]</span>, ''beweiset. … Das ist eine Warnung, von der Möglichkeit der Begriffe (logische)'', <span style="color:#4C58FF">— '''◇''' —</span>, ''nicht sofort auf die Möglichkeit der Dinge (reale)'', <span style="color:#4C58FF">— '''□''' —</span>, ''zu schließen''<ref>vgl. ‚''<span style="font-family: Times;"><big>Kritik der reinen Vernunft</big></span>''‘, Seite 399; https://www.korpora.org/kant/aa03/399.html</ref>. <span style="color:#00B000">[ Trotz dieser Warnung, wird dieser Schluss dennoch im Theorem ANSELMS vollzogen, bzw. mit GÖDEL im 3. Beweisgang ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx→□∃xGx'''‘ —</span> '''!''' ]</span>. <span style="color:#FF6000">«</span> Warum das <span style="color:#FF6000">»''mit allen bekannten Tatsachen durchaus vereinbar''«</span> ist, und inwieweit KANT sich irrt, wird in dieser Studie gezeigt. ===<div class="center"><span style="color:#660066">Der Schlüsselbegriff im Kalkül</span></div>=== Der ‚Schlüsselbegriff‘ in diesem Kalkül ist <span style="color:#FF6000">„positive Eigenschaft“</span>, bzw. <span style="color:#FF6000">„Perfektion“, „Vollkommenheit“</span> ''':''' <span style="color:#4C58FF">— ‚'''P'''‘ —</span>. Für diesen wichtigen Begriff gibt es aber im Kalkül selbst keine explizite Definition, sondern er wird nur durch seine Verwendung innerhalb des Kalküls indirekt ‚definiert‘. <span style="color:#00B000">(Das heißt ''':''' <span style="color:#4C58FF"> — ‚'''P'''‘ — </span> bezeichnet ein System von ,Eigenschaften‘, die ,positiv‘, bzw. ,vollkommen‘ | ,perfekt‘ | genannt werden, von denen im Kalkül wohl beweisbar ist, dass sie sich gegenseitig ,nicht widersprechen‘, weil sie im System als solche ,gleichwertig‘, bzw. gleich ,wahr‘ sind, jedoch ohne sie erschöpfend aufzählen zu können, oder auch nur sagen zu können, was sie alle im einzelnen bedeuten, außer, dass sie kompatibel sind.)</span> Mit der Wahl dieses Schlüsselbegriffes hat GÖDEL eine wesentliche Vorentscheidung für die Ergebnisse des Kalküls getroffen '''!''' In seinen Notizen zum ‚ontologischen Beweis‘ vom 10. Februar 1970 gibt GÖDEL, — für die nachträgliche Interpretation dieses Begriffes <span style="color:#00B000">(und auch für das Kalkül selbst)</span> —, die richtungsweisende Erklärung ''':''' ::<span style="color:#FF6000">»''Positiv bedeutet positiv im moralisch ästhetischen Sinne...''«</span> ::Und er fügt in Klammer hinzu ''':''' ::<span style="color:#FF6000">»...''(unabhängig von der zufälligen Struktur der Welt). Nur dann sind die Axiome wahr''.«</span><ref>GÖDEL, Kurt, ''<span style="font-family: Times;"><big>‚Ontological proof‘</big></span>'' in ''<span style="font-family: Times;"><big>‚Collected Works‘</big></span>'', vol. III, ed. S.FEFERMAN et al., Oxford (U.P.), 1995; 403–404.</ref> GÖDEL-Axiom-1 ''':''' <span style="color:#4C58FF">— ‚('''PX <small><math>{ \color{Blue} \dot\lor}</math></small> P¬X''')‘ ↔<span style="color:#00B000"> ‚('''¬PX ↔ P¬X''')‘</span> — </span> ''':''' <span style="color:#FF6000"> »''Entweder die Eigenschaft'' <span style="color:#4C58FF">‚'''X'''‘</span> ''oder ihre Negation'' <span style="color:#4C58FF">‚'''¬X'''‘</span> ''ist positiv''«</span>. Hier ist der Hauptkritikpunkt, dass es Eigenschaften gibt, die ,an sich‘ weder positiv noch negativ sind. Beispiele wären ''':''' ‚rothaarig‘ oder ‚schwerwiegend‘; solche Eigenschaften können aber ,für mich‘ entweder positiv oder negativ sein, abhängig von meiner Betrachtungsweise und subjektiven Vorlieben. Diese Eigenschaften, wie ‚rothaarig‘ an sich, oder meine positiv-negativen ‚Betrachtungsweisen‘, sind jedoch der <span style="color:#FF6000">»''zufälligen Struktur der Welt''«</span> entnommen und treffen nicht den <span style="color:#FF6000">»''moralisch ästhetischen Sinn''«</span> von <span style="color:#FF6000">»''positiv''«</span> bei GÖDEL. Er orientierte sich an LEIBNIZ, welcher im Bezug zum ‚ontologischen Beweis‘ definiert ''':''' ::<span style="color:#FF6000">»''Vollkommenheit'' <span style="color:#00B000">[ GOTTES ]</span> ''nenne ich jede einfache Eigenschaft, die sowohl positiv als auch absolut ist, oder dasjenige, was sie ausdrückt, ohne jede Begrenzung ausdrückt''.«</span><ref>Zitiert nach Thomas GAWLICK, in ''<span style="font-family: Times;"><big>‚Was sind und was sollen mathematische Gottesbeweise ?‘</big></span>'', Predigt vom 8.1.2012 in der Kreuzkirche zu Hannover. https://web.archive.org/web/20130524164359/http://www.idmp.uni-hannover.de/fileadmin/institut/IDMP-Studium-Mathematik/downloads/Gawlick/Predigt_Gawlick_Gottesbeweise.pdf</ref> Die Seins-Eigentümlichkeiten <span style="color:#00B000">(Daseinsmodi, Perfektionen)</span> wie ‚wahr‘, ‚gut‘, ‚edel‘ usw. entsprechen dem <span style="color:#FF6000">»''moralisch ästhetischen Sinn''«</span> von <span style="color:#FF6000">»''positiv''«</span> bei GÖDEL. Das sind Beispiele für ‚absolut‘ positive Begriffe aus der Lehre der Seinsanalogie ''':''' <span style="font-family: Times;"><big>‚verissimum‘, ‚optimum‘, ‚nobilissimum‘</big></span>, usw., die, an sich, <span style="color:#FF6000">»''ohne jede Begrenzung gelten''«</span>; zu finden in der <span style="font-family: Times;"><big>‚Via quarta‘</big></span>, bei THOMAS von Aquin, über die <span style="color:#FF6000">„analoge"</span> Abstufung im ‚Sein‘ der Dinge. Diese <span style="color:#FF6000">„analoge"</span> ‚Abstufung‘ ist dann die faktische Begrenztheit <span style="color:#00B000">(d.h. Unvollkommenheit)</span> im <span style="color:#FF6000">»''zufälligen''«</span> ‚Sein‘ der Dinge —. Die <span style="color:#FF6000">„positiven Eigenschaften“</span> GÖDELS ''':''' <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, wie Wahrheit, Einheit, Gutheit, <span style="color:#00B000">(von ,Güte‘)</span>, Schönheit, Adel, <span style="color:#00B000">(von ,edel‘)</span>, Gleichheit, Andersheit, Wirklichkeit, ,Sein‘ im Sinne von Etwas-sein, etc. werden <span style="color:#FF6000">„Perfektionen“</span>, oder auch <span style="color:#FF6000">„Transzendentalia“</span> genannt, <span style="color:#00B000">(von lateinisch ''':''' <span style="font-family: Times;"><big>transcendere</big></span>, <span style="color:#FF6000">„übersteigen“</span>)</span>. In der mittelalterlichen Scholastik sind Transzendentalien die Grundbegriffe, die allem Seienden als <span style="color:#FF6000">„Modus“</span>, <span style="color:#00B000">(d.h. ,Eigentümlichkeit‘, als allgemeine Seinsweisen)</span>, zukommen. Wegen ihrer Allgemeinheit ,übersteigen‘ sie die besonderen Seinsweisen, welche ARISTOTELES die ,Kategorien‘ nannte. Ontologisch betrachtet, werden die Transzendentalien als das allem Seienden Gemeinsame aufgefasst, da sie von allem ausgesagt werden können. Von der KI werden sie, nicht unpassend, als <span style="color:#FF6000">„ultimative Eigenschaften des Seins“</span> bezeichnet, die <span style="color:#FF6000">„jenseits der materiellen Welt existieren“</span>, <span style="color:#00B000">(da sie ,ultimativ‘ nur von GOTT, als den unbegrenzt Vollkommenen, ausgesagt werden können, die jedoch, auch von allen übrigen Seienden, wegen deren seinsmäßigen Unvollkommenheit und Begrenztheit, abgestuft, d.h. <span style="color:#FF6000">„analog"</span>, ausgesagt werden)</span>. Diese Transzendentalien sind ,inakzident‘, das heißt, sie entstehen nicht aus anderen Begriffen, sondern sind erste, unteilbare Bestimmungen <span style="color:#4C58FF">— ‚'''X'''‘ —</span> des Denkens und des Seins, die allen Seienden ''':''' <span style="color:#4C58FF">— ‚'''□∀xXx'''‘ —</span>, unabhängig von ihren speziellen Eigenschaften, als ,relative‘ Vollkommenheiten, <span style="color:#00B000">(bzw. Unvollkommenheiten)</span>, mit ,modaler‘ Notwendigkeit, <span style="color:#4C58FF">— ‚□‘ —</span>, <span style="color:#FF6000">„analogisch"</span> zukommen, d.h. sie sind in allen Seienden, seinsmäßig abgestuft und abgegrenzt, ,relativ‘ zum unbegrenzt Unendlichen ihrer selbst, und <span style="color:#FF6000">»''dasjenige, was sie ausdrücken, drücken sie ohne jede Begrenzung aus''«</span>, <span style="color:#00B000">(LEIBNIZ)</span>; und damit stehen sie ontologisch in einer <span style="color:#FF6000">„analogen"</span> ,Beziehung‘ zu GOTT, dem absolut Vollkommenen und unbegrenzt Unendlichen. In der Erkenntnisordnung wirken sie als die ersten Begriffe des menschlichen Verstehens, die eine Basis für alle weiteren wissenschaftlichen Erkenntnisse bilden. In der Seinsordnung sind die Transzendentalien ontologisch eins, gleichwertig, <span style="color:#00B000">(,mathematisch äquivalent‘)</span>, und daher konvertierbar, d.h. austauschbar, <span style="color:#00B000">(vgl. z. B. den scholastischen ,Merksatz‘ ''':''' <span style="font-family: Times;"><big>,ens et verum convertuntur‘</big></span>)</span>. Damit sind sie auch von einander abhängig, was GÖDEL sowohl im Axiom-2 ''':''' <span style="color:#4C58FF">— ‚'''PX ∧ □∀x(Xx→Yx)→PY'''‘ —</span>, für positive Eigenschaften, als auch in der Definition-2 ''':''' <span style="color:#4C58FF">— ‚'''X'''<sub>ess</sub>'''x ↔ Xx ∧ ∀Y(Yx→ □∀y(Xy→Yy))'''‘ —</span>, für die Wesenseigenschaften, syntaktisch formalisiert hat mit dem Term-Element ''':''' <span style="color:#4C58FF">— ‚'''□∀x(Xx→Yx)'''‘ —</span>, weil sie sich gegenseitig, — mit ,modaler‘ Notwendigkeit —, gleichwertig ,implizieren‘, d.h. einschließen, <span style="color:#00B000">(im Axiom-2 mit der Individuum-Variable <span style="color:#4C58FF"> — ‚'''x'''‘ —</span>, und in der Definition-2 mit der Individuum-Variable <span style="color:#4C58FF"> — ‚'''y'''‘ — </span>)</span>. Man kann die Transzendentalia, <span style="color:#00B000">(wie GÖDEL)</span>, auch ,Wesenseigenschaften‘ ''':''' <span style="color:#4C58FF"> — ‚'''X'''<sub>ess</sub>‘ —</span>, nennen, weil sie allem Seienden <span style="color:#FF6000">„wesentlich analog"</span> zukommen. Weil Transzendentalien miteinander austauschbar sind, sind sie auch widerspruchsfrei, was GÖDEL mit Axiom-1 syntaktisch darstellt. Die Gültigkeit und Wahrheit, d.h. die mathematisch-logische Evidenz von Axiom-1 und Axiom-2, beruht auf der ontologischen Allgemeinheit und Gültigkeit der Transzendentalia, die GÖDEL mit Definition-2, in sein Kalkül explizit eingeführt und als Wesenseigenschaften ,bestimmt‘ hat. <span style="color:#00B000">(Definitionen werden formal-syntaktisch durch das Äquivalenzzeichen <span style="color:#4C58FF">,'''↔'''‘</span> angezeigt, gelesen als <span style="color:#FF6000">„...ist genau dann ... wenn...“</span>)</span> Die GÖDEL-Axiome und -Definitionen werden jedoch sofort <span style="color:#FF6000">„modal falsch"</span>, wenn ihre Eigenschafts-Variablen, <span style="color:#4C58FF">— ‚'''X'''‘ —</span> und <span style="color:#4C58FF">— ‚'''Y'''‘ —</span>, mit ,Nicht-Transzendentalia‘, wie z. B. ,rot‘ oder ,schwer‘, belegt werden. <span style="color:#00B000">(Dieser ,Sachverhalt‘ wird von Kritikern des GÖDEL-Systems, — zu vorschnell —, verwendet, um ihre Behauptungen zu ,belegen‘, das GÖDEL-Kalkül und seine Konsequenzen seien ,falsch‘.)</span> Zum Überblick ''':''' <span style="color:#FF6000">„Transzendentalia“</span> sind universale, alles Seiende charakterisierende Begriffe, die über kategoriale Einteilungen hinausgehen, und sowohl in der klassischen Scholastik, als auch in der modernen Philosophie, <span style="color:#00B000">(KANT, Uwe MEIXNER<ref>vgl. die ,transzendentalen‘ Bedingungen möglicher Erkenntnisse bei KANT; und auch in der ,Axiomatischen Ontologie‘ bei Uwe MEIXNER</ref>)</span>, als Grundlage der Metaphysik und Erkenntnistheorie dienen. Sie sind die <span style="color:#FF6000">„ersten Begriffe des Seins“</span>, die jedem Ding als ,relative‘ Vollkommenheiten, <span style="color:#00B000">(Perfektionen)</span>, inhärent sind, <span style="color:#FF6000">„analogisch"</span> abgestuft, auf einen ,ultimativ‘-unbegrenzten Bezugspunkt ausgerichtet, und die sich im Denken, <span style="color:#00B000">(für uns als wahr)</span>, und in der moralischen Wertung, <span style="color:#00B000">(für uns als gut und edel)</span>, manifestieren, relativ zum ,ultimativ‘-unbegrenzten Bezugspunkt ihrer selbst. Die faktische, zusätzliche Unvollkommenheit, die sich generell in der notwendigen, und unausweichlichen Vergänglichkeit aller Dinge zeigt, ist einem ontologischen Defekt ,geschuldet‘, der stark zeitabhängig ist, d.h. der einen Anfang und ein Ende hat. Das GÖDEL-Axiom-5 ''':''' <span style="color:#4C58FF"> — ‚'''PE'''<sub>not</sub>‘ —</span> ''':''' <span style="color:#FF6000">»''Notwendige Existenz ist eine positive Eigenschaft''«</span>, ist immer falsch, wenn es auf etwas aus der <span style="color:#FF6000">»''zufälligen Struktur der Welt''«</span> angewendet wird, wie z. B. auf einen <span style="color:#FF6000">„Tsunami“</span>, dessen ‚Existenz‘ für uns nicht ‚positiv‘ ist. KANT hat schon festgestellt ''':''' <span style="color:#FF6000">„Existenz ist keine Eigenschaft“</span>. Das gilt für alles, was <span style="color:#FF6000">„existiert“</span>. Das Axiom-5 hat nur dann seine Gültigkeit, ist nur dann ,wahr‘, wenn <span style="color:#FF6000">„Dasein“</span> <span style="color:#00B000">(Existenz)</span> und <span style="color:#FF6000">„Wesenseigenschaften“</span> <span style="color:#00B000">(Essenz)</span> in eins zusammenfallen. Bei allen Dingen, die ‚da‘ sind, ist ihr ‚Da-Sein‘ ontologisch immer verschieden zu dem ‚was‘ sie sind ''':''' zu ihrem ,Was-Sein‘. In der philosophischen Tradition, seit ARISTOTELES, wird die ontologische Identität, d.i. die Koinzidenz, der innere Zusammenhang von ‚Sein‘ und ‚Wesen‘ allein nur dem <span style="color:#FF6000">„selbst ‚unbewegten‘ Erstbewegenden“</span> zugeschrieben, dem <span style="color:#FF6000">„<span style="font-family: Times;"><big>πρῶτον κινοῦν ἀκίνητον</big></span>“</span><span style="color:#00B000"> | ,prôton kinoûn akinêton‘</span>, von dem ARISTOTELES etwas später sagt ''':''' <span style="color:#FF6000">»''denn dies ist der Gott''«</span> und dann hinzufügt ''':''' <span style="color:#FF6000">»''so sagen wir ja''«</span>; d.h. das ist eine Interpretation aus dem Glaubenskontext des ARISTOTELES. Er war ein Gott-gläubiger Grieche. Wer an GOTT glaubt, kann das nachvollziehen. GÖDEL musste dieses Axiom-5 postulieren, sonst wäre sein Kalkül nicht aufgegangen, ohne dass er deswegen schon an GOTT glauben müsste. Er hat für sein Kalkül das ontologische Theorem von der Identität von ‚Sein‘ und ‚Wesen‘ im ‚unbewegten Erstbeweger‘ des ARISTOTELES benutzt, ohne diese Herkunft explizit referenziert zu haben. <span style="color:#00B000">(Gilt auch für Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span> ''':''' <span style="color:#FF6000">»''Göttlichkeit, das GOTT-Sein, das ‚Dasein‘ GOTTES, ist eine positive Wesenseigenschaft, eine Perfektion; d.h. ist das ‚Wesen‘ GOTTES ''':''' GOTT ist perfekt''«</span>)</span>. Die ontologische Identität von Sein und Wesen, Existenz und Essenz, wie auch die Koinzidenz von Möglichkeit und Wirklichkeit, von Ursache und Wirkung, sowie auch die ontologische Einheit von <span style="color:#00B000">(Erkenntnis-)</span>Subjekt und <span style="color:#00B000">(Erkenntnis-)</span>Objekt im <span style="color:#FF6000">»''Erkennen seiner Erkenntnis''<span style="color:#00B000">[-Tätigkeit ]</span>«<span style="color:#00B000"> | </span>„<span style="font-family: Times;"><big>νοήσεως νόησις</big></span>“</span><span style="color:#00B000"> | ,noêseôs noêsis‘ <small>(<span style="font-family: Times;"><big>,''Metaphysik''‘</big></span> XII 9, 1074b34)</small></span>, und der innere Zusammenhang der <span style="color:#FF6000">„ultimativen Transzendentalia“</span>, gilt nur in der <span style="color:#FF6000">„unverursachten Letztursache"</span>, auf die ARISTOTELES bei seiner Prinzipienforschung gestoßen ist. Es gibt verschiedene Versuche, die GÖDEL-Axiome durch sog. ,Modelle‘, relativ zu einfacheren ,Welten‘, zu verifizieren, um damit ihre relative Konsistenz nachzuweisen. Für GÖDEL aber <span style="color:#FF6000">»''sind die Axiome nur dann'' <span style="color:#00B000">[ in unserer ,realen‘ Welt ]</span> ''wahr'' <span style="color:#00B000">[ und annehmbar ]</span>«</span>, wenn sie <span style="color:#FF6000">»''unabhängig von der zufälligen Struktur der Welt'' <span style="color:#00B000">[ d.h. jeder auch nur ,möglichen‘ Welt ]</span> ''sind''«</span>. Diese Bedingung verweist jede Verifikation und jede Interpretation der Axiome auf das ,Nicht-Zufällige‘, das ,Notwendige‘, ,Absolute‘, in dem die Axiome und Definitionen des GÖDEL-Kalküls erst dadurch ihren Sinn und ihre Bedeutung bekommen, wenn sie vom ,Absoluten‘ und ,Unendlichen‘ her erklärt und verstanden werden. Damit insistiert GÖDEL auf eine genuin <span style="color:#4C58FF">,theologische‘</span> Interpretation seines Kalküls, mit der <span style="color:#4C58FF">„Theologie“</span> zum Begriff GOTT, dem unbegrenzt Unendlichen, als Verifikationskriterium. Das entspricht auch der ,methodologischen‘ Prämisse seines Kalküls. Die wichtigsten Axiome und Definitionen im GÖDEL-Kalkül sind jedoch bloße ,Annahmen‘, deren Evidenz, sowohl die ,mathematische‘ als auch die <span style="color:#4C58FF">,theologische‘</span>, erst evaluiert, d.h. ,bewiesen‘ <span style="color:#00B000">( ╞ )</span> werden muss. Das bedeutet ''':''' die logische Verifikation der Axiome und Definitionen von GOTT und seinen Vollkommenheiten kann nur Kalkül-intern durch den Aufweis ihrer Widerspruchsfreiheit erfolgen, d.i. <span style="color:#FF6000">»''unabhängig von der zufälligen Struktur der Welt''«</span>. Logisch evaluierte und verifizierte Axiome und Definitionen sind die ,modal‘ notwendigen, d.h. die ,transzendentalen‘ Voraussetzungen für die Ergebnisse eines Kalküls, damit seine Theoreme und Korollare in unserer ,realen‘ Welt als logisch ,wahr‘ und damit für uns auch als ,annehmbar‘ gelten können, während die Prämissen eines Kalküls, <span style="color:#00B000">(die Argument Einführung, <span style="color:#4C58FF">— '''AE:''' —</span> )</span>, nicht notwendige, und somit ,modal‘ frei gewählte ,Annahmen‘ sind. Jedoch aus diesen ,modal‘ frei gewählten, ,möglichen‘ <span style="color:#00B000">( <span style="color:#4C58FF">'''◇'''</span> )</span> Prämissen folgen mit Hilfe der ,bewiesenen‘ <span style="color:#00B000">( ╞ )</span> Axiome und Definitionen die Ergebnisse mit ,modaler‘ Notwendigkeit <span style="color:#00B000">( <span style="color:#4C58FF">'''□'''</span> )</span>. Die Logik des GÖDEL-Systems ist eine ,Prädikatenlogik‘ zweiter Stufe, in der die Quantoren nicht nur Individuum-Variable, sondern auch Eigenschafts-Variable, <span style="color:#00B000">(als noch ,unbestimmte‘ Prädikate im Allgemeinen)</span>, binden können. Die formale Struktur des GÖDEL-Kalküls besteht aus fünf Axiomen und drei Definitionen, mit deren Hilfe in drei Beweisgängen drei Theoreme und mehrere Korollare aus seiner ,methodologischen‘ Prämisse ,regulär‘ <span style="color:#00B000">(├ )</span> abgeleitet werden können, wobei die beiden ersten Beweisgänge, mit ihren Ergebnissen, den dritten vorbereiten, in dem es dann um das Theorem ANSELMS geht. Die Prämisse des GÖDEL-Kalküls in allen Beweisgängen ist der traditionelle ,GOTT-Glaube‘, in der Formulierung speziell nach LEIBNIZ. Ein Axiom, eine Definition, zwei Theoreme und alle Korollare im GÖDEL-Kalkül sind Aussagen über <span style="color:#FF6000">„GOTT“</span>, <span style="color:#4C58FF">— ‚'''G'''‘ —</span>. Alle fünf Axiome, eine Definition und ein Theorem, <span style="color:#00B000">(und das Korollar aus Axiom-4)</span>, sind auch Aussagen über die Eigenschaft <span style="color:#FF6000">„Vollkommenheit“, „Perfektion“</span>, <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, die in der <span style="color:#FF6000">»''theologischen Weltanschauung''«</span> als die Wesenseigenschaft GOTTES gilt ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, <span style="color:#FF6000">»''GOTT ist vollkommen''«</span> bzw. <span style="color:#FF6000">»''GOTT ist das Vollkommenste der Wesen''«</span>, <span style="color:#00B000">(DESCARTES)</span>. Zwei Definitionen sind Aussagen über die allgemeinen Wesenseigenschaften aller Seienden, <span style="color:#4C58FF">— ‚'''X'''<sub>ess</sub>‘ —</span>, die Transzendentalien, die, als notwendige Existenz, <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>‘ —</span>, auch GOTT zugeordnet werden, mit der Besonderheit bei GOTT, dass sowohl alle Eigenschaften, als auch alle anderen Zuordnungen, wie Sein und Wesen, wie Ursache und Wirkung, usw., im Unendlichen, GOTT, <span style="color:#FF6000">„koinzident“</span> sind, d.h. in GOTT paarweise perspektivisch in ,eins‘ zusammenfallen, und die auch, als Transzendentalia, konvertierbar, d.h. austauschbar sind. Diese Sachverhalte machen deutlich, dass eine spezifische ,Verifikation‘ und sachgerechte ,Evaluierung‘ der GÖDEL-Axiomatik nur genuin <span style="color:#4C58FF">,theologisch‘</span> erfolgen kann. Die Evaluierung der <span style="color:#FF6000">»''mathematischen Evidenz''«</span> des GÖDEL-Systems, im Allgemeinen, muss jedoch entsprechend der Maßstäbe einer modalen Prädikatenlogik zweiter Stufe durchgeführt werden. Das GÖDEL-Kalkül unterscheidet <span style="color:#00B000">(in Definition-3 ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x ↔ ∀X(X'''<sub>ess</sub>'''x →□∃yXy)'''‘ —</span>)</span> formal-syntaktisch zwischen der Eigenschaft ,Existenz‘, <span style="color:#4C58FF"> — ‚'''E'''‘ —</span>, die nur GOTT zugeordnet werden kann, und dem Existenz-Operator, <span style="color:#4C58FF">— ‚'''∃'''‘ —</span>, der auch allem Übrigen, das nicht GOTT ist, zugeordnet wird. Es gibt hier auch den formal-syntaktischen Unterschied zwischen der, <span style="color:#00B000">(von mir notierten, jedoch von GÖDEL schon intendierten und angesprochenen)</span>, speziellen ,Notwendigkeit‘, <span style="color:#4C58FF"> — <sub>not</sub> —</span>, die nur der Existenz GOTTES zugeordnet ist, und der modalen ,Notwendigkeit‘, <span style="color:#4C58FF">— ‚'''□'''‘ —</span>, die auf Verschiedenes bezogen werden kann. Diese Unterschiede sind Hinweise, dass GÖDEL in seiner Kalkül-Logik und -Syntax, die Außerordentlichkeit und Eigenständigkeit GOTTES berücksichtigt, der, als Schöpfer der Welt, prinzipiell und absolut <span style="color:#FF6000">»''unabhängig von der zufälligen Struktur der Welt''«</span> ist, die erst durch GOTT auch das ist, was sie ist. ===<div class="center"><span style="color:#660066">Die Genese des Kalküls</span></div>=== Wie kommt GÖDEL zu seinem Kalkül '''?''' Sein Gewährsmann war Gottfried Wilhelm LEIBNIZ, <span style="color:#00B000">(1646-1716)</span>, den er sehr schätzte. Die rekonstruierbare Genese seines Kalküls findet man in LEIBNIZ ''':''' ''<span style="font-family: Times;"><big>‚Neue Abhandlungen über den menschlichen Verstand‘</big></span>'', <span style="color:#00B000">(1704)</span>‚ ''<span style="font-family: Times;"><big>Viertes Buch, Kapitel X ''':''' ‚Von unserer Erkenntnis des Daseins Gottes‘</big></span>'', Seite 475f. Hier der <span style="color:#00B000">[ kommentierte ]</span> Textausschnitt zum sog. ontologischen ‚Gottesbeweis‘''':''' ::<span style="color:#FF6000">»</span>''Folgendes etwa ist der Gang seines'' <span style="color:#00B000">[ d.h. ANSELMS, Erzbischof von Canterbury; 1033-1109, ]</span> ''Beweises ''':''' GOTT ist das Größte'', <span style="color:#00B000">[ ANSELM spricht vom biblischen GOTT des Glaubens, als ''':''' <span style="color:#FF6000">»''den, über dem ,Größeres‘'' | <span style="font-family: Times;"><big>‚maius‘</big></span> | ''nicht mehr gedacht werden kann''«</span> ]</span>, ''oder, wie DESCARTES es ausdrückt ''':''' das Vollkommenste der Wesen oder auch ein Wesen von äußerster Größe und Vollkommenheit'' ''':''' <span style="color:#00B000"> [ GÖDEL ''':''' </span><span style="color:#4C58FF">‚'''P'''‘</span> <span style="color:#00B000">:= ‚Perfektion‘, ‚positive Eigenschaft‘ ]</span>, ''das alle Grade derselben in sich schließt.''<span style="color:#00B000"> [ GÖDEL-Definition-1 ''':''' <span style="color:#4C58FF">— ‚'''Gx↔∀X(PX→Xx)'''‘ —</span> ''':''' <span style="color:#FF6000">»''Das Individuum'' <span style="color:#4C58FF">,'''x'''‘</span> ''ist genau dann GOTT'', <span style="color:#4C58FF">,'''G'''‘</span>, ''wenn'' <span style="color:#4C58FF">,'''x'''‘</span> ''alle Vollkommenheiten'', <span style="color:#4C58FF">,'''P'''‘</span>, ''in sich schließt''«</span>. Definition-1 bildet die traditionelle Vorstellung von GOTT ab. ]</span> ''Dies also ist der Begriff GOTTES.'' <span style="color:#00B000">[ Der Term <span style="color:#4C58FF">— ,'''G'''‘ —</span> steht hier für den biblischen ‚Begriff‘ <span style="color:#FF6000">„GOTT“</span> als ,Individuumname‘ '''!''' ]</span> ''Sehen wir nun, wie aus diesem Begriff das ‚Dasein’ folgt.''<span style="color:#00B000"> [ GÖDEL ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span> ''':''' <span style="color:#FF6000">»''GOTT ist notwendig aus sich ‚da‘''«</span> ''':''' Term :10:, 1. Hauptergebnis im 3. Beweisgang. ]</span> ''Es ist etwas <u>mehr</u>, ‚da‘ zu sein, als nicht ‚da‘ zu sein, oder auch das ‚Dasein‘ fügt der Größe oder der Vollkommenheit'' <span style="color:#00B000">[ GOTTES ]</span> ''einen Grad hinzu, und wie DESCARTES es ausspricht, das ‚Dasein‘ ist selbst eine Vollkommenheit.''<span style="color:#FF6000">«</span> <span style="color:#00B000">(Diesen Ausspruch DESCARTES übernimmt GÖDEL im Axiom-5 ''':''' <span style="color:#4C58FF"> — ‚'''PE'''<sub>not</sub>‘ —</span> ''':''' <span style="color:#FF6000">»''notwendige Existenz''</span> [ alias ‚Dasein GOTTES’ ] <span style="color:#FF6000">''ist eine positive Eigenschaft''</span> [ alias Vollkommenheit ]<span style="color:#FF6000">«</span>. Dem widerspricht KANT ''':''' <span style="color:#FF6000">„Existenz ist keine Eigenschaft“</span>, bzw. <span style="color:#FF6000">»''Sein ist kein reales Prädikat''«</span>. Das Axiom-5 ist daher nur dann ‚wahr‘, wenn ‚Wirklichsein‘ | <span style="color:#FF6000">„<span style="font-family: Times;"><big>ἐνέργεια οὖσα</big></span>“</span> | ‚enérgeia oúsa‘ | d.h. ‚Dasein‘ und ‚Wesen‘ | <span style="color:#FF6000">„<span style="font-family: Times;"><big>οὐσία</big></span>“</span> | ‚ousía‘ | — genauer ''':''' ‚Wesenseigenschaften’ —, ontologisch ,eins‘ sind, d.h. wenn <span style="color:#FF6000">„Existieren“</span> immer schon die <span style="color:#FF6000">„Wesenseigenschaft“</span> GOTTES ist. Was nach ARISTOTELES nur im <span style="color:#FF6000">„unbewegten Erstbeweger“</span> der Fall ist; bzw. mit LEIBNIZ ''':''' <span style="color:#FF6000">»''was das Privilegium der Gottheit allein ist''«</span> '''!''' Aus der ,methodologischen‘ ,Annahme‘ im 2. Beweisgang GÖDELS ''':''' <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span> ''':''' <span style="color:#FF6000">»''das'' <span style="color:#4C58FF">‚'''x'''‘</span> ''steht für den GOTT der Christen''«</span>, und mit Hilfe von Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span> ''':''' <span style="color:#FF6000">»''Göttlichkeit ist eine positive Eigenschaft''«</span>, bzw. <span style="color:#FF6000">»''GOTT ist perfekt''«</span>, mit Axiom-4 ''':''' <span style="color:#4C58FF">— ‚'''PX → □PX'''‘ —</span> ''':''' <span style="color:#FF6000">»''Positive Eigenschaften sind notwendig aus sich, — von Natur aus —, positiv''«</span>, mit Definition-2 ''':''' <span style="color:#4C58FF">— ‚'''X'''<sub>ess</sub>'''x ↔ Xx ∧ ∀Y(Yx→ □∀y(Xy→Yy))'''‘ —</span> ''':''' <span style="color:#FF6000">»''Zum Wesen gehören notwendig auch alle Konsequenzen aus einer Wesenseigenschaft''«</span>, und mit Axiom-1 und der Definition für GOTT, folgt nach einigen logischen Umformungen das GÖDEL-Theorem-2 ''':''' <span style="color:#4C58FF">— ‚'''Gx↔G'''<sub>ess</sub>'''x'''‘ —</span> ''':''' <span style="color:#FF6000">»''Das'' <span style="color:#4C58FF">‚'''x'''‘</span> ''ist genau dann der GOTT der Christen, wenn das Wesen dieses GOTTES sein eigenes Sein ist''«</span>. Dasein und Wesen sind im Unendlichen, GOTT <span style="color:#FF6000">„koinzident“</span> ,eins‘, übereinstimmend mit dem Theorem des ARISTOTELES. Mit diesem, im Kalkül <u>ohne</u> Axiom-5 ,regulär‘ (├ ) abgeleiteten Theorem, widerlegt er KANT für den individuellen Spezialfall <span style="color:#4C58FF">‚'''G'''‘</span> := <span style="color:#FF6000">„GOTT“</span>. Nachprüfbar im Anhang ''':''' im ‚ontologischen‘ Beweis für das Basis-Theorem-2. Somit ist Axiom-5 ,wahr‘, und KANT, der <span style="color:#FF6000">»''eine Abneigung gegen das Gebet hatte''«</span> und auch <span style="color:#FF6000">»''nie zu den sonntäglichen Kirchgängern zählte''«</span><ref>Uwe SCHULTZ ''':''' ‚''<span style="font-family: Times;"><big>Immanuel Kant</big></span>''‘, Rowohlt Monographie 50659, Seite 12</ref>, hat sich hier, im Bezug auf GOTT, geirrt. <span style="color:#4C58FF">„Theologie“</span>, als Wissenschaft von GOTT, war für KANT nie eine ernstzunehmende Option. Die <span style="color:#4C58FF">„Theologie“</span>, als Wissenschaft von GOTT, die natürlich immer auch verbunden sein muss mit der täglichen ,Erfahrung‘ einer Glaubens-Praxis, im Gebet und in den Gottesdienst-Feiern des <span style="color:#4C58FF">„Theologen“</span>, und die daraus entsteht, ist eine ziemlich ,ausgereifte‘ Disziplin. Es haben sich, durch Jahrhunderte hindurch, viele gläubige und auch gescheite Menschen, schon im Judentum, und dann im Christentum, und ebenfalls im Islam, darum bemüht.)</span> :: <span style="color:#FF6000">»</span>''Darum ist dieser Grad von Größe und Vollkommenheit oder auch diese Vollkommenheit, welche im ‚Dasein‘ besteht, in diesem höchsten, durchaus großen, ganz vollkommenen Wesen, denn sonst würde ihm ein Grad fehlen, was gegen seine Definition wäre. Und folglich ist dies höchste Wesen ‚da‘. Die Scholastiker, ohne selbst ihren'' <span style="font-family: Times;"><big>doctor angelicus</big></span> <span style="color:#00B000">[ := THOMAS von Aquin ]</span> ''auszunehmen, haben diesen Beweis verachtet'', <span style="color:#00B000">[ wie später auch Immanuel KANT ]</span>, ''und ihn als einen Paralogismus'' <span style="color:#00B000">[ := Fehlschluss ]</span> ''betrachtet, worin sie sehr unrecht gehabt haben; und DESCARTES, welcher die scholastische Philosophie im Kolleg der Jesuiten zu La Flèche lange genug studiert hatte, hat sehr recht gehabt, ihn wieder zu Ehren zu bringen. Es ist nicht ein Paralogismus, sondern ein unvollständiger Beweis'', <span style="color:#00B000">[ den GÖDEL vervollständigt hat ]</span>, ''der etwas voraussetzt, was man noch hätte beweisen sollen, um ihm mathematische Evidenz zu verleihen — nämlich, dass man dabei stillschweigend voraussetzt, diese Vorstellung des durchaus großen oder durchaus vollkommenen Wesens sei möglich und enthalte keinen Widerspruch'' <span style="color:#00B000">[ '''::''' <span style="color:#4C58FF">— '''◇''' —</span> '''::''' ,möglich‘, ,konsistent‘, ,denkbar‘; GÖDEL beweist im 1. Beweisgang aus Theorem-1 ''':''' <span style="color:#4C58FF">— ‚'''PX→◇∃xXx'''‘ —</span>, <span style="color:#FF6000">»''positive Eigenschaften'', <span style="color:#00B000">[ die allgemeinen Transzendentalien ]</span>, ''sind widerspruchsfrei''«</span>, mit Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, folgt Korollar-1 ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span>, <span style="color:#FF6000">»''GOTT ist widerspruchsfrei möglich''«</span> ]</span>. ''Und es ist schon etwas, dass man durch diese Bemerkung beweist ''':''' gesetzt, dass GOTT'' <span style="color:#00B000">['' <span style="color:#FF6000">»widerspruchsfrei«</span> '']</span> '',möglich‘ ist, so ‚ist‘ er'' <span style="color:#00B000">[ ,notwendig‘ '''::''' <span style="color:#4C58FF">— '''□''' —</span> '''::''' für jede mögliche Welt auch wirklich aus sich ‚da‘ ]</span>, ''was das Privilegium der Gottheit allein ist'' ''':''' <span style="color:#00B000">[ Im 3. Beweisgang, Theorem-3 ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx→□∃xGx'''‘ —</span> ''':''' ‚ANSELMS Prinzip‘ ''':''' <span style="color:#FF6000">»''Weil GOTT widerspruchsfrei ,möglich‘ ist, darum ist auch der Glaube widerspruchsfrei, der annimmt, dass GOTT aus sich ,notwendig‘ da ist''«</span>; mit Korollar-3 ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx ∧ □∀y(Gy→x=y)'''‘ —</span>, <span style="color:#FF6000">»''Es gibt notwendig nur einen einzigen GOTT''«</span>. Damit ist auch der Monotheïsmus bewiesen. ]</span> ''Man hat recht, die Möglichkeit eines jeden Wesens anzunehmen und vor allem die GOTTES, bis ein anderer das Gegenteil beweist''. <span style="color:#00B000">[ Das Gegenteil besagt, dass GOTT ,unmöglich‘ ist. Hier setzt der Möglichkeitsbeweis im GÖDEL-Kalkül an, und beweist, dass diese Aussage zu einem Widerspruch führt. ]</span> ''Somit gibt dieser metaphysische Beweis schon einen moralischen zwingenden Schluss ab, wonach wir dem gegenwärtigen Stande unserer Erkenntnisse zufolge urteilen müssen, dass GOTT ‚da‘ sei, und demgemäß handeln.'' <span style="color:#00B000">[ Aber nicht logisch zwingend '''!''' Denn die Interpretation <span style="color:#4C58FF">— ‚'''G'''‘ —</span> mit dem GOTT der Bibel, als ,methodologische‘ Kalkül-Prämisse, ist nicht zwingend, jedoch ,modal‘ möglich, <span style="color:#4C58FF">— '''◇''' —</span>, und im christlichen Glaubenskontext sinnvoll, was mit einer stimmigen <span style="color:#4C58FF">„theologischen“</span> Interpretation des GÖDEL-Kalküls gezeigt werden kann. Damit wäre dann auch die Frage beantwortet, ob das GÖDEL-System sich plausibel als eine Theorie von GOTT und seinen Eigenschaften interpretieren lässt, bzw. als eine <span style="color:#FF6000">»''axiomatische''«</span> <span style="color:#4C58FF">„Theologie“</span>, wie sie André FUHRMANN apostrophiert. Das <span style="color:#4C58FF">— ‚'''G'''‘ —</span> ist der ,Individuumname‘ für den GOTT der Bibel, — ,GOTT‘ groß geschrieben —, im monotheïstischen, christlichen Glaubenskontext, den auch LEIBNIZ teilt. Dann steht der ,Name‘ auch synonym für das ,existierende‘ Individuum, d.h. für dessen ,Existenz‘. ]</span> ''Es wäre aber doch zu wünschen, dass gescheite Männer'' <span style="color:#00B000">[ sic ! ]</span> ''den Beweis mit der Strenge einer mathematischen Evidenz vollendeten'', <span style="color:#00B000">[ was GÖDEL veranlasst hat, seine Version eines ‚ontologischen Beweises’ zu kreieren, dessen <span style="color:#FF6000">»''mathematische Evidenz''«</span> man heute mit Computerprogrammen<ref>siehe Fußnote 12</ref> schon nachgewiesen hat ]</span> ... <span style="color:#FF6000">«</span>. Für GÖDEL war dieser Text eine intellektuelle Herausforderung, und er hat sie angenommen. Das war für GÖDEL sicher keine Glaubensangelegenheit. GOTT hat es ja auch nicht nötig, ‚bewiesen‘ zu werden. Wer <span style="color:#4C58FF">— ‚'''G'''‘ —</span> z. B. mit dem sog. ‚Urknall‘ gleich setzt, macht die <span style="color:#FF6000">»''zufällige Struktur der Welt''«</span> im ‚Urknall‘, <span style="color:#00B000">(pantheistisch)</span> zu einem ,Gott‘, was GÖDEL dezidiert für sein Kalkül ausgeschlossen haben wollte. Kurt GÖDEL schreibt 1961 in einem Brief, in Anlehnung an den obigen Text ''':''' ::<span style="color:#FF6000">»...''ich glaube, schon heute dürfte es möglich sein, rein verstandesmäßig ''<span style="color:#00B000">[ sic '''!''' ]</span>, ''(ohne sich auf den Glauben an irgendeine Religion zu stützen) einzusehen, dass die theologische Weltanschauung'', <span style="color:#00B000">[ dass es GOTT gibt ]</span>, ''mit allen bekannten Tatsachen'', <span style="color:#00B000">[ z. B. mit den Maßstäben einer modernen Logik ]</span>, ''durchaus vereinbar ist. Das hat schon vor 250 Jahren der berühmte Philosoph und Mathematiker LEIBNIZ versucht''.«</span><ref>Zitiert nach SCHIMANOVICH-GALIDESCU, M.-E. ''':''' ‚''<span style="font-family: Times;"><big>Princeton–Wien 1946–1966. Briefe an die Mutter</big></span>''‘, in ‚''<span style="font-family: Times;"><big>Kurt Gödel – Leben und Werk</big></span>''‘, Hg. B.BULDT et alia, Wien (HÖLDER–PICHLER–TEMSKY), 2001, Band 1</ref> ===<div class="center"><span style="color:#660066">Die Interpretation des Kalküls</span></div>=== Wenn man sich das GÖDEL-Kalkül ansieht, wie es heute formalisiert vorliegt, stellt sich die Frage ''':''' <span style="color:#FF6000">„Lässt sich dieses System plausibel als eine Theorie von GOTT <span style="color:#00B000">(als eine ‚Rede von GOTT’ := <span style="color:#4C58FF">,Theologie’</span>)</span> und seiner Eigenschaften verstehen '''?''' “ — „Ist hier eine genuin <span style="color:#4C58FF">,theologische’</span> Interpretation möglich '''?''' “</span> Seine Herkunft aus der intellektuellen Auseinandersetzung des Logikers GÖDEL mit dem GOTT-gläubigen Philosophen LEIBNIZ und dem christlichen Theologen und Erzbischof ANSELM rechtfertigt diese Frage. Die <span style="color:#FF6000">„mathematische Evidenz“</span> des GÖDEL-Formalismus, <span style="color:#00B000">(im Anhang nachgestellt)</span>, ist allgemein anerkannt, <span style="color:#00B000">(Vorbehalte dagegen gibt es nur bei der Interpretation seiner Syntax, d.h. ob die Axiome und Definitionen, wie GÖDEL sie konzipiert hat, bzw. ob die Theoreme und Korollare, die aus diesen Axiomen ,regulär’ (├ ) abgeleitet werden, auch in unserer realen Welt ,wahr’ und ,annehmbar’ sind)</span>. Die <span style="color:#FF6000">„theologische Evidenz“</span> des GÖDEL-Systems wird durch eine ,Verankerung’ der Axiome und Definitionen in den <span style="color:#4C58FF">,theologisch’</span>-philosophischen Diskurs über GOTT evaluiert, der schon seit zweieinhalbtausend Jahren läuft. In diesen zweieinhalbtausend Jahren hat sich, — gegen ARISTOTELES und die antike Philosophie —, die Erkenntnis durchgesetzt, dass GOTT <span style="color:#FF6000">»''unabhängig''«</span> von der <span style="color:#FF6000">»''zufälligen''«</span> Raum-Zeit-Struktur unserer vergänglichen Welt ist. In meiner Darstellung des GÖDEL-Kalküls folge ich, <span style="color:#00B000">(im Unterschied zum Autographen GÖDELS, vom 10. Feb 1970)</span>, in der Axiom-Formulierung und -Nummerierung, in der Syntax, und in der Beweis-Struktur, der Arbeit von André FUHRMANN ''':''' ''<span style="font-family: Times;"><big>‚Existenz und Notwendigkeit. Kurt Gödels axiomatische Theologie‘</big></span>'' in ''<span style="font-family: Times;"><big>‚Logik in der Philosophie‘</big></span>'' Hg. SCHROEDER-HEISTER, SPOHN und OLSSON, 2005, Synchron, Heidelberg, Seite 349–374. <span style="color:#00B000">(Die tiefer gestellte Notation der spezifischen ,Eigenschaft‘ einer Eigenschaft ist meine Ergänzung zur formalen Syntax, z. B. ''':''' <span style="color:#4C58FF"> — ‚'''G'''<sub>ess</sub>'''x'''‘ — </span>, angeregt durch die indizierende Schreibweise GÖDELS ''':''' <span style="color:#4C58FF">— ,'''G''' Ess. '''x'''’ —</span>.)</span> Die Erkenntnisse zur Straffung und Präzisierung der GÖDEL-Syntax, <span style="color:#00B000">(besonders im Möglichkeitsbeweis)</span>, stammen aus der Arbeit von Günther J. WIRSCHING ''':''' ,''<span style="font-family: Times;"><big>Der Gödelsche Gottesbeweis</big></span>''‘, im Web <ref>https://edoc.ku.de/id/eprint/10243/1/OntBw.pdf</ref>. <span style="color:#00B000">(Auch der Hinweis auf AVICENNA kommt von WIRSCHING.)</span> Die Zitate von THOMAS von Aquin´s Stellungnahme zum Theorem ANSELMS, und von Georg Wilhelm Friedrich HEGEL zur Immanuel KANTS Ablehnung des Theorem ANSELMS, befinden sich in Franz SCHUPP, ,<span style="font-family: Times;"><big>''Geschichte der Philosophie im Überblick''</big></span>‘, Band 2 ‚<span style="font-family: Times;"><big>''Christliche Antike, Mittelalter''</big></span>‘, Hamburg 2003, Seite 168 und Seite 170. Meines Erachtens ist der entscheidende Ansatzpunkt einer <span style="color:#4C58FF">„theologischen“</span> Interpretation das GÖDEL-Axiom-5 ''':''' <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub>‘ —</span>, <span style="color:#FF6000">»''notwendige Existenz ist eine positive Eigenschaft''«</span>. ‚Frei‘ nach KANT ‚formuliere‘ ich ‚kurz‘ ''':''' <span style="color:#FF6000">„Existenz ist keine Eigenschaft“</span>. Hier die Positionen KANTS zum Thema ‚Existenz‘ und ‚Eigenschaften‘ ''':''' ::<span style="color:#FF6000">»</span>''… unbeschadet der wirklichen Existenz äußerer Dinge'', <span style="color:#00B000">[ kann man ]</span> ''von einer Menge ihrer Prädikate'', <span style="color:#00B000">[ d.h. Eigenschaften ],</span> ''sagen'' … ''':''' ''sie gehöreten nicht zu diesen ‚Dingen an sich selbst‘, sondern nur zu ihren Erscheinungen, und hätten außer unserer Vorstellung'' <span style="color:#00B000">[ ihrer, als ,wirklich‘ gedachten Erscheinung, ]</span> ''keine eigene Existenz, … weil ich finde, dass … '''alle Eigenschaften, die die Anschauung eines Körpers ausmachen''', bloß zu seiner Erscheinung gehören; denn die Existenz des Dinges, was erscheint, wird dadurch nicht … aufgehoben, sondern nur gezeigt, dass wir es'', <span style="color:#00B000">[ das Ding ]</span>, ''wie es ‚an sich selbst‘ sei'', <span style="color:#00B000">[ d.h. existiert ]</span>, ''durch Sinne gar nicht erkennen können''.<span style="color:#FF6000">«</span><ref>vgl. ‚''<span style="font-family: Times;"><big>Prolegomena zu einer jeden künftigen Metaphysik, die als Wissenschaft wird auftreten können</big></span>''‘, Seite 289; https://www.korpora.org/kant/aa04/289.html</ref> <span style="color:#00B000"><small>(Hervorhebung durch KANT.)</small> [ Seine Prädikate, d.h. Eigenschaften, jedoch können wir mit unseren Sinnen ,anschauen‘, aber nur in Kombination mit unserer Vorstellung ihrer, als ,wirklich‘ gedachten Erscheinung, vermittelt durch den sog. ,transzendentalen Schematismus‘ unserer Einbildungskraft ''':'''</span> <span style="color:#FF6000">»</span>''Eine verborgene Kunst in den Tiefen der menschlichen Seele''<span style="color:#FF6000">«</span>, <span style="color:#00B000">jedoch auch eines der ,dunkelsten‘ Kapitel in der K.d.r.V., bedingt durch KANTS Konzept von ,Wirklichkeit‘, bzw. ,Sein‘. ]</span> Mit anderen Worten, man kann die ‚Existenz‘, bzw. das ‚Sein‘ der Dinge, <span style="color:#00B000">(das ‚Ding an sich’ bei KANT)</span>, nicht unter dem Mikroskop finden. Die ‚Existenz‘ bzw. das ‚Sein‘ ist keine sinnlich registrierbare ‚Eigenschaft‘ z. B. des rekonstruierten ‚Stadt-Schlosses‘ in Berlin. <span style="color:#00B000">(‚Sein‘ ist kein reales ‚Prädikat‘.)</span> Dafür haben wir andere Fähigkeiten ''':''' Ich kann seine ‚Existenz‘ mit meinem Verstand einsehen, weil auch ich selbst ‚existiere‘. Seine ‚Ansicht‘, wie ‚gefällig‘ es ist, und auch weitere ‚Eigenschaften‘, die mir auffallen, kann ich mit einem Handy-Foto dokumentieren. Diese ‚Eigenschaften‘ sind nicht die Ursache, dass das ‚Berliner Schloss‘ existiert. Wohl aber die Rekonstruktion dieses Schlosses ist die ‚Ursache‘, dass es ,existiert‘, und jetzt so aussieht. Insofern ist ‚Existenz‘ keine ‚Eigenschaft‘, sondern die ‚Existenz‘ des Dinges ist die Voraussetzung, der ‚Grund‘, dass ich die ‚Eigenschaften‘ des Dinges mit meinen Sinnen feststellen kann. In einer Auseinandersetzung mit CARTESIUS schreibt KANT, philosophisch ‚tiefgründig‘ und logisch ‚exakt‘, über dessen <span style="color:#FF6000"><span style="font-family: Times;"><big>„Cogito, ergo sum“</big></span></span> ''':''' ::<span style="color:#FF6000">»</span>''Das ‚Ich denke‘ ist ein empirischer Satz, und hält den Satz ‚Ich existiere‘ in sich. Ich kann aber nicht sagen ''':''' ‚Alles, was denkt, existiert‘; denn da würde die Eigenschaft des Denkens'', <span style="color:#00B000">[ eine essentielle Eigenschaft ]</span>, ''alle Wesen, die sie besitzen, zu notwendigen'' <span style="color:#00B000">[ d.h. notwendig existierenden ]</span> ''Wesen machen''. <span style="color:#00B000">[ Was allein nur von GOTT ausgesagt werden kann; mit AVICENNA, als anerkannter ARISTOTELES-Kommentator ''':''' <span style="color:#FF6000">»''GOTT ist das einzige Sein, bei dem Essenz'' <span style="color:#00B000">[ ‚Wesenseigenschaften‘ ]</span> ''und Existenz'' <span style="color:#00B000">[ ‚Dasein‘ ]</span> ''nicht zu trennen sind und das daher notwendig an sich da ist''«, <span style="color:#00B000">— konform mit GÖDEL ''':'''</span> »''notwendige Existenz ist eine positive'' <span style="color:#00B000">[ essentielle ]</span> ''Eigenschaft''«</span> ].</span> ''Daher kann meine Existenz auch nicht aus dem Satz, ‚Ich denke‘, als'' <span style="color:#00B000">[ logisch ]</span> ''gefolgert angesehen werden, wie CARTESIUS dafür hielt (weil sonst der Obersatz : ‚Alles, was denkt, existiert‘, vorausgehen müsste), sondern ist mit ihm identisch.'' <span style="color:#00B000">[ Eine einfache Schlussfolgerung ''':''' meine ‚Existenz‘ ist auch nicht von meiner ‚Eigenschaft‘ Denken ‚verursacht‘. ,Existenz‘ ist nicht bloß ein ,Gedanke‘ von mir. ]</span><span style="color:#FF6000">«</span> <span style="color:#00B000">(Aus der Anmerkung 41 zu den ‚''<span style="font-family: Times;"><big>Paralogismen der reinen Vernunft</big></span>''‘, in ‚''<span style="font-family: Times;"><big>Kritik der reinen Vernunft</big></span>''‘, Seite 275,<ref>https://korpora.org/kant/aa03/275.html</ref> mit meinem Einschub des AVICENNA-Zitat aus Wikipedia.<ref>{{w|Avicenna#Metaphysik}}</ref>)</span> Mit anderen Worten ''':''' <span style="color:#FF6000">„Die Eigenschaft, dass ich denken kann, ist nicht die Ursache meiner ‚Existenz‘“</span>, sondern, <span style="color:#FF6000">„Die Liebe meiner Eltern und ihre Entscheidung füreinander ist die Ursache meiner ‚Existenz‘. Daher ‚bin’ ich. Und weil ich ein Mensch ‚bin‘, kann ich denken.“</span> Auch mit diesen Anmerkungen ist leicht einsehbar, dass ‚Existenz‘ keine ‚Eigenschaft‘ ist — außer bei GOTT. In GOTT ist ‚Dasein‘ die ‚Wesenseigenschaft‘ GOTTES, d.h. ‚Dasein‘ und ‚Wesen‘ sind in GOTT untrennbar verbunden; sind <span style="color:#FF6000">„koinzident“</span> ‚eins‘. Das ist die Einzigartigkeit im Wesen GOTTES, dass GOTT immer schon ‚da‘ ist. Die Frage nach dem ‚Wesen‘ GOTTES lautet ''':''' <span style="color:#FF6000">„Was bist du ? “</span>/<span style="color:#CC66FF">„Wer bist Du ? “</span> Antwort, Exodus 3,14 ''':''' <span style="color:#CC66FF">»''Ich bin der ‚Ich-Bin-Da‘'' <span style="color:#00B000">[ für euch und für immer ]</span>«.</span> Weil GOTT für uns immer schon ‚da‘ ist, — <span style="color:#CC66FF">„von Ewigkeit zu Ewigkeit“</span> —, hat GOTT es nicht nötig, ‚bewiesen‘ zu werden. <span style="color:#00B000">(In der Mathematik ist ein ‚Satz‘ erst dann ‚wahr‘ und ‚existent‘, wenn er bewiesen ist. Bei GOTT ist es jedoch nicht so ''':''' GOTTES ‚Existenz‘ ist nicht erst dann ‚wahr‘, wenn seine ‚Existenz‘ von uns ‚bewiesen‘ ist. Sein ‚Dasein‘ ist jedem unserer ‚Beweisversuche‘ immer schon voraus. Der Zugang zu GOTT ist nicht der ,Beweis‘, sondern der ,Glaube‘. Wer an GOTT glauben ,will‘, dem antwortet GOTT. Wer nicht an GOTT glauben ,will‘, dessen Entscheidung respektiert GOTT, und drängt sich nicht auf. Die Glaubens-Entscheidung hat jedoch für jeden Menschen eine existenzielle Konsequenz ''':''' <span style="color:#CC66FF">»''Wer glaubt und sich taufen lässt, wird gerettet; wer aber nicht glaubt'', <span style="color:#00B000">[ und diese Entscheidung auch im Augenblick der ,Wahrheit‘, im Tod, in der sog. ,Endentscheidung‘, nicht widerruft ]</span>, ''wird verurteilt werden''«,</span> <small>({{Bibel | Markus Evangelium |16|16|EU}})</small>. Das Urteil lautet ''':''' <span style="color:#CC66FF">»''zweiter Tod ''':''' der Feuersee''«</span>, <small>({{Bibel | Offenbarung |20|14f|EU}})</small>, ohne Berufungsmöglichkeit. <span style="color:#CC66FF">»''Ohne Glauben aber ist es unmöglich, Gott zu gefallen; denn wer zu Gott kommen will, muss glauben, dass er ist und dass er denen, die ihn suchen, ihren Lohn geben wird''«.</span> <small>({{Bibel | Hebräer Brief |11|6|LUT}})</small>)</span> Das GÖDEL-Axiom-5 ist m.E. der entscheidende Ansatzpunkt einer stimmigen <span style="color:#4C58FF">„theologischen“</span> Interpretation der GÖDEL-Axiomatik. ===<div class="center"><span style="color:#660066">Das Kalkül ist kein Existenz-Beweis für GOTT</span></div>=== Die allgemeine <span style="color:#FF6000">»''mathematische Evidenz''«</span> des GÖDEL-Formalismus, d.h. seine ‚Schlusskraft‘, ist von kompetenten Leuten<ref>„GÖDELS Argumentationskette ist nachweisbar korrekt – so viel hat der Computer nach Ansicht der Wissenschaftler Christoph BENZMÜLLER und Bruno WOLTZENLOGEL-PALEO nun gezeigt;“ vgl. https://www.fu-berlin.de/presse/informationen/fup/2013/fup_13_308/index.html</ref> schon festgestellt worden, <span style="color:#00B000">(im Anhang ‚nachrechenbar‘ mit den Regeln und Gesetzen einer modalen Prädikatenlogik 2. Stufe)</span>. Das GÖDEL-Kalkül ist jedoch kein ‚moderner‘<span style="color:#FF6000">„Existenz-Beweis“</span> für GOTT, wofür es gehalten oder meistens bezweifelt wird, sondern setzt, <span style="color:#00B000">(theoretisch methodisch)</span>, den <span style="color:#FF6000">„Glauben an die Existenz GOTTES“</span> schon voraus, ohne ihn zu hinterfragen. Das <span style="color:#FF6000">„Dasein“</span> bzw. die <span style="color:#FF6000">„Existenz“</span> GOTTES wird mit der Definition-1 für <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, bzw. mit dem Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ — </span>, im Kalkül ‚definitorisch‘ bzw. ‚axiomatisch‘ als Kalkül-,Annahme‘, als <span style="color:#FF6000">„Prämisse“</span>, eingeführt, unter der Voraussetzung, dass die ‚Eigenschaft‘ <span style="color:#4C58FF">‚'''G'''‘ := </span><span style="color:#FF6000">„Göttlichkeit“</span> <span style="color:#00B000">(Essenz)</span> und das <span style="color:#FF6000">„Dasein GOTTES“</span>, <span style="color:#4C58FF">— ‚'''G'''‘ —</span> <span style="color:#00B000">(Existenz)</span>, ontologisch ‚identisch‘, genauer ''':''' <span style="color:#FF6000">„koinzident“</span> sind, was GÖDEL im Axiom-5 definitiv für sein System vorschreibt ''':''' <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub>‘ — </span> ''':''' <span style="color:#FF6000">»''notwendige Existenz ist eine positive Eigenschaft''«</span>. Das <span style="color:#FF6000">„Dasein GOTTES“</span> ist faktisch äquivalent zur <span style="color:#FF6000">„notwendigen Existenz als GOTT“</span>; und <span style="color:#FF6000">„Göttlichkeit“</span> ist die <span style="color:#FF6000">„positive Eigenschaft in GOTT“</span>. Beides ist nach Axiom-5 ‚identisch‘, d.h. dem ‚Sein nach‘ dasselbe, und daher konvertierbar. Beide, <span style="color:#00B000">(sowohl die Essenz, als auch die Existenz GOTTES)</span>, werden daher auch mit demselben Term ''':''' <span style="color:#4C58FF">— ‚'''G'''‘ —</span> im Kalkül dargestellt. Der traditionelle, christliche ,GOTT-Glaube‘ wird zugleich mit diesem Term <span style="color:#4C58FF">‚'''G'''‘ := </span> <span style="color:#FF6000">„GOTT“ <span style="color:#00B000">|</span> „göttlich“</span>, im 2. Beweisgang, dem Basisbeweis, und im 3. Beweisgang für das Theorem ANSELMS, jeweils als ,methodologische‘ Prämisse :01: <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span> regulär <span style="color:#00B000">( ├ )</span> und explizit eingeführt ''':''' <span style="color:#FF6000">»''Das'' <span style="color:#4C58FF">,'''x'''‘</span> ''steht für den GOTT'' <span style="color:#4C58FF">‚'''G'''‘</span> ''der Christen''«</span>. Das ist die ,modal‘-frei gewählte, <span style="color:#4C58FF">„theologische“</span> Kalkül-,Annahme‘, <span style="color:#00B000">(als ,Argument-Einführung‘ := <span style="color:#4C58FF">‚'''AE:'''‘</span> )</span>, und wird dann mit Definition-1 näher ,bestimmt‘ ''':''' <span style="color:#4C58FF">— ‚'''Gx↔∀X(PX→Xx)'''‘ — </span> ''':''' <span style="color:#FF6000"> »''Das'' <span style="color:#4C58FF">,'''x'''‘</span> ''steht genau dann für ‚GOTT‘'' <span style="color:#00B000">|</span> ''‚göttlich‘'', <span style="color:#4C58FF">‚'''G'''‘</span>, ''wenn'' <span style="color:#4C58FF">,'''x'''‘</span> ''alle positiven Eigenschaften, bzw. Vollkommenheiten'', <span style="color:#4C58FF">‚'''PX'''‘</span>, ''hat''«</span>, entsprechend dem ‚Quelltext‘ bei LEIBNIZ. <span style="color:#00B000">(Das ,postulierte‘ Axiom-3 ''':''' <span style="color:#4C58FF"> — ‚'''PG'''‘ —</span>, wird standardmäßig gelesen als <span style="color:#FF6000">»''Göttlichkeit ist eine positive Eigenschaft''«</span>, hat aber auch die alternative Leseart ''':''' <span style="color:#FF6000">»''GOTT ist perfekt d.h. vollkommen''«</span>, was <span style="color:#4C58FF">„theologisch“</span> auch richtig ist; mit <span style="color:#4C58FF">‚'''P'''‘ </span> := <span style="color:#FF6000">„Perfektion“/„Vollkommenheit“</span> ist dann die Summe aller <span style="color:#FF6000">„positiven Eigenschaften“</span>.)</span> Mit Axiom-3, — in dieser <span style="color:#4C58FF">„theologischen“</span> Leseart —, ist der ‚Wenn-Satz‘ in Definition-1 ‚aufgelöst‘ ''':''' <span style="color:#FF6000">»''GOTT hat alle positiven Eigenschaften, weil er ‚perfekt‘ ist''«</span>. In Definition-3 ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x ↔ ∀X(X'''<sub>ess</sub>'''x →□∃yXy)'''‘ —</span>, wird die ,für uns‘ <span style="color:#FF6000">„notwendige Existenz“</span> ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>‘ —, </span> durch die ,aus sich‘ <span style="color:#FF6000">„notwendig“</span> <span style="color:#4C58FF">— '''□''' —</span> instanziierten <span style="color:#FF6000">„Wesenseigenschaften“</span>, <span style="color:#4C58FF">— ‚'''X'''<sub>ess</sub>‘ —</span>, <span style="color:#00B000">(als zu den Transzendentalia gehörig)</span>, bestimmt. Das GÖDEL-Kalkül setzt sowohl in Definition-3 als auch im Axiom-5 das Theorem des ARISTOTELES von der ontologischen ‚Identität‘, d.i. die Koinzidenz von <span style="color:#FF6000">„Dasein“</span>, <span style="color:#00B000">(Existenz)</span> und <span style="color:#FF6000">„Wesenseigenschaften“</span>, <span style="color:#00B000">(Essenz)</span> im prinzipiell <span style="color:#FF6000">„unbewegten Erstbewegenden“</span> voraus. Ohne diese Annahme bzw. ohne Axiom-5, würde das GÖDEL-Kalkül nicht ‚funktionieren‘. Das GÖDEL-Theorem-2.1 ''':''' <span style="color:#4C58FF">— ‚'''Gx→G'''<sub>ess</sub>'''x'''‘ —</span>, kann unter dieser Voraussetzung dann, <span style="color:#4C58FF">„theologisch“</span> richtig und eindeutig, so gelesen werden ''':''' <span style="color:#FF6000">»''Wenn'' <span style="color:#4C58FF">‚'''x'''‘</span> ''für GOTT'', <span style="color:#4C58FF">‚'''G'''‘</span>, ''als Individuum steht, dann ist GOTT-Sein'', <span style="color:#4C58FF">‚'''G'''‘</span>, <span style="color:#00B000">(,Existenz‘)</span>, ''das Wesen'', <span style="color:#4C58FF">—<sub>ess</sub>—, </span> <span style="color:#00B000">(,Essenz‘)</span>, ''GOTTES'' <span style="color:#4C58FF">‚'''x'''‘</span>«</span><ref>vgl. z.B. THOMAS von Aquin ''':''' ,''<span style="font-family: Times;"><big>De Ente et Essentia</big></span>''’, Kapitel 5 ''':''' „Deus, cuius essentia est ipsummet suum esse“ ''':''' „GOTT, dessen Wesen sein eigenes Sein ist“.</ref>, statt der <span style="color:#4C58FF">„theologisch“</span> unrichtigen Lesearten in der Wikipedia ''':''' <span style="color:#FF6000">»''Göttlich ist eine essentielle Eigenschaft jedes göttlichen Wesens''«</span><ref>{{w|Gottesbeweis#Kurt_Gödel|Gottesbeweis 2.1.2, Theorem 2}}; Version vom 10.09.2025</ref>, oder bei Christoph BENZMÜLLER et alia, im sog. ,Theorembeweiser‘ ''':''' <span style="color:#FF6000">»''Gottähnlich zu sein ist eine Essenz von jeder gottähnlichen Entität''«</span><ref>[https://www.fu-berlin.de/presse/informationen/fup/2013/fup_13_308/index.html ‚Gödels „Gottesbeweis“ bestätigt’, Theorem 2]</ref>, mit der suggestiven Annahme, es gäbe polytheïstisch, mehrere ,göttliche Wesen‘, bzw. ,gottähnliche Entitäten‘, was der monotheïstischen, abendländischen Tradition, bzw. dem <span style="color:#4C58FF">„theologischen“</span> Theorem von der ,Unvergleichlichkeit‘ und ,Einzigartigkeit‘ GOTTES widerspricht, das im GÖDEL-Kalkül mit Korollar-3 bestätigt wird. <span style="color:#00B000">(Die Interpretation <span style="color:#4C58FF">‚'''G'''‘ :=</span> <span style="color:#FF6000">„GOTT“</span>, als ,Individuumname‘, ist synonym zum <span style="color:#FF6000">„Dasein <span style="color:#00B000">(Existenz)</span> GOTTES“</span>, und äquivalent zur ‚positiven Eigenschaft‘ <span style="color:#FF6000">„Göttlichkeit“</span>, alias <span style="color:#FF6000">„göttlich zu sein“</span> = <span style="color:#FF6000">„GOTT zu sein“</span> = <span style="color:#FF6000">„GOTT-Sein“</span>; und mit dem GÖDEL-Term ''':''' <span style="color:#4C58FF">‚'''G'''<sub>ess</sub>‘ :=</span> <span style="color:#FF6000">„das Wesen <span style="color:#00B000">(Essenz)</span> GOTTES“</span>.)</span> <div class="center"><span style="color:#FF6000"><span style="color:#4C58FF">‚'''G'''‘ :=</span> „'''G'''öttlichkeit“ <span style="color:#4C58FF">↔</span> „'''G'''OTT“ <span style="color:#4C58FF">↔</span> „'''G'''OTT-Sein“</span> </div> Die Rechtfertigung für diese <span style="color:#4C58FF">„theologische“</span> Dreifach-Äquivalenz für <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, im GÖDEL-Kalkül, gibt Axiom-5 ''':''' <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub>‘ — </span> ''':''' <span style="color:#FF6000">»''die positive <u>Eigenschaft</u>'', <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, ''Göttlichkeit'', <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, ''äquivalent zu GOTT als Individuum-Name'', <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, ''ist auch äquivalent zum Dasein GOTTES'', <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, ''gleichbedeutend mit notwendiger <u>Existenz</u>'', <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>‘ —</span>'', dem <u>Sein</u> GOTTES für uns''«</span>. Hier hat GÖDEL explizit <span style="color:#FF6000">„Eigenschaft“</span> mit <span style="color:#FF6000">„Existenz“</span> bzw. <span style="color:#FF6000">„Sein“</span> gleichgesetzt; <span style="color:#00B000">(was jedoch nach KANT für alles, was in unserer Welt ‚existiert‘, bzw. für alles, was zur <span style="color:#FF6000">»''zufälligen Struktur der Welt''«</span> gehört, wie GÖDEL selbst sagt, in jedem Fall ‚unstatthaft‘ ist ''':''' <span style="color:#FF6000">„Existenz ist keine Eigenschaft“</span>, bzw. <span style="color:#FF6000">»''Sein ist kein reales Prädikat''«</span>)</span>. Jedoch wegen dieser ‚Gleichsetzung‘, die einzig und allein, der aristotelisch-<span style="color:#4C58FF">,theologischen‘</span> Tradition entsprechend, singulär nur in GOTT ‚statthaft‘ ist, kann jetzt die ‚positive Eigenschaft‘ <span style="color:#00B000">(Essenz)</span> <span style="color:#FF6000">„Göttlichkeit“</span> <span style="color:#00B000">(ontologisch korrekt)</span> gelesen werden als <span style="color:#FF6000">„das, was GOTT zu dem macht, ‚was‘ GOTT an sich selbst ist“</span>, nämlich zu seinem <span style="color:#FF6000">„GOTT-Sein“</span> <span style="color:#00B000">(Existenz)</span>, zu seinem <span style="color:#FF6000">„Dasein als GOTT“</span>; zur Tatsache, dass <span style="color:#FF6000">„GOTT GOTT ist“</span>, d.h. dass <span style="color:#FF6000">„GOTT als GOTT ‚da‘ ist“</span>. Das ist, <span style="color:#00B000">(und da folgt ARISTOTELES seinem Lehrer PLATO)</span>, nach traditioneller Auslegung, die übliche, ontologische Funktion des ‚Wesens‘<span style="color:#00B000"> | <span style="color:#FF6000">„<span style="font-family: Times;"><big>οὐσία</big></span>“</span> | ‚ousía‘ |</span> eines Seienden ''':''' es ‚macht‘ das Seiende zu dem, ‚was‘ es ist; es ist die ‚Ursache‘ dafür, dass das Seiende, das ‚ist‘, ‚was‘ es ist | ‚Was-Sein‘ — ‚Wesen‘. <span style="color:#00B000">(ARISTOTELES lokalisiert jedoch das ,Wesen‘ im Seienden, im Gegensatz zu PLATO, der das ,Wesen‘, — ,getrennt‘ vom Seienden —, in den allgemeinen ,Ideen‘ lokalisiert.)</span> Da aber in ‚Gott‘, <span style="color:#00B000">(dem <span style="color:#FF6000">„unbewegten, ‚unverursachten‘ Erstbeweger“</span>)</span>, Prozesshaftes, ‚Ursächliches‘ auszuschließen ist, ist die übliche prozesshafte, ‚ursächliche‘ Funktion von <span style="color:#FF6000">„<span style="font-family: Times;"><big>οὐσία</big></span>“</span><span style="color:#00B000"> | ‚ousía‘ |</span> ,Wesen‘ im <span style="color:#FF6000">„Erstbewegenden“</span> nach ARISTOTELES, sozusagen, schon ‚zum Abschluss‘ gekommen, schon ‚verwirklicht‘, — <span style="color:#FF6000">„<span style="font-family: Times;"><big>ἐν-έργεια οὖσα</big></span>“</span><span style="color:#00B000"> | ‚en-érgeia oúsa‘</span> —, schon ‚ins-Werk‘ gesetzt; <span style="color:#00B000">(<span style="color:#FF6000">„<span style="font-family: Times;"><big>τὸ ἔργον</big></span>“</span> | ‚to érgon‘ | ‚das Werk‘; <span style="color:#FF6000">„<span style="font-family: Times;"><big>ἐνέργεια</big></span>“</span> | ‚enérgeia‘ | ,Wirksamkeit‘, ,Wirklichkeit‘, ,Aktualität‘, ,Energie‘; und <span style="color:#FF6000">„<span style="font-family: Times;"><big>οὖσα</big></span>“</span> | ,oúsa‘ | feminin Nominativ Singular von <span style="color:#FF6000">„<span style="font-family: Times;"><big>ὤν</big></span>“</span> | ‚ón‘ | ‚seiend‘)</span>. Sein ,Wesen‘ ist im ,Dasein‘ vollendet, ist ,wirkliches, verwirklichendes Sein‘, ‚seiende Aktualität‘, <span style="color:#FF6000">„<span style="font-family: Times;"><big>actus purus</big></span>“</span> ''':''' sein Wesen ist ‚reine Tätigkeit‘, ,reine verwirklichende Gegenwärtigkeit‘, d.h. ,existent‘, ohne jede prozesshafte ‚Potenzialität‘. Aus der wichtigen und richtigen Erkenntnis, dass GOTT <span style="color:#FF6000">»''unabhängig von der zufälligen'' <span style="color:#00B000">[ Raum-Zeit-]</span>''Struktur unserer Welt''«</span> ist, folgt mit der ontologischen Identität von ,Dasein‘ und ,Wesen‘ in GOTT ''':''' Der zeitlos ewige GOTT ist <span style="color:#FF6000">»''notwendig aus sich'' <span style="color:#00B000">(von Natur aus)</span> ''immer schon da''«</span>, m.a.W. ist <span style="color:#FF6000">„zeitlos-ursprungslos“</span>. Insofern ist <span style="color:#FF6000">„Göttlichkeit“</span> die <span style="color:#FF6000">„Wesenseigenschaft“</span>, die im <span style="color:#FF6000">„Dasein GOTTES“</span> d.h. in <span style="color:#FF6000">„GOTT“</span>, schon ihr ‚Ziel‘, ihre Vollendung, — <span style="color:#FF6000">„Perfektion“</span>, Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, erreicht hat. GOTT ist <span style="color:#FF6000">»''vollkommen''«</span> und darum auch <span style="color:#FF6000">»''notwendig für uns immer schon ‚da‘''«</span> ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x'''‘ — </span>. GOTT ist in seinem ‚zeitlosen Wesen‘ <span style="color:#FF6000">„unverursacht“</span>, da er <span style="color:#FF6000">»''notwendig aus sich'' <span style="color:#00B000">(von Natur aus)</span> ''vollkommen''«</span> ist ''':''' <span style="color:#4C58FF">— ‚'''□PG'''‘ —</span>, <span style="color:#00B000">(eine Instanz von Axiom-4)</span>. <span style="color:#FF6000">„Vollkommenheit“</span>, <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, ist die <span style="color:#FF6000">„Wesenseigenschaft“</span>, bzw. das <span style="color:#FF6000">„Wesen GOTTES“</span> ''':''' <span style="color:#4C58FF"> — ‚'''G'''<sub>ess</sub>‘ —</span>. <span style="color:#FF6000">»''GOTT ist ,der‘ Vollkommenste''«</span> ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, d.h. <span style="color:#4C58FF">— ‚'''G'''‘ —</span> ''':''' <span style="color:#FF6000">»''GOTT ist die unbegrenzte Summe der unendlichen Vollkommenheiten''«</span>. Und zur absoluten <span style="color:#FF6000">„Vollkommenheit“</span> gehört <span style="color:#FF6000">„notwendig“</span> auch das <span style="color:#FF6000">„Existieren“</span> ''':''' <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub>‘ — </span>. <span style="color:#FF6000">„Notwendige Existenz“</span> gehört zu den ,ultimativen‘ Transzendentalia in GOTT, was GÖDEL mit Definition-3 ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x ↔ ∀X(X'''<sub>ess</sub>'''x →□∃yXy)'''‘ —</span>, syntaktisch formalisiert hat, wenn sowohl das <span style="color:#4C58FF">— ‚'''x'''‘ —</span>, als auch alle <span style="color:#4C58FF">— ‚'''∀y'''‘ —</span> im Kalkül, für den Dreifaltigen GOTT der Christen stehen, was dann im Korollar-3, mit der Identität, <span style="color:#4C58FF">— ‚'''x=y'''‘ —</span>, bzw. der Koinzidenz beider Individuum-Variablen, explizit gezeigt wird. Entscheidend für diese Interpretation des GÖDEL-Systems ist ''':''' nur unter der ,modal‘ notwendigen Voraussetzung der ontologischen ‚Identität‘ von <span style="color:#FF6000">„Sein“</span> und <span style="color:#FF6000">„Wesen“</span> in GOTT, Theorem-2 ''':''' <span style="color:#4C58FF"> — '''Gx↔G'''<sub>ess</sub>'''x'''‘ —</span>, bzw. der ‚Gleichsetzung‘, <span style="color:#00B000">(Koinzidenz)</span>, von <span style="color:#FF6000">„notwendiger Existenz“</span> mit den ‚positiven‘ Wesenseigenschaften, der <span style="color:#FF6000">„Essenz“</span> in GOTT, Axiom-5 ''':''' <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub>‘ —</span>, ‚funktioniert‘ die GÖDEL-Axiomatik '''!''' Diese ‚Identität‘, bzw. ,Koinzidenz‘ wird in ARISTOTELES, ‚''<span style="font-family: Times;"><big>Metaphysik</big></span>''‘, Buch XII 7, in einem Indizienbeweis erbracht, der mit der Methode der philosophischen Induktion zum Ergebnis kommt ''':''' ::<span style="color:#FF6000">» … ''es muss'' <span style="color:#00B000">[ notwendig ]</span> ''etwas geben, das, ohne selbst ‚bewegt‘'' <span style="color:#00B000">[ </span>''worden''<span style="color:#00B000"> ]</span> ''zu sein'', <span style="color:#00B000">[ ‚unentstanden‘ ]</span>, ''alles Übrige wie ein Geliebtes ‚bewegt‘'' <span style="color:#00B000">[ ‚entstehen lässt‘ ]</span>«</span>, das darum selbst ‚zugleich‘ <span style="color:#FF6000">„<span style="font-family: Times;"><big>αἴδιον καί οὐσία καί ἐνέργεια οὖσα</big></span>“ <span style="color:#00B000">| ,aídion kai ousía kai enérgeia oúsa‘ |</span> »<span style="color:#00B000">[ zeitlich-]</span>''ewig, sowohl <u>Wesen</u>'', <span style="color:#00B000">[ etwas Konkretes, Essentielles ]</span>, ''als auch seiende Wirksamkeit — ''<span style="color:#00B000">[ </span>„<span style="font-family: Times;"><big>actus purus</big></span>“, „reine Tätigkeit“<span style="color:#00B000"> ]</span> ''— verwirklichendes, wirkliches <u>Sein</u> ist'', <span style="color:#00B000">[ ein Existierendes, das alles Übrige ,zur Existenz‘ bringen kann ]</span> «</span>, bzw. <span style="color:#FF6000">„<span style="font-family: Times;"><big>ὀρεκτόν καί νοητόν</big></span>“ <span style="color:#00B000"> | ,orektón kai noêtón‘ | </span>»''das ersehnt und erkennbar ist''.«</span> <span style="color:#00B000">(''<span style="font-family: Times;"><big>vgl. ,Metaphysik</big></span>''‘ XII 7, 1072a,23 – 1072b,4)</span> Was <span style="color:#FF6000">»''alles Übrige''«</span> ,zur Existenz‘ bringen kann, bzw. ,verwirklichen‘ kann, ohne selbst ,entstanden‘ zu sein, muß auch selbst, als etwas Konkretes, Essentielles, immer schon ,existieren‘, bzw. ,wirklich sein‘. Die, daraus abgeleitete, und damit ,erkannte‘, ontologische ‚Identität‘, — ,Koinzidenz‘ —, von ‚Wesen‘ und ‚Sein‘, <span style="color:#00B000">(Ziel aller Sehnsucht und jedes Erkenntnisstrebens)</span>, <span style="color:#FF6000">»''ist das Privilegium der Gottheit allein''«</span> ''':''' mit Gottfried Wilhelm LEIBNIZ interpretiert, entsprechend einer adäquaten, aristotelisch-<span style="color:#4C58FF">,theologischen‘</span> Tradition. Dieses induktive, ‚ontologisch‘ a-posteriori Ergebnis aus der ‚Prinzipienforschung‘ des ARISTOTELES ist die metaphysische und logische Voraussetzung, dass GÖDEL seine Axiomatik im Kalkül des sog. ‚ontologischen Gottesbeweises‘ a-priori des ANSELM von Canterbury, und nach LEIBNIZ, deduktiv korrekt formulieren konnte; <span style="color:#00B000">(vgl. 3. Beweisgang)</span>. Angenommen, die Variable <span style="color:#4C58FF">— ‚'''x'''‘ —</span> steht für den <span style="color:#FF6000">„GOTT“</span>, <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, der Christen, <span style="color:#00B000">(siehe Anhang, Term :01: im 2. Beweisgang)</span>, dann ist, — auf Grund von diesem Beweisgang —, in unserer Welt ,wahr‘ und evident ''':''' sowohl die ‚positive Eigenschaft‘ <span style="color:#FF6000">»''Göttlichkeit''«</span>, <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, als auch das faktische <span style="color:#FF6000">»''‚Da‘-Sein'' <span style="color:#00B000">[ Existenz ]</span> ''GOTTES''«</span>, <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, ‚benennen‘, ontologisch ident, denselben Sachverhalt ''':''' nämlich das, was wir das <span style="color:#FF6000">»''Wesen'' <span style="color:#00B000">[ Essenz ]</span> ''GOTTES''«</span>, <span style="color:#4C58FF"> — ‚'''G'''<sub>ess</sub>‘ —</span>, nennen. <span style="color:#FF6000">»''Göttlichkeit'', bzw. ''GOTT-‚Sein‘ ist das Wesen GOTTES''«</span>, <span style="color:#00B000">(Theorem-2.1)</span>, und dann umgedreht und äquivalent ''':''' <span style="color:#FF6000">»''Das Wesen GOTTES ist sein ‚Da‘-Sein als GOTT'', bzw. ''seine Göttlichkeit''«</span>, <span style="color:#00B000">(Theorem-2.2)</span>, m.a.W. ''':''' <span style="color:#FF6000">»''GOTT ist wesentlich ‚grundlos‘'' <span style="color:#00B000">[ d.h. </span> ''notwendig aus sich''<span style="color:#00B000"> ]</span> ''‚da‘''«</span>. Das ist das Einzigartige im <span style="color:#FF6000">»''Wesen GOTTES''«</span> ''':''' GOTT ist ohne zeitlichen Anfang, zeitlos-ewig, für uns immer schon ‚da‘, und das ‚ist‘ sein <span style="color:#FF6000">»''Wesen''«</span>; vorausgesetzt, ,angenommen‘, man glaubt an GOTT ''':''' Term :01:. <span style="color:#00B000">(Der schon von GÖDEL indizierte Term <span style="color:#4C58FF"> — ‚'''G'''<sub>ess</sub>‘ — </span> ,expliziert‘ nur eine der drei Lesearten, die der Term <span style="color:#4C58FF"> — ‚'''G'''‘ — „theologisch“</span> ,impliziert‘.)</span> Theorem-2 hat somit die syntaktische Form einer Definition ''':''' <div class="center"><span style="color:#4C58FF"> — ‚'''Gx↔G'''<sub>ess</sub>'''x'''‘ — </span></div> Somit kann GOTT ‚explizit‘ <span style="color:#00B000">(aus einer bewiesenen Kalkül-Definition)</span> <span style="color:#4C58FF">„theologisch“</span> genauer ‚bestimmt‘ werden ''':''' <span style="color:#FF6000">»''GOTT ist gerade deswegen GOTT, weil sein überzeitlich-ewiges und an sich ‚grundloses‘'' <span style="color:#00B000">[ aber für uns notwendiges ]</span> ''Dasein'' <span style="color:#00B000">[ Existenz ]</span> ''als GOTT, ontologisch, — dem Sein nach —, identisch ist mit seinem persönlichen und für uns liebevollen Wesen'' <span style="color:#00B000">[ Essenz ]</span> ''als GOTT; diese Identität von Dasein und Wesen gilt einzig und allein nur bei GOTT.''«</span> Die philosophische Frage nach dem <span style="color:#FF6000">„Wesen GOTTES“</span> lautet, <span style="color:#00B000">(auf die Person bezogen)</span> ''':''' <span style="color:#FF6000">„Was bist du ? “</span> Sie ist äquivalent zur <span style="color:#4C58FF">,theologisch’</span>-biblischen Frage des MOSE ''':''' <span style="color:#CC66FF">„Wer bist Du ? “</span> Die bekannte Antwort des GOTTES-JHWH aus ‚Exodus 3,14‘, im Dornbusch, thematisiert das persönliche, für uns liebevolle und für immer notwendige <span style="color:#FF6000">„Dasein GOTTES“</span> ''':''' <span style="font-family: Times;"><big>‘אֶֽהְיֶ֖ה אֲשֶׁ֣ר אֶֽהְיֶ֑ה‚</big></span> <span style="color:#00B000">| ‚eh'jeh asher eh'jeh‘ |</span> <span style="color:#CC66FF">»''Ich bin der ‚Ich-Bin-Da‘'', <span style="color:#00B000">[ für euch und für immer ]</span>«.</span> Mit diesem Zitat aus der Bibel ist die GÖDEL-Axiomatik, sozusagen, <span style="color:#4C58FF">„theologisch“</span> ‚verifiziert‘. Sie hat einerseits im Theorem-2 ihren philosophischen ‚Abschluss’ erreicht, und andererseits damit formal-syntaktisch den ‚Anschluss‘ an eine allgemeine Basis-Glaubensaussage gefunden, die ‚an sich‘ für jeden CHRIST-gläubigen Menschen ‚selbstverständlich‘ ist. Was in der Metaphysik des ARISTOTELES das Ergebnis einer philosophischen ,Induktion‘ a-posteriori ist ''':''' <span style="color:#FF6000">„,Dasein‘ ist das ,Wesen‘ GOTTES“</span>, — <span style="color:#00B000">(das mit Theorem-2, auch ein Ergebnis der deduktiven GÖDEL-Axiomatik a-priori ist ''':''' die Beweisgrundlage für den Konsequenz-Teil im Theorem AMSELMS)</span>, — das ist in der Bibel die Grundüberzeugung jedes Menschen, der an GOTT glaubt ''':''' GOTT ist für uns immer schon <span style="color:#FF6000">„da“</span>, weil er uns liebt. Das ist das, <span style="color:#FF6000">„was“</span> GOTT für uns als GOTT ausmacht, — sein Wesen ''':''' <span style="color:#CC66FF">»''Wir haben die Liebe, die GOTT zu uns hat, erkannt und gläubig angenommen. GOTT ist Liebe, und wer in der Liebe bleibt, bleibt in GOTT und GOTT bleibt in ihm''«</span>, <small>({{Bibel | 1. Johannesbrief |4|16|EU}})</small>. Das eigentliche Ergebnis der GÖDEL-Axiomatik ist somit die ‚triviale‘ Erkenntnis, dass GOTT, <span style="color:#FF6000">„unverursacht“ <span style="color:#00B000">|</span> „grundlos“</span>, für uns immer schon ‚da‘ ist, — <span style="color:#CC66FF">„von Ewigkeit zu Ewigkeit“</span> —, vorausgesetzt <span style="color:#00B000">(‚angenommen‘)</span>, man ‚glaubt‘ an den zeitlos-ewigen GOTT ''':''' <span style="color:#CC66FF">»''Ehe die Berge geboren wurden, ehe die Erde entstand und das Weltall erschaffen wurden, bist du, o GOTT, von Ewigkeit zu Ewigkeit''«</span>, <small>({{Bibel | Psalm |90|2|LUT}})</small>. <span style="color:#00B000">(Der Glaube an die Zeitlosigkeit GOTTES ist mit der ‚Annahme‘ von Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span> ''':''' <span style="color:#FF6000">»''GOTT ist perfekt''«</span>, und der ‚Annahme‘ der Definition-1 für <span style="color:#4C58FF"> ‚'''Gx'''‘ := </span> den <span style="color:#FF6000">„GOTT der Christen“</span>, im Kalkül ‚implizit‘ schon eingeführt, da die Axiome und Definitionen, — nach GÖDEL —, nur dann <span style="color:#FF6000">»''wahr''«</span> sind, wenn sie <span style="color:#FF6000">»''unabhängig von der zufälligen''</span> [ Raum-Zeit-]<span style="color:#FF6000">''Struktur''«</span> unserer Welt sind. Das ,impliziert‘ auch, dass der GOTT von Axiom-3 und Definition-1 ebenfalls <span style="color:#FF6000">»''unabhängig''«</span> von Raum und Zeit, d.h. zeitlos-ewig ist '''!''' )</span> Wer an den GOTT der Bibel glaubt, kann sich von der ‚Vernünftigkeit‘ seines Glaubens mit Hilfe des sog. ,ontologischen‘ Gottesbeweises nach ANSELM von Canterbury, mit Kurt GÖDEL <span style="color:#FF6000">»''rein verstandesmäßig''«</span>, überzeugen. <span style="color:#00B000">(Das war auch die Absicht ANSEMS '''!''' )</span> Die Annahme, es sei ‚unmöglich‘, dass es GOTT gibt ''':''' <span style="color:#4C58FF">— ‚'''¬◇∃xGx'''‘ —</span>, <span style="color:#00B000">(dezidierter Atheismus)</span>, führt im GÖDEL-Kalkül formal zu einem logischen Widerspruch; vgl. z. B. ‚''<span style="font-family: Times;"><big>Gödels Möglichkeitsbeweis</big></span>''‘, in ‚''<span style="font-family: Times;"><big>Der Gödelsche Gottesbeweis</big></span>''‘, Seite 17, von Günther J. WIRSCHING; (https://edoc.ku.de/id/eprint/10243/1/OntBw.pdf), d.h. es ist also nicht ‚unmöglich‘, dass es GOTT gibt. Der GOTT-Glaube ist mit den Maßstäben einer modernen Logik <span style="color:#FF6000">»''durchaus vereinbar''«</span> und darum ,vernünftig‘. Damit steht fest ''':''' das GÖDEL-Kalkül ist kein moderner ‚Existenz-Beweis‘ für den GOTT der Bibel, sondern es setzt, <span style="color:#FF6000">»''rein verstandesmäßig''«</span>, ,methodologisch‘, den Glauben an die Existenz eines zeitlos-ewigen GOTTES voraus, der, — <span style="color:#FF6000">»''unabhängig von der zufälligen'' <span style="color:#00B000">[ Raum-Zeit-]</span>''Struktur unserer '' <span style="color:#00B000">[ vergänglichen ]</span> ''Welt''«</span> —, für uns immer schon ‚da‘ ist. Wenn aber einmal als fix ‚angenommen‘ worden ist, <span style="color:#00B000">(als Prämisse)</span>, dass es wahr ist, dass GOTT ‚existiert‘, dann ist natürlich die ‚Annahme‘, dass GOTT ‚nicht existiert‘, falsch. Aber sie ist auch ,unlogisch‘ und ,unsinnig‘, weil die Annahme ''':''' <span style="color:#FF6000">»''Es ist unmöglich, dass es einen GOTT gibt''«</span>, offensichtlich und eindeutig zu einem Widerspruch führt; was z. B. Günther J. WIRSCHING mit seiner Version des <span style="color:#00B000">(nicht umkehrbaren)</span> ‚Möglichkeitsbeweises‘ für ,GOTT‘, explizit vorexerziert hat; <span style="color:#00B000">( nachgestellt im Anhang ''':''' GÖDELS ‚Möglichkeitsbeweis‘ als ,Widerlegung‘ eines Nicht-GOTT-Glaubens; in Entsprechung zu Psalm 14,1 und Psalm 53,2 ''':''' <span style="color:#CC66FF">»''Der'' <span style="color:#00B000">[ ,unvernünftige‘ ]</span> ''Tor sagt in seinem Herzen ''':''' Es gibt keinen Gott. Sie handeln verderbt, handeln abscheulich; da ist keiner, der Gutes tut''«</span>. Historischer Hintergrund zu diesem Psalm-Text ''':''' Die Zerstörung des Tempels in Jerusalem 586 v.Ch. durch die Truppen des NEBUKADNEZAR II.)</span> Der Logiker GÖDEL hat in seinem System zum ,ontologischen Beweis‘ keine ‚formale Unentscheidbarkeit‘ <span style="color:#00B000">(Agnostizismus)</span> feststellen können, wie auf einem anderen Feld seiner Forschungsarbeiten. Das GÖDEL-Konsequenz-Teil von der ‚Notwendigkeit‘ GOTTES ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span>, <span style="color:#00B000">(die ‚Konsequenz’ aus dem ‚widerspruchsfreien‘ Korollar-1 ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —,</span>)</span> im ‚Theorem ANSELMS‘, ist <span style="color:#00B000">(im 3. Beweisgang, Term :10:)</span> dann auch eine weitere Explikation des Basis-Theorems-2 des Kalküls ''':''' <span style="color:#4C58FF"> — ‚'''Gx↔G'''<sub>ess</sub>'''x'''‘ — </span>, über die ‚ontologische Identität‘ vom <span style="color:#FF6000">„Dasein GOTTES“</span> ''':''' <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, mit seinem <span style="color:#FF6000">„Wesen“</span> ''':''' <span style="color:#4C58FF"> — <sub>ess</sub> —</span>, nach einem <span style="color:#4C58FF">[ Modus ponens ]</span>, dargestellt mit Term :09:. <span style="color:#00B000">(Die ontologische Identität von Dasein und Wesen in GOTT, ist die, für uns, <span style="color:#FF6000">„notwendige Präsenz <span style="color:#00B000">[ das Sein, <span style="color:#4C58FF">— ‚'''E'''‘ —</span>]</span> GOTTES“</span> ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x'''‘ —</span>, die äquivalent, bzw. koinzident ist zur <span style="color:#FF6000">„Vollkommenheit <span style="color:#00B000">[ das Wesen, <span style="color:#4C58FF">— ‚'''P'''‘ —</span>]</span> GOTTES“</span> ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>. Diese Identität von Sein und Wesen in GOTT ''':''' <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub> —</span>, bedeutet <span style="color:#4C58FF">,theologisch‘</span> konkret ''':''' die, für uns, notwendige Gegenwärtigkeit GOTTES, [ sein Dasein ], ist verwirklicht worden in der liebevollen [ Wesens-]Zuwendung GOTTES zu uns Menschen, in seiner Kindwerdung in Bethlehem, durch die Jungfrau MARIA ''':''' GOTTES Wesen ist ,Sein-mit-uns‘ ''':''' <span style="color:#CC66FF">»''sein Name'', <span style="color:#00B000">[ sein Wesen ]</span>, ''ist IMMANUEL, das heiß übersetzt ''':''' GOTT-ist-mit-uns''«, <small>({{Bibel | Matthäus Evangelium |1|23|EU}})</small></span>, der unsere Not-,wenden‘-wird, d.h. der uns und die Welt von der Korruption der Sünde und des Todes <span style="color:#4C58FF">,erlösen‘</span> will und wird; jedoch nicht ohne uns. Die <span style="color:#4C58FF">„Menschwerdung“</span> GOTTES in JESUS CHRISTUS, die <span style="color:#4C58FF">„Hypostatische Union“</span>, bzw. diese außergewöhnliche und einzigartige <span style="color:#FF6000">„Koinzidenz“</span> von GOTT und Mensch, ist der wirkliche und historische Beginn der <span style="color:#4C58FF">„Erlösung“</span> des Menschen und der Welt; vergegenwärtigt für jede Generation der Menschen in und durch die <span style="color:#4C58FF">„Kirche“</span> JESU CHRISTI.)</span> Die, von GÖDEL im 1. Beweisgang, als Prämissen schon vorausgesetzten und ,angenommenen‘ Perfektionen, bzw. Vollkommenheiten, <span style="color:#00B000">(das sind die allgemeinen ,Transzendentalia‘ für alles Nicht-Göttliche in der Welt)</span>, werden im ersten Teil des 2. Beweisganges, mit Term :13: <span style="color:#4C58FF">— ‚'''PY'''‘ —</span>, dann auch als <span style="color:#FF6000">„positive Wesenseigenschaften“</span>, <span style="color:#00B000">(als die ultimativen ,Transzendentalia‘)</span>, in GOTT ‚definitiv‘ <span style="color:#00B000">( ╞ )</span> bestätigt; <span style="color:#00B000">(siehe Anhang, 2. Beweisgang, Anmerkung-2)</span>. Im 3. Beweisgang ist das Basis-Theorem-2 die ,modal‘ notwendige, bzw. transzendentale, Voraussetzung, sowohl für das <span style="color:#FF6000">„an sich notwendige Dasein GOTTES“</span>, <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span>, im Term :10:, als auch für die <span style="color:#FF6000">„für uns notwendige Existenz GOTTES“</span>, <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>‘ —</span>, in den Ressourcen dieses Beweisganges ''':''' in der Definition-3, und im Axiom-5; <span style="color:#00B000">(das <span style="color:#4C58FF">— ‚'''E'''‘ —</span> wird nur GOTT zugeordnet; vgl. auch Anhang, 3. Beweisgang, Anmerkung-4)</span>. Dieses Basis-Theorem-2 ist auch zugleich die Antwort auf die Frage nach dem ‚Ursprung‘ GOTTES ''':''' GOTT ist <span style="color:#FF6000">„unverursacht“ <span style="color:#00B000">|</span> „ursprungslos“</span> ‚da‘, von <span style="color:#CC66FF">„Ewigkeit zu Ewigkeit“</span>, denn es ‚ist‘ sein <span style="color:#FF6000">„Wesen“</span>, <span style="color:#00B000">(überzeitlich-ewig)</span> für uns immer schon ‚da‘ zu sein. Weitere ‚Einzelheiten‘ über Wesen und Eigenschaften GOTTES gehören in die Mystik, bzw. in die <span style="color:#4C58FF">„Theologie“</span>. ===<div class="center"><span style="color:#660066">Die Bedeutung des Kalküls</span></div>=== <div class="center">Immanuel KANT und Kurt GÖDEL im ‚Dialog‘</div> KANT sagt ''':''' ::<span style="color:#FF6000">»</span>'''''Sein''' ist offenbar kein reales Prädikat''. ... ''Es ist bloß die'' <span style="color:#00B000">[ gedachte ]</span>'' Position'' <span style="color:#00B000">[ latinisiert, deutsch für ''':''' ,Setzung‘ ]</span> ''eines Dinges ... Nehme ich nun das Subjekt (Gott) mit allen seinen Prädikaten'' <span style="color:#00B000">[ d.h. Eigenschaften ]</span> ''(worunter auch die Allmacht gehört) zusammen, und sage ''':''' ‚'''Gott ist'''‘'', <span style="color:#00B000">[ ,GOTT existiert wirklich‘ ]</span>, ''oder ‚es ist ein Gott‘, so <u>setze</u> ich kein neues Prädikat'' <span style="color:#00B000">[ keine neue Eigenschaft ]</span> ''zum ‚Begriffe‘ von Gott ''':''''' <span style="color:#00B000">[ <span style="color:#0000FF; background-color:#FFFF00">‚Sein’ ist kein ‚reales Prädikat’ in GOTT</span>; ‚Existenz‘ ist in GOTT keine ‚Eigenschaft‘ ],</span> ... ''es kann daher zu dem Begriffe'', <span style="color:#00B000">[ ,GOTT‘ ]</span>, ''der bloß die'' <span style="color:#00B000">[ gedachte ]</span>'' Möglichkeit ausdrückt, darum, dass ich dessen Gegenstand'', <span style="color:#00B000">[ GOTT ]</span>, ''als schlechthin gegeben (durch den Ausdruck ''':''' er ist'', <span style="color:#00B000">[ GOTT ist wirklich ]</span>'' ) <u>denke</u>, nichts weiter hinzukommen.'' <span style="color:#00B000">[ Beides ist ,bloß gedacht‘ '''!''' ]</span> ''Und so enthält das Wirkliche nichts mehr als das bloß Mögliche. Hundert ‚wirkliche‘ Taler enthalten nicht das mindeste <u>mehr</u>, als hundert ‚mögliche‘. Denn, da diese den'' <span style="color:#00B000">[ gedachten ]</span>'' ‚Begriff‘, jene aber den Gegenstand und dessen'' <span style="color:#00B000">[ gedachte ]</span>'' Position an sich selbst bedeuten, so würde, im Fall dieser'', <span style="color:#00B000">[ die 100, als ,wirklich‘ bloß gedachten Taler ]</span>, ''<u>mehr</u> enthielte als jener,'' <span style="color:#00B000">[ als ihr ‚gedachter‘ Begriff im Verstand, wie ΑNSELM von Canterbury für GOTT, als ‚wirklich‘ Existierenden, argumentierte, …''so würde'' ]</span> ''mein ‚Begriff‘'' <span style="color:#00B000">[ die 100 im Verstand ‚gedachten‘ Taler ]</span> ''nicht den ganzen Gegenstand ausdrücken, und also auch <u>nicht der angemessene Begriff</u> von ihm sein. Aber in meinem Vermögenszustande ist <u>mehr</u> bei hundert ‚wirklichen‘ Talern, als bei dem bloßen Begriffe derselben'', <span style="color:#00B000">[ als bei 100 bloß ‚gedachten‘ Talern ]</span> ... <span style="color:#FF6000">«</span> <span style="color:#00B000"><ref>‚''<span style="font-family: Times;"><big>Kritik der reinen Vernunft</big></span>''‘, Seite 401; https://www.korpora.org/kant/aa03/401.html</ref></span>. GÖDEL würde darauf <span style="color:#00B000">(korrespondierend zur aristotelisch-<span style="color:#4C58FF">,theologischen‘</span> Tradition von der Identität von Sein und Wesen in GOTT)</span> antworten ''':''' ::<span style="color:#FF6000">»</span>Die <span style="color:#FF6000">„100 Taler“</span> sind der <span style="color:#FF6000">»''zufälligen Struktur der'' <span style="color:#00B000">[ vergänglichen ]</span> ''Welt''«</span> entnommen, und sind daher nicht mit GOTT vergleichbar, der, <span style="color:#FF6000">»''unabhängig von der zufälligen'' <span style="color:#00B000">[ Raum-Zeit-]</span>''Struktur''«</span> unserer Welt, <span style="color:#FF6000">„über“</span> dieser Welt steht. Einzig und allein nur von GOTT gilt ''':''' Der mit Dingen aus unserer Welt ,nicht vergleichbare‘ GOTT, <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, <span style="color:#FF6000">„existiert notwendig für uns“</span>, <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x'''‘ —</span>, und <span style="color:#FF6000">„notwendiges Existieren, <u>Sein</u>“</span> ,ist‘ eine <span style="color:#FF6000">„positive <u>Wesen</u>seigenschaft“</span> in GOTT, <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub>‘ —</span>, weil GOTT aus sich <span style="color:#FF6000">„vollkommen“ <span style="color:#00B000">|</span> „perfekt“</span> ist, <span style="color:#4C58FF">— ‚'''PG'''‘ —</span> ''':''' <span style="color:#0000FF; background-color:#FFFF00">‚Sein‘ ist in GOTT ein ‚reales Prädikat‘</span>; <span style="color:#00B000">(notwendige ‚Existenz’ ist eine positive ‚Wesenseigenschaft’ in GOTT)</span>, und nur bei GOTT '''!''' Zum zeitlos-ewigen GOTT der Christen ''':''' <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, <span style="color:#00B000">(als methodologische Kalkül-Prämisse)</span>, kann man sagen ''':''' Weil es, wegen Axiom-1 und Axiom-2, <span style="color:#FF6000">„widerspruchsfrei möglich"</span> ist, dass es GOTT gibt ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span>, darum ist GOTT auch das ‚einzige‘ <span style="color:#FF6000">„Wesen“</span>, <span style="color:#4C58FF">— ‚'''x'''‘ —</span>, von dem ein Christ sagen kann, dass es <span style="color:#FF6000">„notwendig aus sich“</span> ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span>, d.h. <span style="color:#FF6000">„grundlos“ <span style="color:#00B000">|</span> „unverursacht“</span>, für uns immer schon ‚da’ ist, und immer ,da’ sein wird; und zusätzlich gilt ''':''' Es gibt für jede mögliche Welt ‚nur‘ diesen einen GOTT ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx ∧ □∀y(Gy→x=y)'''‘ — </span><span style="color:#00B000">(Monotheïsmus, Korollar-3)</span>; vorausgesetzt, man geht von der ,Existenz’ dieses GOTTES aus, wobei diese Annahme für GÖDEL <span style="color:#FF6000">»''mit allen bekannten Tatsachen durchaus vereinbar''«</span> ist.<span style="color:#FF6000">«</span> Eine Beobachtung ''':''' KANT sagt, gleichsam als ,krönenden‘ Abschluss seiner Widerlegung des, — von ihm so genannten —, ,ontologischen Gottesbeweises‘ ''':''' <span style="color:#FF6000">»</span>''Aber in meinem Vermögenszustande ist <u>mehr</u> bei hundert ‚wirklichen‘ Talern, als bei dem bloßen Begriffe derselben, (d.i. ihrer Möglichkeit).''<span style="color:#FF6000">«</span> Diese Feststellung KANTS entspricht jedoch genau der Argumentation ANSELMS ''':''' GOTT <span style="color:#FF6000">„<span style="font-family: Times;"><big>esse et in re</big></span>“</span>, d.h. GOTT ,existiert auch in Wirklichkeit‘, <span style="color:#FF6000">„<span style="font-family: Times;"><big>quod maius est</big></span>“</span>, was <u>mehr</u> ist, als <span style="color:#FF6000">„<span style="font-family: Times;"><big>esse solo in intellectu</big></span>“</span>, als nur ein bloßer Begriff ,im Verstand zu sein‘. Der ,Mehr-Wert‘ ergibt sich in beiden Fällen, sowohl bei den Talern als auch bei GOTT, aus der ,Wirklichkeit‘ ihrer Existenz, im Gegensatz zur bloßen, <span style="color:#00B000">(im Begriff gedachten)</span>, ,Möglichkeit‘ ihrer Existenz, so dass, in jedem Fall, der ,Begriff‘ im Verstand ohne Abstriche <span style="color:#FF6000">»</span>''den ganzen Gegenstand ausdrückt''<span style="color:#FF6000">«</span>, und von diesem auch <span style="color:#FF6000">»</span>''der angemessene Begriff''<span style="color:#FF6000">«</span> ist. Alles andere wäre eine ,Lüge‘. Mit dieser ,Beobachtung‘ ist das implizit ,Widersprüchliche‘ in KANTS Argumentation aufgedeckt ''':''' Das Wirkliche in KANTS Vermögenszustande enthält <span style="color:#FF6000">,doch mehr‘</span> als das bloß Mögliche, konträr zu seiner vorigen Behauptung ''':''' <span style="color:#FF6000">»</span>''das Wirkliche''<span style="color:#FF6000">«</span> enthalte <span style="color:#FF6000">»'',nichts mehr‘</span> als das bloß Mögliche''<span style="color:#FF6000">«</span>. Diese Behauptung ist offensichtlich falsch. Das ist somit ein indirekter Beweis und damit eine Bestätigung für die analoge Argumentation ANSELMS aus dem Wiederspruch des Gegenteils, am Beispiel KANTS <span style="color:#FF6000">»</span>''Vermögenzustandes bei hundert wirklichen Talern''<span style="color:#FF6000">«</span>, in dem in Wirklichkeit <span style="color:#FF6000">,doch mehr‘</span> ist, <span style="color:#FF6000">»</span>''als bei dem bloßen Begriffe derselben''<span style="color:#FF6000">«</span>. <span style="color:#00B000">(Diese ,Beobachtung‘ ist zugleich auch das entscheidende Indiz dafür, dass das systembedingte Konzept KANTS von der ,Existenz‘, bzw. vom ,Sein‘ eines jeden Gegenstandes, als</span> <span style="color:#FF6000">»</span>''dessen bloße Position''<span style="color:#FF6000">«</span>, <span style="color:#00B000">d.i. als seine ,Setzung‘ bloß im- und durch den Verstand, ,falsch‘ ist, — d.h. im Klartext ''':''' für KANT ist das ,Sein‘ eines Gegenstandes bloß ein ,Gedanke‘ in uns, wenn er meint, dass uns ein Gegenstand erst dann wirklich ,gegeben‘ sei, wenn wir uns den</span> <span style="color:#FF6000">»</span>''Gegenstand als schlechthin gegeben (durch den Ausdruck : <u>er ist</u>) <u>denken</u>''<span style="color:#FF6000">«</span>, <span style="color:#00B000">was nur dem Irrtum einer falschen System-Konzeption geschuldet sein kann. Auf Grund dieser Konzeption ist das</span> <span style="color:#FF6000">»</span>''Ding, wie es an sich selbst ist''<span style="color:#FF6000">«</span>, <span style="color:#00B000">für KANT systembedingt weder ,anschaubar‘, noch ,erkennbar‘. Diese falsche Konzeption über die ,Existenz‘, bzw. das ,Sein‘ eines Dinges, als</span> <span style="color:#FF6000">»</span>''dessen bloße Position''<span style="color:#FF6000">«</span>, <span style="color:#00B000">ist für KANT letztendlich auch die Beweisgrundlage und Voraussetzung für seine Ablehnung des ontologischen Argumentes für GOTT im Theorem ANSELMS. Wenn das ,wirkliche‘ Sein eines Dinges nichts anderes ist, als</span> <span style="color:#FF6000">»</span>''dessen'' <span style="color:#00B000">[ bloß gedachte ]</span> ''Position''<span style="color:#FF6000">«</span>, <span style="color:#00B000">d.h. als seine ,mögliche‘ Setzung bloß im- und durch den Verstand, — das ist das, als ,wirklich‘ bloß nur ,gedachte‘ Ding —, dann</span> <span style="color:#FF6000">»</span>''enthält''<span style="color:#FF6000">«</span> <span style="color:#00B000">natürlich</span> <span style="color:#FF6000">»</span>''das Wirkliche''<span style="color:#00B000">, [ als die bloß gedachte Existenz ],</span> ''nichts mehr als das bloß Mögliche''<span style="color:#00B000">, [ als der gedachte Begriff ]<span style="color:#FF6000">«</span>, was offensichtlich unhaltbar ist. <span style="color:#4C58FF">[ Modus tollendo tollens ] </span> ''':''' Wenn die Konsequenz einer Wenn-Dann-Folgerung ,falsch‘ ist, dann ist auch ihre Voraussetzung, das System-Konzept KANTS, ,falsch‘ ''':''' d.i. seine ,Kopernikanische Wende‘ für die Metaphysik, soweit sie KANTS ,Sein’-Konzept betrifft. Korrekt und ,wahr‘ ist in jedem Fall ''':''' Das Wirkliche enthält <span style="color:#FF6000">,doch mehr‘</span> als das bloß Mögliche, und die Dinge ,existieren‘ schon immer unabhängig von unserem Denken. ,Existenz‘, das ,Sein‘, ist <span style="color:#FF6000">,doch mehr‘</span>, als bloß ein ,Gedanke‘ von uns.)</span> Somit ist die Argumentation KANTS gegen den ontologischen Beweis ANSELMS für GOTT ,falsch‘ und unhaltbar, weil sie auf der ,falschen‘ Voraussetzung beruht ''':''' die ,Existenz‘, bzw. das ,Sein‘ eines jeden ,Gegenstandes‘, — wie z. B. auch die Existenz bei GOTT —, sei bloß dessen gedachte ,Position‘ an sich selbst, d.h. bloß seine ,Setzung‘ im- und durch den Verstand. Damit ,macht‘ er GOTT außerdem zu einem ,Ding‘ unter den vielen ,Dingen‘ dieser Welt, und verkennt so, — wie vor ihm THOMAS von Aquin —, auch die Einzigartigkeit und Exklusivität GOTTES im Theorem ANSELMS. <div class="center">Die <span style="color:#FF6000">„Rede von GOTT“</span> in der philosophischen Tradition</div> Wenn man die philosophische Tradition der <span style="color:#FF6000">„Rede von GOTT“</span> im Lichte der Ergebnisse der <span style="color:#4C58FF">„axiomatischen Theologie“</span> GÖDELS liest, dann stellt sie sich am Beispiel bei ARISTOTELES, — AVICENNA, — ANSELM, und bei GÖDEL wie folgt dar ''':''' <span style="color:#FF6000">»''Das Erstbewegende,'' (<span style="font-family: Times;"><big>,πρῶτον κινοῦν‘</big></span>), ''das, ohne selbst ‚bewegt‘ zu sein'', (<span style="font-family: Times;"><big>,ἀκίνητον‘</big></span> <span style="color:#00B000">| ''unverursacht, ,entstehungslos‘'' |</span> ), ''alles Übrige wie ein Geliebtes ‚bewegt‘'', (<span style="font-family: Times;"><big>,κινεῖ δὴ ὡς ἐρώμενον‘</big></span> <span style="color:#00B000"> | ''-verursacht, ,entstehen‘ lässt'' |</span> ), ''ist sowohl'' <span style="color:#00B000">[ zeitlich-]</span>''ewiges ‚Wesen‘'', (<span style="font-family: Times;"><big>,ἀΐδιον καί οὐσία‘</big></span> <span style="color:#00B000">| ''‚Substanz‘'' |</span> ), ''als auch'' <span style="color:#00B000">[ zeitlich-]</span>''ewiges ‚wirksames, verwirklichendes Sein‘'', (<span style="font-family: Times;"><big>‚ἀΐδιον καί ἐνέργεια οὖσα‘ = ‚actus purus‘</big></span><span style="color:#00B000"> | '',reine Tätigkeit‘'' |</span> ), … ''ersehnt'', (<span style="font-family: Times;"><big>,ὀρεκτόν‘</big></span>), ''und erkennbar'', (<span style="font-family: Times;"><big>,νοητόν‘</big></span>), ... ''denn dies ist der ‚Gott‘'', (<span style="font-family: Times;"><big>,τοῦτο γὰρ ὁ θεός‘</big></span>), <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, ''der'' <span style="color:#00B000">[ zeitlich-]</span>''Ewige'', (<span style="font-family: Times;"><big>,ἀΐδιον‘</big></span>), — ''der Unvergleichliche'', (<span style="font-family: Times;"><big>,ἄριστον‘</big></span> <span style="color:#00B000">| ''‚der Beste‘'' |</span> ), — ''der Lebendige'', (<span style="font-family: Times;"><big>,ζῷον‘</big></span> <span style="color:#00B000">| ,''das Leben selbst‘'' |</span> ), — ... ''so sagen wir ja'', (<span style="font-family: Times;"><big>,φαμὲν δὴ‘</big></span>), — ...«</span> ''':''' <span style="color:#00B000">(ARISTOTELES — Grieche)</span>. Der ‚Begriff’ <span style="color:#FF6000">„GOTT“</span>, <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, als ,Individuumname‘, ist synonym mit <span style="color:#FF6000">„göttliches ‚Da-Sein’“</span>, das sowohl <span style="color:#FF6000">„aus sich vollkommen“</span>, als auch <span style="color:#FF6000">„notwendig für uns“</span> ‚da‘ ist; <span style="color:#00B000">(das ist das, an sich, vollkommene ‚Was-Sein‘ GOTTES ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ — </span>, das zugleich, für uns, das notwendige ‚Da-Sein‘ GOTTES ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x'''‘</span> — ist)</span>; <span style="color:#CC66FF">„von Ewigkeit zu Ewigkeit“</span>. Das ist der <u>angemessene Begriff</u> von GOTT, und gilt ‚nur‘ von GOTT. Weil GOTT <span style="color:#FF6000">„vollkommen“</span> ist, ist <span style="color:#FF6000">„Da-Sein“ <span style="color:#00B000">|</span> „GOTT-Sein“ <span style="color:#00B000">|</span> „Göttlichkeit“</span> das <span style="color:#FF6000">„Wesen“</span> GOTTES ''':''' <span style="color:#4C58FF">— ‚'''Gx↔G'''<sub>ess</sub>'''x'''‘ —</span>. Im Unendlichen, GOTT, sind <span style="color:#FF6000">„Essenz“</span> und <span style="color:#FF6000">„Existenz“</span> koinzident ,eins‘, und daher untrennbar, und <span style="color:#FF6000">»''darum ist GOTT das einzige ‚Sein’, das notwendig an sich ‚da‘ ist''«</span> ''':''' <span style="color:#00B000">(ABU ALI SINA alias AVICENNA — Muslim)</span>. Der <span style="color:#00B000">(gedachte)</span> ‚Eigenschafts-Begriff‘ <span style="color:#FF6000">„Vollkommenheit (die Größe) GOTTES“</span>, <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, <span style="color:#00B000">(‚Perfektion‘, die unbegrenzte Summe aller ‚positiven Eigenschaften‘ in GOTT)</span> schließt koinzident die ‚Eigenschaft’ <span style="color:#FF6000">„notwendige Existenz für uns“</span> mit ein ''':''' <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub>‘ —</span>. GOTT wäre nicht <span style="color:#FF6000">„vollkommen“</span>, wenn er nicht auch real für uns ‚da‘ wäre, wenn er nicht ,immer schon’ <span style="color:#FF6000">„existierte“</span>. ‚Sein’ ist <u>mehr</u> als ‚Nicht-Sein’. ,Sein’, bzw. ,Existenz’ gehört in GOTT zu den ,Transzendentalia’. Das sind die <span style="color:#00B000">(ultimativen)</span> ,Wesenseigenschaften’ in GOTT. Der unbegrenzt Unendliche, GOTT, ist daher das <span style="color:#FF6000">»''vollkommenste Wesen, über das nichts ,Größeres‘ d.h. Vollkommeneres <u>mehr</u> ‚gedacht‘ werden kann''«</span> ''':''' <span style="color:#00B000">(ANSELM von Canterbury — Christ)</span>. Der ‚Begriff’ <span style="color:#FF6000">„Perfektion GOTTES“</span>, <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, schließt koinzident das <span style="color:#FF6000">„notwendige Dasein GOTTES“</span>, <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x'''‘</span> —, für uns mit ein, ohne einen zeitlichen Anfang und ohne ein zeitliches Ende. Das ist die ‚zeitlos-ewige‘, an sich absolute, und <span style="color:#FF6000">„für uns notwendige Existenz GOTTES“</span> ''':''' <span style="color:#4C58FF">— ‚'''Gx→E'''<sub>not</sub>'''x'''‘ —</span> ''':''' <span style="color:#00B000">(Das ist ein ,regulär‘-mögliches Korollar im 2. Beweisgang aus Term :16: ''':''' <span style="color:#4C58FF">— ‚'''Gy→Yy'''‘ —</span>, mit der <span style="color:#4C58FF">[ Instanz(Y:=E<sub>not</sub>) ]</span>, und der <span style="color:#4C58FF">[ FUB(y:=x) ]</span>; und auch ein ,regulär‘-mögliches Korollar im 3. Beweisgang ''':''' entsprechend der <span style="color:#FF6000">„logischen Implikation”</span> :: <span style="color:#4C58FF">[├ A ├ B ╞ A → B ]</span> von Term :01: <span style="color:#4C58FF">— ‚'''Gx'''‘ — </span> und Term :05: <span style="color:#4C58FF"> —‚'''E'''<sub>not</sub>'''x'''‘ —</span> aus diesem Beweisgang. In Worten ''':''' <span style="color:#FF6000">»</span>''Angenommen, '' <span style="color:#4C58FF">— ‚'''x'''‘ —</span> ''steht für den GOTT der Christen'' ''':''' <span style="color:#4C58FF">— ‚'''G'''‘ — </span>, ''dann existiert dieser GOTT'', <span style="color:#4C58FF">— ‚'''x'''‘ —</span>, ''für uns notwendig'', <span style="color:#4C58FF">— <sub>not</sub> —</span> <span style="color:#FF6000">«</span>.)</span> Der Unendliche, GOTT, ist <span style="color:#FF6000">»''unabhängig von der zufälligen'' <span style="color:#00B000">[ Raum-Zeit-]</span>''Struktur''«</span> unserer ‚vergänglichen‘, ,endlichen‘ Welt, welche prinzipiell vom dreidimensionalen Raum und von der unwiederbringlich ‚vergehenden‘ Zeit geprägt ist. Der ,GOTT der Christen‘ ist <span style="color:#FF6000">»''unabhängig''«</span> von dieser <span style="color:#FF6600">„vergehenden Raum-Zeit“, — »''jenes rätselhafte und anscheinend in sich widersprüchliche Etwas''« <span style="color:#00B000">(GÖDEL)<ref>Kurt GÖDEL, ‚''<span style="font-family: Times;"><big>Eine Bemerkung über die Beziehungen zwischen der Relativitätstheorie und der idealistischen Philosophie‘</big></span>'', in P.A.SCHILPP (Hg.): ‚''<span style="font-family: Times;"><big>Albert Einstein, Philosoph und Naturforscher‘</big></span>'', Seite 406</ref></span> —</span>. Ohne ‚Zeit‘ gibt es keinen zeitlichen Unterschied zwischen ‚Ursache‘ und ‚Wirkung‘, <span style="color:#00B000">(beides ist zeitlos ,eins‘)</span>, und so ist der zeitlos-ewige GOTT, der <span style="color:#FF6000">»''notwendig aus sich ,existiert‘'' «</span> ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ — </span>, <span style="color:#FF6000">„unverursacht“ <span style="color:#00B000">|</span> „ursprungslos“</span> für uns immer schon ‚da‘ ''':''' <span style="color:#00B000">(GÖDEL — ohne religiöses Bekenntnis)</span>. Mit dem GÖDEL-Kalkül ist die <span style="color:#FF6000">„Rede von GOTT“</span> auf eine ‚vernünftige Basis‘ gestellt worden, und ist somit für jeden Menschen nachvollziehbar, <span style="color:#FF6000">»''rein verstandesmäßig, (ohne sich auf den Glauben an irgendeine Religion zu stützen)''«</span>, wie obige Beispiele zeigen. '''Resümee :''' Das GÖDEL-Kalkül zeigt mit <span style="color:#FF6000">»''mathematischer Evidenz''«</span>, was notwendig folgt, wenn die Axiome ‚wahr‘ sind, <span style="color:#00B000">(die Axiome bilden formal-syntaktisch <span style="color:#FF6000">»''die theologische Weltanschauung''«</span> ab)</span>, unter der Voraussetzung, dass die Axiome <span style="color:#FF6000">»''unabhängig von der zufälligen'' <span style="color:#00B000">[ Raum-Zeit-]</span>'' Struktur''«</span> unserer Welt sind. Die ,Verifikation‘ der Axiome und Definitionen von GOTT und seiner Vollkommenheiten gelingt GÖDEL, — entsprechend seiner Unabhängigkeits-Bedingung —, durch den Aufweis ihrer Widerspruchsfreiheit ''':''' sie sind somit ,wahr‘ und, — im Kontext einer <span style="color:#FF6000">»''theologischen Weltanschauung''«</span> —, auch ,annehmbar‘ in unserer ,realen‘ Welt ''':''' <span style="color:#00B000">(siehe Anhang, 2. Beweisgang und Anmerkung-2)</span>. Er vermeidet damit den Fehler, der immer wieder im Diskurs über Gottesbeweise gemacht wird ''':''' GOTT mit seinen Geschöpfen zu vergleichen. Diese logisch-philosophische Rede von GOTT <span style="color:#00B000">(<span style="color:#FF6000">»''ohne sich auf den Glauben an irgendeine Religion zu stützen''«</span>)</span> hat eine <u>mehr</u> als zweitausendjährige Tradition hinter sich. Der <span style="color:#FF6000">„100-Taler-Gott“</span> des Philosophen KANT, hat heute, nachdem der Logiker und Systemtheoretiker GÖDEL sein System vorgelegt hat, an ‚Strahlkraft‘ verloren. Kurt GÖDEL ''':''' ::<span style="color:#FF6000">» ''Die theologische Weltanschauung'', <span style="color:#00B000">[ dass GOTT für uns immer schon ‚da‘ ist ]</span>, ''ist rein verstandesmäßig mit allen bekannten Tatsachen durchaus vereinbar'';«</span> <span style="color:#00B000">[ d.h. sie ist das ,Resultat‘ der, — vom Glauben geleiteten —, ‚theoretischen Vernunft‘, alias ‚reinen Vernunft‘, und nicht bloß das ‚Postulat‘ einer ‚praktischen Vernunft‘, wie KANT meint ]. <span style="color:#FF6000">»''Der'' <span style="color:#00B000">[ christliche ]</span> ''Glaube ist die ‚Pupille‘ im ‚Auge‘ unseres Verstandes.''«</span> (Heilige KATHARINA von Siena, Lehrerin der Kirche, Patronin Europas<ref>vgl. <span style="font-family: Times;"><big>''Gebet 7 ‚Für die neuen Kardinäle‘, Rom, 21. Dezember 1378,''</big></span> aus <span style="font-family: Times;"><big>''Caterina von Siena ,Die Gebete‘.''</big></span> Kleinhain 2019, online: https://caterina.at/werke/gebete/gebete-detailansicht/gebet-7.html</ref> )</span> Der sonst so rationale KANT, hier doch etwas emotionell, <span style="color:#00B000">(als wolle er die Ergebnisse im GÖDEL-Kalkül nicht wahr haben, die belegen, dass er sich bei GOTT geirrt, und die Funktion des christlichen Glaubens für die Philosophie falsch eingeschätzt hat)</span> ''':''' ::<span style="color:#FF6000">»</span> ''Es war etwas ganz Unnatürliches und eine bloße Neuerung des Schulwitzes, aus einer ganz willkürlich entworfenen Idee das Dasein des ihr entsprechenden Gegenstandes selbst ausklauben zu wollen''<ref>vgl. ‚''<span style="font-family: Times;"><big>Kritik der reinen Vernunft</big></span>''‘, Seite 403. https://www.korpora.org/kant/aa03/403.html</ref>.<span style="color:#FF6000">«</span> Für KANT, für die Scholastiker, <span style="color:#00B000">(und auch für uns)</span>, ist es natürlich ‚logisch‘, dass aus einem als ‚möglich’ gedachten Begriff, <span style="color:#FF6000">»</span>''aus einer ganz willkürlich entworfenen Idee''<span style="color:#FF6000">«</span>, keine Existenzaussage abgeleitet werden kann. <span style="color:#00B000">(Aus dem bloß gedachten Begriff ,goldene Berge‘ folgt natürlich nicht, dass es solche in Wirklichkeit auch gibt.)</span> In der philosophisch-<span style="color:#4C58FF">,theologischen’</span> Tradition, die von ARISTOTELES herkommt, ist der Begriff <span style="color:#FF6000">»''GOTT''«</span> jedoch von allen anderen Begriffen so verschieden, so dass für GOTT diese Logik KANTS nicht mehr gilt. GOTT ist ,unvergleichlich‘ und ,einzigartig‘. Dazu der Kommentar von HEGEL ''':''' ::<span style="color:#FF6000">»''Wenn KANT sagt, man könne aus dem Begriff'' <span style="color:#00B000">[ ‚GOTT‘ ]</span> ''die Realität nicht ,herausklauben‘, so ist da der Begriff als endlich gefasst''.« <span style="color:#00B000">[ In der Endlichkeit unserer Welt trifft die Logik KANTS zu, dass dem ‚Begriff‘ nicht ,notwendig‘ das ‚Sein‘ folgt, denn es gibt in ihr die ,Lüge‘, die das ,Wirklich-Sein‘ im Begriff bloß behauptet, ohne dass es ,in Wirklichkeit‘ zutrifft, was sie behauptet. Es gilt hier nach KANT ''':''' »''Sein ist kein reales Prädikat''«. Somit ist ]</span> »''...der Begriff ohne'' <span style="color:#00B000">[ reales ]</span> ''Sein ein Einseitiges und Unwahres, und ebenso das Sein, in dem kein Begriff ist'', <span style="color:#00B000">[ ist ]</span> ''das begrifflose Sein,'' <span style="color:#00B000">[ d.i. das relative ,Noch-Nicht-Begriffene‘ ]</span>.'' Dieser Gegensatz, der in die Endlichkeit fällt'' <span style="color:#00B000">[ im Endlichen zutrifft ]</span>, ''kann bei dem Unendlichen, GOTT, gar nicht statthaben''<ref>Georg Wilhelm Friedrich HEGEL, ‚<span style="font-family: Times;"><big>''Ausführungen des ontologischen Beweises''</big></span>‘ in den ‚<span style="font-family: Times;"><big>''Vorlesungen über die Philosophie der Religion vom Jahr 1831''</big></span>‘ . Hamburg 1966, Seiten 175 bzw. 174</ref>; <span style="color:#00B000">[ denn ,Begriff‘, bzw. ,Denken‘ und ,Sein‘ sind in dem Unendlichen, GOTT, untrennbar und real immer dasselbe. Auf Grund dieser ontologischen Identität ,personifiziert‘ und ,repräsentiert‘ GOTT die ,Wahrheit‘ ''':''' GOTT ist die ,Wahrheit‘. In GOTT, dem <span style="color:#FF6000">„Schöpfer der Welt“</span>, folgt dem ,Begriff‘ immer ,notwendig‘ das ,Sein‘ ''':''' <span style="color:#CC66FF">»''GOTT sprach ''':''' Es werde ,Licht‘. Und es wurde Licht''«, <small>{{Bibel | Genesis |1|3|EU}}</small>;</span> oder auch ''':''' <span style="color:#CC66FF">»''Der Herr sprach, und sogleich geschah es; er gebot, und alles war da''«,</span> <small>{{Bibel | Psalm |33|9|EU}}</small>.]</span>«</span> Das Entscheidende bei der <span style="color:#4C58FF">„theologischen“</span> Interpretation des GÖDEL-Kalküls ist, dass der <span style="color:#00B000">(Begriff)</span> GOTT der Christen ''':''' <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, nicht auf die Ebene seiner ,endlichen‘ Geschöpfe und unserer Welt gestellt wird, <span style="color:#00B000">(d.i. das ‚Universum‘ im ,Urknall‘, die ‚100-Taler‘, ein ‚Tsunami‘, auch ,einfache Modelle‘ von unserer Welt, etc.)</span>, und damit verglichen wird, sondern, dass der GOTT der Christen in seiner Einzigartigkeit und Besonderheit als <span style="color:#FF6000">»''der Unendliche''«</span> belassen und als <span style="color:#FF6000">»''unabhängig von der zufälligen'' <span style="color:#00B000">[ Raum-Zeit-]</span>''Struktur''«</span> unserer vergänglichen Welt, — als <span style="color:#FF6000">»''der Unvergleichliche''«</span> —, verstanden wird. <span style="color:#00B000">(Alle Kritiken des sog. ,ontologischen‘ Gottesbeweises übersehen die Einzigartigkeit und Besonderheit des <span style="color:#FF6000">»''Unendlichen''«</span>, und/oder wollen diese nicht ,wahr‘ haben.)</span> Auch THOMAS von Aquin ,verortet‘ den GOTT ANSELMS, — in seiner Kritik an dessen Theorem —, irrtümlich unter die ,Dinge‘ der uns umgebenden ,Natur‘, wenn er sagt ''':''' GOTT <span style="color:#FF6000">„<span style="font-family: Times;"><big>esse in rerum natura</big></span>“</span>, d.h. wörtlich, dass der GOTT ANSELMS <span style="color:#FF6000">»</span>''in der Natur der Dinge'' <span style="color:#00B000">(unserer Welt)</span> ''existiert''<span style="color:#FF6000">«</span>, und verkennt somit, — wie nach ihm auch KANT —, die ,Unvergleichlichkeit‘ GOTTES, <span style="color:#00B000">(vgl. STh I q.2 a.1 ad 2<ref>„Deus … illud quo maius cogitari non potest; non tamen propter hoc sequitur quod intelligat id quod significatur per nomen, esse in rerum natura; sed in apprehensione intellectus tantum.“ ——— »''GOTT ist'' (nach ANSELM) ''der, über den Größeres nicht mehr gedacht werden kann. Aber nicht deswegen, weil er'', (der Narr von Psalm 14.1, den ANSELM zitiert), ''das versteht, was durch diesen Namen,'' (d.h. mit dem Begriff ,GOTT‘, als der ,Größte‘, im Theorem ANSELMS), ''bezeichnet wird, folgt daraus'', (wie ANSELM meint), ''dass er auch versteht, dass er'', (der GOTT ANSELMS), ''auch in der ,Natur‘ der Dinge'' (unserer Welt) ''existiert''; <span style="color:#00B000">[ was ANSELM so nie gesagt hat ]</span>. ''Daraus folgt nur, dass er'', (als ,GOTT‘), ''bloß in der Auffassung seines Verstandes'', (d.h. nur im Denken des Narren als ,Begriff‘), ''existiert.''« ——— Hier ,verortet‘ THOMAS einerseits den unendlichen GOTT, von dem das Theorem ANSELMS spricht, irrtümlich unter die endlichen Dinge der uns umgebenden ,Natur‘, was sachlich dem theologischen Theorem der Unvergleichlichkeit GOTTES widerspricht, der nicht unter die Dinge unserer Welt eingereiht werden darf. Anderseits verliert er dadurch auch den ,Blick‘ für die Außerordentlichkeit und Besonderheit GOTTES, dessen Natur völlig verschieden und unabhängig von der ,Natur‘ unserer raum-zeitlichen Welt ist. GÖDEL beweist jedoch, mit ANSELM, weil es notwendig, ohne Widerspruch, (»''bloß in der Auffassung unseres Verstandes''«), möglich ist, dass GOTT existiert, ist es korrekt, daraus auch mit Notwendigkeit zu folgern, dass der Glaube des Erzbischofs ANSELM, und der Glaube seiner Anvertrauten, von der Wirklichkeit GOTTES, widerspruchsfrei, logisch richtig, und damit sinnvoll ist; denn Möglichkeit und Wirklichkeit sind in GOTT koinzident ,eins‘. Das ist das Privilegium GOTTES allein, der einzigartig und unvergleichlich ist. Damit zeigt er auf, dass THOMAS die Unvergleichlichkeit und Einzigartigkeit GOTTES in seinem Vorhalt nicht bedacht hat; und außerdem ANSELM missverstanden hat.</ref>)</span>; jedenfalls hier in der Auseinandersetzung mit ANSELM. Dagegen spricht ANSELM im ,''<span style="font-family: Times;"><big>Proslogion</big></span>''‘, Seite 85f, nur von einem <span style="color:#FF6000">„<span style="font-family: Times;"><big>esse et in re</big></span>“</span> GOTTES, d.h. dass GOTT ,auch in Wirklichkeit existiert‘, <span style="color:#FF6000">„<span style="font-family: Times;"><big>quod maius est</big></span>“</span>, was ,größer‘, bzw. ,mehr‘ ist, als <span style="color:#FF6000">„<span style="font-family: Times;"><big>esse solo in intellectu</big></span>“</span>, als nur ,im Verstand zu sein‘; wobei die ,zeitlose-überzeitliche‘ Wirklichkeit, <span style="color:#00B000">(Natur)</span>, GOTTES jedoch völlig verschieden und <span style="color:#FF6000">»''unabhängig von der zufälligen''«</span> Wirklichkeit <span style="color:#00B000">(die ,Natur‘)</span> der ,raum-zeitlichen‘ Welt der Dinge ist. Daher ist sie mit dieser auch nicht vergleichbar. GOTT ist <span style="color:#FF6000">„vollkommen“</span> und alle <span style="color:#FF6000">„Vollkommenheiten“</span> in GOTT, <span style="color:#00B000">(die ultimativen ,Transzendentalia‘)</span>, sind koinzident ,eins‘, — ,fallen <span style="color:#FF6000">„notwendig“</span> perspektivisch in eins zusammen‘, und sind daher konvertierbar. Darum ist auch die Wirklichkeit, <span style="color:#00B000">(Natur)</span>, GOTTES ,einzigartig‘ und ,unvergleichlich‘. Mit Korollar-3 ist die Exklusivität und Außerordentlichkeit GOTTES definitiv im Kalkül ,bewiesen‘ <span style="color:#00B000">( ╞ )</span>. Der abendländische Monotheïsmus ist somit eine ,logische‘ Konsequenz aus den GÖDEL-Axiomen. <span style="color:#00B000">(Das <span style="color:#4C58FF">„theologische“</span> Theorem von der ,Einzigartigkeit‘ und Exklusivität GOTTES, d.h. hier im Kontext ''':''' die exklusive Einheit von GOTT und Mensch in JESUS CHRISTUS; von Vater, Sohn und Geist im <span style="color:#4C58FF">„Dreifaltigen“</span>; von Essenz und Existenz, von Begriff und Sein, von Ursache und Wirkung, von Subjekt und Objekt, von Möglichkeit und Wirklichkeit, und die unbegrenzte Summeneinheit und Koinzidenz der unendlichen Transzendentalien in GOTT, ist, — mit HEGEL —, die Voraussetzung und Bedingung jeder Philosophie ''':''' <span style="color:#FF6000">»''Die Einheit muss am Anfang der Philosophie stehen''«</span>; und ist zugleich auch ihr gesuchtes und bewiesenes Endergebnis und Ziel ''':''' <span style="color:#FF6000">»''Diese Einheit muss auch das Resultat der Philosophie sein''«</span><ref>https://hegel-system.de/de/gottesbeweis.htm#hegels-kritik-an-kant</ref>, was hier im GÖDEL-Kalkül ,logisch‘ mit Korollar-3 verifiziert wird ''':''' <span style="color:#4C58FF">— ‚'''□(∃xGx ∧ ∀y(Gy→x=y))'''‘ —</span> ''':''' <span style="color:#FF6000">»''GOTT ist exklusiv einzigartig''«</span>.)</span> Die Einzigartigkeit GOTTES bedingt die Koinzidenz, den inneren Zusammenhang aller seiner Vollkommenheiten und Zuschreibungen, <span style="color:#00B000">(Axiom-2)</span>, d.h. ihr paarweise, perspektivisches ,Zusammenfallen in eins‘ im Unendlichen, GOTT. ——— Aus der Notwendigkeit aller positiven Eigenschaften und Zuschreibungen, <span style="color:#00B000">(d.h. aus den, an sich, notwendigen, ultimativen Transzendentalien, Axiom-4)</span>, die in GOTT paarweise, als ,Wesenseigenschaften‘ koinzident ,eins‘ sind, <span style="color:#00B000">(Definition-2)</span>, ist die Einzigkeit GOTTES für uns erschließbar, <span style="color:#00B000">(Korollar-3)</span>. Axiom-4 ist die erste, ,modal‘ <span style="color:#FF6000">„notwendige“</span>, d.h. die transzendentale Voraussetzung für Korollar-3. Wenn im Korollar-3 das <span style="color:#4C58FF">— ‚'''x'''‘ —</span> z. B. für GOTT, dem ,Vater‘ der Christen, und das <span style="color:#4C58FF">— ‚'''y'''‘ —</span> für GOTT, dem ,Sohn‘, d.h. für ,JESUS CHRISTUS‘ steht, oder für den ,HEILIGEN GEIST‘, <span style="color:#00B000">(den ,Dreifaltigen GOTT‘ der Christenheit)</span>; oder auch für die Gottesbezeichnung ,GOTT-ADONAI‘ der Juden, oder für die Gottesbezeichnung ,ALLAH‘ der Muslime steht, dann weist dieses Korollar, für <span style="color:#4C58FF">— ‚'''∀y'''‘ —</span>, mit der ,ontologischen Identität‘ ''':''' <span style="color:#4C58FF">— ‚'''x=y'''‘ —</span>, auf die ,Koinzidenz‘ des <span style="color:#4C58FF">„Dreifaltigen“</span>, und auf die <span style="color:#4C58FF">„Hypostatische Union“</span> der Naturen von GOTT und Mensch in JESUS CHRISTUS, bzw. auch auf den inneren Zusammenhang der drei Buch-Religionen hin. ===<div class="center"><span style="color:#660066">Anhang : das GÖDEL-Kalkül</span></div>=== In der ,Legende zum GÖDEL-Kalkül‘ wird an einige Basics erinnert, und diese für die operative Praxis im anstehenden Kalkül, mit Hilfe von logischen Meta-Terme, adaptiert. Zusätzliche, notwendige Regeln und Gesetze werden dann ,benannt‘, wenn sie in der Kalkül-Durchführung auftreten. {|class="wikitable" |- ! <div class="center"><span style="color:#660066">Legende zum GÖDEL-Kalkül</span></div> |- | <small> <math>\begin{align} {\color{blue}\text{ ◇}} \text{ :: konsistent ↔ widerspruchsfrei ↔ möglich ↔ denkbar, } & {\color{blue}\text{ □}} \text{ :: notwendig ↔ wirklich, für jede mögliche Welt ↔ exklusiv} \\ \text{logischer Meta-Term ::} {\color{blue}\text{ [ A ├ B ]}} \text{ ::} & \text{ „aus A folgt im Kalkül ,regulär‘ (├ ) B.“} \\ \text{ A, B sind Aussagen über Eigenschaften, (A ist keine Eigenschaft);} & \text{ die Aussage, z.B. in der Kalkül-Zeile 10, wird als ,Term :10:‘ bezeichnet} \\ {\color{blue}\text{ AE}} \text{ ::} & \text{ Argument Einführung, Prämisse, Postulat } \\ {\color{blue}\text{ Xx}} \text{ ::} & \text{ „X ist eine Eigenschaft der Individuum-Variable x.“ } \\ {\color{blue}\text{ ¬PX}} \text{ ::} & \text{ „X ist keine positive Eigenschaft, ist keine Perfektion, ist nicht vollkommen.“ } \\ {\color{blue}\text{ Instanz(X := Y)}} \text{ ::} & \text{ Substitution der Eigenschaft X durch die ,bestimmte‘ Eigenschaft Y } \\ \text{ (Eine ,Instanz‘ ist ein Exemplar aus einer Menge gleichartiger Dinge;} & \text{ hier die ,bestimmte‘ Eigenschaft Y, als Ersatz für das unbestimmte X.) } \\ {\color{blue}\text{ FUB(x := y)}} \text{ ::} & \text{ Freie-Um-Benennung der Individuum-Variable x in y } \\ \text{ ,modal‘-frei gewählte Kalkül-Prämisse ::} {\color{blue}\text{ Gx}} \text{ ::} & \text{ „Die Variable x steht für den GOTT der Christen.“ } \\ {\color{blue}\text{ [ G(y) ├ ⱯyG(y) ]}} \text{ ::} & \text{ All-Operator-Einführung der Variable y für GOTT } \\ \text{ „Angenommen, die Variable y steht für GOTT, dann } & \text{folgt ,regulär‘ (├ ), dass auch jedes y im Kalkül für GOTT steht.“}\\ {\color{blue}\text{[ ⱯXA(X) ├ A(X) ]}} \text{ ::} & \text{ All-Operator-Beseitigung für die substituierte Eigenschaft X } \\ \text{ „Wenn X durch eine ,bestimmte‘ Eigenschaft ,instanziiert‘ ist oder } & \text{wird, dann kann der All-Operator von X ,regulär‘ (├ ) beseitigt werden.}\\ {\color{blue}\text{ KOMM(↔)}} \text{ ::} & \;{\color{blue}\text{[ (A↔ B) ↔ (B ↔ A) ]}} \text{ :: Kommutativgesetz für ( ↔ )}\\ {\color{blue}\text{ DIST(□∧)}} \text{ ::} & \;{\color{blue}\text{[ (□A ∧ □B) ↔ □(A ∧ B) ]}} \text{ :: Distributivgesetz für (□∧ )} \\ \text{ (hypothetischer Syllogismus, häufige logische Schlussregel) ::} & \;{\color{blue}\text{[ A → B, A ├ B ]}} \text{ :: (Modus ponendo ponens) :: Abtrennregel.} \\ \text{ „Wenn es wahr ist, dass aus A ein B folgt, und wenn A wahr ist, } & \text{dann ist im Kalkül ,regulär‘ (├ ) ableitbar, dass auch B wahr ist.“} \\ \text{ (negativer hypothetischer Syllogismus) ::} & \;{\color{blue}\text{[ A → B, ¬B ├ ¬A ]}} \text{ :: (Modus tollendo tollens)} \\ \text{ „Wenn es wahr ist, dass aus A ein B folgt, und wenn B falsch ist, } & \text{dann ist im Kalkül ,regulär‘ (├ ) ableitbar, dass auch A falsch ist.“} \\ \text{''KONDITIONALER BEWEIS“ ::} & \;{\color{blue}\text{[ ├ A ├ B ╞ A → B ]}} \text{ :: (logische Implikation)} \\ \text{ „Angenommen, A ist ,regulär‘ Axiom oder Prämisse, und B ist im } & \text{Kalkül ,regulär‘ abgeleitet, dann ist ,bewiesen‘ ( ╞ ) : A impliziert B, ist wahr.“} \\ \text{''INDIREKTER BEWEIS“ ::} & \;{\color{blue}\text{[ ├ ¬A → F ╞ A ]}} \text{ :: (Reductio ad absurdum)} \\ \text{ „Wenn im Kalkül aus ¬A ,regulär‘ eine Kontradiktion } & \text{F folgt, dann ist A ,bewiesen‘ ( ╞ ) : A ist ,wahr‘.“} \\ \end{align}</math> </small> |} A. FUHRMANN ''':''' <span style="color:#FF6000">»</span> ''Eine Prädikatenlogik zweiter Stufe ist eine Logik, in der die Quantoren auch Eigenschaftsausdrücke <span style="color:#00B000">(<span style="color:#FF6000">„Prädikate”</span>)</span> binden können''. <span style="color:#00B000">[ Die ,Prädikate‘ werden in einem Kalkül dieser Logik durch Definitionen ,bestimmt‘ ]</span>. ''Wir werden uns im folgenden recht frei einer dafür geeigneten formalen Sprache bedienen. Äußere Quantoren werden meist weggelassen und wir schreiben kurz'' <span style="color:#4C58FF">— ‚'''Xx'''‘ — </span> ''bzw.'' <span style="color:#4C58FF">— ‚'''PX'''‘ — </span> ''um auszudrücken, dass das Individuum'' <span style="color:#4C58FF">— ‚'''x'''‘ — </span> ''die Eigenschaft'' <span style="color:#4C58FF">— ‚'''X'''‘ — </span> ''hat, bzw. dass die Eigenschaft'' <span style="color:#4C58FF">— ‚'''X'''‘ — </span> ''die höherstufige Eigenschaft'' <span style="color:#4C58FF">— ‚'''P'''‘ — </span> ''<span style="color:#00B000">(für <span style="color:#FF6000">„positiv”</span>)</span> hat;'' <span style="color:#00B000"> [ wobei die Eigenschaft <span style="color:#4C58FF">— ‚'''P'''‘ — </span> als einzige im Kalkül ,unbestimmt‘ bleibt ]</span>. <span style="color:#FF6000">«</span><ref>A. FUHRMANN ‚''<span style="font-family: Times;"><big>‚G‘ wie Gödel. Kurt Gödels axiomatische Theologie</big></span>''‘, Seite 6, Anmerkung 3. Konform mit seinem Artikel in ‚''<span style="font-family: Times;"><big>Logik in der Philosophie</big></span>''‘ hg. v. P. SCHROEDER-HEISTER, W. SPOHN und E. OLSSON. 2005, Synchron, Heidelberg.</ref> Der All-Quantor für Eigenschaften, hier im GÖDEL-Kalkül der ,modalen‘ Prädikatenlogik zweiter Stufe, bindet die ,unbestimmte‘ Eigenschafts-Variable <span style="color:#4C58FF">— ‚'''X'''‘ —</span> ausschließlich nur in den Definitionen im 2. und 3. Beweisgang . <span style="color:#00B000"> (Im ersten Beweisgang gibt es keine Definition.)</span> Dieser All-Quantor wird dann jedes Mal in der Beweis-Durchführung durch die Substitution ''':''' <span style="color:#4C58FF"> [ Instanz(X:= ..) ]</span> mit ,bestimmte‘ Eigenschafts-Konstanten wie <span style="color:#4C58FF">— (X:= G) —</span>, bzw. <span style="color:#4C58FF">— (X:= ¬Y) —</span>, oder <span style="color:#4C58FF">— (X:= E<sub>not</sub>) —</span> ,regulär‘ <span style="color:#00B000">(├ )</span> beseitigt ''':''' <span style="color:#4C58FF"> [ ⱯXA(X) ├ A(X) ]</span>; wobei die Eigenschafts-Konstante im Kalkül entweder als Zwischenergebnis ,regulär‘ abgeleitet, <span style="color:#00B000">(,errechnet‘)</span>, oder mit einer Definition schon ,bestimmt‘ worden ist. Die spezifische ‚Eigenschaft‘ einer Eigenschaft wird hier, in der formalen Syntax der ,modalen‘ Prädikatenlogik zweiter Stufe, als eine tiefer gestellte Abkürzung <span style="color:#00B000">(als Index)</span> an ihre Trägereigenschaft angehängt, wie z. B. ‚wesentlich‘, bzw. ‚essentiell‘ durch <span style="color:#4C58FF"> — <sub>ess</sub> —</span>, oder ‚notwendig‘ durch <span style="color:#4C58FF"> — <sub>not</sub> —</span>. In der Definition-3 steht der Term ''':''' <span style="color:#4C58FF"> —‚'''E'''<sub>not</sub>'''x'''‘ —</span>, um auszudrücken, dass das Individuum <span style="color:#4C58FF">— ‚'''x'''‘ —</span> notwendig <span style="color:#4C58FF">— <sub>not</sub> —</span> die Eigenschaft ''':''' <span style="color:#4C58FF">— ‚'''E'''‘ —</span>, für ,Existenz‘, hat, d.h. <span style="color:#FF6000">»''das <span style="color:#4C58FF">‚'''x'''‘</span> existiert notwendig''«</span>. Der schon von GÖDEL indizierte Term ''':''' <span style="color:#4C58FF">—‚'''G'''<sub>ess</sub>'''x'''‘ —</span> kann gelesen werden als ''':''' <span style="color:#FF6000">»''Das Individuum <span style="color:#4C58FF">‚'''x'''‘</span> hat die Wesenseigenschaft, <span style="color:#4C58FF"> — <sub>ess</sub> — </span> ''':''' GOTT zu sein, <span style="color:#4C58FF">‚'''G'''‘ </span>''«</span>, statt der ,an sich‘ konformen, aber <span style="color:#4C58FF">„theologisch“</span> etwas ungenauen Formulierung ''':''' <span style="color:#FF6000">»''das'' <span style="color:#4C58FF">‚'''x'''‘</span> ''ist wesentlich göttlich''«</span>; oder mit der Voraussetzung ''':''' <span style="color:#4C58FF">— ‚'''Gx'''→'''G'''<sub>ess</sub>'''x'''‘ — </span> deutlicher und <span style="color:#4C58FF">„theologisch“</span> korrekt ''':''' <span style="color:#FF6000">»''Wenn'' <span style="color:#4C58FF">‚'''x'''‘</span> ''für den GOTT der Christen'', <span style="color:#4C58FF">‚'''G'''‘</span>, ''steht, dann ist GOTT-Sein'', <span style="color:#4C58FF">‚'''G'''‘</span>, <span style="color:#00B000">(,Existenz‘)</span> ''das Wesen dieses GOTTES'', <span style="color:#4C58FF">— <sub>ess</sub>‚'''x'''‘ —</span>, <span style="color:#00B000">(,Essenz‘)</span>«</span>; wobei, — entsprechend der ,methodologischen‘ Prämisse des Kalküls <span style="color:#00B000">(<span style="color:#4C58FF">— ‚'''Gx'''‘ — </span> ''':''' das <span style="color:#4C58FF">‚'''x'''‘</span> steht für den ,GOTT der Christen‘)</span> —, bei der Interpretation der Terme dieses besonderen Kalküls, die <span style="color:#4C58FF">„christliche Theologie”</span> für den Begriff <span style="color:#FF6000">„GOTT”</span>, Korrektur und die leitende Instanz ist. Dabei muss die Dreifach-Äquivalenz von <span style="color:#4C58FF"><span style="color:#4C58FF">— ‚'''G'''‘ — </span></span>berücksichtigt werden. Welche der drei Äquivalenzen, bzw. Lesearten von <span style="color:#4C58FF">— ‚'''G'''‘ — </span> bei einem bestimmten Term im Kalkül zulässig ist, muss <span style="color:#4C58FF">„theologisch”</span> überprüft und evaluiert werden. Bei manchen können sogar alle drei Lesearten <span style="color:#4C58FF">„theologisch”</span> zulässig sein. Warum es in der modalen Prädikatenlogik zweiter Stufe, im GÖDEL-System, ,Definitionen‘ gibt, erklärt GÖDEL formal-syntaktisch ''':''' <span style="color:#FF6000">»''Definitionen dienen ja nur der kürzeren Schreibwelse und sind daher prinzipiell überflüssig.''«</span> <span style="color:#00B000">(Aus der Anmerkung 6 in seinem Hauptwerk ''':''' ,''<span style="font-family: Times;"><big>Über formal unentscheidbare Sätze der Principia Mathematica und verwandter Systeme I</big></span>''‘.)</span> Für die <span style="color:#4C58FF">„theologische”</span> Interpretation und Hermeneutik seines Kalküls, sind die ,Definitionen‘ im GÖDEL-System jedoch wesentlich, und letztlich entscheidend. Erst dadurch wird sein Axiomensystem zur <span style="color:#4C58FF">„axiomatischen Theologie”</span>. GÖDEL gibt selbst den hermeneutischen Hinweis dazu, wenn er über den höherstufigen Eigenschaftsbegriff <span style="color:#FF6000">»''positiv''«</span> sagt, der nur ,indirekt‘ definiert wird, jedoch mit seinem gesamten Axiomensystem ''':''' <span style="color:#FF6000">»''Positiv bedeutet positiv im moralisch ästhetischen Sinne, (unabhängig von der zufälligen Struktur der Welt). Nur dann sind die Axiome wahr''.«</span> Die Deutung dieses ,höherstufigen‘ Begriffs als ein anderes Wort für <span style="color:#FF6000">„Transzendentalia“</span> ergibt sich aus der <span style="color:#4C58FF">„theologischen”</span> Evaluierung, d.h. der Einordnung des GÖDEL-Systems in die ,laufende‘ <span style="color:#FF6000">„Rede von GOTT“</span>, seit Menschen, sich über den Sinn der Welt und unseres Lebens in ihr, Gedanken machen. GOTT, der ,transzendent‘, — unabhängig —, zur Welt ist, ist Thema im Theorem ANSELMS, um das es ja im GÖDEL-Kalkül geht. Eine <span style="color:#4C58FF">„theologische”</span> Hermeneutik des GÖDEL-Systems ist daher legitim, die, als ein Bemühen um ein überzeugendes Verstehen, aus dem <span style="color:#4C58FF">„theologischen”</span> Vorwissen vieler Generationen schöpft. Um philosophische, und sogar <span style="color:#4C58FF">„theologische”</span> Theoreme exakt zu formulieren, und untersuchen zu können, hat der Ausnahmelogiker GÖDEL, im 20. Jahrhundert, ein Tor aufgestoßen, das uns ermöglichen kann, <span style="color:#FF6000">»''mathematisch evident''«</span>, und logisch objektiv nachprüfbar, in diesen Disziplinen zu argumentieren. Mit seiner modalen Prädikatenlogik zweiter Stufe, hat GÖDEL dem alten Wunsch eines Raimundus LULLUS, eines Gottfried Wilhelm LEIBNIZ, eines Immanuel KANT, und anderer, nach einer nachprüfbaren ,Universalsprache‘ in den Geisteswissenschaften, entsprochen; analog zur Mathematik, als Universalsprache in den Naturwissenschaften. Der sog. ,Theorembeweiser‘ der Wissenschaftler Christoph BENZMÜLLER und Bruno WOLTZENLOGEL-PALEO, mit Hilfe eines Computers, im 21. Jahrhundert, ist die kongeniale und logische Folge aus diesem Quanten-Schritt GÖDELS. In der folgenden Neu-Kalkülisierung, wird jeder einzelne operative Logik-Schritt des Kalküls in der '''linken Spalte''' nummeriert und als Term-Ergebnis angezeigt, und in der '''rechten Spalte''' werden die dafür benötigten Term-Komponenten und die dabei angewendeten Logik-Regeln und -Gesetze, mit Meta-Terme, dokumentiert. Am Anfang stehen die Ressourcen und das angestrebte Ziel des Beweisganges, <span style="color:#00B000">(das Theorem)</span>. Die GÖDEL Axiome und Definitionen, die Theoreme und Korollare, die Zwischenergebnisse, das Endergebnis, und die logischen Meta-Terme, <span style="color:#00B000">[ in eckigen Klammern ]</span>, werden kontextabhängig, <span style="color:#00B000">(durch ''„Benennungen“'')</span>, interpretiert, <span style="color:#00B000">(angezeigt durch ,Interpretationspunkte‘ — '''::''' —, falls nötig)</span>. Der jeweilige Beweisgang wird in den Anmerkungen ausführlich und umfassend kommentiert. Die Kalkül-Prämissen, <span style="color:#00B000">(<span style="color:#4C58FF">'''AE:'''</span> Argument Einführung)</span>, sind der modal-frei gewählte Einstieg in das Kalkül. Sie dokumentieren, zusammen mit dem angestrebten Beweis-Ziel, eine bestimmte Problemlage in einem externen Diskurs, der mit dem modalen Logik-System hier, formal-syntaktisch überprüft, und gegebenenfalls, verifiziert oder falsifiziert werden soll. Korollare sind einfache, logische Folgerungen aus dem jeweiligen Beweisgang. Theoreme und Korollare sind ,modal‘ gleichwertig. ====<div class="center"><span style="color:#660066">1. Beweisgang</span></div>==== {|class="wikitable" |- ! <div class="center"><span style="color:#660066">GÖDELS ontologischer Beweis für Theorem 1, (Möglichkeitsbeweis)</span></div> |- ! <span style="color:#00B000">''Terme der erweiterten Prädikatenlogik zweiter Stufe__________ „Benennungen“ und durchgeführte Logik-Operationen''</span> |- | <small> <math>\begin{align} \text{(Axiom 1.1)} & \quad P \neg X \;\Longrightarrow\;\ \neg P\ X\ & \ & \text{„Wenn die Negation von X positiv ist, dann ist die Eigenschaft X nicht positiv“} \\ \text{(Axiom 2)} & \quad (P\ X \wedge \;\Box \;\forall x (\ X\ x \Longrightarrow \ Y\ x)) \Longrightarrow \ P\ Y & \ & \text{„Die Eigenschaften Y, die aus einer positiven Eigenschaft X modal} \\ \text{ } & \quad & \ & \; \; \text{notwendig folgen, sind auch positive Eigenschaften“} \\ \text{(Axiom 3)} & \quad P\ G \ & \ & \text{„Göttlichkeit, GOTT-Sein, ist eine pos. Eigenschaft“ ↔ „GOTT ist perfekt“} \\ \text{[RK]} &\quad \Box\; \forall x A \;\Longrightarrow\;\Box\; \forall x B\; \text{ ├ }\;\Box \; \forall x (A \Longrightarrow\; B)\ & \ & \; \text{( :: Modales Prinzip KRIPKE-Γ-Ɐx)} \\ \text{(Theorem 1)} &\quad P\ X \;\Longrightarrow\; \Diamond \; \exists x \ X \ x \ & \ & \text{ (◇ :: „möglich“ ↔ „konsistent“ ↔ „denkbar“; □ :: „notwendig“) } \\ \text{ } & \text{„Positive Eigenschaften sind konsistent“} & \ & \Longleftarrow\; \text{was zu beweisen ist !} \\ \text{01} & \quad P\ X \ & \ & \text{ AE: „Angenommen, es gibt positive Eigenschaften, Perfektionen“} \\ \text{02} & \quad P\ X \;\Rightarrow\; \neg \Diamond \; \exists x \ X \ x \ & \ & \text{ AE: „Angenommen, positive Eigenschaften sind nicht konsistent“} \\ \text{03} & \quad (\neg x = .. )\ & \ & \text{ AE: „Es gibt die Eigenschaft, nicht mit x identisch zu sein“ :: (ungleich)} \\ \text{04} & \quad (\ x = .. )\ & \ & \text{ AE: „Es gibt die Eigenschaft, mit x identisch zu sein“ :: (gleich)} \\ \text{05} & \quad \text{ ├ }\; \neg \Diamond \; \exists x \ X \ x \ & \ & \text{:01:02:[Modus ponendo ponens] :: [A, A → B├ B] :AE:} \\ \text{06} & \quad \neg\neg \Box \neg \exists x \ X \ x \ & \ & \text{:05:[ ◇A ↔ ¬□¬A] :: (Modalregel)} \\ \text{07} & \quad \neg\neg \Box \neg\neg \forall x \neg X \ x \ & \ & \text{:06:[∃xA ↔ ¬Ɐx¬A] :: (Quantoren Regel)} \\ \text{08} & \quad \text{ ├ }\; \Box \; \forall x \neg X \ x \ & \ & \text{:07:NEG :: [¬¬A↔A] :: (Gesetz der Aussagenlogik)} \\ \text{09} & \quad \Box \; \forall x \neg X \ x \Leftrightarrow\ W & \ & \text{:02:08:[(:02:↔W) → (├:08:↔W)] :: (Kalkülregel)} \\ \text{10} & \quad \Box \; \forall x \ X \ x \Leftrightarrow\ F & \ & \text{:09:[(¬A↔W)↔(A↔F)] :: (Regel für Wahrheitswerte)} \\ \text{11} & \quad \Box \; \forall x (\neg x = x ) \Leftrightarrow \ F \; \ & \text{ } & \text{□ⱯxXx:03:Instanz(X:=(¬x=..)) ⇒ Kontradiktion !} \\ \text{12} & \quad \Box \; \forall x (\ X \ x \Rightarrow\; (\neg x = x)) & \text{ } & \text{:10:11:[(:10:↔F) → (:11:↔F)] :: „ex falso sequitur quotlibet“ :[RK]} \\ \text{13} & \quad \ P\ X \wedge \;\Box \; \forall x (\ X \ x \Rightarrow\; (\neg x = x)) & \ & \text{:01:12:[Konjunktion] :: [A, B ├ A∧B]} \\ \text{14} & \quad \ (P\ X \wedge \;\Box \; \forall x (\ X \ x \Rightarrow \; (\neg x = x))) \Rightarrow \; P (\neg x = .. ) & \ & \text{(A2):Instanz(Y:=( ¬x= ..)) :: (Substitution für Eigenschaften)} \\ \text{15} & \quad \ P (\neg x = .. ) & \ & \text{:13:14:[Modus ponens] :: (logische Schlussregel)} \\ \text{16} & \quad \ P (\neg x = .. )\;\Rightarrow\ \neg P (\ x = .. )\ & \ & \text{(A1.1):Instanz(X:=(x=..))}\\ \text{17} & \quad \neg P (\ x = .. )\ & \ & \text{:15:16:[Modus ponens]}\\ \text{18} & \quad \Box \; \forall x \ (x = x ) \Leftrightarrow \ W \; \ & \ & \text{□ⱯxXx:04:Instanz(X:=(x=..)) ⇒ Tautologie !} \\ \text{19} & \quad \Box \; \forall x (\ X \ x \Rightarrow\; (x = x)) & \text{ } & \text{:10:18:[(:10:↔F) → (:18:↔W)] :: „ex falso sequitur etiam verum“ :[RK]} \\ \text{20} & \quad \ P\ X \wedge \;\Box \; \forall x (\ X \ x \Rightarrow\; (x = x)) & \ & \text{:01:19:[Konjunktion] } \\ \text{21} & \quad \ (P\ X \wedge \;\Box \; \forall x (\ X \ x \Rightarrow\; (x = x))) \Rightarrow \ P (x = .. ) & \ & \text{(A2):Instanz(Y:=(x=..))} \\ \text{22} & \quad \ P (\ x = .. )\ & \ & \text{:20:21:[Modus ponens]}\\ \text{23} & \quad \text{ ├ }\; (\neg P (\ x = .. )\ \wedge \ P (\ x = .. )) \Leftrightarrow\ F & \ & \text{:17:22:[Konjunktion] ⇒ Kontradiktion !}\\ \text{24} & \quad \neg \Diamond \; \exists x \ X \ x \Rightarrow (\neg P (\ x = .. )\ \wedge \ P (\ x = .. )) & \ & \text{:05:23:[├A├B╞ A→B] :: ''KONDITIONALER BEWEIS''}\\ \text{25} & \quad \neg\neg \Diamond \; \exists x \ X \ x & \ & \text{:24:23:[Modus tollendo tollens] :: [A→B,¬B ├ ¬A]}\\ \text{26} & \quad \text{ ├ }\; \Diamond \; \exists x \ X \ x & \ & \text{:25:NEG; bzw. :05:23:[├¬A→F ╞ A] :: ''INDIREKTER BEWEIS''}\\ \text{27} & \quad \ P\ X \;\Longrightarrow\; \Diamond \; \exists x \ X \ x \ & \ & \text{:01:26:[├A├B ╞ A→B]} \\ \text{(Theorem 1)} & \;\text{„Positive Eigenschaften sind konsistent“} & \ & \Longleftarrow\; \text{was zu beweisen war !} \\ \text{28} & \quad \ P\ G \;\Longrightarrow\; \Diamond \; \exists x \ G \ x \ & \ & \text{:27:Instanz(X:=G) } \\ \text{29} & \quad \Diamond \; \exists x \ G \ x \ & \ & \text{(A3):28:[Modus ponens]} \\ \text{(Korollar 1)} & \;\text{„Das Dasein GOTTES ist definitiv denkbar“} & \ & \text{„Es ist widerspruchsfrei möglich, dass es GOTT gibt“} \\ \end{align}</math> </small> |} Anmerkung-1 ''':''' <span style="color:#00B000">(Der GÖDEL-Term <span style="color:#4C58FF">— ‚'''PX'''‘ —</span>, im Axiom-2 ist an sich überflüssig, da dieser hier als Prämisse :01: ohnehin ,angenommen‘ wird. Der Beweisgang kommt mit Axiom-2 auch ohne diesen GÖDEL-Term zum selben Ergebnis, und verkürzt sich damit sogar um zwei Schritte ''':''' Zeile 13 und Zeile 20 sind dann unnötig.)</span> Der Beweisgang geht mit Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, als Kalkül-Ressource, prinzipiell von der Existenz eines GOTTES aus. Mit der Prämisse :01: <span style="color:#00B000">(hier im 1. Beweisgang)</span> postuliert GÖDEL vorerst allgemein, dass es <span style="color:#FF6000">»''Vollkommenheit, d.h. positive Eigenschaften''«</span> in unserer Welt gibt ''':''' <span style="color:#4C58FF">— ‚'''PX'''‘ —</span>, ohne im Kalkül zu definieren, was darunter zu verstehen ist. Definiert wird dann <span style="color:#00B000">(im 2. Beweisgang)</span>, was eine <span style="color:#FF6000">»''wesentliche Eigenschaft''«</span> ist ''':''' <span style="color:#4C58FF">— ‚'''X'''<sub>ess</sub>‘ —</span>, <span style="color:#00B000">(im Sinne von ,Transzendentalia‘)</span>; und mit Hilfe dieser Eigenschaft definiert GÖDEL <span style="color:#00B000">(im 3. Beweisgang)</span>, was eine <span style="color:#FF6000">»''notwendige Existenz''«</span> ist ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>‘ —</span>, die er <span style="color:#00B000">(im selben Beweisgang)</span> axiomatisch mit den <span style="color:#FF6000">»''positiven Eigenschaften in GOTT''«</span> gleich setzt ''':''' Axiom-5 ''':''' <span style="color:#4C58FF"> —‚'''PE'''<sub>not</sub>‘ —</span>. Erst im 2. Beweisgang wird mit Term :13:, nach einer <span style="font-family: Times;"><big>,Reductio ad absurdum‘</big></span>, definitiv bewiesen <span style="color:#00B000">( ╞ )</span>, dass die, von GÖDEL, hier postulierten, <span style="color:#00B000">(allgemeinen)</span>, positiven Eigenschaften, <span style="color:#4C58FF">— ‚'''PX'''‘ —</span>, tatsächlich auch in GOTT <span style="color:#FF6000">»''positive Eigenschaften''«</span>, <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, sind; <span style="color:#00B000">(das sind die ultimativen ,Transzendentalia‘ in GOTT)</span>. Jetzt aber muss vorerst der ,Wunsch‘, bzw. die LEIBNIZ-Frage beantwortet werden ''':''' Ob, mit <span style="color:#FF6000">»''mathematischer Evidenz''«</span>, <span style="color:#FF6000">»''GOTT''«</span> ,möglich‘ ist, der, nach traditioneller Auffassung, <span style="color:#FF6000">»''ein Wesen von äußerster Größe und Vollkommenheit'' <span style="color:#00B000">[ ist ]</span>, ''das alle Grade derselben in sich schließt''«</span>, <span style="color:#00B000">(nach LEIBNIZ; was GÖDEL mit Definition-1 ,abbildet‘)</span>. Wenn man also beweisen will, dass die Existenz eines solchen ''<span style="color:#FF6000">»GOTTES«</span>'' ,möglich‘ sein soll, dann muss man beweisen, dass dieses postulierte System der <span style="color:#FF6000">»''positiven Eigenschaften in GOTT''«</span> möglich und formal ,widerspruchsfrei‘ ist. Das Ergebnis des 1. Beweisganges, das ,Theorem-1‘, <span style="color:#00B000">(,Erster Satz‘)</span>, fasst A. FUHRMANN zusammen als ''':''' <span style="color:#FF6000">»''Positive Eigenschaften sind konsistent''«</span>. Wenn sie nicht konsistent wären, käme es zu unlösbaren Widersprüchen, <span style="color:#00B000">(Term :24:)</span>. Term :27: ,besagt‘ ''':''' <span style="color:#FF6000">»''Es ist definitiv, d.h. ohne Widerspruch möglich, dass es positive Eigenschaften gibt''«</span>; denn die Behauptung, es sei nicht möglich, dass es positive Eigenschaften, <span style="color:#00B000">(das sind die ,Transzendentalia‘)</span>, in unserer Welt gibt, führt zu einem Widerspruch, und ist daher falsch und ,unlogisch’. Einmal Axiom-1 und zweimal Axiom-2, <span style="color:#00B000">(das die Gleichwertigkeit aller positiven Eigenschaften nachdrücklich klarstellt)</span>, sichern hier die Konsistenz <span style="color:#FF6000">»''aller positiven Eigenschaften in der Welt'', <span style="color:#00B000">[ die ,Transzendentalien‘ ]</span>, ''und damit auch die, die in GOTT sind''«</span>. <span style="color:#00B000">(Der 2. Beweisgang bestätigt, dass es in GOTT tatsächlich positive Eigenschaften gibt.)</span> Die ,Gleichwertigkeit‘ aller Transzendentalia, <span style="color:#00B000">(ihre ,Äquivalenz‘)</span>, ist formal-syntaktisch daran erkennbar, dass die beiden Eigenschafts-Variablen <span style="color:#4C58FF">— ‚'''X'''‘ —</span> und <span style="color:#4C58FF">— ‚'''Y'''‘ —</span> im Axiom-2 für beliebige, unterschiedliche ,positive‘ Eigenschaften gegenseitig austauschbar, <span style="color:#00B000">(,konvertierbar‘)</span>, sind. Das heißt, dass beliebige, unterschiedliche ,positive‘ Eigenschaften, für die diese Variablen stehen, sich paarweise, wechselseitig ,implizieren‘, einschließen, und damit notwendig voneinander abhängen, d.h. koinzident ,eins‘ sind, konvertierbar, und somit gleichwertig sind; entsprechend dem Theorem von den Transzendentalia. Zu Term :29:, dem Korollar zu Theorem-1, notiert GÖDEL am 10. Feb. 1970, <span style="color:#00B000">(übersetzt von Joachim BROMAND)</span> ''':''' <span style="color:#FF6000">»''◇∃xG(x) besagt, dass das System aller positiver Eigenschaften kompatibel ist'',</span> <span style="color:#00B000">[ d.h. miteinander verträglich, weil ohne Widersprüche ].</span> <span style="color:#FF6000">''Dies ist ,wahr‘ auf Grund von Axiom-2,'' <span style="color:#00B000">[ weil alle positiven Eigenschaften, d.h. die Transzendentalien, koinzident gleichwertig und konvertierbar sind ]</span>.«</span> Darum ist es definitiv ,möglich‘, dass es diesen GOTT gibt, der <span style="color:#FF6000">»''alle Grade der Vollkommenheit in sich schließt''«</span> und <span style="color:#FF6000">»''über dem ,Größeres‘ nicht mehr gedacht werden kann''«</span>, und, in weiterer Konsequenz, ist der GOTT-Glaube deshalb ,notwendig‘ widerspruchsfrei und sinnvoll, nach Theorem-3 ''':''' <u>Wenn</u> es ,ohne Widerspruch‘ ''<span style="color:#FF6000">»möglich, bzw. denkbar«</span>'' ist, dass es ''<span style="color:#FF6000">»GOTT«</span>'' gibt, <u>dann</u> folgt daraus ''<span style="color:#FF6000">»notwendig«</span>'' ''':''' es ist auch ,widerspruchsfrei‘, wenn man als Voraussetzung ,annimmt‘, dass es ''<span style="color:#FF6000">»GOTT wirklich, für jede mögliche Welt«</span>'' gibt ''':''' Term :11: im 3. Beweisgang. Der Wenn-Satz ist hier mit Korollar-1 bewiesen; der Dann-Satz wird im 3. Beweisgang bewiesen <span style="color:#00B000">( ╞ )</span>, d.i. die Widerspruchsfreiheit und Sinnhaftigkeit des GOTT-Glaubens. Die ontologische ,Identität‘, d.h. die ,Gleichsetzung‘, bzw. die ,Koinzidenz‘ von Strukturen, die in der Endlichkeit für uns verschieden sind, jedoch in dem unbegrenzt Unendlichen, GOTT, paarweise, perspektivisch in eins zusammenfallen, wie ,Sein‘ und ,Wesen‘, wie ,Ursache‘ und ,Wirkung‘ usw., und auch die Äquivalenz und Austauschbarkeit der Transzendentalien, haben im GÖDEL-Kalkül die logisch-syntaktische Form einer, aus sich, ,modal‘ notwendigen Implikation zwischen zwei verschiedenen, gegenseitig austauschbaren Eigenschafts-Variablen ''':''' <span style="color:#4C58FF">— ‚'''□∀x(Xx→Yx)'''‘ —</span>. Dieses Term-Element stellt formal-syntaktisch die Gleichwertigkeit, <span style="color:#00B000">(Äquivalenz)</span>, bzw. die paarweise Koinzidenz aller positiven Eigenschaften und Zuordnungen in GOTT dar; sowohl hier im Axiom-2, als auch in der Definition-2 über die ,Wesenseigenschaften‘, im 2. Beweisgang, mit jeweils verschiedenen, frei umbenennbaren, Individuum-Variablen. Dieses Term-Element ,gilt‘ allgemein jedoch nur für positive Eigenschaften, alias ,Transzendentalia‘, und wird sofort <span style="color:#FF6000">„modal falsch“</span>, wenn für <span style="color:#4C58FF">— ‚'''X'''‘ —</span>, oder <span style="color:#4C58FF">— ‚'''Y'''‘ —</span>, Eigenschaften eingesetzt werden, die, — von Natur aus —, weder positiv noch negativ sind, wie z. B. ,rot‘ oder ,schwer‘. Die wechselseitige Austauschbarkeit der noch ,unbestimmten‘ Eigenschafts-Variablen, für beliebige positive Eigenschaften, ist formal äquivalent zur freien Umbenennung der noch ,unbestimmten‘ Individuum-Variablen ''':''' <span style="color:#4C58FF">[ FUB(x:=y) ]</span>. Der formale, gegenseitige, allgemeine Austausch der positiven Eigenschafts-Variablen, bzw. die formale Gleichsetzung beliebiger positiver Eigenschaften, kann, auf Grund der Äquivalenz aller Vollkommenheiten, bzw. ,Transzendentalia‘, auch dann noch durchgeführt werden, wenn eine, von zwei Eigenschafts-Variablen, durch eine Definition oder eine Schlussfolgerung ,bestimmt‘ worden ist, und dadurch zu einer positiven Eigenschafts-Konstante, d.h. zu einer ,bestimmten‘, positiven Eigenschaft geworden ist. Das ist z. B. bei einer instanziierenden Substitution der Fall ''':''' <span style="color:#4C58FF">[ Instanz(X:=..) ]</span>. Das ist eine spezifische Eigenheit der GÖDEL-Axiomatik, weil alle relevanten, positiven Eigenschaften und Zuordnungen in GOTT, als <span style="color:#FF6000">„ultimative Transzendentalia“</span>, immer auch miteinander kompatibel sind. Mit dem Term-Element ''':''' <span style="color:#4C58FF">— ‚'''□∀x(Xx→Yx)'''‘ —</span>, wird formal die <span style="color:#FF6000">„Koinzidenz“</span> aller ,Transzententalia‘ in der Welt, und auch der ,Zusammenfall‘ aller Gegensätze in GOTT, abgebildet. Da die Variable <span style="color:#4C58FF">‚'''x'''‘</span> für GOTT steht, <span style="color:#4C58FF">‚'''G'''‘</span>, <span style="color:#00B000">(im Korollar-1)</span>, ist die Eigenschaft ''':''' ''<span style="color:#FF6000">„nicht mit x identisch zu sein“</span>'' ''':''' <span style="color:#4C58FF">(¬x=..)</span>, d.h. das <span style="color:#FF6000">„Ungleichsein“</span>, das <span style="color:#FF6000">„Anderssein“</span> GOTTES, <span style="color:#00B000">(Prämisse :03:)</span>, die entscheidende Voraussetzung und Norm für jeden Diskurs über GOTT ''':''' um der <span style="color:#FF6000">„Unvergleichlichkeit“</span> GOTTES gerecht zu werden, darf GOTT niemals mit etwas aus der ''<span style="color:#FF6000">»zufälligen Struktur der Welt«</span>'' verglichen, d.h. gleich gesetzt werden. Der Term :18: <span style="color:#4C58FF">(x=x) ↔ W</span> erinnert an die Selbstbezeichnung des GOTTES-JHWH in Exodus 3,14 ''':''' <span style="color:#CC66FF">»''Ich bin der ‚Ich-Bin‘''«</span>. <span style="color:#00B000">(In der mystischen Tradition, im ''<span style="font-family: Times;"><big>‚Dialog über die Vorsehung‘</big></span>'', dem Hauptwerk der Heiligen KATHARINA von Siena, Mystikerin und Lehrerin der Kirche, sagt GOTT-VATER zur KATHARINA ''':''' <span style="color:#FF6000">»''ICH BIN der IST'', <span style="color:#00B000">[ aus mir selbst ]</span>, ''du bist, die nicht ist'', <span style="color:#00B000">[ aus dir selbst ]</span>.«</span> Das ist eine wichtige, deutende Ergänzung, und die authentische <span style="color:#4C58FF">,theologische‘</span> Interpretation dieser Exodus Text-Stelle. Das ist der Grund für die <span style="color:#FF6000">„Unvergleichlichkeit“</span> GOTTES.)</span> Zum Term :03: notiert A. FUHRMANN ''':''' <span style="color:#FF6000">»</span> ''Die Notation'' <span style="color:#4C58FF">(¬x=..)</span> ''für die Eigenschaft ''':''' <span style="color:#FF6000">„nicht mit x identisch zu sein“</span>'', <span style="color:#00B000">[ d.h. <span style="color:#FF6000">„Ungleichheit“, „Anderssein“</span>, bzw. die Notation <span style="color:#4C58FF">(x=..)</span> für den Existenzmodus-Perfektion ''':''' <span style="color:#FF6000">„Gleichheit“, „Idendität“</span> ]</span>, ''ist suggestiv und informell und ersetzt hier einen formal korrekten Abstraktionsausdruck wie'' <span style="color:#4C58FF">λy.(¬x=y)</span>, <span style="color:#00B000">[ bzw. <span style="color:#4C58FF">λy.(x=y)</span> ]</span>. ''Für die formal korrektere Notation bedarf es der zusätzlichen Vereinbarung, dass der Ausdruck'' <span style="color:#4C58FF">λy.(¬x=y)</span> ''gleichbedeutend sei mit dem Ausdruck'' <span style="color:#4C58FF">¬λy.(x=y)</span>. ''Diese Vereinbarung ist harmlos, da wir aufgrund der Regel der λ–Konversion'' ''':''' <span style="color:#4C58FF">λy.Xy.x ↔ Xx</span>, <span style="color:#00B000">[ mit der <span style="color:#4C58FF">Instanz(X:=(¬x=..))</span> ]</span>, ''so schließen dürfen'' ''':''' <span style="color:#4C58FF">λy.(¬x=y).x ↔ ¬x=x ↔ <span style="color:#00B000">¬(x=x)</span> ↔ ¬λy.(x=y).x</span> .<span style="color:#FF6000">«</span> <ref>A. FUHRMANN a.a.O. Seite 7, Anmerkung 4 (von mir korrigiert und ergänzt)</ref> In der Kalkül-Zeile 29 wird das Möglichkeits-Korollar-1 durch einen <span style="color:#4C58FF">[ Modus ponens ]</span> mit Axiom-3 von der Kalkül-Prämisse-Term :01: ,abgekoppelt‘, d.h. es ist nicht mehr vom Term :01: <span style="color:#4C58FF">— ‚'''PX'''‘ —</span> logisch abhängig. Das Möglichkeits-Korollar-1 behält jedoch die bewiesene Widerspruchsfreiheit von Theorem-1, und ist damit nur mehr von Axiom-1 und Axiom-2 abhängig, was für das Theorem-ANSELMS am Schluss entscheidend ist. Erklärung zu Term :05: Das Ergebnis einer Logik-Operation zwischen Prämissen ist ,regulär‘ <span style="color:#00B000">(├ )</span> den Prämissen zuzurechnen. Das Modale-Prinzip KRIPKE-Γ-Ɐx, <span style="color:#4C58FF">['''RK''']</span>, in Worten ''':''' <span style="color:#FF6000">»''Wenn mit ,modaler‘ Notwendigkeit'' <span style="color:#00B000">( □ )</span>, ''für alle'' <span style="color:#4C58FF">‚'''x'''‘</span> ''die Aussage'' <span style="color:#4C58FF">‚'''A'''‘</span> ''gilt, und daraus logisch folgt, dass mit ,modaler‘ Notwendigkeit'' <span style="color:#00B000">( □ )</span>, ''für alle'' <span style="color:#4C58FF">‚'''x'''‘</span> ''auch die Aussage'' <span style="color:#4C58FF">‚'''B'''‘</span> ''gilt, dann ist in einem Kalkül regulär'' <span style="color:#00B000">( ├ )</span> ''ableitbar'' ''':''' ''es ist wahr, dass mit ,modaler‘ Notwendigkeit'' <span style="color:#00B000">( □ )</span>, ''für alle'' <span style="color:#4C58FF">‚'''x'''‘</span> ''aus der Aussage'' <span style="color:#4C58FF">‚'''A'''‘</span> ''die Aussage'' <span style="color:#4C58FF">‚'''B'''‘</span> ''logisch folgt''«</span>. Der Term <span style="color:#4C58FF">— ‚'''□∀xXx'''‘ —</span> steht formal-syndaktisch, allgemein für ,Transzendentalia‘, und ist für alle ,Nicht-Transzendentalia‘ <span style="color:#FF6000">„modal falsch“</span>. ====<div class="center"><span style="color:#660066">2. Beweisgang</span></div>==== {|class="wikitable" |- ! <div class="center"><span style="color:#660066">GÖDELS ontologischer Beweis für Theorem 2, (,Basisbeweis‘)</span></div> |- ! <span style="color:#00B000">''Terme der erweiterten Prädikatenlogik zweiter Stufe____________„Benennungen“ und durchgeführte Logik-Operationen''</span> |- | <small> <math>\begin{align} \text{(Axiom 1.2)} & \quad \neg P\ X \;\Longrightarrow\;\ P\neg X\ & \ & \text{„Wenn X nicht positiv ist, dann ist die Negation ¬X positiv“} \\ \text{(Axiom 3)} & \quad \ P\ G \ & \ & \text{„Göttlichkeit, GOTT-Sein, ist eine pos. Eigenschaft“ ↔ „GOTT ist perfekt“} \\ \text{(Axiom 4)} & \quad \ P\ X \;\Longrightarrow\; \Box \; \ P\ X \ & \ & \text{„Positive Eigenschaften sind notwendig aus sich positiv“} \\ \text{(Definition 1)} &\quad \ G\ x \;\Longleftrightarrow\; \forall X(\ P \ X \Longrightarrow \ X \ x)\ & \ & \text{„x ist genau dann GOTT, wenn x alle positiven Eigenschaften hat“} \\ \text{(Definition 2)} & \quad \ X_{ess}\ x \;\Leftrightarrow X\ x \wedge \forall Y \left(\ Y\ x \Rightarrow \Box \; \forall y (\ X\ y \Rightarrow \ Y\ y)\right) & \ & \text{„X ist genau dann eine wesentliche Eigenschaft von x, wenn x sie hat, und} \\ \text{ } & \quad & \text { } & \;\;\text{alle anderen Eigenschaften Y von x notwendig aus dieser Eigenschaft X folgen“} \\ \text{[RM]} &\quad \ A \;\Longrightarrow\;\ B\; \text{ ├ }\;\Box \; A \Longrightarrow\;\Box\; \ B\ & \ & \text{( :: Modales Prinzip)} \\ \text{(Theorem 2)} &\quad \ G\ x \;\Longleftrightarrow\; \ G_{ess}\ x \ & \ & \text{(,G‘ :: „Göttlichkeit“ ↔ „GOTT“ ↔ „Dasein GOTTES“)} \\ \text{ } &\;\text{„Das Wesen GOTTES ist sein Dasein“} & \ & \Longleftarrow\; \text{was zu beweisen ist !} \\ \text{01} &\quad \ G\ x \ & \ & \text{ AE: „Angenommen, x steht für den GOTT der Christen“} \\ \text{02} &\quad \ Y\ x \ & \ & \text{ AE: „Angenommen, GOTT hat die Eigenschaften Y“} \\ \text{03} &\quad \neg P\ Y & \ & \text{ AE: „Angenommen, die Y in GOTT sind nicht positiv“} \\ \text{04} &\quad \neg P \ Y \Rightarrow \ P \neg Y\ & \ &\text{(A1.2):Instanz(X:=Y) :: (Substitution für Eigenschaften) } \\ \text{05} &\quad \ P \neg Y \ & \ & \text {:03:04:[Modus ponens] :: [A, A → B├ B] } \\ \text{06} &\quad \forall X(\ P \ X \Rightarrow \ X \ x)\ & \ &\text{(D1):01:[Modus ponens] :: (logische Schlussregel)} \\ \text{07} &\quad \ P \ X \Rightarrow \ X \ x\ & \ &\text{:06:[ⱯXA(X) ├ A(X)] :: (Quantorenregel)} \\ \text{08} &\quad \ P \neg Y \Rightarrow \neg Y \ x\ & \ &\text{:07:Instanz(X:=¬Y)} \\ \text{09} &\quad \neg Y \ x\ & \ &\text{:05:08:[Modus ponens]} \\ \text{10} &\quad \text{ ├ }\; (Y\ x \wedge \neg Y \ x) \;\Leftrightarrow\;\ F\ & \ & \text{:02:09:[Konjunktion] ⇒ Kontradiktion !} \\ \text{11} &\quad \neg P\ Y \; \Rightarrow \; (Y\ x \wedge \neg Y \ x )\ & \ &\text{:03:10:[├A├B ╞ A → B] :: ''KONDITIONALER BEWEIS''} \\ \text{12} &\quad \neg\neg P\ Y \ & \ &\text{:11:10:[Modus tollendo tollens] :: [A → B,¬B├ ¬A]} \\ \text{13} &\quad \text{ ├ }\; P\ Y \ & \ &\text{:12:NEG; bzw. :03:10:[├¬A→F ╞ A] :: ''INDIREKTER BEWEIS'' :AE:} \\ \text{14} &\quad \ P\ Y \;\Rightarrow\;\Box \; \ P\ Y \ & \ & \text{(A4):Instanz(X:=Y)} \\ \text{15} &\quad \Box \; \ P\ Y \ & \ & \text{:13:14:[Modus ponens]} \\ \text{16} &\quad \ G \ y \Rightarrow \ Y \ y\ & \ &\text{:01:02:[├A├B ╞ A→B]:FUB(x:=y)} \\ \text{17} &\quad \text{ ├ }\; \forall y(\ G \ y \Rightarrow \ Y \ y)\ & \ &\text{:16:[G(y) ├ ⱯyG(y)]} \\ \text{18} &\quad \Box \; \ P\ Y \;\Rightarrow\; \Box \; \forall y(\ G \ y \Rightarrow \ Y \ y)\ & \ &\text{:13:17:[├A├B ╞ A→B]:[RM]} \\ \text{19} &\quad \text{ ├ }\; \Box \; \forall y(\ G \ y \Rightarrow \ Y \ y)\ & \ &\text{:15:18:[Modus ponens]} \\ \text{20} &\quad \ Y\ x \;\Rightarrow\; \Box \; \forall y(\ G \ y \Rightarrow \ Y \ y)\ & \ &\text{:02:19:[├A├B ╞ A→B]} \\ \text{21} &\quad \ (Y\ x \;\Rightarrow\; \Box \; \forall y(\ G \ y \Rightarrow \ Y \ y)) \wedge \ G \ x & \ &\text{:20:01:[Konjunktion] :: [A, B├ A ∧ B]} \\ \text{22} &\quad \ (Y\ x \;\Rightarrow\; \Box \; \forall y(\ X \ y \Rightarrow \ Y \ y)) \wedge \ X \ x\;\Leftrightarrow\; X_{ess}\ x \ & \ &\text{(D2):KOMM(↔):KOMM(∧):[ⱯYA(Y) ├ A(Y)] wegen :13:} \\ \text{23} &\quad \ (Y\ x \;\Rightarrow\; \Box \; \forall y(\ G \ y \Rightarrow \ Y \ y)) \wedge \ G \ x\;\Leftrightarrow\; G_{ess}\ x \ & \ &\text{:22:Instanz(X:=G)} \\ \text{24} & \quad \text{ ├ }\; G_{ess}\ x \ & \ &\text{:21:23:[Modus ponens]:AE: wegen :30:} \\ \text{25} &\quad \ G\ x \;\Rightarrow\; \ G_{ess}\ x \ & \ & \text{:01:24:[├A├B ╞ A→B] :: Theorem 2.1} \\ \text{26} &\quad \forall X(\ P \ X \Rightarrow \ X \ x)\ & \ &\text{(D1):01:[Modus ponens] } \\ \text{27} &\quad \ P \ X \Rightarrow \ X \ x\ & \ &\text{:26:[ⱯXA(X) ├ A(X)]} \\ \text{28} &\quad \ P \ G \Rightarrow \ G \ x\ & \ &\text{:27:Instanz(X:=G)} \\ \text{29} &\quad \text{ ├ }\; G \ x\ & \ &\text{(A3):28:[Modus ponens]} \\ \text{30} &\quad \ G_{ess}\ x \;\Rightarrow \ G \ x\ & \ &\text{:24:29:[├A├B ╞ A→B] :: Theorem 2.2 } \\ \text{31} &\quad \ G\ x \;\Longleftrightarrow\; \ G_{ess}\ x \ & \ & \text{:25:30:[Konjunktion]:BIKONDITIONAL :: [(A→B) ∧ (B→A) ↔ (A↔B)] } \\ \text{(Theorem 2)} &\; \text{„Dasein, GOTT-Sein, ist das Wesen GOTTES“} & \ & \Longleftarrow\; \text{was zu beweisen war ! } \\ \text{32} &\quad \text{ ├ }\; \Box \; \forall y(\ G \ y \Rightarrow \ (x = y))\ & \ & \text{:19:Instanz(Y:=(x=..))} \\ \text{33} &\quad \ G\ x \;\Rightarrow\; \Box \; \forall y(\ G \ y \Rightarrow \ (x = y))\ & \ & \text{:01:32:[├A├B ╞ A→B]} \\ \text{(Korollar 2)} & \;\text{„Es gibt notwendig höchstens einen GOTT“} & \ & \text{„Wenn es GOTT gibt, dann gibt es für jede mögliche Welt nur einen GOTT“} \\ \end{align}</math> </small> |} <span style="color:#00B000"><small>(In den Kalkül-Zeilen 16, 18, 31 mussten zwei-, und in Zeile 22 drei Kalkül-Schritte, d.h. Logik-Operationen in eine Zeile zusammengezogen werden, weil der Parser dieser speziellen Mathematik-Funktion in Wikibooks jedes Mal wegen Puffer-Überlauf abstürzt, wenn zu den bestehenden Zeilen noch eine neue Zeile, oder ein Text-Element, zusätzlich eingefügt wird. Das vermindert etwas die Transparenz des Kalküls.)</small></span> Anmerkung-2 ''':''' <span style="color:#00B000">(Dieser Beweisgang kommt auch ohne das ,unbestimmte‘ Konjunkt <span style="color:#4C58FF"> — ‚'''Xx'''‘ —</span> in der Definition-2 zum gleichen Ergebnis, und wird dadurch um eine Zeile verkürzt ''':''' Zeile 21 entfällt, und <span style="color:#4C58FF">[ KOMM(∧) ]</span> ist dann unnötig. Dieses Konjunkt wird hier ebenfalls schon in der Kalkül-Prämisse :01: <span style="color:#4C58FF"> — ‚'''Gx'''‘ —</span>, als ,Annahme‘ gesetzt, vorentschieden und ,bestimmt‘ mit der <span style="color:#4C58FF">[ Instanz(X:=G) ]</span>. Es war also logisch korrekt, dass GÖDEL, in seiner Notiz vom 10. Feb. 1970 zum ontologischen Beweis, dieses Konjunkt weggelassen hat, was ihm von Kommentatoren als ein Flüchtigkeitsfehler angerechnet worden war. Der gesamte 2. Beweisgang bewegt sich im Geltungsbereich der Prämisse Term :01:, d.h. ist in jeder Zeile von der Annahme abhängig ''':''' die Variable <span style="color:#4C58FF"> — ‚'''x'''‘ —</span> steht für den GOTT der Christen. In der Kalkül-Zeile 33 wird mit Korollar-2 diese Abhängigkeit, für den Term :32:, explizit dargestellt.)</span> Der Beweisgang geht mit der Prämisse :01: prinzipiell, als ,modal‘ freigewählte Voraussetzung, von der Existenz eines GOTTES aus. Im 1. Beweisgang wurde bewiesen, dass die von GÖDEL ,postulierten‘ <span style="color:#FF6000">»''allgemeinen positiven Eigenschaften, Vollkommenheiten, Perfektionen'', <span style="color:#00B000">[ die sog. ,Transzendentalien‘ ]</span> ''konsistent''«</span>, d.i. widerspruchsfrei sind. Hier, in diesem Beweisgang wird nun die Prämisse vom 1. Beweisgang, <span style="color:#4C58FF"> — ‚'''PX'''‘ —</span>, im Bezug auf GOTT hinterfragt ''':''' Gibt es auch in GOTT so Etwas, wie <span style="color:#FF6000">»''Vollkommenheit, Positives, Perfektes''«</span> '''?''' Die ,Annahme‘ jedoch, dass es <span style="color:#FF6000">»''in GOTT keine Vollkommenheit, nichts Positives, nichts Perfektes''«</span> <span style="color:#00B000">(keine Transzendentalien)</span> gibt, <span style="color:#00B000">(Prämisse Term :03:)</span>,<span style="color:#4C58FF"> — ‚'''¬PY'''‘ —</span>, d.h. dass die <span style="color:#00B000">(wesentlichen)</span> Eigenschaften in GOTT keine <span style="color:#FF6000">„Vollkommenheiten“</span> seien, führt aber zu einem unlösbaren Widerspruch, <span style="color:#00B000">(Term :10:)</span>. Mit Term :13:, als 1. Hauptergebnis, ist damit, — als ,neue‘ Prämisse, <span style="color:#00B000">(ersetzt Term :03:)</span> —, definitiv ,bewiesen‘ <span style="color:#00B000">( ╞ , d.h. es ist ,wahr‘ und ,widerspruchsfrei‘)</span>, dass alle Eigenschaften, die hier mit <span style="color:#4C58FF">— ‚'''Y'''‘ —</span> symbolisiert werden, <span style="color:#FF6000">„positive Eigenschaften“</span>, d.h. <span style="color:#FF6000">„Perfektionen“</span> sind, von denen das Kalkül ,annimmt‘, <span style="color:#00B000">(Prämissen Term :01:, Term :02: und speziell Term :16:)</span>, dass der GOTT der Christen sie besitzt. Alle ,Wesenseigenschaften‘ in GOTT ''':''' <span style="color:#4C58FF">— ‚'''Y'''<sub>ess</sub>‘ —</span>, die durch den Term :13:, <span style="color:#4C58FF">— ‚'''PY'''‘ —, </span> dargestellt werden, sind somit <span style="color:#FF6000">„Vollkommenheiten“</span> ''':''' <span style="color:#4C58FF">— ‚'''P'''‘ —</span><span style="color:#00B000">, (,ultimative Transzendentalien‘, aller ,Grade‘)</span>. Damit ist definitiv ‚bestätigt‘, <span style="color:#00B000">( ╞ , es ist ,wahr‘ und ,widerspruchsfrei‘)</span>, was mit Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, schon ‚angenommen‘ worden ist ''':''' <span style="color:#FF6000">»''GOTT ist perfekt; er hat alle positiven Eigenschaften''«</span>; und auch Definition-1 ist damit ,verifiziert‘ ''':''' <span style="color:#FF6000">»''GOTT ist genau deswegen GOTT, weil er, als GOTT, positive Eigenschaften aller Grade in sich schließt''«</span>; entsprechend dem Quelltext bei LEIBNIZ ''':''' <span style="color:#FF6000">»''GOTT ist ein Wesen von äußerster Größe und Vollkommenheit, das alle Grade derselben in sich schließt''«</span>. Immer vorausgesetzt, <span style="color:#00B000">(,angenommen‘)</span>, man glaubt an GOTT ''':''' <span style="color:#00B000">(Term :01:)</span>. <span style="color:#00B000">(Der ,Schlüsselbegriff‘ <span style="color:#4C58FF">— ‚'''P'''‘ —</span> ist der ,Schlüssel‘ zur Erkenntnis, dass GOTT ,notwendig‘, sowohl ,wesentlich‘ für uns, als auch an sich ,grundlos‘, immer schon ,da‘ ist.)</span> Hier, <span style="color:#00B000">(im 2. Beweisgang)</span>, hat Axiom-1, <span style="color:#00B000">(im Term :04:)</span>, sicher gestellt, dass die Eigenschaften in GOTT, <span style="color:#00B000">(Definition-1; Term :06:)</span>, tatsächlich <span style="color:#FF6000">„ultimativ positiv, perfekt und vollkommen“</span> sind ''':''' <span style="color:#4C58FF">— ‚'''PY'''‘ —</span>. Das GÖDEL-Axiom-1 bezieht seine ,Potenz‘ aus dem Prinzip vom ,auszuschließenden‘ Widerspruch ''':''' eine Eigenschaft kann nicht zugleich ,positiv‘ und ,nicht positiv‘ sein '''!''' Formal lässt sich das 2. Hauptergebnis, Theorem-2 ''':''' <span style="color:#4C58FF">— ‚'''Gx'''↔'''G'''<sub>ess</sub>'''x'''‘ — </span> ''':''' schon aus Term :23: in diesem Beweisgang mit der <span style="color:#4C58FF">[ Vereinfachung ] :: [ A∧B ├ B ]</span> ohne Weiteres ,regulär‘ ableiten, — analog zu den Vorgehensweisen bei A. FUHRMANN und G.J. WIRSCHING. <span style="color:#00B000">(Beide Aussagen dieser ,Konjunktion‘ sind ,gleichwertig‘ und wahr, daher partizipiert das Theorem-2 auch am Ergebnis der Widerspruchsfreiheit von Term :13:, <span style="color:#4C58FF">— ‚'''PY'''‘ —</span>, dem 1. Hauptergebnis. Beide Aussagen im Term :23: interpretieren sich gegenseitig.)</span> Der hier gewählte, etwas längere Weg zum Ergebnis, soll die innere Struktur und Abhängigkeit der Ergebnisse von bestimmten Voraussetzungen offen legen, und ihren ,Zweck‘ verdeutlichen. Die beiden Hauptergebnisse im Basisbeweis gehen vom vorgefundenen und traditionell vorgegebenen Begriff von ,GOTT‘ aus, <span style="color:#00B000">(Term :06:, Term :16: und Term :26:)</span>. Das ,bewiesene‘ <span style="color:#00B000">( ╞ )</span> 1. Hauptergebnis, hier im 2. Beweisgang, Term :13: <span style="color:#4C58FF">— ‚'''PY'''‘ —</span> ''':''' <span style="color:#FF6000">»''die Eigenschaften in GOTT sind vollkommen, d.h. sind die ultimativen Transzendentalia''«</span>, rechtfertigt, bzw. verifiziert sowohl Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, als auch die Definition-1 ''':''' <span style="color:#4C58FF">— ‚'''Gx↔∀X(PX→Xx)'''‘ —</span>, für die Annahme ''':''' den ,GOTT der Christen‘, der deswegen GOTT ist, weil er alle Grade der Vollkommenheit in sich schließt. Und das ebenfalls ,bewiesene‘ <span style="color:#00B000">( ╞ )</span> 2. Hauptergebnis, hier im selben Beweisgang, Theorem-2 ''':''' <span style="color:#4C58FF">— ‚'''Gx'''↔'''G'''<sub>ess</sub>'''x'''‘ —</span> ''':''' <span style="color:#FF6000">»''das Wesen GOTTES ist sein eigenes Sein''«</span>, rechtfertigt, bzw. verifiziert sowohl Axiom-5 ''':''' <span style="color:#4C58FF"> — ‚'''PE'''<sub>not</sub>‘ —</span>, als auch die Definition-3 ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x ↔ ∀X(X'''<sub>ess</sub>'''x →□∃yXy)'''‘ —</span>, für die Wesenseigenschaft ''':''' ,notwendige Existenz‘, und widerlegt den Einwand KANTS, für den Spezialfall ''':''' <span style="color:#4C58FF">— ‚'''x'''‘ —</span> steht für ,GOTT‘. Zwei Axiome und zwei Definitionen von GOTT und seinen Vollkommenheiten werden durch die Ergebnisse im Basisbeweis des GÖDEL-Kalküls in unserer realen Welt als ,wahr‘, <span style="color:#00B000">(genauer als ,widerspruchsfrei‘)</span>, und, — im Rahmen des christlichen Glaubens —, als ,annehmbar‘ bestätigt. <span style="color:#00B000">(Anmerkung zu Term :24: ''':''' eine Prämisse ist regulär-,modal‘ immer ,frei‘ wählbar.)</span> Zusammengefasst heißt das ''':''' die ,strittige‘ Begründung der ,methodologischen‘ Prämisse des GÖDEL-Kalküls ''':''' <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span> ''':''' <span style="color:#00B000">(Prämisse, Term :01:)</span>, weil <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span> ''':''' <span style="color:#00B000">(Korollar-1)</span> ''':''' <span style="color:#FF6000">»''Das <span style="color:#4C58FF">‚'''x'''‘</span> steht für den GOTT der Christen, für den es ohne Widerspruch denkbar ist, dass es ihn gibt''«</span>, <span style="color:#00B000">(ANSELMS Prinzip, trotz der ,Warnung‘ KANTS)</span>, ist ,wahr‘ und für uns ,annehmbar, denn es ist auch, auf Grund der Ergebnisse des 2. Beweisganges, in unserer realen Welt ,wahr‘ und ,annehmbar‘, weil schon als ,widerspruchsfrei‘ verifiziert ''':''' <span style="color:#FF6000">»''Der GOTT der Christen'' <span style="color:#00B000">(Term :01:)</span> '',existiert‘ für uns ,notwendig‘''«</span> ''':''' <span style="color:#4C58FF"> — ‚'''Gx→E'''<sub>not</sub>'''x'''‘ —</span>, <span style="color:#00B000">(d.i. das ,regulär‘-mögliche Korollar sowohl im 2. als auch im 3. Beweisgang)</span>, denn dieser GOTT ist aus sich ,vollkommen‘ ''':''' <span style="color:#4C58FF"> — ‚'''PG'''‘ —</span>, und zu seiner ,Vollkommenheit‘ <span style="color:#4C58FF">— ‚'''P'''‘ —</span> gehört auch notwendig sein ,Existieren‘ ''':''' <span style="color:#4C58FF"> — ‚'''PE'''<sub>not</sub>‘ —</span>. <span style="color:#00B000">(Jeder dieser Terme ist im-, und durch den 2. Beweisgang, im Geltungsbereich der Prämisse Term :01:, als ,wahr‘ und ,annehmbar‘ bewiesen, bzw. verifiziert.)</span> Das ist der ,Kern‘ des ontologischen Arguments, und somit ist auch diese ,strittige‘ Begründung der Prämisse des GÖDEL-Kalküls mit den Maßstäben der modernen Logik <span style="color:#FF6000">»''durchaus vereinbar''«</span>, d.h. sie ist logisch ,richtig‘ und, im Kontext des christlichen Glaubens, vernünftig. Die Annahme des Gegenteils zu dieser Prämisse ''':''' <span style="color:#4C58FF">— ‚'''¬◇∃xGx'''‘ —</span> ''':''' <span style="color:#FF6000">»''Es ist undenkbar, dass es diesen GOTT gibt''«</span>, führt jedoch, unabhängig von jeder Glaubensüberzeugung, zu einem Widerspruch — ist unlogisch und daher ,falsch‘, <span style="color:#00B000">(siehe Anhang ''':''' Widerlegung)</span>. Die Behauptung einer ,formalen Unentscheidbarkeit‘ zu den Annahmen über die Existenz GOTTES, ob oder nicht, <span style="color:#00B000">(d.h. ein ,methodologischer‘ Agnostizismus)</span>, ist gegen jede ,Logik‘; und ist auch ,falsch‘, d.h. der Agnostizismus ist einfach nur ein ,logischer Irrtum‘. Denn aus dem, im Kalkül abgeleiteten, Widerspruch aus der einen Annahme, und damit ihrer Unrichtigkeit, folgt notwendig die Richtigkeit der gegenteiligen Annahme. Damit ist eine klare Entscheidung getroffen. Das Modale-Prinzip <span style="color:#4C58FF">['''RM''']</span> in Worten ''':''' <span style="color:#FF6000">»''Wenn es wahr ist, dass aus'' <span style="color:#4C58FF"> — ‚'''A'''‘ —</span> ''ein'' <span style="color:#4C58FF"> — ‚'''B'''‘ —</span> ''logisch folgt, dann ist in einem Kalkül regulär'' <span style="color:#00B000">( ├ )</span> ''ableitbar, dass, wenn'' <span style="color:#4C58FF"> — ‚'''A'''‘ —</span> '',modal‘ notwendig'' <span style="color:#00B000">( □ )</span> ''ist, auch'' <span style="color:#4C58FF"> — ‚'''B'''‘ —</span> '',modal‘ notwendig'' <span style="color:#00B000">( □ )</span> ''ist''«</span>. <span style="color:#00B000">(Das <span style="color:#4C58FF"> — ‚'''A'''‘ —</span> in Term :18: ist als ,modal notwendig‘ durch den Term :15: verifiziert '''!''' )</span> Mit dem 2. Hauptergebnis, Theorem-2 ''':''' <span style="color:#FF6000">»'',Dasein‘ ist das ,Wesen‘ GOTTES''«</span>, folgt die GÖDEL-Axiomatik der philosophisch-<span style="color:#4C58FF">,theologischen‘</span> Tradition der ,Rede von GOTT‘ seit ARISTOTELES, und schließt sich damit formal-syntaktisch zugleich auch der religiösen Überzeugung der Christen an, die glauben, dass GOTT, als unser Vater, aus Liebe, in seinem Sohn, JESUS CHRISTUS, für uns immer schon <span style="color:#FF6000">»''da''«</span> ist, <span style="color:#00B000">(der Sohn ist koinzident ,eins‘ mit GOTT, dem Vater und dem GEIST)</span>, wirksam in und durch seine <span style="color:#4C58F0">„Kirche“</span>, im HEILIGEN GEIST, bis ans Ende der Zeit. Das ist das, <span style="color:#FF6000">»''was''«</span> GOTT eigentlich für uns ausmacht, — die Selbstmitteilung seines unergründlichen Wesens in den Sakramenten der <span style="color:#4C58F0">„Kirche“</span> ''':''' <span style="font-family: Times;"><big>‘אֶֽהְיֶ֖ה אֲשֶׁ֣ר אֶֽהְיֶ֑ה‚</big></span> <span style="color:#00B000">| ‚eh'jeh asher eh'jeh‘ |</span> <span style="color:#CC66FF">»''Ich bin da für euch und für immer, als der ich ''<span style="color:#00B000">[ immer schon gewesen ]</span> ''bin''«</span>; <span style="color:#00B000">(d.i. das <span style="color:#4C58FF">,theologisch‘</span>-exegetische ,Axiom‘ der Christen, und eine <span style="color:#4C58FF">,theologisch‘</span> korrekte Explikation der ,regulären‘ Kalkül-Prämisse Term :01: <span style="color:#4C58FF"> — ‚'''Gx'''‘ —</span>, jeweils im 2. und 3. Beweisgang)</span>. Das heißt aber nicht, dass der Autor des Kalküls sich mit diesem Glauben identifiziert hat, <span style="color:#00B000">(,hat‘ er auch nicht)</span>, oder dass der Leser des ontologischen Beweises von Kurt GÖDEL sich damit identifizieren muss, wenn er dessen <span style="color:#FF6000">»''mathematische Evidenz''«</span> anerkennt. Zur erweiterten <span style="color:#4C58FF">„theologischen“</span> Explikation der Kalkül-Prämisse ''':''' Die <span style="color:#4C58F0">„Kirche“</span> ist das ,Meisterwerk‘ GOTTES ''':''' In ihr ist es GOTT gelungen, etwas Göttliches und Unzerstörbares in unsere korrupte Welt einzupflanzen ''':''' <span style="color:#4C58FF"> — ‚'''Gx→E'''<sub>not</sub>'''x'''‘ —</span> ''':''' <span style="color:#FF6000">»''Etwas Göttliches existiert notwendig, d.h. ,unzerstörbar‘ in unserer Welt''«</span>. Sie ist, durch die Menschwerdung des GOTTES Sohnes, JESUS CHRISTUS, dessen <span style="color:#4C58F0">„Leib“</span> die <span style="color:#4C58F0">„Kirche“</span> ist, untrennbar mit Menschen verbunden, die schon, von allem Anfang an, und jetzt immer noch, durch die Sünde korrumpiert sind. Mit ihr will und wird GOTT unsere Welt und die Menschheit, bis ans Ende der Zeit, von der Sünde und von deren Konsequenz, dem <span style="color:#00B000">(ewigen)</span> Tod <span style="color:#4C58FF">„erlösen“</span>, <span style="color:#00B000">(jedoch nicht ohne die Zustimmung des Menschen)</span>. Mit dieser Explikation wird die Tragweite des ontologischen Arguments ANSELMS, und damit auch die <span style="color:#4C58FF">„theologische“</span> Relevanz der GÖDEL-Axiomatik erkennbar. Immer vorausgesetzt, <span style="color:#00B000">(,angenommen‘)</span>, man glaubt an GOTT, <span style="color:#00B000">(Term :01:)</span>. ====<div class="center"><span style="color:#660066">3. Beweisgang</span></div>==== {|class="wikitable" |- ! <div class="center"><span style="color:#660066">GÖDELS ontologischer Beweis für Theorem 3, (ANSELMS Theorem)</span></div> |- ! <span style="color:#00B000">''Terme der erweiterten Prädikatenlogik zweiter Stufe___________________„Benennungen“ und durchgeführte Logik-Operationen''</span> |- | <small> <math>\begin{align} \text{(Axiom 5)} & \quad P\ E_{not}\; \ & \text { } & \text{„Notwendige Existenz ist eine positive Eigenschaft“} \\ \text{ } & \text{( :: Das ist nur dann wahr, wenn ,Dasein‘ und ,Wesen‘ } & \ & \text{( :: dagegen KANT : ,Existenz‘ ist keine ,Eigenschaft‘,} \\ \text{ } & \;\;\text{in eins zusammenfallen ! ARISTOTELES : Theorem-2)}\ & \ & \;\;\text{,Sein‘ ist für alles, was existiert, kein ,reales Prädikat‘ ! )} \\ \text{(Definition 1)} &\quad \ G\ x \;\Longleftrightarrow\; \forall X(\ P \ X \Longrightarrow \ X \ x)\ & \ & \text{„x ist genau dann GOTT, wenn x alle positiven Eigenschaften hat“} \\ \text{(Definition 3)} & \quad \ E_{not}\ x \;\Longleftrightarrow\;\ \forall X \left(\ X_{ess}\ x \Longrightarrow \Box \; \exists y \ X\ y \right) & \ & \text{„Notwendige Existenz ist genau dann eine Eigenschaft von x, wenn} \\ \text{ } & \quad & \ & \;\;\text{alle wesentl. Eigenschaften von x notwendig instanziiert sind“} \\ \text{(Korollar 1)} & \quad \Diamond \; \exists x \ G \ x \ & \ & \text{„Es ist widespruchsfrei möglich, dass es GOTT gibt“} \\ \text{(Theorem 2)} &\quad \ G\ x \;\Longleftrightarrow\; \ G_{ess}\ x \ & \ &\text{„Dasein, GOTT-Sein, Existenz ist das Wesen, die Essenz GOTTES“} \\ \text{(Korollar 2)} &\quad \ G\ x \;\Longrightarrow\; \Box \; \forall y(\ G \ y \Longrightarrow \ (x = y))\ & \ &\text{„Wenn es GOTT gibt, dann gibt es notwendig nur einen GOTT“} \\ \text{(Theorem 3)} & \quad \Diamond \; \exists x \ G \ x \;\Longrightarrow\; \Box \; \exists x \ G \ x \ & \ & \text{( :: ANSELMS Prinzip)} \\ \text{ } & \text{„Weil es widerspruchsfrei möglich ist, dass es GOTT gibt,} & \ & \Longleftarrow\; \text{was zu beweisen ist !} \\ \text{ } & \;\;\text{ist der Glaube, dass es GOTT wirklich gibt, widerspruchsfrei“} \\ \text{01} & \quad \ G \ x\ & \ & \text{ AE: „Angenommen, x steht für den GOTT der Christen“} \\ \text{02} & \quad \forall X(\ P \ X \Rightarrow \ X \ x)\ & \ & \text{(D1):01:[Modus ponens] :: (logische Schlussregel)} \\ \text{03} & \quad \ P \ X \Rightarrow \ X \ x\ & \ & \text{:02:[ⱯXA(X) ├ A(X)] :: (Quantorenregel)} \\ \text{04} & \quad \ P \ E_{not}\;\Rightarrow \ E_{not}\ x\ & \ & \text{:03:Instanz(X:= Enot) :: (Substitution für Eigenschaften)} \\ \text{05} & \quad \ E_{not}\ x\ & \ & \text{(A5):04:[Modus ponens] :: [A, A → B├ B]} \\ \text{06} & \quad \forall X \left(\ X_{ess}\ x \Rightarrow \Box \; \exists y \ X\ y \right) & \ & \text{(D3):05:[Modus ponens]} \\ \text{07} & \quad \ X_{ess}\ x \Rightarrow \Box \; \exists y \ X\ y & \ & \text{:06:[ⱯXA(X) ├ A(X)]} \\ \text{08} & \quad \ G_{ess}\ x \Rightarrow \Box \; \exists y \ G\ y & \ & \text{:07:Instanz(X:= G)} \\ \text{09} & \quad \ G_{ess}\ x \ & \ & \text{(Th2):01:[Modus ponens]} \\ \text{10} & \quad \text{ ├ }\;\Box \; \exists x \ G\ x & \ & \text{:08:09:[Modus ponens]:FUB(y:=x) :: (Freie-Um-Benennung der Var.)} \\ \text{ } & \text{„Es gibt GOTT wirklich, für jede mögliche Welt“} & \ & \Longleftarrow\; \text{1. Hauptergebnis !} \\ \text{11} & \quad \;\Diamond \exists x \ G \ x \;\Longrightarrow \; \Box \; \exists x \ G\ x & \ & \text{(K1):10:[├A├B ╞ A→B] :: ''KONDITIONALER BEWEIS''} \\ \text{(Theorem 3)} & \;\text{„Weil es widerspruchsfrei möglich ist, dass es GOTT gibt,} & \ & \Longleftarrow\; \text{was zu beweisen war ! 2. Hauptergebnis ! } \\ \text{ } & \;\;\text{ist der Glaube, dass es GOTT wirklich gibt, widerspruchsfrei“} \\ \text{12} & \quad \;\Box \; \forall y(\ G \ y \Longrightarrow \ (x = y))\ & \ &\text{(K2):01:[Modus ponens]} \\ \text{13} & \quad \;\Box \; (\exists x \ G\ x \wedge \; \forall y(\ G \ y \Longrightarrow \ (x = y)))\ & \ & \text{:10:12:[Konjunktion]:DIST(□∧)} \\ \text{(Korollar 3)} & \;\text{„Es gibt notwendig genau nur einen GOTT“} & \ & \text{„Es gibt für jede mögliche Welt nur den GOTT der Christen“} \\ \end{align}</math> </small> |} Anmerkung-3 ''':''' <span style="color:#00B000">(Ein Theorem und zwei Korollare, aus den beiden vorhergehenden Beweisgängen, werden hier, im 3. Beweisgang, zu ,Axiomen‘, die das Theorem-ANSELMS und sein Korollar mit-verifizieren und bestätigen.)</span> Dieser Beweisgang ist das Ziel aller Bemühungen. Hier wird der sog. ,ontologische Gottesbeweis‘ nach ANSELM von Canterbury formal-syntaktisch dargestellt und als logisch nachvollziehbar von GÖDEL bestätigt. Damit hat er aber auch klar gestellt, dass der ontologische Beweis ANSELMS kein Beweis für die ,Existenz‘ des GOTTES der Bibel sein kann, bzw. sein ,will‘ ''':''' Denn mit der Prämisse, <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, <span style="color:#00B000">(Term :01:, wie auch schon im ,Basisbeweis‘, und ausformuliert hier in Term :02:, mit der Definition für GOTT)</span>, wird mit dem traditionellen, abendländischen ,GOTT-Glauben‘, der ,glaubt‘, dass der Gott der Christen tatsächlich existiert, — methodologisch als ,Annahme‘ —, der Beweisgang schon regulär und explizit eröffnet, aus dem sich dann, logisch korrekt, mit Hilfe der GÖDEL-Axiome und Definitionen, das ,Theorem ANSELMS‘ ergibt; <span style="color:#00B000">(hier jedoch, mit Günther J. WIRSCHING, ohne den Umweg bei GÖDEL über den <span style="color:#4C58FF">[ Modus Barbara ] :: [ A → B, B → C ├ A → C ] </span>, mit dem modalen Axiom-BECKER ''':''' <span style="color:#4C58FF">— ‚'''◇□A→□A'''‘ —</span>, als <span style="color:#4C58FF">‚B → C‘</span> im kategorischen Syllogismus, das André FUHRMANN recherchiert hat)</span>. GÖDEL verwendet zur Darstellung des sog. ,ontologischen Gottesbeweises‘ nach ANSELM die Struktur eines modal-logischen Kalküls. Ein modal-logisches Kalkül ist ein genau geregeltes Schema, in dem bei bestimmten ,Annahmen‘ <span style="color:#00B000">(Axiome, Definitionen, Prämissen)</span> etwas anderes als das Vorausgesetzte, auf Grund des Vorausgesetzten mit Notwendigkeit folgt. Entsprechend der ,Modalität‘ der sechs ,modal‘ notwendigen, d.h. transzendentalen Voraussetzungen, hier, für den 3. Beweisgang, die in den <span style="color:#00B000">(und durch die)</span> beiden vorhergehenden Beweisgängen schon als <span style="color:#FF6000">„modal wahr“</span>, bzw. als logisch annehmbar, verifiziert und/oder ,bewiesen‘ wurden, sind auch die beiden ,Schlusssätze‘ <span style="color:#00B000">(Theorem-3 und Korollar-3)</span> <span style="color:#FF6000">„modal wahr“</span>, bzw. logisch annehmbar '''!''' Die Wahl der Prämisse :01: dagegen ist nicht ,modal‘ notwendig, sondern beruht auf einer freien Entscheidung, und damit ist auch ihre Interpretation eine freie Entscheidung, mit der Voraussetzung, dass man das Kalkül mit Theoremen aus der <span style="color:#4C58FF">„christlichen Theologie“</span> evaluieren, und damit interpretieren will. Dazu berechtigt die Genese des Kalküls. Der Glaube an den GOTT der Christen ''':''' <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, beruht immer auf einer freien Entscheidung. Das Kalkül, als solches, unabhängig von jeder Interpretation seiner Syntax, ist genau dann ,allgemein‘ <span style="color:#FF6000">»''mathematisch evident''«</span>, d.h. ,ist allgemein gültig‘, wenn es gültigen Logik-Regeln folgt. Die Bestimmung seiner Syntax jedoch, d.h. seine Interpretation, unterliegt hermeneutischen Kriterien, die nicht von Logik-Regeln abhängen, wie hier ''':''' <span style="color:#FF6000">»''(unabhängig von der zufälligen Struktur der Welt). Nur dann sind die Axiome wahr''«</span>, wie GÖDEL selbst hinzufügt. Mit der, — von GÖDEL eingeforderten —, ‚Unabhängigkeit‘ der Kalkül-Axiome von der zufälligen Struktur der Welt, wird implizit für das Kalkül auch festgelegt, dass <span style="color:#FF6000">„GOTT“</span> ‚unabhängig‘ von der zufälligen <span style="color:#00B000">(Raum-Zeit-)</span>Struktur unserer vergänglichen Welt, und daher ,zeitlos-ewig‘ ist, <span style="color:#00B000">(was <span style="color:#4C58FF">„theologisch“</span> korrekt ist)</span>, begründet durch Definition-1 und Axiom-3. Aus der zeitlosen Ewigkeit GOTTES folgt, dass GOTT, <span style="color:#FF6000">„unverursacht“ <span style="color:#00B000">|</span> „grundlos“</span>, für uns immer schon ‚da‘ ist, denn bei Zeitlosigkeit gibt es keinen ,zeitlichen‘ und damit auch keinen ,ontologischen‘ Unterschied zwischen ‚Ursache‘ und ‚Wirkung‘. Beides ist dann koinzident ,eins‘ ''':''' wie ,Wesen‘ und ,Dasein‘ in GOTT, bzw. wie ,Begriff‘ und ,Sein‘, oder ,Möglichkeit‘ und ,Wirklichkeit‘. <span style="color:#00B000">(Man vergleiche damit auch die ,postulierte‘ Einheit von ,Erkenntnisobjekt‘ und ,Erkenntnissubjekt‘ im ,Gott‘ des ARISTOTELES ''':''' im <span style="color:#FF6000">»<span style="color:#00B000">[ selbstbewussten ]</span> ''Erkennen seiner Erkenntnis''<span style="color:#00B000">[-Tätigkeit ]</span>«<span style="color:#00B000"> | </span>„<span style="font-family: Times;"><big>νοήσεως νόησις</big></span>“<span style="color:#00B000"> | </span>„noêseôs noêsis“</span> <small>(‚<span style="font-family: Times;"><big>''Metaphysik''</big></span>‘ XII 9, 1074b34)</small>, im Vollzug seiner Funktion als ,unbewegtes Bewegungsprinzip‘, als <span style="color:#FF6000">„<span style="font-family: Times;"><big>πρῶτον κινοῦν ἀκίνητον</big></span>“<span style="color:#00B000"> | </span>„prôton kinoûn akinêton“</span> der Welt, das alles Übrige <span style="color:#FF6000">»''wie ein Geliebtes''«<span style="color:#00B000"> | <span style="color:#FF6000">„<span style="font-family: Times;"><big>ὡς ἐρώμενον</big></span>“</span> | <span style="color:#FF6000">„hôs erômenon“</span> bewegt; d.h. christlich ''':''' <span style="color:#FF6000">»''aus Liebe''«</span> ,entstehen‘ lässt.)</span> Anmerkung-4 ''':''' Das <span style="color:#00B000">(im 2. Beweisgang)</span> schon bewiesene Theorem-2, d.i. die Koinzidenz von <span style="color:#FF6000">„Sein“</span> und <span style="color:#FF6000">„Wesen“</span> in GOTT, <span style="color:#00B000">(‚Existenz‘</span> und <span style="color:#00B000">‚Essenz‘)</span>, rechtfertigt sowohl Axiom-5 als auch die Definition-3, und widerlegt den Einwand KANTS. Somit ist deren Setzung <span style="color:#00B000">(hier, im 3. Beweisgang)</span> korrekt, und durch das Theorem-2 schon vorbestimmt und bestätigt, d.h. beide sind <span style="color:#FF6000">„modal wahr“</span> und ,logisch‘ annehmbar, da sie durch die Gültigkeit von Theorem-2 ,verifiziert‘ worden sind. Damit wird klar erkennbar, dass das Theorem-2 tatsächlich die Basis des GÖDEL-Kalküls ist. Und wenn damit Axiom-5 im GÖDEL-Kalkül ‚gerechtfertigt‘ ist, dann ist auch, <span style="color:#00B000">(als Voraussetzung dafür)</span>, das Axiom-4 ''':''' <span style="color:#4C58FF">— ‚'''PX → □PX'''‘ — ''':''' </span> <span style="color:#FF6000">»''Positive Eigenschaften'', <span style="color:#00B000">[ ,Transzendentalia‘ ]</span>, ''sind notwendig aus sich'', <span style="color:#00B000">[ von Natur aus ]</span>, ''positiv''«</span>, im 2. Beweisgang erklärbar, in dem die ‚Positivität‘, <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, einer Eigenschaft schon als ‚notwendig‘, <span style="color:#4C58FF">— '''□''' —</span>, charakterisiert worden ist, äquivalent zu Axiom-5 ''':''' <span style="color:#4C58FF"> — ‚'''PE'''<sub>not</sub>‘ —</span>, in dem die ‚Notwendigkeit‘, <span style="color:#4C58FF">— <sub>not</sub> —</span>, <span style="color:#00B000">(der Existenz <span style="color:#4C58FF">— ‚'''E'''‘ —</span>)</span>, dann als ‚positive‘ Eigenschaft, <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, ‚bestimmt‘ wird; <span style="color:#00B000">(unter der speziellen Voraussetzung, dass <span style="color:#FF6000">„Existieren“</span> definitiv als eine <span style="color:#FF6000">„Wesenseigenschaft“</span> in GOTT ,instanziiert‘ ist; vgl. Definition-3. Eine ,bestimmte‘ Eigenschaft ist genau dann ,instanziiert‘, wenn sie an einem Träger real ,existiert‘. Definition-3 ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x ↔ ∀X(X'''<sub>ess</sub>'''x →□∃yXy)'''‘ —</span>, besagt, dass die, von GÖDEL ,postulierte‘, und im Basis-Theorem-2 verifizierte, <span style="color:#FF6000">„notwendige Existenz“</span> zu den ,ultimativen‘ Transzendentalia in GOTT gehört. Genauer ''':''' Sie ist die ,Summe‘ aller Transzendentalia.)</span> Zum Axiom-4, <span style="color:#00B000">(bzw. zum Term :14:, im 2. Beweisgang)</span>, erklärt GÖDEL in seinen Notizen zum Kalkül ''':''' <span style="color:#FF6000">»''da es'' <span style="color:#00B000">[ das Notwendigsein, <span style="color:#4C58FF">— '''□''' —</span> ]</span> ''aus der Natur der'' <span style="color:#00B000">[ positiven ]</span> ''Eigenschaft folgt'', <span style="color:#00B000">[ deren Positivität, im selben Beweisgang, mit Term :13: vorher schon ,bewiesen‘ (╞ ) worden ist ]</span>«</span>. Die GÖDEL-Erklärung zum Axiom-4 entspricht der Modal-Regel zur sog. ,Nezessisierung‘ in der KRIPKE-Logik nach GÖDEL. <span style="color:#4C58FF">[ Nezessisierungsregel ] '''::''' [ ├ A →├ □ A ]</span> ''':''' <span style="color:#FF6000">»''Angenommen'', <span style="color:#4C58FF">‚'''A'''‘</span> ''ist in einem Kalkül eine Prämisse, oder darin regulär'' <span style="color:#4C58FF">(├ )</span> ''abgeleitet, dann folgt in diesem Kalkül regulär'' <span style="color:#4C58FF">(├ )</span>, ''dass dieses'' <span style="color:#4C58FF">‚'''A'''‘</span> ''auch ,modal‘ notwendig'' <span style="color:#4C58FF">— ,□‘ —</span> ''ist''«</span>. GÖDEL hat jedoch diese modale Notwendigkeit nur in der ,Natur‘ der positiven Eigenschaften, alias ,Transzendentalia‘, gesehen, und mit den Aussagen im Axiom-4 expliziert ''':''' <span style="color:#4C58FF">— ‚'''PX → □PX'''‘ —</span> ''':''' <span style="color:#FF6000">»''unabhängig von der zufälligen Struktur der Welt, nur dann sind die Axiome wahr''«</span>. Ob dieselbe modale Notwendigkeit auch auf Aussagen über Eigenschaften, wie ,rot‘ oder ,schwer‘, die weder positiv noch negativ sind, zutrifft, ist nicht erwiesen. Hier kann nur von modaler ,Kontingenz‘ gesprochen werden, die universal, alles Seiende innerhalb der <span style="color:#FF6000">»''zufälligen Struktur der Welt''«</span> betrifft. Somit sind die Aussagen <span style="color:#4C58FF">— ‚'''A'''‘ —</span> in der GÖDEL-Regel, nur auf Aussagen über ,positive‘ Eigenschaften eingeschränkt, und nicht allgemein gültig. Die <span style="color:#4C58FF">[ Nezessisierungsregel ]</span> ist nur für <span style="color:#FF6000">„Transzendentalia“ „modal wahr“</span>, und für ,Nicht-Transzendentalia‘ immer <span style="color:#FF6000">„modal falsch“</span>. Der unbegrenzt Unendliche, GOTT, — im Glauben der Christen —, ist deswegen ,notwendig für uns da‘ ''':''' <span style="color:#4C58FF">— ‚'''Gx→E'''<sub>not</sub>'''x'''‘ —</span>, weil er als GOTT ,vollkommen‘, ,perfekt‘ und absolut ,positiv‘, d.h. absolut ,gut allein‘ ist, ohne jede Negativität ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>; <span style="color:#00B000">(was auch schon im 2. Beweisgang mit Term :13: verifiziert wurde)</span>. Und wenn GOTT ,vollkommen‘, ,perfekt‘, ,positiv‘, und absolut ,gut‘ ist, dann ist er das auch ,notwendig aus sich‘ ''':''' <span style="color:#4C58FF">— ‚'''PG → □PG'''‘ — ::</span> <span style="color:#00B000">(als Zusatz-Korollar im 2. Beweisgang mit Axiom-4 und der <span style="color:#4C58FF">[ Instanz(X:=G) ]</span>)</span>, d.h. ,aus seinem Wesen‘. Das ist gerade das, ,was‘ GOTT als GOTT ausmacht ''':''' sein ,Wesen‘, bzw. seine <span style="color:#FF6000">„Natur“</span>. Zusammen mit der Definition-1 für GOTT, <span style="color:#00B000">(und der Definition-2 ''':''' Alle Wesenseigenschaften hängen notwendig gleichwertig aus sich zusammen)</span>, ist dieses, aus der <span style="color:#FF6000">„Natur“</span> GOTTES sich ergebende, ‚Notwendigsein‘, <span style="color:#4C58FF">— '''□''' —</span>, aller ‚positiven‘ Eigenschaften im Axiom-4, und ihr logischer Zusammenhang, d.i. die Koinzidenz aller ,Vollkommenheiten‘ und ,Zuschreibungen‘ im Unendlichen, GOTT, ihr ,Zusammenfallen in eins‘, die entscheidende Voraussetzung, aus der sich dann für GÖDEL <span style="color:#00B000">(im 2. Beweisgang)</span> auch der logische Zusammenhang, bzw. die ontologische Identität, <span style="color:#00B000">(die Koinzidenz)</span>, von <span style="color:#FF6000">„Dasein“</span> und <span style="color:#FF6000">„Wesen“</span> in GOTT, im Basis-Theorem-2 ''':''' <span style="color:#4C58FF"> — ‚'''Gx↔G'''<sub>ess</sub>'''x'''‘ —</span> mit Notwendigkeit ergibt. Damit hat GÖDEL ein altes <span style="color:#4C58FF">„theologisches“</span> Theorem der Vergessenheit entrissen. Das Theorem-2 ist dann, in weiterer Folge, die ,modal‘ notwendige, d.h. die transzendentale Voraussetzung auch für den Konsequenz-Teil im Theorem ANSELMS, <span style="color:#00B000">(Term :09: hier im 3. Beweisgang)</span>. <span style="color:#FF6000">„Positive Eigenschaften“<span style="color:#00B000"> | </span>„Vollkommenheiten“</span> sind ,immer‘ auch <span style="color:#FF6000">„notwendige Eigenschaften“</span>, daher ''':''' <span style="color:#4C58FF"> — ‚'''PE'''<sub>not</sub>‘ —</span>. Das ,Dasein‘, die <span style="color:#FF6000">„Existenz“</span> ist ,immer‘ etwas <span style="color:#FF6000">„Positives“</span>, speziell in GOTT, dem Schöpfer jeder ,Existenz‘, bzw. allen ,Seins‘. Axiom-4 begründet im GÖDEL-Kalkül das Basis-Theorem-2, <span style="color:#00B000">(wie auch das Korollar-3 von der exklusiven Einzigartigkeit GOTTES)</span>, und ,verankert‘ diese Theoreme damit zugleich in der <span style="color:#4C58FF">,theologisch‘</span>-philosophischen Tradition der ,Rede von GOTT‘ bei ARISTOTELES, — AVICENNA, — ANSELM, — DESCARTES, — LEIBNIZ, — HEGEL, — und bei GÖDEL mit äußerster ,logischer‘ Klarheit. Anmerkung-5 ''':''' Der ‚Schlüsselbegriff‘ in diesem Kalkül ''':''' <span style="color:#FF6000">„positive Eigenschaft“</span>, bzw. <span style="color:#FF6000">„Vollkommenheit“<span style="color:#00B000"> | </span>„Perfektion“</span>, <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, dominiert alle Axiome des GÖDEL-Kalküls, jedoch ohne inhaltlich genauer ‚bestimmt‘ worden zu sein. Für <span style="color:#4C58FF">— ‚'''P'''‘ — </span> gibt es keine explizite Definition '''!''' <span style="color:#00B000">(Das Theorem-1 ''':''' <span style="color:#4C58FF">— ‚'''PX→◇∃xXx'''‘ —</span>, besagt nur, dass die ,postulierten‘, positiven Eigenschaften, die <span style="color:#FF6000">„Transzendentalia“</span>, formal miteinander verträglich, d.h. ‚widerspruchsfrei‘ sind, wegen Axiom-2. Axiom-2 ''':''' <span style="color:#4C58FF">— ‚'''PX ∧ □∀x(Xx→Yx)→PY'''‘ —</span>, besagt, dass positive Eigenschaften ,gleichwertig‘ sind, d.h. gleich ,wahr‘ sind, weil sie ,notwendig‘, <span style="color:#4C58FF">— '''□''' —</span>, aus sich, alle paarweise mit- und voneinander ,impliziert‘ sind, sich gegenseitig ,einschließen‘, und damit eine Einheit bilden, d.h. in GOTT ,eins‘ sind. Axiom-2 ist somit zugleich eine ,indirekte‘ Definition für ,positive‘ Eigenschaften ''':''' <span style="color:#4C58FF">— ‚'''P'''‘ —</span>. Definition-2 ''':''' <span style="color:#4C58FF">— ‚'''X'''<sub>ess</sub>'''x ↔ Xx ∧ ∀Y(Yx→ □∀y(Xy→Yy))'''‘ —</span>, besagt ''':''' Weil die ,gleichwertigen‘, positiven Eigenschaften sich gegenseitig implizieren, und damit notwendig von einander abhängen, d.h. koinzident in GOTT ,eins‘ sind, — wenn <span style="color:#4C58FF">‚'''x'''‘</span> für GOTT steht —, dann sind sie somit auch die ,wesentlichen‘ Eigenschaften, die <span style="color:#FF6000">„ultimativen Transzendentalia“</span>, in GOTT, der, wesentlich und exklusiv, notwendig ,Einer‘ ist. Die Definition-2 ist nur dann <span style="color:#FF6000">„modal wahr“</span>, wenn ihre Eigenschafts-Variablen, <span style="color:#4C58FF">— ‚'''X'''‘ —</span> und <span style="color:#4C58FF">— ‚'''Y'''‘ —</span>, mit positive Eigenschaften, d.h. mit <span style="color:#FF6000">„Transzendentalien“</span>, besetzt werden. Diese Definition ist jedoch sofort <span style="color:#FF6000">„modal falsch“</span>, wenn ihre Variablen mit nicht-positive Eigenschaften, wie ,rot‘ oder ,schwer‘ belegt werden, die nicht ,transzendental‘-allgemein gültig sind. Fußnote zu Definition-2 in der GÖDEL-Notiz ''':''' <span style="color:#FF6000">»''any two essences of x are nec. equivalent''«</span>. Die paarweise, notwendige Äquivalenz von zwei beliebigen Wesenseigenschaften der Individuum-Variable <span style="color:#4C58FF">‚'''x'''‘</span>, wird hier, spezifisch für GOTT, d.h. wenn <span style="color:#4C58FF">‚'''x'''‘</span> für GOTT, dem ,Einen‘, steht, zur <span style="color:#FF6000">„Koinzidenz“</span>, — zum paarweise ,Zusammenfallen aller Gegensätze in Einem‘ —, dem inneren Zusammenhang aller seiner <span style="color:#FF6000">„ultimativen“</span> Vollkommenheiten, d.h. aller <span style="color:#FF6000">„Transzendentalia“</span> und Zuschreibungen, in dem unbegrenzt Unendlichen, GOTT, den schon der Philosoph und Kardinal NIKOLAUS von Cues als <span style="font-family: Times;"><big>,coincidentia oppositorum‘</big></span> verstanden hat.)</span> In den entscheidenden ‚Schlusssätzen‘ des Kalküls ist der ‚Schlüsselbegriff‘ verschwunden. Hier ist nur mehr von GOTT, <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, die Rede ''':''' Korollar-1, <span style="color:#FF6000">»''Es ist definitiv denkbar, dass es GOTT gibt''«</span>, Theorem-2, <span style="color:#FF6000">»''Dasein, GOTT-Sein, Göttlichkeit ist das Wesen GOTTES''«</span>, Theorem-3, <span style="color:#FF6000">»''Weil GOTT definitiv denkbar, d.h. widerspruchsfrei möglich ist, darum ist auch der Glaube an GOTT widerspruchsfrei, logisch richtig und mathematisch evident, der annimmt, dass es GOTT, mit Notwendigkeit, wirklich gibt''«</span>, <span style="color:#00B000">(nach ANSELM von Canterbury, und was spezifisch das <span style="color:#FF6000">»</span>''Privilegium der Gottheit allein''<span style="color:#FF6000">«</span> ist, nach LEIBNIZ)</span>, und Korollar-3, <span style="color:#FF6000">»''Es gibt notwendig aus sich, d.i. unverursacht, nur einen GOTT''«</span>. Das GÖDEL-Kalkül ist zu diesen Erkenntnissen gekommen, ohne die Eigenschaften, bzw. die ‚Vollkommenheiten‘ GOTTES, d.h. wer oder was GOTT ‚an sich‘ selbst ist, genauer bestimmen zu müssen, <span style="color:#00B000">(was ,für uns‘ ohnehin ,unmöglich‘ ist)</span>; außer im Theorem-2, in dem das <span style="color:#FF6000">„Dasein“</span> GOTTES als die ‚für uns‘ bestimmende und wichtigste <span style="color:#FF6000">„Wesenseigenschaft“</span> in GOTT erkannt worden ist, — immer vorausgesetzt <span style="color:#00B000">(,angenommen‘)</span>, man ‚glaubt‘ an den zeitlos-ewigen GOTT ''':''' <span style="color:#00B000">(Term :01:)</span>. Der GOTT des GÖDEL-Kalküls ist nicht mehr der an Raum und Zeit gebundene ‚Gott‘ des ARISTOTELES, sondern der von Raum und Zeit <span style="color:#FF6000">»''unabhängige''«</span> GOTT der Bibel bei ANSELM und bei LEIBNIZ. Das GÖDEL-Kalkül, <span style="color:#00B000">(wie ja auch der sog. ‚ontologische Gottesbeweis‘ ANSELMS)</span>, kann jedoch, — bei aller ‚Coolness‘ —, keinen GOTT-Glauben ‚erzeugen‘, sondern setzt vielmehr die Existenz GOTTES notwendig als gegeben schon voraus. Das Kalkül des Logiker GÖDEL beweist aber, dass der traditionelle ‚GOTT-Glaube‘, <span style="color:#FF6000">»''die theologische Weltanschauung''«</span>, mit den Maßstäben der modernen Logik <span style="color:#FF6000">»''durchaus vereinbar''«</span>, d.h. logisch ,richtig‘ und <span style="color:#FF6000">»''mathematisch evident''«</span> ist, weil der ‚Nicht-GOTT-Glaube‘, <span style="color:#FF6000">»''die atheistische Weltanschauung''«</span>, im Möglichkeitsbeweis notwendig zu unlösbaren Widersprüchen führt, und somit logisch ,falsch‘ ist. <span style="color:#00B000">(Die ,Logik‘ hat aber, — bekanntlich —, bei allen wichtigen, persönlichen Entscheidungen immer nur eine untergeordnete Rolle '''!''' )</span> Anmerkung-6 ''':''' Das erste, ,regulär‘ <span style="color:#00B000">(├ )</span> abgeleitete, Hauptergebnis im 3. Beweisgang, Term :10: <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span> ''':''' der Glaube, dass GOTT ,notwendig‘ existiert, ist die logische Konsequenz aus der Prämisse, Term :1: <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>. Dieses erste Hauptergebnis hat also den überlieferten, traditionellen GOTT-Glauben zur Voraussetzung, und ist daher davon ,abhängig‘, d.h. Term :10: ist der Ausdruck einer ,Glaubensüberzeugung‘. Das zweite Hauptergebnis im 3. Beweisgang, das Theorem ANSELMS ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx→□∃xGx'''‘ —</span>, dagegen, ist die Darstellung der Abhängigkeit des ersten Hauptergebnisses von dem, vorher schon bewiesenen, ,Axiom‘ von der ,möglichen‘ Existenz GOTTES ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span>, dem Möglichkeits-Korollar-1 aus dem 1. Beweisgang. Dem geht folgende Beobachtung voraus ''':''' Der Term ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span>, hat in seiner syntaktischen Stellung hier, im Theorem-3, nicht mehr den überlieferten, traditionellen GOTT-Glauben zur Voraussetzung, und ist damit, in seiner Position als Konsequenz-Teil im Theorem ANSELMS, auch nicht mehr davon syntaktisch abhängig, sondern stützt sich formal-syntaktisch nur auf die behauptete Möglichkeit GOTTES; daher muss diese ,angenommene‘ Möglichkeit noch bewiesen <span style="color:#00B000">( ╞ )</span> werden. Dazu die Feststellung LEIBNIZ‘, der diesen Zusammenhang, und seinen Mangel, erkannt hat ''':''' ::Das Theorem ANSELMS ist <span style="color:#FF6000">» ''ein unvollständiger Beweis, der etwas voraussetzt, was man noch hätte beweisen'' <span style="color:#00B000">( ╞ )</span> ''sollen, um ihm mathematische Evidenz zu verleihen — nämlich, dass man dabei stillschweigend voraussetzt, diese Vorstellung des durchaus großen oder durchaus vollkommenen Wesens sei möglich und enthalte keinen Widerspruch'' «</span>. Diesen <span style="color:#FF6000">»''unvollständigen Beweis''«</span> hat GÖDEL im 1. Beweisgang mit dem ,regulär‘ <span style="color:#00B000">(├ )</span> abgeleiteten, und widerspruchfreien Möglichkeits-Korollar-1, vervollständigt, und damit hat er mit <span style="color:#FF6000">»''mathematischer Evidenz''«</span> bewiesen ''':''' <span style="color:#FF6000">»''Diese Vorstellung des durchaus großen oder durchaus vollkommenen Wesens''«</span> enthält <span style="color:#FF6000">»''keinen Widerspruch''«</span> '''!''' Das Korollar-1 ist nur vom logischen Axiom-1 und von der mathematischen Äquivalenz der Perfektionen, <span style="color:#00B000">(der Transzendentalien)</span>, im Axiom-2 ,abhängig‘, und nicht mehr von der ,methodologischen‘ Kalkül-Prämisse, dem traditionellen GOTT-Glauben. Damit hat das Glaubens-Theorem ANSELMS die gesuchte <span style="color:#FF6000">»''mathematische Evidenz''«</span> erreicht, unabhängig von jeder Glaubensüberzeugung. Entscheidend dafür ist der mathematisch-logische Beweis GÖDELS, dass der Nicht-GOTT-Glaube zu einem Widerspruch führt. Zusammenfassung ''':''' Theorem-1 ''':''' <span style="color:#4C58FF">— ‚'''PX→◇∃xXx'''‘ —</span> ''':''' <span style="color:#FF6000">»''Positive Eigenschaften sind konsistent''«</span>, ist die logische Konsequenz aus der Prämisse im 1. Beweisgang, Term :01: <span style="color:#4C58FF">— ‚'''PX'''‘ —</span>, den, — <u>modal-frei</u> — gewählten, ,angenommenen‘ positiven Eigenschaften, bzw. ,Transzendentalia‘. Theorem-2 ''':''' <span style="color:#4C58FF"> — ‚'''Gx↔G'''<sub>ess</sub>'''x'''‘ — </span> ''':''' <span style="color:#FF6000">»''GOTT-Sein ist das Wesen GOTTES''«</span>, ist die logische Konsequenz aus der Prämisse im 2. Beweisgang, Term :01: <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, dem, — <u>modal-frei</u> — gewählten, ,angenommenen‘ GOTT-Glauben der Christen. Im Unterschied dazu ist im 3. Beweisgang, das Theorem-3 ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx→□∃xGx'''‘ —</span> ''':''' der Glaube, dass es einen GOTT notwendig gibt ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span>, die logische Konsequenz aus dem, — <u>modal-notwendig</u> — als widerspruchsfrei ,bewiesenen‘, Möglichkeits-Korollar-1 ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span>, im 1. Beweisgang, <span style="color:#00B000">(auch im Beweisgang ,Widerlegung‘ im Anhang)</span>, und damit ist das Glaubens-Theorem-3, als ganzes, ,widerspruchsfrei‘. Das Theorem ANSELMS ist, mit Korollar-1, nur vom logischen Axiom-1 der Widerspruchsfreiheit, und der paarweisen, mathematischen Äquivalenz beliebiger positiver Eigenschaften, <span style="color:#00B000">(aller Transzendentalia)</span>, im Axiom-2, abhängig. Damit ist die Bedingung für die geforderte, spezielle <span style="color:#FF6000">»''mathematische Evidenz''«</span>, und auch für die Widerspruchsfreiheit im Glaubens-Theorem ANSELMS erfüllt; unabhängig von jeder Glaubensüberzeugung. Weil es <span style="color:#FF6000">„modal wahr“</span> ist, dass die Transzendentalien, bzw. die Vollkommenheiten ontologisch, — dem Sein nach —‚ alle <span style="color:#00B000">(zueinander)</span> widerspruchsfrei, und alle <span style="color:#00B000">(miteinander)</span> gleichwertig sind, ist es auch <span style="color:#FF6000">„modal wahr“</span>, dass es möglich ist, dass GOTT, — dem Sein nach —‚ da ist, <span style="color:#00B000">(d.h. existiert)</span>, der die unbegrenzte Summe aller ultimativen Transzendentalia, bzw. der unendlichen Vollkommenheiten allen Grades ist, wie es der ,christliche Glaube‘ des Erzbischofs ANSELM und seiner Anvertrauten ,annimmt‘. ====<div class="center"><span style="color:#660066">Widerlegung</span></div>==== {|class="wikitable" |- ! <div class="center"><span style="color:#660066">GÖDEL-Kalkül : der Möglichkeitsbeweis als Widerlegung des Nicht-GOTT-Glaubens</span></div> |- ! <span style="color:#00B000">''Terme der erweiterten Prädikatenlogik zweiter Stufe_____________ „Benennungen“ und durchgeführte Logik-Operationen''</span> |- | <small> <math>\begin{align} \text{(Axiom 1.1)} & \quad P \neg X \;\Longrightarrow\;\ \neg P\ X\ & \ & \text{„Wenn die Negation von X positiv ist, dann ist X nicht positiv“} \\ \text{(Axiom 2)} & \quad \Box \;\forall x (\ X\ x \Longrightarrow \ Y\ x) \Longrightarrow \ P\ Y & \ & \text{„Die Eigenschaft Y in allen x, die aus der Eigenschaft X in allen x} \\ \text{ } & \quad & \ & \; \; \text{mit modaler Notwendigkeit folgt, ist eine positive Eigenschaft“} \\ \text{[RK]} &\quad \Box\; \forall x A \;\Longrightarrow\;\Box\; \forall x B\; \text{ ├ }\;\Box \; \forall x (A \Longrightarrow\; B)\ & \ & \; \; \text{( :: Modales Prinzip KRIPKE-Γ-Ɐx)} \\ \text{(Korollar-1)} &\quad \Diamond \; \exists x \ G \ x \ & \ & \; \; \text{( „das —,x‘— steht für den GOTT, —,G‘—, der Christen“ )} \\ \text{ } & \text{„Es ist möglich, dass es den GOTT der Christen gibt“} & \ & \Longleftarrow\; \text{was zu beweisen ist !} \\ \text{01} & \quad \; \neg \Diamond \; \exists x \ G \ x \ & \ & \text{ AE: „Es ist unmöglich, dass es diesen GOTT gibt“ (dezidierter Atheismus)} \\ \text{02} & \quad (\neg x = .. )\ & \ & \text{ AE: „Es gibt die Eigenschaft, nicht mit x identisch zu sein“ :: (ungleich)} \\ \text{03} & \quad (\ x = .. )\ & \ & \text{ AE: „Es gibt die Eigenschaft, mit x identisch zu sein“ :: (gleich)} \\ \text{04} & \quad \neg\neg \Box \neg \exists x \ G \ x \ & \ & \text{:01:[ ◇A ↔ ¬□¬A ] :: (Modalregel) } \\ \text{05} & \quad \neg\neg \Box \neg\neg \forall x \neg \ G \ x \ & \ & \text{:04:[ ∃xA ↔ ¬Ɐx¬A ] :: (Quantorenregel) } \\ \text{06} & \quad \text{ ├ }\; \Box \; \forall x \neg G \ x \ & \ & \text{:05:NEG :: [ ¬¬A↔A ] :: (Gesetz der Aussagenlogik) } \\ \text{07} & \quad \Box \; \forall x \neg G \ x \Leftrightarrow\ W & \ & \text{:01:06:[ (:01:↔W) → (├:06:↔W) ] :: (Kalkülregel) } \\ \text{08} & \quad \Box \; \forall x \ G \ x \Leftrightarrow\ F & \ & \text{:07:[ (¬A↔W)↔(A↔F) ] :: (Regel für Wahrheitswerte)} \\ \text{ } & \text{„Jeder GOTT-Glaube ist ganz sicher falsch ! “} & \ & \Longleftarrow\; \text{die logische Konsequenz aus der Prämisse :01: !} \\ \text{09} & \quad \Box \; \forall x (\neg x = x ) \Leftrightarrow \ F \; \ & \text{ } & \text{□ⱯxXx:02:Instanz(X:=(¬x=..)) ⇒ Kontradiktion !} \\ \text{10} & \quad \Box \; \forall x (\ G \ x \Rightarrow\; (\neg x = x)) & \text { } & \text{:08:09:[ (:08:↔F) → (:09:↔F) ] :: „ex falso sequitur quotlibet“ :[RK]} \\ \text{11} & \quad \Box \; \forall x (\ G \ x \Rightarrow \; (\neg x = x)) \Rightarrow \; P (\neg x = .. ) & \ & \text{(A2):Instanz(X:=G):Instanz(Y:=(¬x= ..)) } \\ \text{12} & \quad \ P (\neg x = .. ) & \ & \text{:10:11:[ Modus ponens ] :: [ A→B, A ├ B ]} \\ \text{13} & \quad \ P (\neg x = .. )\;\Rightarrow\ \neg P (\ x = .. )\ & \ & \text{(A1.1):Instanz(X:=(x=..))}\\ \text{14} & \quad \neg P (\ x = .. )\ & \ & \text{:12:13:[ Modus ponens ] :: (log. Schlussregel)}\\ \text{15} & \quad \Box \; \forall x \ (x = x ) \Leftrightarrow \ W \; \ & \ & \text{□ⱯxXx:03:Instanz(X:=(x=..)) ⇒ Tautologie !} \\ \text{16} & \quad \Box \; \forall x (\ G \ x \Rightarrow\; (x = x)) & \ & \text{:08:15:[ (:08:↔F) → (:15:↔W) ] :: „ex falso sequitur etiam verum“ :[RK]} \\ \text{17} & \quad \Box \; \forall x (\ G \ x \Rightarrow\; (x = x)) \Rightarrow \ P (x = .. ) & \ & \text{(A2):Instanz(X:=G):Instanz(Y:=( x= ..))} \\ \text{18} & \quad \ P (\ x = .. )\ & \ & \text{:16:17:[ Modus ponens ]}\\ \text{19} & \quad \text{ ├ }\; (\neg P (\ x = .. )\ \wedge \ P (\ x = .. )) \Leftrightarrow\ F & \ & \text{:14:18:[ Konjunktion ] ⇒ Kontradiktion !}\\ \text{20} & \quad \neg \Diamond \; \exists x \ G \ x \Rightarrow (\neg P (\ x = .. )\ \wedge \ P (\ x = .. )) & \ & \text{:01:19:[ ├A├B╞ A→B ] :: ''KONDITIONALER BEWEIS''}\\ \text{ } & {\color{RedOrange}\text{Der Atheismus führt zu einem logischen Widerspruch ! }} & \ & \Longleftarrow\; \text{was mit Term :20: bewiesen ist !} \\ \text{21} & \quad \neg\neg \Diamond \; \exists x \ G \ x & \ & \text{:20:19:[ Modus tollendo tollens ] :: [ A→B,¬B ├ ¬A ]}\\ \text{22} & \quad \; \Diamond \; \exists x \ G \ x & \ & \text{:21:NEG }\\ \text{(Korollar-1)} & \;\text{„Es ist definitiv möglich, dass es diesen GOTT gibt“} & \ & \Longleftarrow\; \text{was zu beweisen war !} \\ \end{align}</math> </small> |} Anmerkung-7 ''':''' <span style="color:#00B000">( Dieser Beweisgang ist praktisch identisch mit dem 1. Beweisgang, jedoch gestrafft und präzisiert nach G.J.WIRSCHING. Diese Widerlegung des Nicht-GOTT-Glaubens beginnt sofort mit dem Korollar-1 <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span> aus dem 1. Beweisgang, als in Frage gestelltes ,Theorem‘, und beweist, ohne das Axiom-3 <span style="color:#4C58FF">— ,'''PG'''‘ —</span>, und ohne die GÖDEL-Prämisse <span style="color:#4C58FF">— ,'''PX'''‘ —</span>, in einem Zwischenergebnis, die innere Widersprüchlichkeit und damit auch die Unhaltbarkeit der atheistischen Glaubens-Annahme, aus rein logischen ,Gründen‘, bzw. Axiomen. )</span> Dieser Beweisgang geht von der Existenz GOTTES, <span style="color:#4C58FF">— ,'''G'''‘ —</span>, als Glaubens-Annahme, aus, wobei aber die Möglichkeit seiner Existenz, und damit die Sinnhaftigkeit des Glaubens an GOTT, durch die Prämisse :01: in Frage gestellt wird, und daher im Kalkül überprüft werden muss. Denn mit der Behauptung der Existenz GOTTES allein ist es nicht getan. Es muss auch seine ,Möglichkeit‘, d.h. die Sinnhaftigkeit des Glaubens an GOTT aufgewiesen werden. LEIBNIZ hat als erster, <span style="color:#00B000">(nach ANSELM)</span>, dieses Problem gesehen, und GÖDEL hat dafür die Lösung gefunden. Dieser Beweisgang, <span style="color:#00B000">(analog zum Möglichkeitsbeweis von Günther J. WIRSCHING konzipiert)</span>, setzt in den Axiomen, genau wie im 1. Beweisgang, die Existenz von etwas <span style="color:#FF6000">„Positiven“, „Perfekten“, „Vollkommenen“</span>, <span style="color:#4C58FF">— ,'''P'''‘ —</span>, <span style="color:#00B000">(d.h. die Transzendentalien)</span>, allgemein für die Welt voraus, <span style="color:#00B000">(was im Axiom-3 ''':''' <span style="color:#4C58FF">— ,'''PG'''‘ —</span>, auch GOTT ultimativ zugeordnet wird ''':''' <span style="color:#FF6000">»''GOTT ist absolut positiv, perfekt und vollkommen''«</span>)</span>; das dann im 2. Beweisgang mit Term :13: als widerspruchsfrei, <span style="color:#00B000">(als ,wahr‘ und ,annehmbar‘ im Kontext des christlichen Glaubens)</span>, schon ,bewiesen‘ <span style="color:#00B000">( ╞ )</span> worden ist. Die Existenz von ,Transzendentalien‘ in der Welt, ist ein, mit Beispielen belegbares, allgemeines Faktum; ihre Existenz auch in GOTT ist mit dem Term :13: des 2. Beweisganges bewiesen, die jedoch im Unendlichen, GOTT, als Transzendentalia, auch in ,ultimativer‘ Form vorliegen. Axiom-1 ,besagt‘, dass Eigenschaften nicht zugleich, vollkommen und nicht vollkommen, sein können. Axiom-2 ,besagt‘, dass, allgemein, alle Vollkommenheiten, <span style="color:#00B000">(alle Transzendentalien)</span>, gleichwertig, <span style="color:#00B000">(mathematisch äquivalent)</span>, sind. <span style="color:#00B000">(Axiom-2 wird hier um das GÖDEL-Konjunkt <span style="color:#4C58FF">— ,'''PX'''‘ —</span> verkürzt dargestellt. Damit ist auch Axiom-3 für diesen Beweisgang unnötig geworden, ohne dass sich wegen dieser Kürzung am Ergebnis etwas ändert. Axiom-2 wird jedoch sofort <span style="color:#FF6000">„modal falsch“</span>, wenn seine Variablen mit nicht-positive Eigenschaften, wie ,rot‘ oder ,schwer‘ belegt werden, die nicht ,transzendental‘-allgemein gültig sind, die keine ,Transzendentalia‘ sind.)</span> Die Eigenschaft <span style="color:#4C58FF">— (¬x=..) —</span> ,besagt‘, dass GOTT <span style="color:#FF6000">„unvergleichlich“</span> ist, wenn <span style="color:#4C58FF">,'''x'''‘</span> für GOTT steht. <span style="color:#00B000">(Der informelle Term, <span style="color:#4C58FF">— (¬x=..) —</span>, ersetzt hier, wie bei A. FUHRMANN, den formal korrekten Abstraktionsausdruck ''':''' <span style="color:#4C58FF">— λy.(¬x=y) —</span>, aus dem Lambda-Kalkül.)</span> Der Term :16: <span style="color:#4C58FF">— (x=x) ↔ W —</span> steht für die Selbstbezeichnung des GOTTES-JHWH in Exodus 3,14 ''':''' <span style="color:#CC66FF">»''Ich bin der ‚IST‘'' <span style="color:#00B000">(aus mir selbst)</span>«</span>, der Grund für die <span style="color:#FF6000">„Unvergleichlichkeit“</span> GOTTES. Der GOTT der abendländischen, christlichen Tradition wird mit <span style="color:#4C58FF">— ,'''G'''‘ —</span> bezeichnet ''':''' d.i. der <span style="color:#FF6000">„GOTT der Christen“</span>, entsprechend der ,methodologischen‘ Prämisse und der ,Genese‘ des Kalküls, syntaktisch formalisiert in der Definition-1 ''':''' <span style="color:#4C58FF">— ‚'''Gx↔∀X(PX→Xx)'''‘ —</span> ''':''' <span style="color:#FF6000">»''Das Individuum'' <span style="color:#4C58FF">,'''x'''‘</span> ''ist genau dann GOTT'', <span style="color:#4C58FF">,'''G'''‘</span>, ''wenn es alle Vollkommenheiten'', <span style="color:#4C58FF">,'''P'''‘</span>, ''in sich schließt''«</span>, nach der Vorgabe von LEIBNIZ ''':''' <span style="color:#FF6000">»''GOTT ist ein Wesen von äußerster Größe und Vollkommenheit, das alle Grade derselben in sich schließt''«</span>. Mit Korollar-1 hat dieser Beweisgang dasselbe Endergebnis, wie der 1. Beweisgang. Der Beweis, dass der dezidierte Atheismus zu einem logischen Widerspruch führt, und damit falsch ist, ist ein Zwischenergebnis in diesem Beweisgang, und begründet mit <span style="color:#FF6000">»''mathematischer Evidenz''«</span>, und unabhängig von jeder Glaubensüberzeugung, den, von LEIBNIZ gesuchten, Möglichkeitsbeweis für die Existenz GOTTES im Argument des Erzbischofs, und bestätigt damit die Sinnhaftigkeit des GOTT-Glaubens. Einmal Axiom-1 und zweimal Axiom-2 sichern hier das Ergebnis des Kalküls ''':''' das Möglichkeits-Korollar-1 ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span>''':''' <span style="color:#FF6000">»''Es ist definitiv möglich, dass es den GOTT der Christen gibt''«</span>. Diese zwei Axiome sind die einzigen, und modal-notwendigen, d.h. die transzendentalen Voraussetzungen und Bedingungen für das Endergebnis ''':''' der Widerspruchsfreiheit und Sinnhaftigkeit des Glaubens der Christen an GOTT; <span style="color:#00B000">(dasselbe gilt natürlich auch für die <span style="color:#4C58FF">„theologische“</span> Weltanschauung jeder monotheïstischen Religion '''!''' Dem Erzbischof ANSELM ging es damals nur um seinen Glauben an GOTT.)</span>. Die Logik-Regel <span style="color:#FF6000"><span style="font-family: Times;"><big>„ex falso sequitur quotlibet, etiam verum“</big></span></span>, <span style="color:#00B000">(‚Aus Falschem folgt irgendetwas, auch Wahres‘)</span>, ist der scholastische Ausdruck für die ‚Implikation‘ <span style="color:#00B000">(Folgerung)</span> von Aussagen, die nur dann falsch, <span style="color:#4C58FF">— F —</span> ist, wenn das Antezedens wahr, <span style="color:#4C58FF">— W —</span>, und die Konsequenz falsch, <span style="color:#4C58FF">— F —</span> ist. Andernfalls ist sie immer wahr, <span style="color:#4C58FF">— W —</span>, auch wenn die Voraussetzung falsch, <span style="color:#4C58FF">— F —</span> ist ''':''' ‚Modern‘ darstellbar durch die ‚Wahrheitswertetafel‘ für die ‚materiale Implikation‘, <span style="color:#4C58FF">— ,(A → B)‘ —</span> <span style="color:#FF6000">„wenn A, dann B“</span>. Damit ist auch der <span style="color:#4C58FF">[ Modus tollendo tollens ] :: [ A → B, ¬B ├ ¬A ] </span> verstehbar; <span style="color:#00B000">(vgl. die vierte Zeile der ‚materialen Implikation‘)</span>. Der positive hypothetische Syllogismus ''':''' <span style="color:#4C58FF">[ Modus ponendo ponens ] :: [ A → B, A ├ B ] </span> ist aus der ersten Zeile ablesbar. Die folgende Tabelle gibt für jeden ,Wahrheitswert‘ der Aussagen <math>A</math> und <math>B</math> das Resultat einiger zweiwertiger Verknüpfungen an ''':''' {|class="wikitable hintergrundfarbe2" style="text-align:center;" |- !colspan="2"|''Belegung''!!Konjunktion!!Disjunktion!!materiale<br /> Implikation!!Äquivalenz<br /> Bikonditional!!kopulative<br /> Konjunktion |- !<math>A</math> !<math>B</math> !<math>A</math> und <math>B</math> !<math>A</math> oder <math>B</math> !wenn <math>A</math> dann <math>B</math> !sowohl <math>A</math> als auch <math>B</math> !entweder <math>A</math> oder <math>B</math> |- !W!!W |W||W||W||W||F |- !W!!F |F||W||F||F||W |- !F!!W |F||W||W||F||W |- !F!!F |F||F||W||W||F |} <span style="color:#00B000">(Eine ‚Konjunktion‘ ist nur dann ,wahr‘, wenn beide Aussagen einer ‚Konjunktion‘ wahr sind. Eine ‚kopulative Konjunktion‘ ist nur dann ,wahr‘, wenn entweder die eine, oder die andere Aussage der ‚kopulativen Konjunktion‘ wahr ist. Es besteht also eine Wenn-Dann-Verbindung zwischen beiden Aussagen — eine ,Kopplung‘. Das ist die logische Grundlage von Axiom-1 im GÖDEL-Formalismus)</span> Um das Widersprüchliche der ,Annahme‘ nachzuweisen, dass positive Eigenschaften ,nicht konsistent‘ seien, <span style="color:#00B000">(im 1. Beweisgang)</span>, bzw. um das Unlogische und Sinnwidrige der ,Annahme‘ klarzustellen, es sei ,unmöglich‘, dass es einen GOTT gibt, <span style="color:#00B000">(hier, in der Widerlegung)</span>, verwendet das GÖDEL-Kalkül den Gegensatz ''':''' wahr, <span style="color:#4C58FF">— W —</span>, falsch, <span style="color:#4C58FF">— F —</span>, zwischen der dritten und vierten Zeile der Wahrheitswertetafel, für zwei ,wahre‘ <span style="color:#4C58FF">— W —</span> ,materiale Implikationen‘, in denen die Voraussetzung jeweils falsch, <span style="color:#4C58FF">— F —</span>, ist, entsprechend der Regel <span style="color:#FF6000"><span style="font-family: Times;"><big>„ex falso, <span style="color:#4C58FF">— F —</span>, sequitur quotlibet, <span style="color:#4C58FF">— F —</span>, etiam verum, <span style="color:#4C58FF">— W —</span>“</big></span></span>, jeweils mit der Hilfe von Axiom-1 und Axiom-2, in einer <span style="font-family: Times;"><big>,Reductio ad absurdum‘</big></span>; hier unabhängig von jeder Glaubensüberzeugung. Im Gegensatz dazu, wird, <span style="color:#00B000">(im 2. Beweisgang)</span>, aus dem Glauben an GOTT, auch mit einer <span style="font-family: Times;"><big>,Reductio ad absurdum‘</big></span>, speziell mit Axiom-1, das Widersprüchliche in der ,Annahme‘ nachgewiesen, es gäbe in GOTT <span style="color:#FF6000">»''keine Vollkommenheit, nichts Positives, nichts Perfektes''«</span>, d.h. keine ,Transzendentalia‘. In dieser <span style="font-family: Times;"><big>,Reductio ad absurdum‘</big></span>, im 2. Beweisgang, wird vorausgesetzt <span style="color:#00B000">(,angenommen‘)</span> ''':''' es gibt den GOTT der Christen, <span style="color:#00B000">(als Prämisse :01:)</span>, der ,unvergleichlich‘ und ,einzigartig‘ ist, und in dem auch alle ,Transzendentalia‘ <span style="color:#FF6000">„koinzident“</span> ,eins‘ sind, entsprechend Axiom-2. Für KANT entsteht ein Widerspruch in den Prädikaten eines Satzes. ::<span style="color:#FF6000">»</span> ''Wenn ich das Prädicat in einem identischen Urtheile aufhebe'', <span style="color:#00B000">[ durch eine Negation ]</span>, ''und behalte das Subject, so entspringt ein Widerspruch''. <span style="color:#00B000">[ Wenn ich sage ''':''' ,''GOTT ist nicht allmächtig''‘, entsteht ein Widerspruch zur richtigen Aussage ''':''' ,''GOTT ist allmächtig''‘. ]</span> … ''Wenn ihr aber sagt ''':''' ,GOTT ist nicht‘, so ist weder die Allmacht, noch irgendein anderes seiner Prädicate gegeben; denn sie sind alle zusammt dem Subjecte aufgehoben'', <span style="color:#00B000">[ negiert ]</span>, ''und es zeigt sich in diesem Gedanken nicht der mindeste Widerspruch.'' <span style="color:#FF6000">«</span><ref>vgl. ‚''<span style="font-family: Times;"><big>Kritik der reinen Vernunft</big></span>''‘, Seite 398f; https://www.korpora.org/kant/aa03/398.html</ref> Es ist richtig, wie KANT sagt, der Widerspruch entsteht nicht in dem Gedanken ''':''' <span style="color:#FF6000">»</span>''GOTT ist nicht''<span style="color:#FF6000">«</span>. GÖDEL zeigt daher, dass der Widerspruch erst dann entsteht, wenn von der Annahme ausgegangen wird ''':''' ''<span style="color:#FF6000">»</span>Es ist unmöglich, dass GOTT ist''<span style="color:#FF6000">«</span>. Daraus folgt dann ,regulär‘, mit Hilfe von Axiom-1 und Axiom-2, <span style="color:#00B000">(d.h. mit den Theoremen von den Transzendentalien)</span>, die logische ,Möglichkeit‘ GOTTES, unabhängig von jeder Glaubensüberzeugung. Wie LEIBNIZ klar erkannt hat, muss zuerst, aus dem Widerspruch des Gegenteils, die logische ,Möglichkeit‘, <span style="color:#00B000">(die Konsistenz)</span>, der Existenz GOTTES bewiesen werden ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span>, bevor daraus die reale ,Notwendigkeit‘ GOTTES abgeleitet werden kann ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span>, dessen ,Existenz‘ jedoch, aus dem ,Glauben‘, im Voraus, schon angenommen worden ist. Dieser Sachverhalt ist das ausschließliche Spezifikum GOTTES, <span style="color:#00B000">(das <span style="color:#FF6000">»''Privilegium der Gottheit allein''«</span>)</span>, und gilt nur bei GOTT, als dem Unvergleichlichen und Einzigartigen. Dieses ,Spezifikum‘ wird im Theorem ANSELMS abgebildet ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx→□∃xGx'''‘ —</span>, auf Grund von Axiom-2, das den inneren Zusammenhang, die Koinzidenz auch von ,Möglichkeit‘ und ,Notwendigkeit‘ im Unendlichen, GOTT, erkennen lässt. Bis Zeile 10, im 3. Beweisgang, reicht der Geltungsbereich der ,modal‘-frei gewählten Kalkül-Prämisse :01:, der ,methodologische‘ GOTT-Glaube. In Zeile 11 liegt der ,Schwerpunkt‘ des ontologischen Beweises dann aber am, — modal als notwendig — ,bewiesenen‘ Widerspruch des Gegenteils zum GOTT-Glauben, <span style="color:#00B000"> (formal-syntaktisch dargestellt als widerspruchfreies Antezedens, <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span>, dem Möglichkeits-Korollar-1 aus dem 1. Beweisgang)</span>, und nicht mehr am ,angenommenen‘ GOTT-Glauben der Kalkül-Voraussetzung, <span style="color:#00B000">(nun dargestellt als Konsequenz <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span> im Theorem ANSELMS)</span>. Das Möglichkeits-Korollar-1 muss jetzt immer, wie folgt, gelesen werden ''':''' <span style="color:#FF6000">»''Es ist <u>widerspruchfrei</u> möglich, dass GOTT ist''«</span>. Damit hat er, — angeregt durch LEIBNIZ, und mit ihm —, die fast einhellig akzeptierte Fehldeutung des ontologisch-<span style="color:#4C58FF">„theologischen“</span> Arguments ANSELMS für GOTT durch gewichtige philosophische, <span style="color:#00B000">(KANT<ref>GOTT ist absolut einzigartig und unvergleichlich. KANT macht GOTT jedoch zu einem ,Ding‘ unter den vielen ,Dingen‘ dieser Welt, indem er die Existenz, bzw. das ,Sein‘ GOTTES mit dem ,Sein der Dinge‘ gleich setzt. Eine solche Gleichsetzung ist bei GOTT unangebracht und daher unzulässig! KANT verkennt damit die Einzigartigkeit und Besonderheit GOTTES. Das ,Sein‘ der Dinge ist, — wie KANT sagt —, kein ,reales Prädikat’, d.h. Existenz ist keine Eigenschaft. Jedoch in GOTT ist ,Sein‘ ein ,reales Prädikat‘, d.h. Existieren ist ,real‘ die Wesenseigenschaft GOTTES, denn GOTT ist der, der für uns, — aus Liebe —, immer schon ,da‘ ist ''':''' in der ,Hypostatischen Union‘, sowohl als GOTT von Ewigkeit zu Ewigkeit, als auch als Mensch in unserer Zeitlichkeit. Das ist das, was GOTT für uns ausmacht —, sein Wesen.</ref>)</span>, und <span style="color:#4C58FF">„theologische“</span>, <span style="color:#00B000">(THOMAS<ref>GOTT ist absolut einzigartig und unvergleichlich. THOMAS unterscheidet die ,Natur GOTTES‘ nicht von der ,Natur der Dinge‘, indem er die ,Natur‘ des GOTTES ANSELMS irrtümlich mit der ,Natur‘ der Dinge gleich setzt. Damit reiht er GOTT unter die vielen Dinge unserer Welt ein, indem er für den GOTT ANSELMS annimmt ''':''' GOTT ,esse in rerum natura‘, d.h. wörtlich, dass der GOTT ANSELMS in der ,Natur‘ der Dinge existiert, <span style="color:#00B000">(was ANSELM nie gesagt hat)</span>. Eine solche Gleichsetzung ist bei GOTT unangebracht und daher unzulässig! Die ,zeitlose-überzeitliche‘ Wirklichkeit, (Natur), GOTTES ist völlig verschieden und unabhängig von der zufälligen Wirklichkeit, (die ,Natur‘), unserer ,raum-zeitlichen‘ Welt. Daher ist sie mit dieser auch nicht vergleichbar. Thomas verkennt damit die Einzigartigkeit und Besonderheit GOTTES.</ref>)</span>, Autoritäten zurechtgerückt, welche die Einzigartigkeit und Unvergleichlichkeit des Unendlichen, GOTT, bei ihrer Beurteilung des Theorem ANSELMS nicht berücksichtigt, sondern den Unendlichen, <span style="color:#00B000">(irrtümlich)</span>, unter die endlichen Dinge unserer Welt eingereiht haben. GÖDEL hat mit dem bewiesenen Widerspruch des Gegenteils zum GOTT-Glauben, den Beweis für die <span style="color:#FF6000">»''mathematische Evidenz''«</span> des Theorem ANSELMS geliefert, was, nach LEIBNIZ, für die Akzeptanz dieses Theorems noch gefehlt hat. Das Theorem ANSELMS besagt universell ''':''' Die <span style="color:#FF6000">»''theologische Weltanschauung''«</span> der Juden, Christen und Muslime, die ,annehmen‘, dass es mit ,Notwendigkeit‘ <span style="color:#4C58FF">— ‚'''□'''‘ —</span> <span style="color:#00B000">(nur)</span> einen GOTT gibt, ist logisch richtig und <span style="color:#FF6000">»''mathematisch evident''«</span>, weil es <u>ohne Widerspruch</u> ,denkbar‘ <span style="color:#4C58FF">— ‚'''◇'''‘ —</span> ist, dass es GOTT gibt ''':''' Nicht mehr und nicht weniger, <span style="color:#FF6000">»''rein verstandesmäßig, (ohne sich auf den Glauben an irgendeine Religion zu stützen)''«</span>. Es geht hier bei GÖDEL nicht um Theoriefindung oder ähnliches. GÖDEL ist kein ,spekulierender‘ Theoretiker. GÖDEL ist Logiker und Mathematiker. Was er sagt, ist mathematisch wahr und logisch richtig. Wenn er sagt, dass die Aussage ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ — »''wahr''«</span> ist ''':''' <span style="color:#FF6000">»''es ist möglich, dass es Gott gibt'' ''':''' ''das ist ,wahr‘ wegen Axiom-2 (und Axiom-1)''«</span>, dann spricht er hier von der mathematischen Wahrheit. Logischerweise ist dann die konträre Aussage ''':''' <span style="color:#4C58FF">— ‚'''¬◇∃xGx'''‘ — »''falsch''«</span> ''':''' <span style="color:#FF6000">»''es ist nicht möglich, dass es einen Gott gibt''«</span>, und zwar mathematisch falsch, weil sich aus dieser Aussage ein Widerspruch ergibt. Jeder, der die mathematische Logik GÖDELS lesen kann, kann das sehen und verstehen ''':''' Das Zwischenergebnis, <span style="color:#00B000">(Term :20:)</span>, in dieser Kalkül-Ableitung, die logische Konsequenz aus der Annahme des dezidierten Atheismus, es sei unmöglich, dass es GOTT gibt, ist der faktische, nachprüfbare, und für jeden Menschen sichtbare Beweis dafür, dass diese Annahme in einen Widerspruch mündet, und damit falsch und unlogisch ist. Das bedeutet, es ist eine Tatsache, bzw. es ist Faktum, dass der Atheismus, — mit <span style="color:#FF6000">»''mathematischer Evidenz''«</span> —, wirklich falsch und unlogisch ist, und daher, mit Recht, als ,Unsinn‘ bezeichnet werden darf '''!''' Das ist nicht bloß als eine Theoriefindung, oder als eine Interpretation eines Autors zu verstehen. Das ist vielmehr genau so wahr und <span style="color:#FF6000">»''mathematisch evident''«</span>, wie, dass zwei mal zwei vier ergibt, und wirklich genau so logisch richtig, wie, dass die Erde sich um die Sonne dreht. Das ist gerade das Überraschende und Unerwartete am Gödel-Kalkül. Es geht hier nicht mehr um Theoriefindung oder Interpretationen, denen man zustimmen kann oder nicht. Es geht hier <span style="color:#FF6000">»''rein verstandesmäßig''«</span> um mathematisch-logische Fakten. Damit steht GÖDEL, in seiner Bedeutung, in gewisser Weise, neben KOPERNIKUS, weil seine Kalkül-Ergebnisse, wie die Berechnungs-Ergebnisse dieses Pioniers der damaligen Zeitenwende, heute, in unserem Äon, ebenfalls mit eingefleischte Vorurteile aufräumen, ohne aber, dass GÖDEL für sich selbst, im Glauben, logisch konsequent gewesen wäre. <span style="color:#00B000">(Er ist sich der Tragweite und der Konsequenzen seiner <span style="color:#4C58FF">„axiomatischen Theologie“</span> anscheinend nicht bewusst gewesen, wenn er sagt ''':''' Man sei heute noch <span style="color:#FF6000">»''weit davon entfernt, das theologische Weltbild wissenschaftlich begründen zu können''«</span>, nachdem sein Kalkül das <span style="color:#FF6000">„atheistische Weltbild“</span> fundamental ins Wanken gebracht und als irrationalen ,Unsinn‘ entlarvt hat. Sein Kalkül ,beweist‘ ( ╞ ) indirekt, dass das <span style="color:#FF6000">„theologische Weltbild“</span>, im Beweisgang ,Widerlegung‘, aus dem Widerspruch des Gegenteils, mit <span style="color:#FF6000">»''mathematisch-logischer Evidenz''«</span>, offensichtlich doch, wissenschaftlich begründet werden kann)</span>. ---- Kurt GÖDEL ist auch deswegen ein Ausnahmelogiker. ---- ===<div class="center"><span style="color:#660066">Epilog für Skeptiker</span></div>=== Wenn man das GÖDEL-Argument genau liest, dann ist nur die Annahme ''':''' <span style="color:#FF6000"> „es ist möglich, dass es GOTT gibt“</span> bewiesen, weil aus der Annahme ''':''' <span style="color:#FF6000">„es ist unmöglich, dass es GOTT gibt“</span> ein logischer Widerspruch ableitbar ist. Die Aussage ''':''' <span style="color:#FF6000">„es gibt GOTT“</span> ist dagegen schon eine Glaubensaussage, und damit ist das auch die ,Grundannahme‘ eines gläubigen Menschen, der dann aus der ,bewiesenen Möglichkeit‘, dass es Gott gibt, ableiten kann ''':''' <span style="color:#FF6000">»''es gibt GOTT wirklich''«</span>, wenn er will ''':''' <span style="color:#FF6000">»''Es stimmt also, was ich glaube '''!''''' «</span> Das ist das Argument ANSELMS, der ein christlicher Amtsträger war, und der daher von dieser Grundannahme auch ausgeht. Solange in den Voraussetzungen des Möglichkeitsbeweises im GÖDEL-Kalkül kein Widerspruch nachweisbar ist, und solange in der logischen Durchführung dieses Beweises keine schweren Mängel festgestellt werden können, ist das Ergebnis des Möglichkeitsbeweises, wie GÖDEL ihn durchgeführt hat, korrekt, und die Folgerungen daraus, logisch richtig, dass es sich hier um <span style="color:#FF6000">»''mathematische Evidenz''«</span> handelt, <span style="color:#00B000">(z. B. wie 2 x 2 = 4)</span>. Aber niemand ist gezwungen, aus der Möglichkeit, dass es GOTT gibt, daraus zu schließen, dass es GOTT auch mit Notwendigkeit gibt, wie das im Argument ANSELMS geschieht, außer, er akzeptiert auch die Grundannahme, dass es den Unendlichen und Unvergleichlichen tatsächlich gibt. Dann kann er mit LEIBNIZ, der selbst an GOTT geglaubt hat, mit Bestimmtheit sagen ''':''' <span style="color:#FF6000">»''gesetzt, dass GOTT möglich ist, so ist er, was das Privilegium der Gottheit allein ist''«</span>, weil GÖDEL mit seinem Kalkül den noch ausstehenden Beweis der Widerspruchsfreiheit dafür geliefert hat. Wenn Du den 3. Beweisgang des GÖDEL-Kalküls genauer anschaust, dann siehst Du, dass der Konsequenz-Teil im Argument ANSELMS, der identisch ist mit dem Term in der Zeile 10, <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span>, immer noch formallogisch abhängig ist von der methodologischen Glaubens-Prämisse, Term :01:, <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span> ''':''' <span style="color:#FF6000">»''das'' <span style="color:#4C58FF">‚'''x'''‘</span> ''steht für den Gott der Christen''«</span>. Diese Abhängigkeit ist bis zur Zeile 10 offensichtlich und logisch korrekt. <span style="color:#00B000">(Man könnte nach dieser Zeile, ohne Weiteres, ,regulär‘ die <span style="color:#FF6000">„logische Implikation”</span> :: <span style="color:#4C58FF">[├ A ├ B ╞ A→B ]</span> mit Term :01: und Term :10: als ein mögliches Korollar bilden ''':''' <span style="color:#4C58FF">— ‚'''Gx→□∃xGx'''‘ — </span>)</span>. Das bedeutet, der Konsequenz-Teil im Theorem ANSELMS, der in diesem ,regulär‘-möglichen Korollar an zweiter Stelle steht, ist damit in seiner Formal-Struktur offensichtlich ,regulär‘ von der Glaubens-Prämisse, Term :01:, abhängig, d.h. er ist der Ausdruck einer Glaubensüberzeugung. Im Theorem ANSELMS steht er jetzt, in der Zeile 11, als Konsequenz-Teil auch an zweiter Stelle, hat aber nicht mehr seine Glaubens-Prämisse als notwendige Bedingung an erster Stelle vor sich, wie im ,regulär‘-möglichen Korollar. Jetzt steht eine neue und andere Voraussetzung als Begründung vor ihm. Der Schwerpunkt des Argument ANSELMS liegt damit am Begründungs-Teil des ANSELM-Theorems, der jetzt die erste Stelle im Theorem einnimmt ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span> ''':''' <span style="color:#FF6000">»''es ist möglich, dass es GOTT gibt''«</span>, der erst dadurch entstanden ist, und davon abhängig ist, weil sein Gegenteil ''':''' <span style="color:#4C58FF">— ‚'''¬◇∃xGx'''‘ —</span> ''':''' <span style="color:#FF6000">»''es ist unmöglich, dass es GOTT gibt''«</span>, zu einem Widerspruch geführt hat. Dieser Begründungs-Teil, das Antezedens, im Argument ANSELMS, ist daher nicht mehr von der methodologischen Glaubens-Prämisse, Term :01:, abhängig, sondern nur vom Axiom-1, der Widerspruchsfreiheit, und von der paarweisen, mathematischen Äquivalenz beliebiger positiver Eigenschaften im Axiom-2, die im 1. Beweisgang, bzw. im Beweisgang ,Widerlegung‘, mit dem <span style="color:#4C58FF">[ Modus tollendo tollens ] :: [ A → B, ¬B ├ ¬A ]</span>, die Widerspruchsfreiheit der Möglichkeit des GOTT-Glaubens mit Notwendigkeit herbeigeführt haben. Daraus ergibt sich eine logische Verschiebung in der Argumentationskette, denn dieser Begründungs-Teil, der jetzt die Widerspruchsfreiheit für den Konsequenz-Teil liefert, ist selbst unabhängig und frei von jeder Glaubensüberzeugung. Weil widerspruchsfrei und <span style="color:#FF6000">»''mathematisch evident''«</span>, muss er als logische Begründung für die Widerspruchsfreiheit und als Beweis für die <span style="color:#FF6000">»''mathematische Evidenz''«</span> des Konsequenz-Teils gelesen werden, und damit bestätigt er die Widerspruchsfreiheit und Sinnhaftigkeit der Glaubensüberzeugung eines gläubigen Menschen, <span style="color:#00B000">(was auch das Ziel ANSELMS war)</span>. Das heißt also ''':''' der Glaube dieses Menschen ist widerspruchsfrei und sinnvoll, und enthält keinen Zirkelschluss, weil sein Gegenteil, der Nicht-GOTT-Glaube, zu einem Widerspruch führt; <span style="color:#00B000">(das hat GÖDEL mit seinem Kalkül-System bewiesen, dessen Argumentationskette mit einem Computer-Programm, dem sog. ,Theorembeweiser‘, überprüft worden ist, und als <span style="color:#FF6000">»''nachweisbar korrekt''«</span> befunden wurde)</span>. Das Theorem ANSELMS beweist, nach GÖDEL, dass der Glaube an GOTT, mit <span style="color:#FF6000">»''mathematische Evidenz''«</span> notwendig widerspruchsfrei und sinnvoll ist, weil der Nicht-GOTT-Glaube notwendig zu einem Widerspruch führt. <u>Das Theorem beweist jedoch nicht, dass die Existenz GOTTES notwendig ist</u>, <span style="color:#00B000">(wie es fast immer fälschlich gelesen wurde und wird)</span>, sondern, das Theorem ANSELMS geht davon aus, als nicht hinterfragtes Faktum, dass GOTT notwendig, schon immer existiert, und beweist, mit dem GÖDEL-Kalkül, dass diese Glaubens-Annahme widerspruchsfrei und sinnvoll, und <span style="color:#FF6000">»''mit allen bekannten Tatsachen durchaus vereinbar ist''«</span>, wie GÖDEL abschließend sagt. GOTT hat es ja auch nicht ,nötig‘, bewiesen zu werden. Für den Erzbischof ANSELM war die Existenz GOTTES, überall und jederzeit, die ungefragte und für ihn die selbstverständlichste Voraussetzung aller seiner Bemühungen, in seinem Leben, und in seinem Beruf als christlicher Amtsträger, und auch als Theologe in den philosophischen Überlegungen über seinen Glauben. Mit diesen Überlegungen hat er, mit GÖDEL, bewiesen ''':''' Glaube ist nicht irrational, kein Sprung ins Unbekannte, sondern eine freie, vernünftige Entscheidung. Glaube ist rational und vertrauenswürdig. Zusammengefasst heißt das Ergebnis dieser Bemühungen ANSELMS ''':''' Wenn Du an GOTT glauben willst, dann kannst Du das unbedenklich tun, denn Dein Glaube ist auch logisch in der <u>bewiesenen Möglichkeit</u>, dass es GOTT geben kann, begründet, und damit ist er widerspruchsfrei, sinnvoll und kein Zirkelschluss. Dein Glaube an GOTT beruht jedoch, nach wie vor und in erster Linie, auf Deiner freien Entscheidung für GOTT, und nicht auf dem Zwang einer ,logischen‘ Argumentation. Wenn Du nicht an GOTT glauben willst, dann <u>musst Du, und sollst Du, auch nicht deswegen</u> an GOTT glauben, weil der Nicht-GOTT-Glaube zu einem Widerspruch führt, und damit falsch und unlogisch ist. Denn der Glaube an GOTT muss immer eine freie und Deine ganz persönliche Entscheidung für GOTT sein und bleiben. Niemand darf zum Glauben an GOTT gezwungen werden, auch nicht mit ,logischen‘ Argumenten. Warum '''?''' Weil GOTT die Liebe ist '''!''' Und die Liebe duldet keinen Zwang '''!''' Zum Abschluss, und für eine bessere Verständlichkeit dieser Studie, hat die KI, der ich diese Studie für die Erstellung eines Podcast übergeben habe, eine, — sogar für Kinder —, verständliche Metapher kreiert. Sie sagt, man stelle sich vor ''':''' Es sei irgendwo ein ,Schatz’ vergraben, und es gäbe auch eine ,Schatzkarte’ für diesen ,Schatz’. Kurt GÖDEL ist nun gekommen, und hat mit seinem Kalkül bewiesen, dass diese ,Schatzkarte’ korrekt ist und fehlerfrei. Ob aber jemand, mit Hilfe dieser ,Schatzkarte’ auf ,Schatzsuche’ gehen will oder nicht ''':''' das ist und bleibt jedem selbst überlassen, und ist immer eine freie, und ganz persönliche Entscheidung. Damit hat die KI erstaunlich treffend, sowohl die Bedeutung, als auch die reale Funktion des GOTT-Glaubens in der Lebens-Wirklichkeit unserer Welt und Zeit charakterisiert, in Übereinstimmung mit der Gleichniserzählung JESU vom ,Schatz im Acker’; <small><span style="color:#00B000">( vgl. {{Bibel | Matthäus-Evangelium |13|44|EU}} )</span></small>. Der ,Schatz’ ist die <span style="color:#FF6000">„<span style="font-family: Times;"><big>Βασιλεία του Θεού</big></span>“</span><span style="color:#00B000"> | ,Basileía tou Theoú’</span>, d.h. das <span style="color:#CC66FF">»''Königtum GOTTES''«</span>, oder auch das <span style="color:#CC66FF">»''Himmelreich''«</span>. Die ,Schatzkarte’ ist der Glaube an GOTT. Die ,Schatzsuche’ ist der Weg des Glaubens in der Nachfolge JESU, der uns den Weg zeigt zum Ziel, zur Erfüllung aller unserer Sehnsüchte und Wünsche. ---- ---- ;Fußnoten <references /> 78fk5sm70jo5z4matpsztm4yv3gr2l5 1090605 1090603 2026-09-09T08:53:19Z Santiago 19191 /* Kurt GÖDEL und der sog. ‚ontologische Gottesbeweis‘ */ Zusatz 1090605 wikitext text/x-wiki [[Kategorie: Buch]] {{Regal|ort=Philosophie}} {{Vorlage:StatusBuch|9}} ==<div class="center"><span style="color:#660066">'''Kurt GÖDEL und der sog. ‚ontologische Gottesbeweis‘'''</span></div>== <span style="font-family: Times;"><big><div class="center">לַמְנַצֵּ֗חַ לְדָ֫וִ֥ד אָ֘מַ֤ר נָבָ֣ל בְּ֭לִבּוֹ אֵ֣ין אֱלֹהִ֑ים הִֽשְׁחִ֗יתוּ הִֽתְעִ֥יבוּ עֲלִילָ֗ה אֵ֣ין עֹֽשֵׂה־טֽוֹב׃ (Psalm 14,1)</div></big></span> ---- ===<div class="center"><span style="color:#660066">Vorwort</span></div>=== Zur Orientierung ''':''' Die Diskussion um GOTT läuft schon über zweitausend Jahren. Vor etwa tausend Jahren hat sich ein gewisser ANSELM gesagt ''':''' <span style="color:#FF6000">»''Ich glaube an GOTT'' … <span style="color:#00B000">[ sonst wäre er sicher nicht Erzbischof von Canterbury geworden ]</span> … ''aber ich möchte auch wissen und verstehen, ob das stimmt und sinnvoll ist, was ich da glaube '''!''''' «</span> Dann hat er seine Überlegungen dazu aufgeschrieben, und das kann man in seinen Schriften auch heute noch lesen. Der sehr geschätzte deutsche Professor und Philosoph aus Königsberg, Immanuel KANT, hat das, was ANSELM da aufgeschrieben hat, gelesen, <span style="color:#00B000">(vermittelt durch CARTESIUS)</span>, und das dann den <span style="color:#FF6000">„ontologischen Gottesbeweis“</span> genannt, <span style="color:#00B000">(obwohl es in Wirklichkeit gar kein Gottesbeweis ist; genauer ''':''' es ist kein Beweis für die Existenz GOTTES)</span>, und dieser große KANT hat dann großartig bewiesen, das, was ANSELM da aufgeschrieben hat, sei falsch. Es sei <span style="color:#FF6000">„ja gar kein“</span> Gottesbeweis '''!''' <span style="color:#00B000">( Naja, was denn sonst '''?''' )</span> Wobei er den Fehler gemacht hat, dass er den, an sich, unvergleichbaren GOTT mit hundert Talern in seinem Vermögenszustande verglichen hat. <span style="color:#00B000">(Das ist aber eine andere Geschichte.)</span> Hundert Taler und GOTT haben ,an sich‘ nichts gemeinsam, außer, wenn KANT ,wirklich‘ hundert Taler hat, und GOTT auch ,wirklich‘ existiert, <span style="color:#00B000">(wie ANSELM und gläubige Menschen glauben)</span>, dann gibt es GOTT und die Taler eben ,wirklich‘. Aber damit ist man nicht schlauer geworden. Seit KANT läuft die ganze Diskussion um GOTT immer nur als Diskussion um den <span style="color:#00B000">(von KANT)</span> so genannten <span style="color:#FF6000">„ontologischen, <span style="color:#00B000">[ kosmologischen, teleologischen etc. ]</span> Gottesbeweis“</span> —, obwohl es niemals einen Beweis für die Existenz GOTTES geben kann und niemals geben wird. <span style="color:#00B000">(Das haben Wissenschaftler jeder Richtung und Philosophen aller Weltanschauungen uns immer wieder nachdrücklich versucht zu sagen, weil keiner dieser sog. Beweise für die Existenz eines GOTTES stringent ist.)</span> Beweisen kann man die Existenz von Naturgesetzen. Die sind unveränderlich und fix, immer und überall. Jeder vernünftige Mensch muss sie akzeptieren. Man kann darüber nicht diskutieren und sie dann mit Mehrheitenbeschlüsse verändern. Wenn GOTT ebenso bewiesen werden könnte, dann wäre jeder vernünftige Mensch gezwungen, die Existenz GOTTES wie ein Naturgesetz anzunehmen. Gott ist aber kein Naturgesetz. GOTT ist <span style="color:#FF6000">„Person“</span>, — für Christgläubige ''':''' <span style="color:#FF6000">„ein GOTT in drei Personen“</span>. Und GOTT ist <span style="color:#FF6000">„Geist“</span>. Das besagt, dass GOTT nicht mit materiellen Dingen aus unserer Welt verglichen werden darf; <span style="color:#00B000">(was sowohl THOMAS von Aquin als auch Immanuel KANT doch getan haben)</span>. Und ganz wesentlich ''':''' der Zugang zu GOTT läuft nicht über den Beweis, sondern immer nur über den Glauben. Wer an GOTT glauben will, dem antwortet GOTT auf seine Weise — nämlich <span style="color:#FF6000">„geistig“</span> bzw. <span style="color:#FF6000">„geistlich“</span>. Wer nicht an GOTT glauben will, dessen Entscheidung respektiert GOTT, und drängt sich nicht auf. Glaube ist immer eine freie Entscheidung des Menschen für GOTT. Niemand darf gezwungen werden. Wenn es einen Beweis für GOTT gäbe, wäre jeder vernünftige Mensch gezwungen, an GOTT zu glauben. Und das widerspricht ganz entschieden der Freiheit des Glaubens. Daher gibt es nie und nimmermehr einen Existenzbeweis für GOTT '''!!!''' ... Daher darf man das Kalkül des Logiker GÖDEL, <span style="color:#00B000">(und damit auch das Theorem ANSELMS)</span>, nicht als einen Existenzbeweis für GOTT lesen. Sowohl ANSELM als auch GÖDEL setzen die Existenz GOTTES notwendig als gegeben schon voraus. Das GÖDEL-System, und auch das Theorem ANSELMS, sind bloß die logische Bestätigung der Widerspruchsfreiheit der Glaubensüberzeugung eines Menschen, der sich schon entschieden hat, an GOTT zu glauben; und nicht der Grund für seine Entscheidung. Alle sogenannten ,Gottesbeweise‘, sind in Wirklichkeit nichts anderes, als nachträgliche Evaluierungen eines GOTT-Glaubens, bzw. ,Wege‘, <span style="color:#00B000">(bei THOMAS von Aquin)</span>, die aufzeigen, dass der GOTT-Glaube widerspruchsfrei, sinnvoll, und <span style="color:#FF6000">»''mit allen bekannten Tatsachen durchaus vereinbar ist''«</span>, wie GÖDEL sagt. GOTT hat es nicht nötig, ,bewiesen‘ <span style="color:#00B000">( ╞ )</span> zu werden. ===<div class="center"><span style="color:#660066">Einleitung</span></div>=== Eine Studie zum GÖDEL-Kalkül. Der Logiker Kurt GÖDEL <span style="color:#00B000">(1906-1978)</span> hat mit diesem Kalkül eine moderne Rekonstruktion des, <span style="color:#00B000">(von KANT)</span>, so genannten ‚ontologischen Gottesbeweises‘ nach ANSELM von Canterbury auf modal-logischer Basis vorgelegt. Damit hat er die <span style="color:#FF6000">„Rede von GOTT“</span> auf eine ‚vernünftige Basis‘ gestellt, d.h. sie soll für jeden Menschen nachvollziehbar sein, <span style="color:#FF6000">»''rein verstandesmäßig, (ohne sich auf den Glauben an irgendeine Religion zu stützen)''«</span>, wie er sagt. GÖDEL ,nimmt‘ als Logiker, angeregt durch den Philosophen und Mathematiker Gottfried Wilhelm LEIBNIZ, rein theoretisch, fürs Erste, einmal ‚an‘, <span style="color:#00B000">(als Prämisse, d.i. der Term :01: im 3. Beweisgang zum Theorem ANSELMS im Anhang)</span>, dass es GOTT gibt ''':''' d.i. ein sog. ,methodologischer GOTT-Glaube‘, und untersucht die logischen Konsequenzen. Dabei zeigt sich, beim genaueren Hinsehen, dass der ‚Nicht-GOTT-Glaube‘, der ‚dezidierte‘ Atheismus, <span style="color:#00B000">(im Beweisgang ,Widerlegung‘ im Anhang)</span>, überraschender Weise, zu einem Widerspruch führt, und damit logisch ,falsch‘ ist. Jedoch, GÖDEL kann und will mit seinem Kalkül keinen ,GOTT-Glauben‘ ,erzeugen‘, d.h. das GÖDEL-Kalkül ist kein <span style="color:#FF6000">„Existenz-Beweis"</span> für den GOTT der Bibel, sondern, es setzt die Existenz eines GOTTES, einfach als gegeben, schon voraus. GÖDEL beweist dann mit seinem System, dass der traditionelle abendländische ,GOTT-Glaube‘, <span style="color:#FF6000">»''die theologische Weltanschauung''«</span>, <span style="color:#00B000">(d.i. die Kalkül-Prämisse, und das, daraus ,regulär‘ (├ ) abgeleitete, Theorem ANSELMS)</span>, mit den Maßstäben der modernen Logik <span style="color:#FF6000">»''durchaus vereinbar''«</span> <span style="color:#00B000">(d.h. logisch ,richtig‘)</span> ist, im Gegensatz zum ,Nicht-GOTT-Glauben‘, der davon ausgeht, dass es keinen GOTT gibt. GÖDEL beweist mit seinem System ''':''' der traditionelle GOTT-Glaube ist, — mit mathematisch-logischer Evidenz —, widerspruchfrei und wahr. <span style="color:#00B000">(Der Beweis aus dem Widerspruch des Gegenteils ist ein ,indirekter Beweis‘ und kein ,Zirkelbeweis‘ '''!''' )</span> GÖDEL blieb bis zu seinem Tod ohne ein dezidiertes religiöses Bekenntnis. <span style="color:#00B000">(Das Leben ist nicht immer ,logisch‘.)</span> Entsprechend der <span style="color:#FF6000">»''theologischen Weltanschauung''«</span> ist GOTT der Größte, <span style="color:#FF6000">»''über dem nichts Größeres mehr gedacht werden kann''«</span>, <span style="color:#00B000">(ANSELM)</span>; bzw. <span style="color:#FF6000">»''GOTT ist ein Wesen von äußerster Größe und Vollkommenheit, das alle Grade derselben in sich schließt''«</span>, <span style="color:#00B000">(LEIBNIZ)</span>, und der für uns immer schon ,da‘ ist. Das ist die methodologische Prämisse des GÖDEL-Kalküls. Davon ausgehend, zeigen seine Axiome und Definitionen, dass es zu einem Widerspruch führt, falls man ,annimmt‘, es sei nicht möglich, dass es <span style="color:#FF6000">„GOTT“</span>, <span style="color:#4C58FF">— ‚'''G'''‘ —</span> gibt. Aus dem Widerspruch des Gegenteils wird von GÖDEL, mit dem <span style="color:#4C58FF">[ Modus tollendo tollens ] :: [ A → B, ¬B ├ ¬A ]</span>, dann ,bewiesen‘ <span style="color:#00B000">( ╞ )</span> ''':''' es ist doch möglich, dass es <span style="color:#FF6000">„GOTT“</span> wirklich gibt. Somit ist der Glaube an <span style="color:#FF6000">„GOTT“</span>, — weil widerspruchsfrei —, mit den Worten GÖDELS ''':''' <span style="color:#FF6000">»''mit allen bekannten Tatsachen durchaus vereinbar''«</span>. Immanuel KANT <span style="color:#00B000">(1724-1804)</span> scheint diesen Fall vorausgesehen zu haben, dass versucht werden könnte, die ,Möglichkeit‘ GOTTES aus einem Widerspruch zu ,beweisen‘ ''':''' ::<span style="color:#FF6000">»</span> <span style="color:#00B000">[ Angenommen, es gibt ]</span> ''doch einen und zwar nur diesen '''Einen''' Begriff'' <span style="color:#00B000">[ ,GOTT‘, so dass ]</span> ''das Nichtsein oder das Aufheben seines Gegenstandes'' <span style="color:#00B000">[ GOTT ]</span>, ''in ,sich selbst‘ widersprechend sei; und dieses ist der Begriff des allerrealsten Wesens. Es hat, sagt ihr, alle Realität'', <span style="color:#00B000">[ bzw. alle Vollkommenheit ]</span>, ''und ihr seid berechtigt, ein solches Wesen als ,möglich‘ anzunehmen'' ... <span style="color:#00B000">[ denn das GÖDEL-Kalkül ,beweist‘ ( ╞ ) in der ,Widerlegung‘ im Anhang, wie auch im 1. Beweisgang, aus einem Widerspruch, dass die Existenz GOTTES definitiv logisch ,möglich‘ ist. ]</span> … ''obgleich der sich nicht widersprechende'', <span style="color:#00B000">[ ,mögliche‘ ]</span>, ''Begriff'', <span style="color:#00B000">[ ,GOTT‘ ]</span>, ''noch lange nicht die'' <span style="color:#00B000">[ reale ]</span> ''Möglichkeit des Gegenstandes'', <span style="color:#00B000">[ GOTT ]</span>, ''beweiset. … Das ist eine Warnung, von der Möglichkeit der Begriffe (logische)'', <span style="color:#4C58FF">— '''◇''' —</span>, ''nicht sofort auf die Möglichkeit der Dinge (reale)'', <span style="color:#4C58FF">— '''□''' —</span>, ''zu schließen''<ref>vgl. ‚''<span style="font-family: Times;"><big>Kritik der reinen Vernunft</big></span>''‘, Seite 399; https://www.korpora.org/kant/aa03/399.html</ref>. <span style="color:#00B000">[ Trotz dieser Warnung, wird dieser Schluss dennoch im Theorem ANSELMS vollzogen, bzw. mit GÖDEL im 3. Beweisgang ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx→□∃xGx'''‘ —</span> '''!''' ]</span>. <span style="color:#FF6000">«</span> Warum das <span style="color:#FF6000">»''mit allen bekannten Tatsachen durchaus vereinbar''«</span> ist, und inwieweit KANT sich irrt, wird in dieser Studie gezeigt. ===<div class="center"><span style="color:#660066">Der Schlüsselbegriff im Kalkül</span></div>=== Der ‚Schlüsselbegriff‘ in diesem Kalkül ist <span style="color:#FF6000">„positive Eigenschaft“</span>, bzw. <span style="color:#FF6000">„Perfektion“, „Vollkommenheit“</span> ''':''' <span style="color:#4C58FF">— ‚'''P'''‘ —</span>. Für diesen wichtigen Begriff gibt es aber im Kalkül selbst keine explizite Definition, sondern er wird nur durch seine Verwendung innerhalb des Kalküls indirekt ‚definiert‘. <span style="color:#00B000">(Das heißt ''':''' <span style="color:#4C58FF"> — ‚'''P'''‘ — </span> bezeichnet ein System von ,Eigenschaften‘, die ,positiv‘, bzw. ,vollkommen‘ | ,perfekt‘ | genannt werden, von denen im Kalkül wohl beweisbar ist, dass sie sich gegenseitig ,nicht widersprechen‘, weil sie im System als solche ,gleichwertig‘, bzw. gleich ,wahr‘ sind, jedoch ohne sie erschöpfend aufzählen zu können, oder auch nur sagen zu können, was sie alle im einzelnen bedeuten, außer, dass sie kompatibel sind.)</span> Mit der Wahl dieses Schlüsselbegriffes hat GÖDEL eine wesentliche Vorentscheidung für die Ergebnisse des Kalküls getroffen '''!''' In seinen Notizen zum ‚ontologischen Beweis‘ vom 10. Februar 1970 gibt GÖDEL, — für die nachträgliche Interpretation dieses Begriffes <span style="color:#00B000">(und auch für das Kalkül selbst)</span> —, die richtungsweisende Erklärung ''':''' ::<span style="color:#FF6000">»''Positiv bedeutet positiv im moralisch ästhetischen Sinne...''«</span> ::Und er fügt in Klammer hinzu ''':''' ::<span style="color:#FF6000">»...''(unabhängig von der zufälligen Struktur der Welt). Nur dann sind die Axiome wahr''.«</span><ref>GÖDEL, Kurt, ''<span style="font-family: Times;"><big>‚Ontological proof‘</big></span>'' in ''<span style="font-family: Times;"><big>‚Collected Works‘</big></span>'', vol. III, ed. S.FEFERMAN et al., Oxford (U.P.), 1995; 403–404.</ref> GÖDEL-Axiom-1 ''':''' <span style="color:#4C58FF">— ‚('''PX <small><math>{ \color{Blue} \dot\lor}</math></small> P¬X''')‘ ↔<span style="color:#00B000"> ‚('''¬PX ↔ P¬X''')‘</span> — </span> ''':''' <span style="color:#FF6000"> »''Entweder die Eigenschaft'' <span style="color:#4C58FF">‚'''X'''‘</span> ''oder ihre Negation'' <span style="color:#4C58FF">‚'''¬X'''‘</span> ''ist positiv''«</span>. Hier ist der Hauptkritikpunkt, dass es Eigenschaften gibt, die ,an sich‘ weder positiv noch negativ sind. Beispiele wären ''':''' ‚rothaarig‘ oder ‚schwerwiegend‘; solche Eigenschaften können aber ,für mich‘ entweder positiv oder negativ sein, abhängig von meiner Betrachtungsweise und subjektiven Vorlieben. Diese Eigenschaften, wie ‚rothaarig‘ an sich, oder meine positiv-negativen ‚Betrachtungsweisen‘, sind jedoch der <span style="color:#FF6000">»''zufälligen Struktur der Welt''«</span> entnommen und treffen nicht den <span style="color:#FF6000">»''moralisch ästhetischen Sinn''«</span> von <span style="color:#FF6000">»''positiv''«</span> bei GÖDEL. Er orientierte sich an LEIBNIZ, welcher im Bezug zum ‚ontologischen Beweis‘ definiert ''':''' ::<span style="color:#FF6000">»''Vollkommenheit'' <span style="color:#00B000">[ GOTTES ]</span> ''nenne ich jede einfache Eigenschaft, die sowohl positiv als auch absolut ist, oder dasjenige, was sie ausdrückt, ohne jede Begrenzung ausdrückt''.«</span><ref>Zitiert nach Thomas GAWLICK, in ''<span style="font-family: Times;"><big>‚Was sind und was sollen mathematische Gottesbeweise ?‘</big></span>'', Predigt vom 8.1.2012 in der Kreuzkirche zu Hannover. https://web.archive.org/web/20130524164359/http://www.idmp.uni-hannover.de/fileadmin/institut/IDMP-Studium-Mathematik/downloads/Gawlick/Predigt_Gawlick_Gottesbeweise.pdf</ref> Die Seins-Eigentümlichkeiten <span style="color:#00B000">(Daseinsmodi, Perfektionen)</span> wie ‚wahr‘, ‚gut‘, ‚edel‘ usw. entsprechen dem <span style="color:#FF6000">»''moralisch ästhetischen Sinn''«</span> von <span style="color:#FF6000">»''positiv''«</span> bei GÖDEL. Das sind Beispiele für ‚absolut‘ positive Begriffe aus der Lehre der Seinsanalogie ''':''' <span style="font-family: Times;"><big>‚verissimum‘, ‚optimum‘, ‚nobilissimum‘</big></span>, usw., die, an sich, <span style="color:#FF6000">»''ohne jede Begrenzung gelten''«</span>; zu finden in der <span style="font-family: Times;"><big>‚Via quarta‘</big></span>, bei THOMAS von Aquin, über die <span style="color:#FF6000">„analoge"</span> Abstufung im ‚Sein‘ der Dinge. Diese <span style="color:#FF6000">„analoge"</span> ‚Abstufung‘ ist dann die faktische Begrenztheit <span style="color:#00B000">(d.h. Unvollkommenheit)</span> im <span style="color:#FF6000">»''zufälligen''«</span> ‚Sein‘ der Dinge —. Die <span style="color:#FF6000">„positiven Eigenschaften“</span> GÖDELS ''':''' <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, wie Wahrheit, Einheit, Gutheit, <span style="color:#00B000">(von ,Güte‘)</span>, Schönheit, Adel, <span style="color:#00B000">(von ,edel‘)</span>, Gleichheit, Andersheit, Wirklichkeit, ,Sein‘ im Sinne von Etwas-sein, etc. werden <span style="color:#FF6000">„Perfektionen“</span>, oder auch <span style="color:#FF6000">„Transzendentalia“</span> genannt, <span style="color:#00B000">(von lateinisch ''':''' <span style="font-family: Times;"><big>transcendere</big></span>, <span style="color:#FF6000">„übersteigen“</span>)</span>. In der mittelalterlichen Scholastik sind Transzendentalien die Grundbegriffe, die allem Seienden als <span style="color:#FF6000">„Modus“</span>, <span style="color:#00B000">(d.h. ,Eigentümlichkeit‘, als allgemeine Seinsweisen)</span>, zukommen. Wegen ihrer Allgemeinheit ,übersteigen‘ sie die besonderen Seinsweisen, welche ARISTOTELES die ,Kategorien‘ nannte. Ontologisch betrachtet, werden die Transzendentalien als das allem Seienden Gemeinsame aufgefasst, da sie von allem ausgesagt werden können. Von der KI werden sie, nicht unpassend, als <span style="color:#FF6000">„ultimative Eigenschaften des Seins“</span> bezeichnet, die <span style="color:#FF6000">„jenseits der materiellen Welt existieren“</span>, <span style="color:#00B000">(da sie ,ultimativ‘ nur von GOTT, als den unbegrenzt Vollkommenen, ausgesagt werden können, die jedoch, auch von allen übrigen Seienden, wegen deren seinsmäßigen Unvollkommenheit und Begrenztheit, abgestuft, d.h. <span style="color:#FF6000">„analog"</span>, ausgesagt werden)</span>. Diese Transzendentalien sind ,inakzident‘, das heißt, sie entstehen nicht aus anderen Begriffen, sondern sind erste, unteilbare Bestimmungen <span style="color:#4C58FF">— ‚'''X'''‘ —</span> des Denkens und des Seins, die allen Seienden ''':''' <span style="color:#4C58FF">— ‚'''□∀xXx'''‘ —</span>, unabhängig von ihren speziellen Eigenschaften, als ,relative‘ Vollkommenheiten, <span style="color:#00B000">(bzw. Unvollkommenheiten)</span>, mit ,modaler‘ Notwendigkeit, <span style="color:#4C58FF">— ‚□‘ —</span>, <span style="color:#FF6000">„analogisch"</span> zukommen, d.h. sie sind in allen Seienden, seinsmäßig abgestuft und abgegrenzt, ,relativ‘ zum unbegrenzt Unendlichen ihrer selbst, und <span style="color:#FF6000">»''dasjenige, was sie ausdrücken, drücken sie ohne jede Begrenzung aus''«</span>, <span style="color:#00B000">(LEIBNIZ)</span>; und damit stehen sie ontologisch in einer <span style="color:#FF6000">„analogen"</span> ,Beziehung‘ zu GOTT, dem absolut Vollkommenen und unbegrenzt Unendlichen. In der Erkenntnisordnung wirken sie als die ersten Begriffe des menschlichen Verstehens, die eine Basis für alle weiteren wissenschaftlichen Erkenntnisse bilden. In der Seinsordnung sind die Transzendentalien ontologisch eins, gleichwertig, <span style="color:#00B000">(,mathematisch äquivalent‘)</span>, und daher konvertierbar, d.h. austauschbar, <span style="color:#00B000">(vgl. z. B. den scholastischen ,Merksatz‘ ''':''' <span style="font-family: Times;"><big>,ens et verum convertuntur‘</big></span>)</span>. Damit sind sie auch von einander abhängig, was GÖDEL sowohl im Axiom-2 ''':''' <span style="color:#4C58FF">— ‚'''PX ∧ □∀x(Xx→Yx)→PY'''‘ —</span>, für positive Eigenschaften, als auch in der Definition-2 ''':''' <span style="color:#4C58FF">— ‚'''X'''<sub>ess</sub>'''x ↔ Xx ∧ ∀Y(Yx→ □∀y(Xy→Yy))'''‘ —</span>, für die Wesenseigenschaften, syntaktisch formalisiert hat mit dem Term-Element ''':''' <span style="color:#4C58FF">— ‚'''□∀x(Xx→Yx)'''‘ —</span>, weil sie sich gegenseitig, — mit ,modaler‘ Notwendigkeit —, gleichwertig ,implizieren‘, d.h. einschließen, <span style="color:#00B000">(im Axiom-2 mit der Individuum-Variable <span style="color:#4C58FF"> — ‚'''x'''‘ —</span>, und in der Definition-2 mit der Individuum-Variable <span style="color:#4C58FF"> — ‚'''y'''‘ — </span>)</span>. Man kann die Transzendentalia, <span style="color:#00B000">(wie GÖDEL)</span>, auch ,Wesenseigenschaften‘ ''':''' <span style="color:#4C58FF"> — ‚'''X'''<sub>ess</sub>‘ —</span>, nennen, weil sie allem Seienden <span style="color:#FF6000">„wesentlich analog"</span> zukommen. Weil Transzendentalien miteinander austauschbar sind, sind sie auch widerspruchsfrei, was GÖDEL mit Axiom-1 syntaktisch darstellt. Die Gültigkeit und Wahrheit, d.h. die mathematisch-logische Evidenz von Axiom-1 und Axiom-2, beruht auf der ontologischen Allgemeinheit und Gültigkeit der Transzendentalia, die GÖDEL mit Definition-2, in sein Kalkül explizit eingeführt und als Wesenseigenschaften ,bestimmt‘ hat. <span style="color:#00B000">(Definitionen werden formal-syntaktisch durch das Äquivalenzzeichen <span style="color:#4C58FF">,'''↔'''‘</span> angezeigt, gelesen als <span style="color:#FF6000">„...ist genau dann ... wenn...“</span>)</span> Die GÖDEL-Axiome und -Definitionen werden jedoch sofort <span style="color:#FF6000">„modal falsch"</span>, wenn ihre Eigenschafts-Variablen, <span style="color:#4C58FF">— ‚'''X'''‘ —</span> und <span style="color:#4C58FF">— ‚'''Y'''‘ —</span>, mit ,Nicht-Transzendentalia‘, wie z. B. ,rot‘ oder ,schwer‘, belegt werden. <span style="color:#00B000">(Dieser ,Sachverhalt‘ wird von Kritikern des GÖDEL-Systems, — zu vorschnell —, verwendet, um ihre Behauptungen zu ,belegen‘, das GÖDEL-Kalkül und seine Konsequenzen seien ,falsch‘.)</span> Zum Überblick ''':''' <span style="color:#FF6000">„Transzendentalia“</span> sind universale, alles Seiende charakterisierende Begriffe, die über kategoriale Einteilungen hinausgehen, und sowohl in der klassischen Scholastik, als auch in der modernen Philosophie, <span style="color:#00B000">(KANT, Uwe MEIXNER<ref>vgl. die ,transzendentalen‘ Bedingungen möglicher Erkenntnisse bei KANT; und auch in der ,Axiomatischen Ontologie‘ bei Uwe MEIXNER</ref>)</span>, als Grundlage der Metaphysik und Erkenntnistheorie dienen. Sie sind die <span style="color:#FF6000">„ersten Begriffe des Seins“</span>, die jedem Ding als ,relative‘ Vollkommenheiten, <span style="color:#00B000">(Perfektionen)</span>, inhärent sind, <span style="color:#FF6000">„analogisch"</span> abgestuft, auf einen ,ultimativ‘-unbegrenzten Bezugspunkt ausgerichtet, und die sich im Denken, <span style="color:#00B000">(für uns als wahr)</span>, und in der moralischen Wertung, <span style="color:#00B000">(für uns als gut und edel)</span>, manifestieren, relativ zum ,ultimativ‘-unbegrenzten Bezugspunkt ihrer selbst. Die faktische, zusätzliche Unvollkommenheit, die sich generell in der notwendigen, und unausweichlichen Vergänglichkeit aller Dinge zeigt, ist einem ontologischen Defekt ,geschuldet‘, der stark zeitabhängig ist, d.h. der einen Anfang und ein Ende hat. Das GÖDEL-Axiom-5 ''':''' <span style="color:#4C58FF"> — ‚'''PE'''<sub>not</sub>‘ —</span> ''':''' <span style="color:#FF6000">»''Notwendige Existenz ist eine positive Eigenschaft''«</span>, ist immer falsch, wenn es auf etwas aus der <span style="color:#FF6000">»''zufälligen Struktur der Welt''«</span> angewendet wird, wie z. B. auf einen <span style="color:#FF6000">„Tsunami“</span>, dessen ‚Existenz‘ für uns nicht ‚positiv‘ ist. KANT hat schon festgestellt ''':''' <span style="color:#FF6000">„Existenz ist keine Eigenschaft“</span>. Das gilt für alles, was <span style="color:#FF6000">„existiert“</span>. Das Axiom-5 hat nur dann seine Gültigkeit, ist nur dann ,wahr‘, wenn <span style="color:#FF6000">„Dasein“</span> <span style="color:#00B000">(Existenz)</span> und <span style="color:#FF6000">„Wesenseigenschaften“</span> <span style="color:#00B000">(Essenz)</span> in eins zusammenfallen. Bei allen Dingen, die ‚da‘ sind, ist ihr ‚Da-Sein‘ ontologisch immer verschieden zu dem ‚was‘ sie sind ''':''' zu ihrem ,Was-Sein‘. In der philosophischen Tradition, seit ARISTOTELES, wird die ontologische Identität, d.i. die Koinzidenz, der innere Zusammenhang von ‚Sein‘ und ‚Wesen‘ allein nur dem <span style="color:#FF6000">„selbst ‚unbewegten‘ Erstbewegenden“</span> zugeschrieben, dem <span style="color:#FF6000">„<span style="font-family: Times;"><big>πρῶτον κινοῦν ἀκίνητον</big></span>“</span><span style="color:#00B000"> | ,prôton kinoûn akinêton‘</span>, von dem ARISTOTELES etwas später sagt ''':''' <span style="color:#FF6000">»''denn dies ist der Gott''«</span> und dann hinzufügt ''':''' <span style="color:#FF6000">»''so sagen wir ja''«</span>; d.h. das ist eine Interpretation aus dem Glaubenskontext des ARISTOTELES. Er war ein Gott-gläubiger Grieche. Wer an GOTT glaubt, kann das nachvollziehen. GÖDEL musste dieses Axiom-5 postulieren, sonst wäre sein Kalkül nicht aufgegangen, ohne dass er deswegen schon an GOTT glauben müsste. Er hat für sein Kalkül das ontologische Theorem von der Identität von ‚Sein‘ und ‚Wesen‘ im ‚unbewegten Erstbeweger‘ des ARISTOTELES benutzt, ohne diese Herkunft explizit referenziert zu haben. <span style="color:#00B000">(Gilt auch für Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span> ''':''' <span style="color:#FF6000">»''Göttlichkeit, das GOTT-Sein, das ‚Dasein‘ GOTTES, ist eine positive Wesenseigenschaft, eine Perfektion; d.h. ist das ‚Wesen‘ GOTTES ''':''' GOTT ist perfekt''«</span>)</span>. Die ontologische Identität von Sein und Wesen, Existenz und Essenz, wie auch die Koinzidenz von Möglichkeit und Wirklichkeit, von Ursache und Wirkung, sowie auch die ontologische Einheit von <span style="color:#00B000">(Erkenntnis-)</span>Subjekt und <span style="color:#00B000">(Erkenntnis-)</span>Objekt im <span style="color:#FF6000">»''Erkennen seiner Erkenntnis''<span style="color:#00B000">[-Tätigkeit ]</span>«<span style="color:#00B000"> | </span>„<span style="font-family: Times;"><big>νοήσεως νόησις</big></span>“</span><span style="color:#00B000"> | ,noêseôs noêsis‘ <small>(<span style="font-family: Times;"><big>,''Metaphysik''‘</big></span> XII 9, 1074b34)</small></span>, und der innere Zusammenhang der <span style="color:#FF6000">„ultimativen Transzendentalia“</span>, gilt nur in der <span style="color:#FF6000">„unverursachten Letztursache"</span>, auf die ARISTOTELES bei seiner Prinzipienforschung gestoßen ist. Es gibt verschiedene Versuche, die GÖDEL-Axiome durch sog. ,Modelle‘, relativ zu einfacheren ,Welten‘, zu verifizieren, um damit ihre relative Konsistenz nachzuweisen. Für GÖDEL aber <span style="color:#FF6000">»''sind die Axiome nur dann'' <span style="color:#00B000">[ in unserer ,realen‘ Welt ]</span> ''wahr'' <span style="color:#00B000">[ und annehmbar ]</span>«</span>, wenn sie <span style="color:#FF6000">»''unabhängig von der zufälligen Struktur der Welt'' <span style="color:#00B000">[ d.h. jeder auch nur ,möglichen‘ Welt ]</span> ''sind''«</span>. Diese Bedingung verweist jede Verifikation und jede Interpretation der Axiome auf das ,Nicht-Zufällige‘, das ,Notwendige‘, ,Absolute‘, in dem die Axiome und Definitionen des GÖDEL-Kalküls erst dadurch ihren Sinn und ihre Bedeutung bekommen, wenn sie vom ,Absoluten‘ und ,Unendlichen‘ her erklärt und verstanden werden. Damit insistiert GÖDEL auf eine genuin <span style="color:#4C58FF">,theologische‘</span> Interpretation seines Kalküls, mit der <span style="color:#4C58FF">„Theologie“</span> zum Begriff GOTT, dem unbegrenzt Unendlichen, als Verifikationskriterium. Das entspricht auch der ,methodologischen‘ Prämisse seines Kalküls. Die wichtigsten Axiome und Definitionen im GÖDEL-Kalkül sind jedoch bloße ,Annahmen‘, deren Evidenz, sowohl die ,mathematische‘ als auch die <span style="color:#4C58FF">,theologische‘</span>, erst evaluiert, d.h. ,bewiesen‘ <span style="color:#00B000">( ╞ )</span> werden muss. Das bedeutet ''':''' die logische Verifikation der Axiome und Definitionen von GOTT und seinen Vollkommenheiten kann nur Kalkül-intern durch den Aufweis ihrer Widerspruchsfreiheit erfolgen, d.i. <span style="color:#FF6000">»''unabhängig von der zufälligen Struktur der Welt''«</span>. Logisch evaluierte und verifizierte Axiome und Definitionen sind die ,modal‘ notwendigen, d.h. die ,transzendentalen‘ Voraussetzungen für die Ergebnisse eines Kalküls, damit seine Theoreme und Korollare in unserer ,realen‘ Welt als logisch ,wahr‘ und damit für uns auch als ,annehmbar‘ gelten können, während die Prämissen eines Kalküls, <span style="color:#00B000">(die Argument Einführung, <span style="color:#4C58FF">— '''AE:''' —</span> )</span>, nicht notwendige, und somit ,modal‘ frei gewählte ,Annahmen‘ sind. Jedoch aus diesen ,modal‘ frei gewählten, ,möglichen‘ <span style="color:#00B000">( <span style="color:#4C58FF">'''◇'''</span> )</span> Prämissen folgen mit Hilfe der ,bewiesenen‘ <span style="color:#00B000">( ╞ )</span> Axiome und Definitionen die Ergebnisse mit ,modaler‘ Notwendigkeit <span style="color:#00B000">( <span style="color:#4C58FF">'''□'''</span> )</span>. Die Logik des GÖDEL-Systems ist eine ,Prädikatenlogik‘ zweiter Stufe, in der die Quantoren nicht nur Individuum-Variable, sondern auch Eigenschafts-Variable, <span style="color:#00B000">(als noch ,unbestimmte‘ Prädikate im Allgemeinen)</span>, binden können. Die formale Struktur des GÖDEL-Kalküls besteht aus fünf Axiomen und drei Definitionen, mit deren Hilfe in drei Beweisgängen drei Theoreme und mehrere Korollare aus seiner ,methodologischen‘ Prämisse ,regulär‘ <span style="color:#00B000">(├ )</span> abgeleitet werden können, wobei die beiden ersten Beweisgänge, mit ihren Ergebnissen, den dritten vorbereiten, in dem es dann um das Theorem ANSELMS geht. Die Prämisse des GÖDEL-Kalküls in allen Beweisgängen ist der traditionelle ,GOTT-Glaube‘, in der Formulierung speziell nach LEIBNIZ. Ein Axiom, eine Definition, zwei Theoreme und alle Korollare im GÖDEL-Kalkül sind Aussagen über <span style="color:#FF6000">„GOTT“</span>, <span style="color:#4C58FF">— ‚'''G'''‘ —</span>. Alle fünf Axiome, eine Definition und ein Theorem, <span style="color:#00B000">(und das Korollar aus Axiom-4)</span>, sind auch Aussagen über die Eigenschaft <span style="color:#FF6000">„Vollkommenheit“, „Perfektion“</span>, <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, die in der <span style="color:#FF6000">»''theologischen Weltanschauung''«</span> als die Wesenseigenschaft GOTTES gilt ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, <span style="color:#FF6000">»''GOTT ist vollkommen''«</span> bzw. <span style="color:#FF6000">»''GOTT ist das Vollkommenste der Wesen''«</span>, <span style="color:#00B000">(DESCARTES)</span>. Zwei Definitionen sind Aussagen über die allgemeinen Wesenseigenschaften aller Seienden, <span style="color:#4C58FF">— ‚'''X'''<sub>ess</sub>‘ —</span>, die Transzendentalien, die, als notwendige Existenz, <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>‘ —</span>, auch GOTT zugeordnet werden, mit der Besonderheit bei GOTT, dass sowohl alle Eigenschaften, als auch alle anderen Zuordnungen, wie Sein und Wesen, wie Ursache und Wirkung, usw., im Unendlichen, GOTT, <span style="color:#FF6000">„koinzident“</span> sind, d.h. in GOTT paarweise perspektivisch in ,eins‘ zusammenfallen, und die auch, als Transzendentalia, konvertierbar, d.h. austauschbar sind. Diese Sachverhalte machen deutlich, dass eine spezifische ,Verifikation‘ und sachgerechte ,Evaluierung‘ der GÖDEL-Axiomatik nur genuin <span style="color:#4C58FF">,theologisch‘</span> erfolgen kann. Die Evaluierung der <span style="color:#FF6000">»''mathematischen Evidenz''«</span> des GÖDEL-Systems, im Allgemeinen, muss jedoch entsprechend der Maßstäbe einer modalen Prädikatenlogik zweiter Stufe durchgeführt werden. Das GÖDEL-Kalkül unterscheidet <span style="color:#00B000">(in Definition-3 ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x ↔ ∀X(X'''<sub>ess</sub>'''x →□∃yXy)'''‘ —</span>)</span> formal-syntaktisch zwischen der Eigenschaft ,Existenz‘, <span style="color:#4C58FF"> — ‚'''E'''‘ —</span>, die nur GOTT zugeordnet werden kann, und dem Existenz-Operator, <span style="color:#4C58FF">— ‚'''∃'''‘ —</span>, der auch allem Übrigen, das nicht GOTT ist, zugeordnet wird. Es gibt hier auch den formal-syntaktischen Unterschied zwischen der, <span style="color:#00B000">(von mir notierten, jedoch von GÖDEL schon intendierten und angesprochenen)</span>, speziellen ,Notwendigkeit‘, <span style="color:#4C58FF"> — <sub>not</sub> —</span>, die nur der Existenz GOTTES zugeordnet ist, und der modalen ,Notwendigkeit‘, <span style="color:#4C58FF">— ‚'''□'''‘ —</span>, die auf Verschiedenes bezogen werden kann. Diese Unterschiede sind Hinweise, dass GÖDEL in seiner Kalkül-Logik und -Syntax, die Außerordentlichkeit und Eigenständigkeit GOTTES berücksichtigt, der, als Schöpfer der Welt, prinzipiell und absolut <span style="color:#FF6000">»''unabhängig von der zufälligen Struktur der Welt''«</span> ist, die erst durch GOTT auch das ist, was sie ist. ===<div class="center"><span style="color:#660066">Die Genese des Kalküls</span></div>=== Wie kommt GÖDEL zu seinem Kalkül '''?''' Sein Gewährsmann war Gottfried Wilhelm LEIBNIZ, <span style="color:#00B000">(1646-1716)</span>, den er sehr schätzte. Die rekonstruierbare Genese seines Kalküls findet man in LEIBNIZ ''':''' ''<span style="font-family: Times;"><big>‚Neue Abhandlungen über den menschlichen Verstand‘</big></span>'', <span style="color:#00B000">(1704)</span>‚ ''<span style="font-family: Times;"><big>Viertes Buch, Kapitel X ''':''' ‚Von unserer Erkenntnis des Daseins Gottes‘</big></span>'', Seite 475f. Hier der <span style="color:#00B000">[ kommentierte ]</span> Textausschnitt zum sog. ontologischen ‚Gottesbeweis‘''':''' ::<span style="color:#FF6000">»</span>''Folgendes etwa ist der Gang seines'' <span style="color:#00B000">[ d.h. ANSELMS, Erzbischof von Canterbury; 1033-1109, ]</span> ''Beweises ''':''' GOTT ist das Größte'', <span style="color:#00B000">[ ANSELM spricht vom biblischen GOTT des Glaubens, als ''':''' <span style="color:#FF6000">»''den, über dem ,Größeres‘'' | <span style="font-family: Times;"><big>‚maius‘</big></span> | ''nicht mehr gedacht werden kann''«</span> ]</span>, ''oder, wie DESCARTES es ausdrückt ''':''' das Vollkommenste der Wesen oder auch ein Wesen von äußerster Größe und Vollkommenheit'' ''':''' <span style="color:#00B000"> [ GÖDEL ''':''' </span><span style="color:#4C58FF">‚'''P'''‘</span> <span style="color:#00B000">:= ‚Perfektion‘, ‚positive Eigenschaft‘ ]</span>, ''das alle Grade derselben in sich schließt.''<span style="color:#00B000"> [ GÖDEL-Definition-1 ''':''' <span style="color:#4C58FF">— ‚'''Gx↔∀X(PX→Xx)'''‘ —</span> ''':''' <span style="color:#FF6000">»''Das Individuum'' <span style="color:#4C58FF">,'''x'''‘</span> ''ist genau dann GOTT'', <span style="color:#4C58FF">,'''G'''‘</span>, ''wenn'' <span style="color:#4C58FF">,'''x'''‘</span> ''alle Vollkommenheiten'', <span style="color:#4C58FF">,'''P'''‘</span>, ''in sich schließt''«</span>. Definition-1 bildet die traditionelle Vorstellung von GOTT ab. ]</span> ''Dies also ist der Begriff GOTTES.'' <span style="color:#00B000">[ Der Term <span style="color:#4C58FF">— ,'''G'''‘ —</span> steht hier für den biblischen ‚Begriff‘ <span style="color:#FF6000">„GOTT“</span> als ,Individuumname‘ '''!''' ]</span> ''Sehen wir nun, wie aus diesem Begriff das ‚Dasein’ folgt.''<span style="color:#00B000"> [ GÖDEL ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span> ''':''' <span style="color:#FF6000">»''GOTT ist notwendig aus sich ‚da‘''«</span> ''':''' Term :10:, 1. Hauptergebnis im 3. Beweisgang. ]</span> ''Es ist etwas <u>mehr</u>, ‚da‘ zu sein, als nicht ‚da‘ zu sein, oder auch das ‚Dasein‘ fügt der Größe oder der Vollkommenheit'' <span style="color:#00B000">[ GOTTES ]</span> ''einen Grad hinzu, und wie DESCARTES es ausspricht, das ‚Dasein‘ ist selbst eine Vollkommenheit.''<span style="color:#FF6000">«</span> <span style="color:#00B000">(Diesen Ausspruch DESCARTES übernimmt GÖDEL im Axiom-5 ''':''' <span style="color:#4C58FF"> — ‚'''PE'''<sub>not</sub>‘ —</span> ''':''' <span style="color:#FF6000">»''notwendige Existenz''</span> [ alias ‚Dasein GOTTES’ ] <span style="color:#FF6000">''ist eine positive Eigenschaft''</span> [ alias Vollkommenheit ]<span style="color:#FF6000">«</span>. Dem widerspricht KANT ''':''' <span style="color:#FF6000">„Existenz ist keine Eigenschaft“</span>, bzw. <span style="color:#FF6000">»''Sein ist kein reales Prädikat''«</span>. Das Axiom-5 ist daher nur dann ‚wahr‘, wenn ‚Wirklichsein‘ | <span style="color:#FF6000">„<span style="font-family: Times;"><big>ἐνέργεια οὖσα</big></span>“</span> | ‚enérgeia oúsa‘ | d.h. ‚Dasein‘ und ‚Wesen‘ | <span style="color:#FF6000">„<span style="font-family: Times;"><big>οὐσία</big></span>“</span> | ‚ousía‘ | — genauer ''':''' ‚Wesenseigenschaften’ —, ontologisch ,eins‘ sind, d.h. wenn <span style="color:#FF6000">„Existieren“</span> immer schon die <span style="color:#FF6000">„Wesenseigenschaft“</span> GOTTES ist. Was nach ARISTOTELES nur im <span style="color:#FF6000">„unbewegten Erstbeweger“</span> der Fall ist; bzw. mit LEIBNIZ ''':''' <span style="color:#FF6000">»''was das Privilegium der Gottheit allein ist''«</span> '''!''' Aus der ,methodologischen‘ ,Annahme‘ im 2. Beweisgang GÖDELS ''':''' <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span> ''':''' <span style="color:#FF6000">»''das'' <span style="color:#4C58FF">‚'''x'''‘</span> ''steht für den GOTT der Christen''«</span>, und mit Hilfe von Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span> ''':''' <span style="color:#FF6000">»''Göttlichkeit ist eine positive Eigenschaft''«</span>, bzw. <span style="color:#FF6000">»''GOTT ist perfekt''«</span>, mit Axiom-4 ''':''' <span style="color:#4C58FF">— ‚'''PX → □PX'''‘ —</span> ''':''' <span style="color:#FF6000">»''Positive Eigenschaften sind notwendig aus sich, — von Natur aus —, positiv''«</span>, mit Definition-2 ''':''' <span style="color:#4C58FF">— ‚'''X'''<sub>ess</sub>'''x ↔ Xx ∧ ∀Y(Yx→ □∀y(Xy→Yy))'''‘ —</span> ''':''' <span style="color:#FF6000">»''Zum Wesen gehören notwendig auch alle Konsequenzen aus einer Wesenseigenschaft''«</span>, und mit Axiom-1 und der Definition für GOTT, folgt nach einigen logischen Umformungen das GÖDEL-Theorem-2 ''':''' <span style="color:#4C58FF">— ‚'''Gx↔G'''<sub>ess</sub>'''x'''‘ —</span> ''':''' <span style="color:#FF6000">»''Das'' <span style="color:#4C58FF">‚'''x'''‘</span> ''ist genau dann der GOTT der Christen, wenn das Wesen dieses GOTTES sein eigenes Sein ist''«</span>. Dasein und Wesen sind im Unendlichen, GOTT <span style="color:#FF6000">„koinzident“</span> ,eins‘, übereinstimmend mit dem Theorem des ARISTOTELES. Mit diesem, im Kalkül <u>ohne</u> Axiom-5 ,regulär‘ (├ ) abgeleiteten Theorem, widerlegt er KANT für den individuellen Spezialfall <span style="color:#4C58FF">‚'''G'''‘</span> := <span style="color:#FF6000">„GOTT“</span>. Nachprüfbar im Anhang ''':''' im ‚ontologischen‘ Beweis für das Basis-Theorem-2. Somit ist Axiom-5 ,wahr‘, und KANT, der <span style="color:#FF6000">»''eine Abneigung gegen das Gebet hatte''«</span> und auch <span style="color:#FF6000">»''nie zu den sonntäglichen Kirchgängern zählte''«</span><ref>Uwe SCHULTZ ''':''' ‚''<span style="font-family: Times;"><big>Immanuel Kant</big></span>''‘, Rowohlt Monographie 50659, Seite 12</ref>, hat sich hier, im Bezug auf GOTT, geirrt. <span style="color:#4C58FF">„Theologie“</span>, als Wissenschaft von GOTT, war für KANT nie eine ernstzunehmende Option. Die <span style="color:#4C58FF">„Theologie“</span>, als Wissenschaft von GOTT, die natürlich immer auch verbunden sein muss mit der täglichen ,Erfahrung‘ einer Glaubens-Praxis, im Gebet und in den Gottesdienst-Feiern des <span style="color:#4C58FF">„Theologen“</span>, und die daraus entsteht, ist eine ziemlich ,ausgereifte‘ Disziplin. Es haben sich, durch Jahrhunderte hindurch, viele gläubige und auch gescheite Menschen, schon im Judentum, und dann im Christentum, und ebenfalls im Islam, darum bemüht.)</span> :: <span style="color:#FF6000">»</span>''Darum ist dieser Grad von Größe und Vollkommenheit oder auch diese Vollkommenheit, welche im ‚Dasein‘ besteht, in diesem höchsten, durchaus großen, ganz vollkommenen Wesen, denn sonst würde ihm ein Grad fehlen, was gegen seine Definition wäre. Und folglich ist dies höchste Wesen ‚da‘. Die Scholastiker, ohne selbst ihren'' <span style="font-family: Times;"><big>doctor angelicus</big></span> <span style="color:#00B000">[ := THOMAS von Aquin ]</span> ''auszunehmen, haben diesen Beweis verachtet'', <span style="color:#00B000">[ wie später auch Immanuel KANT ]</span>, ''und ihn als einen Paralogismus'' <span style="color:#00B000">[ := Fehlschluss ]</span> ''betrachtet, worin sie sehr unrecht gehabt haben; und DESCARTES, welcher die scholastische Philosophie im Kolleg der Jesuiten zu La Flèche lange genug studiert hatte, hat sehr recht gehabt, ihn wieder zu Ehren zu bringen. Es ist nicht ein Paralogismus, sondern ein unvollständiger Beweis'', <span style="color:#00B000">[ den GÖDEL vervollständigt hat ]</span>, ''der etwas voraussetzt, was man noch hätte beweisen sollen, um ihm mathematische Evidenz zu verleihen — nämlich, dass man dabei stillschweigend voraussetzt, diese Vorstellung des durchaus großen oder durchaus vollkommenen Wesens sei möglich und enthalte keinen Widerspruch'' <span style="color:#00B000">[ '''::''' <span style="color:#4C58FF">— '''◇''' —</span> '''::''' ,möglich‘, ,konsistent‘, ,denkbar‘; GÖDEL beweist im 1. Beweisgang aus Theorem-1 ''':''' <span style="color:#4C58FF">— ‚'''PX→◇∃xXx'''‘ —</span>, <span style="color:#FF6000">»''positive Eigenschaften'', <span style="color:#00B000">[ die allgemeinen Transzendentalien ]</span>, ''sind widerspruchsfrei''«</span>, mit Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, folgt Korollar-1 ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span>, <span style="color:#FF6000">»''GOTT ist widerspruchsfrei möglich''«</span> ]</span>. ''Und es ist schon etwas, dass man durch diese Bemerkung beweist ''':''' gesetzt, dass GOTT'' <span style="color:#00B000">['' <span style="color:#FF6000">»widerspruchsfrei«</span> '']</span> '',möglich‘ ist, so ‚ist‘ er'' <span style="color:#00B000">[ ,notwendig‘ '''::''' <span style="color:#4C58FF">— '''□''' —</span> '''::''' für jede mögliche Welt auch wirklich aus sich ‚da‘ ]</span>, ''was das Privilegium der Gottheit allein ist'' ''':''' <span style="color:#00B000">[ Im 3. Beweisgang, Theorem-3 ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx→□∃xGx'''‘ —</span> ''':''' ‚ANSELMS Prinzip‘ ''':''' <span style="color:#FF6000">»''Weil GOTT widerspruchsfrei ,möglich‘ ist, darum ist auch der Glaube widerspruchsfrei, der annimmt, dass GOTT aus sich ,notwendig‘ da ist''«</span>; mit Korollar-3 ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx ∧ □∀y(Gy→x=y)'''‘ —</span>, <span style="color:#FF6000">»''Es gibt notwendig nur einen einzigen GOTT''«</span>. Damit ist auch der Monotheïsmus bewiesen. ]</span> ''Man hat recht, die Möglichkeit eines jeden Wesens anzunehmen und vor allem die GOTTES, bis ein anderer das Gegenteil beweist''. <span style="color:#00B000">[ Das Gegenteil besagt, dass GOTT ,unmöglich‘ ist. Hier setzt der Möglichkeitsbeweis im GÖDEL-Kalkül an, und beweist, dass diese Aussage zu einem Widerspruch führt. ]</span> ''Somit gibt dieser metaphysische Beweis schon einen moralischen zwingenden Schluss ab, wonach wir dem gegenwärtigen Stande unserer Erkenntnisse zufolge urteilen müssen, dass GOTT ‚da‘ sei, und demgemäß handeln.'' <span style="color:#00B000">[ Aber nicht logisch zwingend '''!''' Denn die Interpretation <span style="color:#4C58FF">— ‚'''G'''‘ —</span> mit dem GOTT der Bibel, als ,methodologische‘ Kalkül-Prämisse, ist nicht zwingend, jedoch ,modal‘ möglich, <span style="color:#4C58FF">— '''◇''' —</span>, und im christlichen Glaubenskontext sinnvoll, was mit einer stimmigen <span style="color:#4C58FF">„theologischen“</span> Interpretation des GÖDEL-Kalküls gezeigt werden kann. Damit wäre dann auch die Frage beantwortet, ob das GÖDEL-System sich plausibel als eine Theorie von GOTT und seinen Eigenschaften interpretieren lässt, bzw. als eine <span style="color:#FF6000">»''axiomatische''«</span> <span style="color:#4C58FF">„Theologie“</span>, wie sie André FUHRMANN apostrophiert. Das <span style="color:#4C58FF">— ‚'''G'''‘ —</span> ist der ,Individuumname‘ für den GOTT der Bibel, — ,GOTT‘ groß geschrieben —, im monotheïstischen, christlichen Glaubenskontext, den auch LEIBNIZ teilt. Dann steht der ,Name‘ auch synonym für das ,existierende‘ Individuum, d.h. für dessen ,Existenz‘. ]</span> ''Es wäre aber doch zu wünschen, dass gescheite Männer'' <span style="color:#00B000">[ sic ! ]</span> ''den Beweis mit der Strenge einer mathematischen Evidenz vollendeten'', <span style="color:#00B000">[ was GÖDEL veranlasst hat, seine Version eines ‚ontologischen Beweises’ zu kreieren, dessen <span style="color:#FF6000">»''mathematische Evidenz''«</span> man heute mit Computerprogrammen<ref>siehe Fußnote 12</ref> schon nachgewiesen hat ]</span> ... <span style="color:#FF6000">«</span>. Für GÖDEL war dieser Text eine intellektuelle Herausforderung, und er hat sie angenommen. Das war für GÖDEL sicher keine Glaubensangelegenheit. GOTT hat es ja auch nicht nötig, ‚bewiesen‘ zu werden. Wer <span style="color:#4C58FF">— ‚'''G'''‘ —</span> z. B. mit dem sog. ‚Urknall‘ gleich setzt, macht die <span style="color:#FF6000">»''zufällige Struktur der Welt''«</span> im ‚Urknall‘, <span style="color:#00B000">(pantheistisch)</span> zu einem ,Gott‘, was GÖDEL dezidiert für sein Kalkül ausgeschlossen haben wollte. Kurt GÖDEL schreibt 1961 in einem Brief, in Anlehnung an den obigen Text ''':''' ::<span style="color:#FF6000">»...''ich glaube, schon heute dürfte es möglich sein, rein verstandesmäßig ''<span style="color:#00B000">[ sic '''!''' ]</span>, ''(ohne sich auf den Glauben an irgendeine Religion zu stützen) einzusehen, dass die theologische Weltanschauung'', <span style="color:#00B000">[ dass es GOTT gibt ]</span>, ''mit allen bekannten Tatsachen'', <span style="color:#00B000">[ z. B. mit den Maßstäben einer modernen Logik ]</span>, ''durchaus vereinbar ist. Das hat schon vor 250 Jahren der berühmte Philosoph und Mathematiker LEIBNIZ versucht''.«</span><ref>Zitiert nach SCHIMANOVICH-GALIDESCU, M.-E. ''':''' ‚''<span style="font-family: Times;"><big>Princeton–Wien 1946–1966. Briefe an die Mutter</big></span>''‘, in ‚''<span style="font-family: Times;"><big>Kurt Gödel – Leben und Werk</big></span>''‘, Hg. B.BULDT et alia, Wien (HÖLDER–PICHLER–TEMSKY), 2001, Band 1</ref> ===<div class="center"><span style="color:#660066">Die Interpretation des Kalküls</span></div>=== Wenn man sich das GÖDEL-Kalkül ansieht, wie es heute formalisiert vorliegt, stellt sich die Frage ''':''' <span style="color:#FF6000">„Lässt sich dieses System plausibel als eine Theorie von GOTT <span style="color:#00B000">(als eine ‚Rede von GOTT’ := <span style="color:#4C58FF">,Theologie’</span>)</span> und seiner Eigenschaften verstehen '''?''' “ — „Ist hier eine genuin <span style="color:#4C58FF">,theologische’</span> Interpretation möglich '''?''' “</span> Seine Herkunft aus der intellektuellen Auseinandersetzung des Logikers GÖDEL mit dem GOTT-gläubigen Philosophen LEIBNIZ und dem christlichen Theologen und Erzbischof ANSELM rechtfertigt diese Frage. Die <span style="color:#FF6000">„mathematische Evidenz“</span> des GÖDEL-Formalismus, <span style="color:#00B000">(im Anhang nachgestellt)</span>, ist allgemein anerkannt, <span style="color:#00B000">(Vorbehalte dagegen gibt es nur bei der Interpretation seiner Syntax, d.h. ob die Axiome und Definitionen, wie GÖDEL sie konzipiert hat, bzw. ob die Theoreme und Korollare, die aus diesen Axiomen ,regulär’ (├ ) abgeleitet werden, auch in unserer realen Welt ,wahr’ und ,annehmbar’ sind)</span>. Die <span style="color:#FF6000">„theologische Evidenz“</span> des GÖDEL-Systems wird durch eine ,Verankerung’ der Axiome und Definitionen in den <span style="color:#4C58FF">,theologisch’</span>-philosophischen Diskurs über GOTT evaluiert, der schon seit zweieinhalbtausend Jahren läuft. In diesen zweieinhalbtausend Jahren hat sich, — gegen ARISTOTELES und die antike Philosophie —, die Erkenntnis durchgesetzt, dass GOTT <span style="color:#FF6000">»''unabhängig''«</span> von der <span style="color:#FF6000">»''zufälligen''«</span> Raum-Zeit-Struktur unserer vergänglichen Welt ist. In meiner Darstellung des GÖDEL-Kalküls folge ich, <span style="color:#00B000">(im Unterschied zum Autographen GÖDELS, vom 10. Feb 1970)</span>, in der Axiom-Formulierung und -Nummerierung, in der Syntax, und in der Beweis-Struktur, der Arbeit von André FUHRMANN ''':''' ''<span style="font-family: Times;"><big>‚Existenz und Notwendigkeit. Kurt Gödels axiomatische Theologie‘</big></span>'' in ''<span style="font-family: Times;"><big>‚Logik in der Philosophie‘</big></span>'' Hg. SCHROEDER-HEISTER, SPOHN und OLSSON, 2005, Synchron, Heidelberg, Seite 349–374. <span style="color:#00B000">(Die tiefer gestellte Notation der spezifischen ,Eigenschaft‘ einer Eigenschaft ist meine Ergänzung zur formalen Syntax, z. B. ''':''' <span style="color:#4C58FF"> — ‚'''G'''<sub>ess</sub>'''x'''‘ — </span>, angeregt durch die indizierende Schreibweise GÖDELS ''':''' <span style="color:#4C58FF">— ,'''G''' Ess. '''x'''’ —</span>.)</span> Die Erkenntnisse zur Straffung und Präzisierung der GÖDEL-Syntax, <span style="color:#00B000">(besonders im Möglichkeitsbeweis)</span>, stammen aus der Arbeit von Günther J. WIRSCHING ''':''' ,''<span style="font-family: Times;"><big>Der Gödelsche Gottesbeweis</big></span>''‘, im Web <ref>https://edoc.ku.de/id/eprint/10243/1/OntBw.pdf</ref>. <span style="color:#00B000">(Auch der Hinweis auf AVICENNA kommt von WIRSCHING.)</span> Die Zitate von THOMAS von Aquin´s Stellungnahme zum Theorem ANSELMS, und von Georg Wilhelm Friedrich HEGEL zur Immanuel KANTS Ablehnung des Theorem ANSELMS, befinden sich in Franz SCHUPP, ,<span style="font-family: Times;"><big>''Geschichte der Philosophie im Überblick''</big></span>‘, Band 2 ‚<span style="font-family: Times;"><big>''Christliche Antike, Mittelalter''</big></span>‘, Hamburg 2003, Seite 168 und Seite 170. Meines Erachtens ist der entscheidende Ansatzpunkt einer <span style="color:#4C58FF">„theologischen“</span> Interpretation das GÖDEL-Axiom-5 ''':''' <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub>‘ —</span>, <span style="color:#FF6000">»''notwendige Existenz ist eine positive Eigenschaft''«</span>. ‚Frei‘ nach KANT ‚formuliere‘ ich ‚kurz‘ ''':''' <span style="color:#FF6000">„Existenz ist keine Eigenschaft“</span>. Hier die Positionen KANTS zum Thema ‚Existenz‘ und ‚Eigenschaften‘ ''':''' ::<span style="color:#FF6000">»</span>''… unbeschadet der wirklichen Existenz äußerer Dinge'', <span style="color:#00B000">[ kann man ]</span> ''von einer Menge ihrer Prädikate'', <span style="color:#00B000">[ d.h. Eigenschaften ],</span> ''sagen'' … ''':''' ''sie gehöreten nicht zu diesen ‚Dingen an sich selbst‘, sondern nur zu ihren Erscheinungen, und hätten außer unserer Vorstellung'' <span style="color:#00B000">[ ihrer, als ,wirklich‘ gedachten Erscheinung, ]</span> ''keine eigene Existenz, … weil ich finde, dass … '''alle Eigenschaften, die die Anschauung eines Körpers ausmachen''', bloß zu seiner Erscheinung gehören; denn die Existenz des Dinges, was erscheint, wird dadurch nicht … aufgehoben, sondern nur gezeigt, dass wir es'', <span style="color:#00B000">[ das Ding ]</span>, ''wie es ‚an sich selbst‘ sei'', <span style="color:#00B000">[ d.h. existiert ]</span>, ''durch Sinne gar nicht erkennen können''.<span style="color:#FF6000">«</span><ref>vgl. ‚''<span style="font-family: Times;"><big>Prolegomena zu einer jeden künftigen Metaphysik, die als Wissenschaft wird auftreten können</big></span>''‘, Seite 289; https://www.korpora.org/kant/aa04/289.html</ref> <span style="color:#00B000"><small>(Hervorhebung durch KANT.)</small> [ Seine Prädikate, d.h. Eigenschaften, jedoch können wir mit unseren Sinnen ,anschauen‘, aber nur in Kombination mit unserer Vorstellung ihrer, als ,wirklich‘ gedachten Erscheinung, vermittelt durch den sog. ,transzendentalen Schematismus‘ unserer Einbildungskraft ''':'''</span> <span style="color:#FF6000">»</span>''Eine verborgene Kunst in den Tiefen der menschlichen Seele''<span style="color:#FF6000">«</span>, <span style="color:#00B000">jedoch auch eines der ,dunkelsten‘ Kapitel in der K.d.r.V., bedingt durch KANTS Konzept von ,Wirklichkeit‘, bzw. ,Sein‘. ]</span> Mit anderen Worten, man kann die ‚Existenz‘, bzw. das ‚Sein‘ der Dinge, <span style="color:#00B000">(das ‚Ding an sich’ bei KANT)</span>, nicht unter dem Mikroskop finden. Die ‚Existenz‘ bzw. das ‚Sein‘ ist keine sinnlich registrierbare ‚Eigenschaft‘ z. B. des rekonstruierten ‚Stadt-Schlosses‘ in Berlin. <span style="color:#00B000">(‚Sein‘ ist kein reales ‚Prädikat‘.)</span> Dafür haben wir andere Fähigkeiten ''':''' Ich kann seine ‚Existenz‘ mit meinem Verstand einsehen, weil auch ich selbst ‚existiere‘. Seine ‚Ansicht‘, wie ‚gefällig‘ es ist, und auch weitere ‚Eigenschaften‘, die mir auffallen, kann ich mit einem Handy-Foto dokumentieren. Diese ‚Eigenschaften‘ sind nicht die Ursache, dass das ‚Berliner Schloss‘ existiert. Wohl aber die Rekonstruktion dieses Schlosses ist die ‚Ursache‘, dass es ,existiert‘, und jetzt so aussieht. Insofern ist ‚Existenz‘ keine ‚Eigenschaft‘, sondern die ‚Existenz‘ des Dinges ist die Voraussetzung, der ‚Grund‘, dass ich die ‚Eigenschaften‘ des Dinges mit meinen Sinnen feststellen kann. In einer Auseinandersetzung mit CARTESIUS schreibt KANT, philosophisch ‚tiefgründig‘ und logisch ‚exakt‘, über dessen <span style="color:#FF6000"><span style="font-family: Times;"><big>„Cogito, ergo sum“</big></span></span> ''':''' ::<span style="color:#FF6000">»</span>''Das ‚Ich denke‘ ist ein empirischer Satz, und hält den Satz ‚Ich existiere‘ in sich. Ich kann aber nicht sagen ''':''' ‚Alles, was denkt, existiert‘; denn da würde die Eigenschaft des Denkens'', <span style="color:#00B000">[ eine essentielle Eigenschaft ]</span>, ''alle Wesen, die sie besitzen, zu notwendigen'' <span style="color:#00B000">[ d.h. notwendig existierenden ]</span> ''Wesen machen''. <span style="color:#00B000">[ Was allein nur von GOTT ausgesagt werden kann; mit AVICENNA, als anerkannter ARISTOTELES-Kommentator ''':''' <span style="color:#FF6000">»''GOTT ist das einzige Sein, bei dem Essenz'' <span style="color:#00B000">[ ‚Wesenseigenschaften‘ ]</span> ''und Existenz'' <span style="color:#00B000">[ ‚Dasein‘ ]</span> ''nicht zu trennen sind und das daher notwendig an sich da ist''«, <span style="color:#00B000">— konform mit GÖDEL ''':'''</span> »''notwendige Existenz ist eine positive'' <span style="color:#00B000">[ essentielle ]</span> ''Eigenschaft''«</span> ].</span> ''Daher kann meine Existenz auch nicht aus dem Satz, ‚Ich denke‘, als'' <span style="color:#00B000">[ logisch ]</span> ''gefolgert angesehen werden, wie CARTESIUS dafür hielt (weil sonst der Obersatz : ‚Alles, was denkt, existiert‘, vorausgehen müsste), sondern ist mit ihm identisch.'' <span style="color:#00B000">[ Eine einfache Schlussfolgerung ''':''' meine ‚Existenz‘ ist auch nicht von meiner ‚Eigenschaft‘ Denken ‚verursacht‘. ,Existenz‘ ist nicht bloß ein ,Gedanke‘ von mir. ]</span><span style="color:#FF6000">«</span> <span style="color:#00B000">(Aus der Anmerkung 41 zu den ‚''<span style="font-family: Times;"><big>Paralogismen der reinen Vernunft</big></span>''‘, in ‚''<span style="font-family: Times;"><big>Kritik der reinen Vernunft</big></span>''‘, Seite 275,<ref>https://korpora.org/kant/aa03/275.html</ref> mit meinem Einschub des AVICENNA-Zitat aus Wikipedia.<ref>{{w|Avicenna#Metaphysik}}</ref>)</span> Mit anderen Worten ''':''' <span style="color:#FF6000">„Die Eigenschaft, dass ich denken kann, ist nicht die Ursache meiner ‚Existenz‘“</span>, sondern, <span style="color:#FF6000">„Die Liebe meiner Eltern und ihre Entscheidung füreinander ist die Ursache meiner ‚Existenz‘. Daher ‚bin’ ich. Und weil ich ein Mensch ‚bin‘, kann ich denken.“</span> Auch mit diesen Anmerkungen ist leicht einsehbar, dass ‚Existenz‘ keine ‚Eigenschaft‘ ist — außer bei GOTT. In GOTT ist ‚Dasein‘ die ‚Wesenseigenschaft‘ GOTTES, d.h. ‚Dasein‘ und ‚Wesen‘ sind in GOTT untrennbar verbunden; sind <span style="color:#FF6000">„koinzident“</span> ‚eins‘. Das ist die Einzigartigkeit im Wesen GOTTES, dass GOTT immer schon ‚da‘ ist. Die Frage nach dem ‚Wesen‘ GOTTES lautet ''':''' <span style="color:#FF6000">„Was bist du ? “</span>/<span style="color:#CC66FF">„Wer bist Du ? “</span> Antwort, Exodus 3,14 ''':''' <span style="color:#CC66FF">»''Ich bin der ‚Ich-Bin-Da‘'' <span style="color:#00B000">[ für euch und für immer ]</span>«.</span> Weil GOTT für uns immer schon ‚da‘ ist, — <span style="color:#CC66FF">„von Ewigkeit zu Ewigkeit“</span> —, hat GOTT es nicht nötig, ‚bewiesen‘ zu werden. <span style="color:#00B000">(In der Mathematik ist ein ‚Satz‘ erst dann ‚wahr‘ und ‚existent‘, wenn er bewiesen ist. Bei GOTT ist es jedoch nicht so ''':''' GOTTES ‚Existenz‘ ist nicht erst dann ‚wahr‘, wenn seine ‚Existenz‘ von uns ‚bewiesen‘ ist. Sein ‚Dasein‘ ist jedem unserer ‚Beweisversuche‘ immer schon voraus. Der Zugang zu GOTT ist nicht der ,Beweis‘, sondern der ,Glaube‘. Wer an GOTT glauben ,will‘, dem antwortet GOTT. Wer nicht an GOTT glauben ,will‘, dessen Entscheidung respektiert GOTT, und drängt sich nicht auf. Die Glaubens-Entscheidung hat jedoch für jeden Menschen eine existenzielle Konsequenz ''':''' <span style="color:#CC66FF">»''Wer glaubt und sich taufen lässt, wird gerettet; wer aber nicht glaubt'', <span style="color:#00B000">[ und diese Entscheidung auch im Augenblick der ,Wahrheit‘, im Tod, in der sog. ,Endentscheidung‘, nicht widerruft ]</span>, ''wird verurteilt werden''«,</span> <small>({{Bibel | Markus Evangelium |16|16|EU}})</small>. Das Urteil lautet ''':''' <span style="color:#CC66FF">»''zweiter Tod ''':''' der Feuersee''«</span>, <small>({{Bibel | Offenbarung |20|14f|EU}})</small>, ohne Berufungsmöglichkeit. <span style="color:#CC66FF">»''Ohne Glauben aber ist es unmöglich, Gott zu gefallen; denn wer zu Gott kommen will, muss glauben, dass er ist und dass er denen, die ihn suchen, ihren Lohn geben wird''«.</span> <small>({{Bibel | Hebräer Brief |11|6|LUT}})</small>)</span> Das GÖDEL-Axiom-5 ist m.E. der entscheidende Ansatzpunkt einer stimmigen <span style="color:#4C58FF">„theologischen“</span> Interpretation der GÖDEL-Axiomatik. ===<div class="center"><span style="color:#660066">Das Kalkül ist kein Existenz-Beweis für GOTT</span></div>=== Die allgemeine <span style="color:#FF6000">»''mathematische Evidenz''«</span> des GÖDEL-Formalismus, d.h. seine ‚Schlusskraft‘, ist von kompetenten Leuten<ref>„GÖDELS Argumentationskette ist nachweisbar korrekt – so viel hat der Computer nach Ansicht der Wissenschaftler Christoph BENZMÜLLER und Bruno WOLTZENLOGEL-PALEO nun gezeigt;“ vgl. https://www.fu-berlin.de/presse/informationen/fup/2013/fup_13_308/index.html</ref> schon festgestellt worden, <span style="color:#00B000">(im Anhang ‚nachrechenbar‘ mit den Regeln und Gesetzen einer modalen Prädikatenlogik 2. Stufe)</span>. Das GÖDEL-Kalkül ist jedoch kein ‚moderner‘<span style="color:#FF6000">„Existenz-Beweis“</span> für GOTT, wofür es gehalten oder meistens bezweifelt wird, sondern setzt, <span style="color:#00B000">(theoretisch methodisch)</span>, den <span style="color:#FF6000">„Glauben an die Existenz GOTTES“</span> schon voraus, ohne ihn zu hinterfragen. Das <span style="color:#FF6000">„Dasein“</span> bzw. die <span style="color:#FF6000">„Existenz“</span> GOTTES wird mit der Definition-1 für <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, bzw. mit dem Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ — </span>, im Kalkül ‚definitorisch‘ bzw. ‚axiomatisch‘ als Kalkül-,Annahme‘, als <span style="color:#FF6000">„Prämisse“</span>, eingeführt, unter der Voraussetzung, dass die ‚Eigenschaft‘ <span style="color:#4C58FF">‚'''G'''‘ := </span><span style="color:#FF6000">„Göttlichkeit“</span> <span style="color:#00B000">(Essenz)</span> und das <span style="color:#FF6000">„Dasein GOTTES“</span>, <span style="color:#4C58FF">— ‚'''G'''‘ —</span> <span style="color:#00B000">(Existenz)</span>, ontologisch ‚identisch‘, genauer ''':''' <span style="color:#FF6000">„koinzident“</span> sind, was GÖDEL im Axiom-5 definitiv für sein System vorschreibt ''':''' <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub>‘ — </span> ''':''' <span style="color:#FF6000">»''notwendige Existenz ist eine positive Eigenschaft''«</span>. Das <span style="color:#FF6000">„Dasein GOTTES“</span> ist faktisch äquivalent zur <span style="color:#FF6000">„notwendigen Existenz als GOTT“</span>; und <span style="color:#FF6000">„Göttlichkeit“</span> ist die <span style="color:#FF6000">„positive Eigenschaft in GOTT“</span>. Beides ist nach Axiom-5 ‚identisch‘, d.h. dem ‚Sein nach‘ dasselbe, und daher konvertierbar. Beide, <span style="color:#00B000">(sowohl die Essenz, als auch die Existenz GOTTES)</span>, werden daher auch mit demselben Term ''':''' <span style="color:#4C58FF">— ‚'''G'''‘ —</span> im Kalkül dargestellt. Der traditionelle, christliche ,GOTT-Glaube‘ wird zugleich mit diesem Term <span style="color:#4C58FF">‚'''G'''‘ := </span> <span style="color:#FF6000">„GOTT“ <span style="color:#00B000">|</span> „göttlich“</span>, im 2. Beweisgang, dem Basisbeweis, und im 3. Beweisgang für das Theorem ANSELMS, jeweils als ,methodologische‘ Prämisse :01: <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span> regulär <span style="color:#00B000">( ├ )</span> und explizit eingeführt ''':''' <span style="color:#FF6000">»''Das'' <span style="color:#4C58FF">,'''x'''‘</span> ''steht für den GOTT'' <span style="color:#4C58FF">‚'''G'''‘</span> ''der Christen''«</span>. Das ist die ,modal‘-frei gewählte, <span style="color:#4C58FF">„theologische“</span> Kalkül-,Annahme‘, <span style="color:#00B000">(als ,Argument-Einführung‘ := <span style="color:#4C58FF">‚'''AE:'''‘</span> )</span>, und wird dann mit Definition-1 näher ,bestimmt‘ ''':''' <span style="color:#4C58FF">— ‚'''Gx↔∀X(PX→Xx)'''‘ — </span> ''':''' <span style="color:#FF6000"> »''Das'' <span style="color:#4C58FF">,'''x'''‘</span> ''steht genau dann für ‚GOTT‘'' <span style="color:#00B000">|</span> ''‚göttlich‘'', <span style="color:#4C58FF">‚'''G'''‘</span>, ''wenn'' <span style="color:#4C58FF">,'''x'''‘</span> ''alle positiven Eigenschaften, bzw. Vollkommenheiten'', <span style="color:#4C58FF">‚'''PX'''‘</span>, ''hat''«</span>, entsprechend dem ‚Quelltext‘ bei LEIBNIZ. <span style="color:#00B000">(Das ,postulierte‘ Axiom-3 ''':''' <span style="color:#4C58FF"> — ‚'''PG'''‘ —</span>, wird standardmäßig gelesen als <span style="color:#FF6000">»''Göttlichkeit ist eine positive Eigenschaft''«</span>, hat aber auch die alternative Leseart ''':''' <span style="color:#FF6000">»''GOTT ist perfekt d.h. vollkommen''«</span>, was <span style="color:#4C58FF">„theologisch“</span> auch richtig ist; mit <span style="color:#4C58FF">‚'''P'''‘ </span> := <span style="color:#FF6000">„Perfektion“/„Vollkommenheit“</span> ist dann die Summe aller <span style="color:#FF6000">„positiven Eigenschaften“</span>.)</span> Mit Axiom-3, — in dieser <span style="color:#4C58FF">„theologischen“</span> Leseart —, ist der ‚Wenn-Satz‘ in Definition-1 ‚aufgelöst‘ ''':''' <span style="color:#FF6000">»''GOTT hat alle positiven Eigenschaften, weil er ‚perfekt‘ ist''«</span>. In Definition-3 ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x ↔ ∀X(X'''<sub>ess</sub>'''x →□∃yXy)'''‘ —</span>, wird die ,für uns‘ <span style="color:#FF6000">„notwendige Existenz“</span> ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>‘ —, </span> durch die ,aus sich‘ <span style="color:#FF6000">„notwendig“</span> <span style="color:#4C58FF">— '''□''' —</span> instanziierten <span style="color:#FF6000">„Wesenseigenschaften“</span>, <span style="color:#4C58FF">— ‚'''X'''<sub>ess</sub>‘ —</span>, <span style="color:#00B000">(als zu den Transzendentalia gehörig)</span>, bestimmt. Das GÖDEL-Kalkül setzt sowohl in Definition-3 als auch im Axiom-5 das Theorem des ARISTOTELES von der ontologischen ‚Identität‘, d.i. die Koinzidenz von <span style="color:#FF6000">„Dasein“</span>, <span style="color:#00B000">(Existenz)</span> und <span style="color:#FF6000">„Wesenseigenschaften“</span>, <span style="color:#00B000">(Essenz)</span> im prinzipiell <span style="color:#FF6000">„unbewegten Erstbewegenden“</span> voraus. Ohne diese Annahme bzw. ohne Axiom-5, würde das GÖDEL-Kalkül nicht ‚funktionieren‘. Das GÖDEL-Theorem-2.1 ''':''' <span style="color:#4C58FF">— ‚'''Gx→G'''<sub>ess</sub>'''x'''‘ —</span>, kann unter dieser Voraussetzung dann, <span style="color:#4C58FF">„theologisch“</span> richtig und eindeutig, so gelesen werden ''':''' <span style="color:#FF6000">»''Wenn'' <span style="color:#4C58FF">‚'''x'''‘</span> ''für GOTT'', <span style="color:#4C58FF">‚'''G'''‘</span>, ''als Individuum steht, dann ist GOTT-Sein'', <span style="color:#4C58FF">‚'''G'''‘</span>, <span style="color:#00B000">(,Existenz‘)</span>, ''das Wesen'', <span style="color:#4C58FF">—<sub>ess</sub>—, </span> <span style="color:#00B000">(,Essenz‘)</span>, ''GOTTES'' <span style="color:#4C58FF">‚'''x'''‘</span>«</span><ref>vgl. z.B. THOMAS von Aquin ''':''' ,''<span style="font-family: Times;"><big>De Ente et Essentia</big></span>''’, Kapitel 5 ''':''' „Deus, cuius essentia est ipsummet suum esse“ ''':''' „GOTT, dessen Wesen sein eigenes Sein ist“.</ref>, statt der <span style="color:#4C58FF">„theologisch“</span> unrichtigen Lesearten in der Wikipedia ''':''' <span style="color:#FF6000">»''Göttlich ist eine essentielle Eigenschaft jedes göttlichen Wesens''«</span><ref>{{w|Gottesbeweis#Kurt_Gödel|Gottesbeweis 2.1.2, Theorem 2}}; Version vom 10.09.2025</ref>, oder bei Christoph BENZMÜLLER et alia, im sog. ,Theorembeweiser‘ ''':''' <span style="color:#FF6000">»''Gottähnlich zu sein ist eine Essenz von jeder gottähnlichen Entität''«</span><ref>[https://www.fu-berlin.de/presse/informationen/fup/2013/fup_13_308/index.html ‚Gödels „Gottesbeweis“ bestätigt’, Theorem 2]</ref>, mit der suggestiven Annahme, es gäbe polytheïstisch, mehrere ,göttliche Wesen‘, bzw. ,gottähnliche Entitäten‘, was der monotheïstischen, abendländischen Tradition, bzw. dem <span style="color:#4C58FF">„theologischen“</span> Theorem von der ,Unvergleichlichkeit‘ und ,Einzigartigkeit‘ GOTTES widerspricht, das im GÖDEL-Kalkül mit Korollar-3 bestätigt wird. <span style="color:#00B000">(Die Interpretation <span style="color:#4C58FF">‚'''G'''‘ :=</span> <span style="color:#FF6000">„GOTT“</span>, als ,Individuumname‘, ist synonym zum <span style="color:#FF6000">„Dasein <span style="color:#00B000">(Existenz)</span> GOTTES“</span>, und äquivalent zur ‚positiven Eigenschaft‘ <span style="color:#FF6000">„Göttlichkeit“</span>, alias <span style="color:#FF6000">„göttlich zu sein“</span> = <span style="color:#FF6000">„GOTT zu sein“</span> = <span style="color:#FF6000">„GOTT-Sein“</span>; und mit dem GÖDEL-Term ''':''' <span style="color:#4C58FF">‚'''G'''<sub>ess</sub>‘ :=</span> <span style="color:#FF6000">„das Wesen <span style="color:#00B000">(Essenz)</span> GOTTES“</span>.)</span> <div class="center"><span style="color:#FF6000"><span style="color:#4C58FF">‚'''G'''‘ :=</span> „'''G'''öttlichkeit“ <span style="color:#4C58FF">↔</span> „'''G'''OTT“ <span style="color:#4C58FF">↔</span> „'''G'''OTT-Sein“</span> </div> Die Rechtfertigung für diese <span style="color:#4C58FF">„theologische“</span> Dreifach-Äquivalenz für <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, im GÖDEL-Kalkül, gibt Axiom-5 ''':''' <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub>‘ — </span> ''':''' <span style="color:#FF6000">»''die positive <u>Eigenschaft</u>'', <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, ''Göttlichkeit'', <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, ''äquivalent zu GOTT als Individuum-Name'', <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, ''ist auch äquivalent zum Dasein GOTTES'', <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, ''gleichbedeutend mit notwendiger <u>Existenz</u>'', <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>‘ —</span>'', dem <u>Sein</u> GOTTES für uns''«</span>. Hier hat GÖDEL explizit <span style="color:#FF6000">„Eigenschaft“</span> mit <span style="color:#FF6000">„Existenz“</span> bzw. <span style="color:#FF6000">„Sein“</span> gleichgesetzt; <span style="color:#00B000">(was jedoch nach KANT für alles, was in unserer Welt ‚existiert‘, bzw. für alles, was zur <span style="color:#FF6000">»''zufälligen Struktur der Welt''«</span> gehört, wie GÖDEL selbst sagt, in jedem Fall ‚unstatthaft‘ ist ''':''' <span style="color:#FF6000">„Existenz ist keine Eigenschaft“</span>, bzw. <span style="color:#FF6000">»''Sein ist kein reales Prädikat''«</span>)</span>. Jedoch wegen dieser ‚Gleichsetzung‘, die einzig und allein, der aristotelisch-<span style="color:#4C58FF">,theologischen‘</span> Tradition entsprechend, singulär nur in GOTT ‚statthaft‘ ist, kann jetzt die ‚positive Eigenschaft‘ <span style="color:#00B000">(Essenz)</span> <span style="color:#FF6000">„Göttlichkeit“</span> <span style="color:#00B000">(ontologisch korrekt)</span> gelesen werden als <span style="color:#FF6000">„das, was GOTT zu dem macht, ‚was‘ GOTT an sich selbst ist“</span>, nämlich zu seinem <span style="color:#FF6000">„GOTT-Sein“</span> <span style="color:#00B000">(Existenz)</span>, zu seinem <span style="color:#FF6000">„Dasein als GOTT“</span>; zur Tatsache, dass <span style="color:#FF6000">„GOTT GOTT ist“</span>, d.h. dass <span style="color:#FF6000">„GOTT als GOTT ‚da‘ ist“</span>. Das ist, <span style="color:#00B000">(und da folgt ARISTOTELES seinem Lehrer PLATO)</span>, nach traditioneller Auslegung, die übliche, ontologische Funktion des ‚Wesens‘<span style="color:#00B000"> | <span style="color:#FF6000">„<span style="font-family: Times;"><big>οὐσία</big></span>“</span> | ‚ousía‘ |</span> eines Seienden ''':''' es ‚macht‘ das Seiende zu dem, ‚was‘ es ist; es ist die ‚Ursache‘ dafür, dass das Seiende, das ‚ist‘, ‚was‘ es ist | ‚Was-Sein‘ — ‚Wesen‘. <span style="color:#00B000">(ARISTOTELES lokalisiert jedoch das ,Wesen‘ im Seienden, im Gegensatz zu PLATO, der das ,Wesen‘, — ,getrennt‘ vom Seienden —, in den allgemeinen ,Ideen‘ lokalisiert.)</span> Da aber in ‚Gott‘, <span style="color:#00B000">(dem <span style="color:#FF6000">„unbewegten, ‚unverursachten‘ Erstbeweger“</span>)</span>, Prozesshaftes, ‚Ursächliches‘ auszuschließen ist, ist die übliche prozesshafte, ‚ursächliche‘ Funktion von <span style="color:#FF6000">„<span style="font-family: Times;"><big>οὐσία</big></span>“</span><span style="color:#00B000"> | ‚ousía‘ |</span> ,Wesen‘ im <span style="color:#FF6000">„Erstbewegenden“</span> nach ARISTOTELES, sozusagen, schon ‚zum Abschluss‘ gekommen, schon ‚verwirklicht‘, — <span style="color:#FF6000">„<span style="font-family: Times;"><big>ἐν-έργεια οὖσα</big></span>“</span><span style="color:#00B000"> | ‚en-érgeia oúsa‘</span> —, schon ‚ins-Werk‘ gesetzt; <span style="color:#00B000">(<span style="color:#FF6000">„<span style="font-family: Times;"><big>τὸ ἔργον</big></span>“</span> | ‚to érgon‘ | ‚das Werk‘; <span style="color:#FF6000">„<span style="font-family: Times;"><big>ἐνέργεια</big></span>“</span> | ‚enérgeia‘ | ,Wirksamkeit‘, ,Wirklichkeit‘, ,Aktualität‘, ,Energie‘; und <span style="color:#FF6000">„<span style="font-family: Times;"><big>οὖσα</big></span>“</span> | ,oúsa‘ | feminin Nominativ Singular von <span style="color:#FF6000">„<span style="font-family: Times;"><big>ὤν</big></span>“</span> | ‚ón‘ | ‚seiend‘)</span>. Sein ,Wesen‘ ist im ,Dasein‘ vollendet, ist ,wirkliches, verwirklichendes Sein‘, ‚seiende Aktualität‘, <span style="color:#FF6000">„<span style="font-family: Times;"><big>actus purus</big></span>“</span> ''':''' sein Wesen ist ‚reine Tätigkeit‘, ,reine verwirklichende Gegenwärtigkeit‘, d.h. ,existent‘, ohne jede prozesshafte ‚Potenzialität‘. Aus der wichtigen und richtigen Erkenntnis, dass GOTT <span style="color:#FF6000">»''unabhängig von der zufälligen'' <span style="color:#00B000">[ Raum-Zeit-]</span>''Struktur unserer Welt''«</span> ist, folgt mit der ontologischen Identität von ,Dasein‘ und ,Wesen‘ in GOTT ''':''' Der zeitlos ewige GOTT ist <span style="color:#FF6000">»''notwendig aus sich'' <span style="color:#00B000">(von Natur aus)</span> ''immer schon da''«</span>, m.a.W. ist <span style="color:#FF6000">„zeitlos-ursprungslos“</span>. Insofern ist <span style="color:#FF6000">„Göttlichkeit“</span> die <span style="color:#FF6000">„Wesenseigenschaft“</span>, die im <span style="color:#FF6000">„Dasein GOTTES“</span> d.h. in <span style="color:#FF6000">„GOTT“</span>, schon ihr ‚Ziel‘, ihre Vollendung, — <span style="color:#FF6000">„Perfektion“</span>, Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, erreicht hat. GOTT ist <span style="color:#FF6000">»''vollkommen''«</span> und darum auch <span style="color:#FF6000">»''notwendig für uns immer schon ‚da‘''«</span> ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x'''‘ — </span>. GOTT ist in seinem ‚zeitlosen Wesen‘ <span style="color:#FF6000">„unverursacht“</span>, da er <span style="color:#FF6000">»''notwendig aus sich'' <span style="color:#00B000">(von Natur aus)</span> ''vollkommen''«</span> ist ''':''' <span style="color:#4C58FF">— ‚'''□PG'''‘ —</span>, <span style="color:#00B000">(eine Instanz von Axiom-4)</span>. <span style="color:#FF6000">„Vollkommenheit“</span>, <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, ist die <span style="color:#FF6000">„Wesenseigenschaft“</span>, bzw. das <span style="color:#FF6000">„Wesen GOTTES“</span> ''':''' <span style="color:#4C58FF"> — ‚'''G'''<sub>ess</sub>‘ —</span>. <span style="color:#FF6000">»''GOTT ist ,der‘ Vollkommenste''«</span> ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, d.h. <span style="color:#4C58FF">— ‚'''G'''‘ —</span> ''':''' <span style="color:#FF6000">»''GOTT ist die unbegrenzte Summe der unendlichen Vollkommenheiten''«</span>. Und zur absoluten <span style="color:#FF6000">„Vollkommenheit“</span> gehört <span style="color:#FF6000">„notwendig“</span> auch das <span style="color:#FF6000">„Existieren“</span> ''':''' <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub>‘ — </span>. <span style="color:#FF6000">„Notwendige Existenz“</span> gehört zu den ,ultimativen‘ Transzendentalia in GOTT, was GÖDEL mit Definition-3 ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x ↔ ∀X(X'''<sub>ess</sub>'''x →□∃yXy)'''‘ —</span>, syntaktisch formalisiert hat, wenn sowohl das <span style="color:#4C58FF">— ‚'''x'''‘ —</span>, als auch alle <span style="color:#4C58FF">— ‚'''∀y'''‘ —</span> im Kalkül, für den Dreifaltigen GOTT der Christen stehen, was dann im Korollar-3, mit der Identität, <span style="color:#4C58FF">— ‚'''x=y'''‘ —</span>, bzw. der Koinzidenz beider Individuum-Variablen, explizit gezeigt wird. Entscheidend für diese Interpretation des GÖDEL-Systems ist ''':''' nur unter der ,modal‘ notwendigen Voraussetzung der ontologischen ‚Identität‘ von <span style="color:#FF6000">„Sein“</span> und <span style="color:#FF6000">„Wesen“</span> in GOTT, Theorem-2 ''':''' <span style="color:#4C58FF"> — '''Gx↔G'''<sub>ess</sub>'''x'''‘ —</span>, bzw. der ‚Gleichsetzung‘, <span style="color:#00B000">(Koinzidenz)</span>, von <span style="color:#FF6000">„notwendiger Existenz“</span> mit den ‚positiven‘ Wesenseigenschaften, der <span style="color:#FF6000">„Essenz“</span> in GOTT, Axiom-5 ''':''' <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub>‘ —</span>, ‚funktioniert‘ die GÖDEL-Axiomatik '''!''' Diese ‚Identität‘, bzw. ,Koinzidenz‘ wird in ARISTOTELES, ‚''<span style="font-family: Times;"><big>Metaphysik</big></span>''‘, Buch XII 7, in einem Indizienbeweis erbracht, der mit der Methode der philosophischen Induktion zum Ergebnis kommt ''':''' ::<span style="color:#FF6000">» … ''es muss'' <span style="color:#00B000">[ notwendig ]</span> ''etwas geben, das, ohne selbst ‚bewegt‘'' <span style="color:#00B000">[ </span>''worden''<span style="color:#00B000"> ]</span> ''zu sein'', <span style="color:#00B000">[ ‚unentstanden‘ ]</span>, ''alles Übrige wie ein Geliebtes ‚bewegt‘'' <span style="color:#00B000">[ ‚entstehen lässt‘ ]</span>«</span>, das darum selbst ‚zugleich‘ <span style="color:#FF6000">„<span style="font-family: Times;"><big>αἴδιον καί οὐσία καί ἐνέργεια οὖσα</big></span>“ <span style="color:#00B000">| ,aídion kai ousía kai enérgeia oúsa‘ |</span> »<span style="color:#00B000">[ zeitlich-]</span>''ewig, sowohl <u>Wesen</u>'', <span style="color:#00B000">[ etwas Konkretes, Essentielles ]</span>, ''als auch seiende Wirksamkeit — ''<span style="color:#00B000">[ </span>„<span style="font-family: Times;"><big>actus purus</big></span>“, „reine Tätigkeit“<span style="color:#00B000"> ]</span> ''— verwirklichendes, wirkliches <u>Sein</u> ist'', <span style="color:#00B000">[ ein Existierendes, das alles Übrige ,zur Existenz‘ bringen kann ]</span> «</span>, bzw. <span style="color:#FF6000">„<span style="font-family: Times;"><big>ὀρεκτόν καί νοητόν</big></span>“ <span style="color:#00B000"> | ,orektón kai noêtón‘ | </span>»''das ersehnt und erkennbar ist''.«</span> <span style="color:#00B000">(''<span style="font-family: Times;"><big>vgl. ,Metaphysik</big></span>''‘ XII 7, 1072a,23 – 1072b,4)</span> Was <span style="color:#FF6000">»''alles Übrige''«</span> ,zur Existenz‘ bringen kann, bzw. ,verwirklichen‘ kann, ohne selbst ,entstanden‘ zu sein, muß auch selbst, als etwas Konkretes, Essentielles, immer schon ,existieren‘, bzw. ,wirklich sein‘. Die, daraus abgeleitete, und damit ,erkannte‘, ontologische ‚Identität‘, — ,Koinzidenz‘ —, von ‚Wesen‘ und ‚Sein‘, <span style="color:#00B000">(Ziel aller Sehnsucht und jedes Erkenntnisstrebens)</span>, <span style="color:#FF6000">»''ist das Privilegium der Gottheit allein''«</span> ''':''' mit Gottfried Wilhelm LEIBNIZ interpretiert, entsprechend einer adäquaten, aristotelisch-<span style="color:#4C58FF">,theologischen‘</span> Tradition. Dieses induktive, ‚ontologisch‘ a-posteriori Ergebnis aus der ‚Prinzipienforschung‘ des ARISTOTELES ist die metaphysische und logische Voraussetzung, dass GÖDEL seine Axiomatik im Kalkül des sog. ‚ontologischen Gottesbeweises‘ a-priori des ANSELM von Canterbury, und nach LEIBNIZ, deduktiv korrekt formulieren konnte; <span style="color:#00B000">(vgl. 3. Beweisgang)</span>. Angenommen, die Variable <span style="color:#4C58FF">— ‚'''x'''‘ —</span> steht für den <span style="color:#FF6000">„GOTT“</span>, <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, der Christen, <span style="color:#00B000">(siehe Anhang, Term :01: im 2. Beweisgang)</span>, dann ist, — auf Grund von diesem Beweisgang —, in unserer Welt ,wahr‘ und evident ''':''' sowohl die ‚positive Eigenschaft‘ <span style="color:#FF6000">»''Göttlichkeit''«</span>, <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, als auch das faktische <span style="color:#FF6000">»''‚Da‘-Sein'' <span style="color:#00B000">[ Existenz ]</span> ''GOTTES''«</span>, <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, ‚benennen‘, ontologisch ident, denselben Sachverhalt ''':''' nämlich das, was wir das <span style="color:#FF6000">»''Wesen'' <span style="color:#00B000">[ Essenz ]</span> ''GOTTES''«</span>, <span style="color:#4C58FF"> — ‚'''G'''<sub>ess</sub>‘ —</span>, nennen. <span style="color:#FF6000">»''Göttlichkeit'', bzw. ''GOTT-‚Sein‘ ist das Wesen GOTTES''«</span>, <span style="color:#00B000">(Theorem-2.1)</span>, und dann umgedreht und äquivalent ''':''' <span style="color:#FF6000">»''Das Wesen GOTTES ist sein ‚Da‘-Sein als GOTT'', bzw. ''seine Göttlichkeit''«</span>, <span style="color:#00B000">(Theorem-2.2)</span>, m.a.W. ''':''' <span style="color:#FF6000">»''GOTT ist wesentlich ‚grundlos‘'' <span style="color:#00B000">[ d.h. </span> ''notwendig aus sich''<span style="color:#00B000"> ]</span> ''‚da‘''«</span>. Das ist das Einzigartige im <span style="color:#FF6000">»''Wesen GOTTES''«</span> ''':''' GOTT ist ohne zeitlichen Anfang, zeitlos-ewig, für uns immer schon ‚da‘, und das ‚ist‘ sein <span style="color:#FF6000">»''Wesen''«</span>; vorausgesetzt, ,angenommen‘, man glaubt an GOTT ''':''' Term :01:. <span style="color:#00B000">(Der schon von GÖDEL indizierte Term <span style="color:#4C58FF"> — ‚'''G'''<sub>ess</sub>‘ — </span> ,expliziert‘ nur eine der drei Lesearten, die der Term <span style="color:#4C58FF"> — ‚'''G'''‘ — „theologisch“</span> ,impliziert‘.)</span> Theorem-2 hat somit die syntaktische Form einer Definition ''':''' <div class="center"><span style="color:#4C58FF"> — ‚'''Gx↔G'''<sub>ess</sub>'''x'''‘ — </span></div> Somit kann GOTT ‚explizit‘ <span style="color:#00B000">(aus einer bewiesenen Kalkül-Definition)</span> <span style="color:#4C58FF">„theologisch“</span> genauer ‚bestimmt‘ werden ''':''' <span style="color:#FF6000">»''GOTT ist gerade deswegen GOTT, weil sein überzeitlich-ewiges und an sich ‚grundloses‘'' <span style="color:#00B000">[ aber für uns notwendiges ]</span> ''Dasein'' <span style="color:#00B000">[ Existenz ]</span> ''als GOTT, ontologisch, — dem Sein nach —, identisch ist mit seinem persönlichen und für uns liebevollen Wesen'' <span style="color:#00B000">[ Essenz ]</span> ''als GOTT; diese Identität von Dasein und Wesen gilt einzig und allein nur bei GOTT.''«</span> Die philosophische Frage nach dem <span style="color:#FF6000">„Wesen GOTTES“</span> lautet, <span style="color:#00B000">(auf die Person bezogen)</span> ''':''' <span style="color:#FF6000">„Was bist du ? “</span> Sie ist äquivalent zur <span style="color:#4C58FF">,theologisch’</span>-biblischen Frage des MOSE ''':''' <span style="color:#CC66FF">„Wer bist Du ? “</span> Die bekannte Antwort des GOTTES-JHWH aus ‚Exodus 3,14‘, im Dornbusch, thematisiert das persönliche, für uns liebevolle und für immer notwendige <span style="color:#FF6000">„Dasein GOTTES“</span> ''':''' <span style="font-family: Times;"><big>‘אֶֽהְיֶ֖ה אֲשֶׁ֣ר אֶֽהְיֶ֑ה‚</big></span> <span style="color:#00B000">| ‚eh'jeh asher eh'jeh‘ |</span> <span style="color:#CC66FF">»''Ich bin der ‚Ich-Bin-Da‘'', <span style="color:#00B000">[ für euch und für immer ]</span>«.</span> Mit diesem Zitat aus der Bibel ist die GÖDEL-Axiomatik, sozusagen, <span style="color:#4C58FF">„theologisch“</span> ‚verifiziert‘. Sie hat einerseits im Theorem-2 ihren philosophischen ‚Abschluss’ erreicht, und andererseits damit formal-syntaktisch den ‚Anschluss‘ an eine allgemeine Basis-Glaubensaussage gefunden, die ‚an sich‘ für jeden CHRIST-gläubigen Menschen ‚selbstverständlich‘ ist. Was in der Metaphysik des ARISTOTELES das Ergebnis einer philosophischen ,Induktion‘ a-posteriori ist ''':''' <span style="color:#FF6000">„,Dasein‘ ist das ,Wesen‘ GOTTES“</span>, — <span style="color:#00B000">(das mit Theorem-2, auch ein Ergebnis der deduktiven GÖDEL-Axiomatik a-priori ist ''':''' die Beweisgrundlage für den Konsequenz-Teil im Theorem AMSELMS)</span>, — das ist in der Bibel die Grundüberzeugung jedes Menschen, der an GOTT glaubt ''':''' GOTT ist für uns immer schon <span style="color:#FF6000">„da“</span>, weil er uns liebt. Das ist das, <span style="color:#FF6000">„was“</span> GOTT für uns als GOTT ausmacht, — sein Wesen ''':''' <span style="color:#CC66FF">»''Wir haben die Liebe, die GOTT zu uns hat, erkannt und gläubig angenommen. GOTT ist Liebe, und wer in der Liebe bleibt, bleibt in GOTT und GOTT bleibt in ihm''«</span>, <small>({{Bibel | 1. Johannesbrief |4|16|EU}})</small>. Das eigentliche Ergebnis der GÖDEL-Axiomatik ist somit die ‚triviale‘ Erkenntnis, dass GOTT, <span style="color:#FF6000">„unverursacht“ <span style="color:#00B000">|</span> „grundlos“</span>, für uns immer schon ‚da‘ ist, — <span style="color:#CC66FF">„von Ewigkeit zu Ewigkeit“</span> —, vorausgesetzt <span style="color:#00B000">(‚angenommen‘)</span>, man ‚glaubt‘ an den zeitlos-ewigen GOTT ''':''' <span style="color:#CC66FF">»''Ehe die Berge geboren wurden, ehe die Erde entstand und das Weltall erschaffen wurden, bist du, o GOTT, von Ewigkeit zu Ewigkeit''«</span>, <small>({{Bibel | Psalm |90|2|LUT}})</small>. <span style="color:#00B000">(Der Glaube an die Zeitlosigkeit GOTTES ist mit der ‚Annahme‘ von Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span> ''':''' <span style="color:#FF6000">»''GOTT ist perfekt''«</span>, und der ‚Annahme‘ der Definition-1 für <span style="color:#4C58FF"> ‚'''Gx'''‘ := </span> den <span style="color:#FF6000">„GOTT der Christen“</span>, im Kalkül ‚implizit‘ schon eingeführt, da die Axiome und Definitionen, — nach GÖDEL —, nur dann <span style="color:#FF6000">»''wahr''«</span> sind, wenn sie <span style="color:#FF6000">»''unabhängig von der zufälligen''</span> [ Raum-Zeit-]<span style="color:#FF6000">''Struktur''«</span> unserer Welt sind. Das ,impliziert‘ auch, dass der GOTT von Axiom-3 und Definition-1 ebenfalls <span style="color:#FF6000">»''unabhängig''«</span> von Raum und Zeit, d.h. zeitlos-ewig ist '''!''' )</span> Wer an den GOTT der Bibel glaubt, kann sich von der ‚Vernünftigkeit‘ seines Glaubens mit Hilfe des sog. ,ontologischen‘ Gottesbeweises nach ANSELM von Canterbury, mit Kurt GÖDEL <span style="color:#FF6000">»''rein verstandesmäßig''«</span>, überzeugen. <span style="color:#00B000">(Das war auch die Absicht ANSEMS '''!''' )</span> Die Annahme, es sei ‚unmöglich‘, dass es GOTT gibt ''':''' <span style="color:#4C58FF">— ‚'''¬◇∃xGx'''‘ —</span>, <span style="color:#00B000">(dezidierter Atheismus)</span>, führt im GÖDEL-Kalkül formal zu einem logischen Widerspruch; vgl. z. B. ‚''<span style="font-family: Times;"><big>Gödels Möglichkeitsbeweis</big></span>''‘, in ‚''<span style="font-family: Times;"><big>Der Gödelsche Gottesbeweis</big></span>''‘, Seite 17, von Günther J. WIRSCHING; (https://edoc.ku.de/id/eprint/10243/1/OntBw.pdf), d.h. es ist also nicht ‚unmöglich‘, dass es GOTT gibt. Der GOTT-Glaube ist mit den Maßstäben einer modernen Logik <span style="color:#FF6000">»''durchaus vereinbar''«</span> und darum ,vernünftig‘. Damit steht fest ''':''' das GÖDEL-Kalkül ist kein moderner ‚Existenz-Beweis‘ für den GOTT der Bibel, sondern es setzt, <span style="color:#FF6000">»''rein verstandesmäßig''«</span>, ,methodologisch‘, den Glauben an die Existenz eines zeitlos-ewigen GOTTES voraus, der, — <span style="color:#FF6000">»''unabhängig von der zufälligen'' <span style="color:#00B000">[ Raum-Zeit-]</span>''Struktur unserer '' <span style="color:#00B000">[ vergänglichen ]</span> ''Welt''«</span> —, für uns immer schon ‚da‘ ist. Wenn aber einmal als fix ‚angenommen‘ worden ist, <span style="color:#00B000">(als Prämisse)</span>, dass es wahr ist, dass GOTT ‚existiert‘, dann ist natürlich die ‚Annahme‘, dass GOTT ‚nicht existiert‘, falsch. Aber sie ist auch ,unlogisch‘ und ,unsinnig‘, weil die Annahme ''':''' <span style="color:#FF6000">»''Es ist unmöglich, dass es einen GOTT gibt''«</span>, offensichtlich und eindeutig zu einem Widerspruch führt; was z. B. Günther J. WIRSCHING mit seiner Version des <span style="color:#00B000">(nicht umkehrbaren)</span> ‚Möglichkeitsbeweises‘ für ,GOTT‘, explizit vorexerziert hat; <span style="color:#00B000">( nachgestellt im Anhang ''':''' GÖDELS ‚Möglichkeitsbeweis‘ als ,Widerlegung‘ eines Nicht-GOTT-Glaubens; in Entsprechung zu Psalm 14,1 und Psalm 53,2 ''':''' <span style="color:#CC66FF">»''Der'' <span style="color:#00B000">[ ,unvernünftige‘ ]</span> ''Tor sagt in seinem Herzen ''':''' Es gibt keinen Gott. Sie handeln verderbt, handeln abscheulich; da ist keiner, der Gutes tut''«</span>. Historischer Hintergrund zu diesem Psalm-Text ''':''' Die Zerstörung des Tempels in Jerusalem 586 v.Ch. durch die Truppen des NEBUKADNEZAR II.)</span> Der Logiker GÖDEL hat in seinem System zum ,ontologischen Beweis‘ keine ‚formale Unentscheidbarkeit‘ <span style="color:#00B000">(Agnostizismus)</span> feststellen können, wie auf einem anderen Feld seiner Forschungsarbeiten. Das GÖDEL-Konsequenz-Teil von der ‚Notwendigkeit‘ GOTTES ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span>, <span style="color:#00B000">(die ‚Konsequenz’ aus dem ‚widerspruchsfreien‘ Korollar-1 ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —,</span>)</span> im ‚Theorem ANSELMS‘, ist <span style="color:#00B000">(im 3. Beweisgang, Term :10:)</span> dann auch eine weitere Explikation des Basis-Theorems-2 des Kalküls ''':''' <span style="color:#4C58FF"> — ‚'''Gx↔G'''<sub>ess</sub>'''x'''‘ — </span>, über die ‚ontologische Identität‘ vom <span style="color:#FF6000">„Dasein GOTTES“</span> ''':''' <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, mit seinem <span style="color:#FF6000">„Wesen“</span> ''':''' <span style="color:#4C58FF"> — <sub>ess</sub> —</span>, nach einem <span style="color:#4C58FF">[ Modus ponens ]</span>, dargestellt mit Term :09:. <span style="color:#00B000">(Die ontologische Identität von Dasein und Wesen in GOTT, ist die, für uns, <span style="color:#FF6000">„notwendige Präsenz <span style="color:#00B000">[ das Sein, <span style="color:#4C58FF">— ‚'''E'''‘ —</span>]</span> GOTTES“</span> ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x'''‘ —</span>, die äquivalent, bzw. koinzident ist zur <span style="color:#FF6000">„Vollkommenheit <span style="color:#00B000">[ das Wesen, <span style="color:#4C58FF">— ‚'''P'''‘ —</span>]</span> GOTTES“</span> ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>. Diese Identität von Sein und Wesen in GOTT ''':''' <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub> —</span>, bedeutet <span style="color:#4C58FF">,theologisch‘</span> konkret ''':''' die, für uns, notwendige Gegenwärtigkeit GOTTES, [ sein Dasein ], ist verwirklicht worden in der liebevollen [ Wesens-]Zuwendung GOTTES zu uns Menschen, in seiner Kindwerdung in Bethlehem, durch die Jungfrau MARIA ''':''' GOTTES Wesen ist ,Sein-mit-uns‘ ''':''' <span style="color:#CC66FF">»''sein Name'', <span style="color:#00B000">[ sein Wesen ]</span>, ''ist IMMANUEL, das heiß übersetzt ''':''' GOTT-ist-mit-uns''«, <small>({{Bibel | Matthäus Evangelium |1|23|EU}})</small></span>, der unsere Not-,wenden‘-wird, d.h. der uns und die Welt von der Korruption der Sünde und des Todes <span style="color:#4C58FF">,erlösen‘</span> will und wird; jedoch nicht ohne uns. Die <span style="color:#4C58FF">„Menschwerdung“</span> GOTTES in JESUS CHRISTUS, die <span style="color:#4C58FF">„Hypostatische Union“</span>, bzw. diese außergewöhnliche und einzigartige <span style="color:#FF6000">„Koinzidenz“</span> von GOTT und Mensch, ist der wirkliche und historische Beginn der <span style="color:#4C58FF">„Erlösung“</span> des Menschen und der Welt; vergegenwärtigt für jede Generation der Menschen in und durch die <span style="color:#4C58FF">„Kirche“</span> JESU CHRISTI.)</span> Die, von GÖDEL im 1. Beweisgang, als Prämissen schon vorausgesetzten und ,angenommenen‘ Perfektionen, bzw. Vollkommenheiten, <span style="color:#00B000">(das sind die allgemeinen ,Transzendentalia‘ für alles Nicht-Göttliche in der Welt)</span>, werden im ersten Teil des 2. Beweisganges, mit Term :13: <span style="color:#4C58FF">— ‚'''PY'''‘ —</span>, dann auch als <span style="color:#FF6000">„positive Wesenseigenschaften“</span>, <span style="color:#00B000">(als die ultimativen ,Transzendentalia‘)</span>, in GOTT ‚definitiv‘ <span style="color:#00B000">( ╞ )</span> bestätigt; <span style="color:#00B000">(siehe Anhang, 2. Beweisgang, Anmerkung-2)</span>. Im 3. Beweisgang ist das Basis-Theorem-2 die ,modal‘ notwendige, bzw. transzendentale, Voraussetzung, sowohl für das <span style="color:#FF6000">„an sich notwendige Dasein GOTTES“</span>, <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span>, im Term :10:, als auch für die <span style="color:#FF6000">„für uns notwendige Existenz GOTTES“</span>, <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>‘ —</span>, in den Ressourcen dieses Beweisganges ''':''' in der Definition-3, und im Axiom-5; <span style="color:#00B000">(das <span style="color:#4C58FF">— ‚'''E'''‘ —</span> wird nur GOTT zugeordnet; vgl. auch Anhang, 3. Beweisgang, Anmerkung-4)</span>. Dieses Basis-Theorem-2 ist auch zugleich die Antwort auf die Frage nach dem ‚Ursprung‘ GOTTES ''':''' GOTT ist <span style="color:#FF6000">„unverursacht“ <span style="color:#00B000">|</span> „ursprungslos“</span> ‚da‘, von <span style="color:#CC66FF">„Ewigkeit zu Ewigkeit“</span>, denn es ‚ist‘ sein <span style="color:#FF6000">„Wesen“</span>, <span style="color:#00B000">(überzeitlich-ewig)</span> für uns immer schon ‚da‘ zu sein. Weitere ‚Einzelheiten‘ über Wesen und Eigenschaften GOTTES gehören in die Mystik, bzw. in die <span style="color:#4C58FF">„Theologie“</span>. ===<div class="center"><span style="color:#660066">Die Bedeutung des Kalküls</span></div>=== <div class="center">Immanuel KANT und Kurt GÖDEL im ‚Dialog‘</div> KANT sagt ''':''' ::<span style="color:#FF6000">»</span>'''''Sein''' ist offenbar kein reales Prädikat''. ... ''Es ist bloß die'' <span style="color:#00B000">[ gedachte ]</span>'' Position'' <span style="color:#00B000">[ latinisiert, deutsch für ''':''' ,Setzung‘ ]</span> ''eines Dinges ... Nehme ich nun das Subjekt (Gott) mit allen seinen Prädikaten'' <span style="color:#00B000">[ d.h. Eigenschaften ]</span> ''(worunter auch die Allmacht gehört) zusammen, und sage ''':''' ‚'''Gott ist'''‘'', <span style="color:#00B000">[ ,GOTT existiert wirklich‘ ]</span>, ''oder ‚es ist ein Gott‘, so <u>setze</u> ich kein neues Prädikat'' <span style="color:#00B000">[ keine neue Eigenschaft ]</span> ''zum ‚Begriffe‘ von Gott ''':''''' <span style="color:#00B000">[ <span style="color:#0000FF; background-color:#FFFF00">‚Sein’ ist kein ‚reales Prädikat’ in GOTT</span>; ‚Existenz‘ ist in GOTT keine ‚Eigenschaft‘ ],</span> ... ''es kann daher zu dem Begriffe'', <span style="color:#00B000">[ ,GOTT‘ ]</span>, ''der bloß die'' <span style="color:#00B000">[ gedachte ]</span>'' Möglichkeit ausdrückt, darum, dass ich dessen Gegenstand'', <span style="color:#00B000">[ GOTT ]</span>, ''als schlechthin gegeben (durch den Ausdruck ''':''' er ist'', <span style="color:#00B000">[ GOTT ist wirklich ]</span>'' ) <u>denke</u>, nichts weiter hinzukommen.'' <span style="color:#00B000">[ Beides ist ,bloß gedacht‘ '''!''' ]</span> ''Und so enthält das Wirkliche nichts mehr als das bloß Mögliche. Hundert ‚wirkliche‘ Taler enthalten nicht das mindeste <u>mehr</u>, als hundert ‚mögliche‘. Denn, da diese den'' <span style="color:#00B000">[ gedachten ]</span>'' ‚Begriff‘, jene aber den Gegenstand und dessen'' <span style="color:#00B000">[ gedachte ]</span>'' Position an sich selbst bedeuten, so würde, im Fall dieser'', <span style="color:#00B000">[ die 100, als ,wirklich‘ bloß gedachten Taler ]</span>, ''<u>mehr</u> enthielte als jener,'' <span style="color:#00B000">[ als ihr ‚gedachter‘ Begriff im Verstand, wie ΑNSELM von Canterbury für GOTT, als ‚wirklich‘ Existierenden, argumentierte, …''so würde'' ]</span> ''mein ‚Begriff‘'' <span style="color:#00B000">[ die 100 im Verstand ‚gedachten‘ Taler ]</span> ''nicht den ganzen Gegenstand ausdrücken, und also auch <u>nicht der angemessene Begriff</u> von ihm sein. Aber in meinem Vermögenszustande ist <u>mehr</u> bei hundert ‚wirklichen‘ Talern, als bei dem bloßen Begriffe derselben'', <span style="color:#00B000">[ als bei 100 bloß ‚gedachten‘ Talern ]</span> ... <span style="color:#FF6000">«</span> <span style="color:#00B000"><ref>‚''<span style="font-family: Times;"><big>Kritik der reinen Vernunft</big></span>''‘, Seite 401; https://www.korpora.org/kant/aa03/401.html</ref></span>. GÖDEL würde darauf <span style="color:#00B000">(korrespondierend zur aristotelisch-<span style="color:#4C58FF">,theologischen‘</span> Tradition von der Identität von Sein und Wesen in GOTT)</span> antworten ''':''' ::<span style="color:#FF6000">»</span>Die <span style="color:#FF6000">„100 Taler“</span> sind der <span style="color:#FF6000">»''zufälligen Struktur der'' <span style="color:#00B000">[ vergänglichen ]</span> ''Welt''«</span> entnommen, und sind daher nicht mit GOTT vergleichbar, der, <span style="color:#FF6000">»''unabhängig von der zufälligen'' <span style="color:#00B000">[ Raum-Zeit-]</span>''Struktur''«</span> unserer Welt, <span style="color:#FF6000">„über“</span> dieser Welt steht. Einzig und allein nur von GOTT gilt ''':''' Der mit Dingen aus unserer Welt ,nicht vergleichbare‘ GOTT, <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, <span style="color:#FF6000">„existiert notwendig für uns“</span>, <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x'''‘ —</span>, und <span style="color:#FF6000">„notwendiges Existieren, <u>Sein</u>“</span> ,ist‘ eine <span style="color:#FF6000">„positive <u>Wesen</u>seigenschaft“</span> in GOTT, <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub>‘ —</span>, weil GOTT aus sich <span style="color:#FF6000">„vollkommen“ <span style="color:#00B000">|</span> „perfekt“</span> ist, <span style="color:#4C58FF">— ‚'''PG'''‘ —</span> ''':''' <span style="color:#0000FF; background-color:#FFFF00">‚Sein‘ ist in GOTT ein ‚reales Prädikat‘</span>; <span style="color:#00B000">(notwendige ‚Existenz’ ist eine positive ‚Wesenseigenschaft’ in GOTT)</span>, und nur bei GOTT '''!''' Zum zeitlos-ewigen GOTT der Christen ''':''' <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, <span style="color:#00B000">(als methodologische Kalkül-Prämisse)</span>, kann man sagen ''':''' Weil es, wegen Axiom-1 und Axiom-2, <span style="color:#FF6000">„widerspruchsfrei möglich"</span> ist, dass es GOTT gibt ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span>, darum ist GOTT auch das ‚einzige‘ <span style="color:#FF6000">„Wesen“</span>, <span style="color:#4C58FF">— ‚'''x'''‘ —</span>, von dem ein Christ sagen kann, dass es <span style="color:#FF6000">„notwendig aus sich“</span> ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span>, d.h. <span style="color:#FF6000">„grundlos“ <span style="color:#00B000">|</span> „unverursacht“</span>, für uns immer schon ‚da’ ist, und immer ,da’ sein wird; und zusätzlich gilt ''':''' Es gibt für jede mögliche Welt ‚nur‘ diesen einen GOTT ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx ∧ □∀y(Gy→x=y)'''‘ — </span><span style="color:#00B000">(Monotheïsmus, Korollar-3)</span>; vorausgesetzt, man geht von der ,Existenz’ dieses GOTTES aus, wobei diese Annahme für GÖDEL <span style="color:#FF6000">»''mit allen bekannten Tatsachen durchaus vereinbar''«</span> ist.<span style="color:#FF6000">«</span> Eine Beobachtung ''':''' KANT sagt, gleichsam als ,krönenden‘ Abschluss seiner Widerlegung des, — von ihm so genannten —, ,ontologischen Gottesbeweises‘ ''':''' <span style="color:#FF6000">»</span>''Aber in meinem Vermögenszustande ist <u>mehr</u> bei hundert ‚wirklichen‘ Talern, als bei dem bloßen Begriffe derselben, (d.i. ihrer Möglichkeit).''<span style="color:#FF6000">«</span> Diese Feststellung KANTS entspricht jedoch genau der Argumentation ANSELMS ''':''' GOTT <span style="color:#FF6000">„<span style="font-family: Times;"><big>esse et in re</big></span>“</span>, d.h. GOTT ,existiert auch in Wirklichkeit‘, <span style="color:#FF6000">„<span style="font-family: Times;"><big>quod maius est</big></span>“</span>, was <u>mehr</u> ist, als <span style="color:#FF6000">„<span style="font-family: Times;"><big>esse solo in intellectu</big></span>“</span>, als nur ein bloßer Begriff ,im Verstand zu sein‘. Der ,Mehr-Wert‘ ergibt sich in beiden Fällen, sowohl bei den Talern als auch bei GOTT, aus der ,Wirklichkeit‘ ihrer Existenz, im Gegensatz zur bloßen, <span style="color:#00B000">(im Begriff gedachten)</span>, ,Möglichkeit‘ ihrer Existenz, so dass, in jedem Fall, der ,Begriff‘ im Verstand ohne Abstriche <span style="color:#FF6000">»</span>''den ganzen Gegenstand ausdrückt''<span style="color:#FF6000">«</span>, und von diesem auch <span style="color:#FF6000">»</span>''der angemessene Begriff''<span style="color:#FF6000">«</span> ist. Alles andere wäre eine ,Lüge‘. Mit dieser ,Beobachtung‘ ist das implizit ,Widersprüchliche‘ in KANTS Argumentation aufgedeckt ''':''' Das Wirkliche in KANTS Vermögenszustande enthält <span style="color:#FF6000">,doch mehr‘</span> als das bloß Mögliche, konträr zu seiner vorigen Behauptung ''':''' <span style="color:#FF6000">»</span>''das Wirkliche''<span style="color:#FF6000">«</span> enthalte <span style="color:#FF6000">»'',nichts mehr‘</span> als das bloß Mögliche''<span style="color:#FF6000">«</span>. Diese Behauptung ist offensichtlich falsch. Das ist somit ein indirekter Beweis und damit eine Bestätigung für die analoge Argumentation ANSELMS aus dem Wiederspruch des Gegenteils, am Beispiel KANTS <span style="color:#FF6000">»</span>''Vermögenzustandes bei hundert wirklichen Talern''<span style="color:#FF6000">«</span>, in dem in Wirklichkeit <span style="color:#FF6000">,doch mehr‘</span> ist, <span style="color:#FF6000">»</span>''als bei dem bloßen Begriffe derselben''<span style="color:#FF6000">«</span>. <span style="color:#00B000">(Diese ,Beobachtung‘ ist zugleich auch das entscheidende Indiz dafür, dass das systembedingte Konzept KANTS von der ,Existenz‘, bzw. vom ,Sein‘ eines jeden Gegenstandes, als</span> <span style="color:#FF6000">»</span>''dessen bloße Position''<span style="color:#FF6000">«</span>, <span style="color:#00B000">d.i. als seine ,Setzung‘ bloß im- und durch den Verstand, ,falsch‘ ist, — d.h. im Klartext ''':''' für KANT ist das ,Sein‘ eines Gegenstandes bloß ein ,Gedanke‘ in uns, wenn er meint, dass uns ein Gegenstand erst dann wirklich ,gegeben‘ sei, wenn wir uns den</span> <span style="color:#FF6000">»</span>''Gegenstand als schlechthin gegeben (durch den Ausdruck : <u>er ist</u>) <u>denken</u>''<span style="color:#FF6000">«</span>, <span style="color:#00B000">was nur dem Irrtum einer falschen System-Konzeption geschuldet sein kann. Auf Grund dieser Konzeption ist das</span> <span style="color:#FF6000">»</span>''Ding, wie es an sich selbst ist''<span style="color:#FF6000">«</span>, <span style="color:#00B000">für KANT systembedingt weder ,anschaubar‘, noch ,erkennbar‘. Diese falsche Konzeption über die ,Existenz‘, bzw. das ,Sein‘ eines Dinges, als</span> <span style="color:#FF6000">»</span>''dessen bloße Position''<span style="color:#FF6000">«</span>, <span style="color:#00B000">ist für KANT letztendlich auch die Beweisgrundlage und Voraussetzung für seine Ablehnung des ontologischen Argumentes für GOTT im Theorem ANSELMS. Wenn das ,wirkliche‘ Sein eines Dinges nichts anderes ist, als</span> <span style="color:#FF6000">»</span>''dessen'' <span style="color:#00B000">[ bloß gedachte ]</span> ''Position''<span style="color:#FF6000">«</span>, <span style="color:#00B000">d.h. als seine ,mögliche‘ Setzung bloß im- und durch den Verstand, — das ist das, als ,wirklich‘ bloß nur ,gedachte‘ Ding —, dann</span> <span style="color:#FF6000">»</span>''enthält''<span style="color:#FF6000">«</span> <span style="color:#00B000">natürlich</span> <span style="color:#FF6000">»</span>''das Wirkliche''<span style="color:#00B000">, [ als die bloß gedachte Existenz ],</span> ''nichts mehr als das bloß Mögliche''<span style="color:#00B000">, [ als der gedachte Begriff ]<span style="color:#FF6000">«</span>, was offensichtlich unhaltbar ist. <span style="color:#4C58FF">[ Modus tollendo tollens ] </span> ''':''' Wenn die Konsequenz einer Wenn-Dann-Folgerung ,falsch‘ ist, dann ist auch ihre Voraussetzung, das System-Konzept KANTS, ,falsch‘ ''':''' d.i. seine ,Kopernikanische Wende‘ für die Metaphysik, soweit sie KANTS ,Sein’-Konzept betrifft. Korrekt und ,wahr‘ ist in jedem Fall ''':''' Das Wirkliche enthält <span style="color:#FF6000">,doch mehr‘</span> als das bloß Mögliche, und die Dinge ,existieren‘ schon immer unabhängig von unserem Denken. ,Existenz‘, das ,Sein‘, ist <span style="color:#FF6000">,doch mehr‘</span>, als bloß ein ,Gedanke‘ von uns.)</span> Somit ist die Argumentation KANTS gegen den ontologischen Beweis ANSELMS für GOTT ,falsch‘ und unhaltbar, weil sie auf der ,falschen‘ Voraussetzung beruht ''':''' die ,Existenz‘, bzw. das ,Sein‘ eines jeden ,Gegenstandes‘, — wie z. B. auch die Existenz bei GOTT —, sei bloß dessen gedachte ,Position‘ an sich selbst, d.h. bloß seine ,Setzung‘ im- und durch den Verstand. Damit ,macht‘ er GOTT außerdem zu einem ,Ding‘ unter den vielen ,Dingen‘ dieser Welt, und verkennt so, — wie vor ihm THOMAS von Aquin —, auch die Einzigartigkeit und Exklusivität GOTTES im Theorem ANSELMS. <div class="center">Die <span style="color:#FF6000">„Rede von GOTT“</span> in der philosophischen Tradition</div> Wenn man die philosophische Tradition der <span style="color:#FF6000">„Rede von GOTT“</span> im Lichte der Ergebnisse der <span style="color:#4C58FF">„axiomatischen Theologie“</span> GÖDELS liest, dann stellt sie sich am Beispiel bei ARISTOTELES, — AVICENNA, — ANSELM, und bei GÖDEL wie folgt dar ''':''' <span style="color:#FF6000">»''Das Erstbewegende,'' (<span style="font-family: Times;"><big>,πρῶτον κινοῦν‘</big></span>), ''das, ohne selbst ‚bewegt‘ zu sein'', (<span style="font-family: Times;"><big>,ἀκίνητον‘</big></span> <span style="color:#00B000">| ''unverursacht, ,entstehungslos‘'' |</span> ), ''alles Übrige wie ein Geliebtes ‚bewegt‘'', (<span style="font-family: Times;"><big>,κινεῖ δὴ ὡς ἐρώμενον‘</big></span> <span style="color:#00B000"> | ''-verursacht, ,entstehen‘ lässt'' |</span> ), ''ist sowohl'' <span style="color:#00B000">[ zeitlich-]</span>''ewiges ‚Wesen‘'', (<span style="font-family: Times;"><big>,ἀΐδιον καί οὐσία‘</big></span> <span style="color:#00B000">| ''‚Substanz‘'' |</span> ), ''als auch'' <span style="color:#00B000">[ zeitlich-]</span>''ewiges ‚wirksames, verwirklichendes Sein‘'', (<span style="font-family: Times;"><big>‚ἀΐδιον καί ἐνέργεια οὖσα‘ = ‚actus purus‘</big></span><span style="color:#00B000"> | '',reine Tätigkeit‘'' |</span> ), … ''ersehnt'', (<span style="font-family: Times;"><big>,ὀρεκτόν‘</big></span>), ''und erkennbar'', (<span style="font-family: Times;"><big>,νοητόν‘</big></span>), ... ''denn dies ist der ‚Gott‘'', (<span style="font-family: Times;"><big>,τοῦτο γὰρ ὁ θεός‘</big></span>), <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, ''der'' <span style="color:#00B000">[ zeitlich-]</span>''Ewige'', (<span style="font-family: Times;"><big>,ἀΐδιον‘</big></span>), — ''der Unvergleichliche'', (<span style="font-family: Times;"><big>,ἄριστον‘</big></span> <span style="color:#00B000">| ''‚der Beste‘'' |</span> ), — ''der Lebendige'', (<span style="font-family: Times;"><big>,ζῷον‘</big></span> <span style="color:#00B000">| ,''das Leben selbst‘'' |</span> ), — ... ''so sagen wir ja'', (<span style="font-family: Times;"><big>,φαμὲν δὴ‘</big></span>), — ...«</span> ''':''' <span style="color:#00B000">(ARISTOTELES — Grieche)</span>. Der ‚Begriff’ <span style="color:#FF6000">„GOTT“</span>, <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, als ,Individuumname‘, ist synonym mit <span style="color:#FF6000">„göttliches ‚Da-Sein’“</span>, das sowohl <span style="color:#FF6000">„aus sich vollkommen“</span>, als auch <span style="color:#FF6000">„notwendig für uns“</span> ‚da‘ ist; <span style="color:#00B000">(das ist das, an sich, vollkommene ‚Was-Sein‘ GOTTES ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ — </span>, das zugleich, für uns, das notwendige ‚Da-Sein‘ GOTTES ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x'''‘</span> — ist)</span>; <span style="color:#CC66FF">„von Ewigkeit zu Ewigkeit“</span>. Das ist der <u>angemessene Begriff</u> von GOTT, und gilt ‚nur‘ von GOTT. Weil GOTT <span style="color:#FF6000">„vollkommen“</span> ist, ist <span style="color:#FF6000">„Da-Sein“ <span style="color:#00B000">|</span> „GOTT-Sein“ <span style="color:#00B000">|</span> „Göttlichkeit“</span> das <span style="color:#FF6000">„Wesen“</span> GOTTES ''':''' <span style="color:#4C58FF">— ‚'''Gx↔G'''<sub>ess</sub>'''x'''‘ —</span>. Im Unendlichen, GOTT, sind <span style="color:#FF6000">„Essenz“</span> und <span style="color:#FF6000">„Existenz“</span> koinzident ,eins‘, und daher untrennbar, und <span style="color:#FF6000">»''darum ist GOTT das einzige ‚Sein’, das notwendig an sich ‚da‘ ist''«</span> ''':''' <span style="color:#00B000">(ABU ALI SINA alias AVICENNA — Muslim)</span>. Der <span style="color:#00B000">(gedachte)</span> ‚Eigenschafts-Begriff‘ <span style="color:#FF6000">„Vollkommenheit (die Größe) GOTTES“</span>, <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, <span style="color:#00B000">(‚Perfektion‘, die unbegrenzte Summe aller ‚positiven Eigenschaften‘ in GOTT)</span> schließt koinzident die ‚Eigenschaft’ <span style="color:#FF6000">„notwendige Existenz für uns“</span> mit ein ''':''' <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub>‘ —</span>. GOTT wäre nicht <span style="color:#FF6000">„vollkommen“</span>, wenn er nicht auch real für uns ‚da‘ wäre, wenn er nicht ,immer schon’ <span style="color:#FF6000">„existierte“</span>. ‚Sein’ ist <u>mehr</u> als ‚Nicht-Sein’. ,Sein’, bzw. ,Existenz’ gehört in GOTT zu den ,Transzendentalia’. Das sind die <span style="color:#00B000">(ultimativen)</span> ,Wesenseigenschaften’ in GOTT. Der unbegrenzt Unendliche, GOTT, ist daher das <span style="color:#FF6000">»''vollkommenste Wesen, über das nichts ,Größeres‘ d.h. Vollkommeneres <u>mehr</u> ‚gedacht‘ werden kann''«</span> ''':''' <span style="color:#00B000">(ANSELM von Canterbury — Christ)</span>. Der ‚Begriff’ <span style="color:#FF6000">„Perfektion GOTTES“</span>, <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, schließt koinzident das <span style="color:#FF6000">„notwendige Dasein GOTTES“</span>, <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x'''‘</span> —, für uns mit ein, ohne einen zeitlichen Anfang und ohne ein zeitliches Ende. Das ist die ‚zeitlos-ewige‘, an sich absolute, und <span style="color:#FF6000">„für uns notwendige Existenz GOTTES“</span> ''':''' <span style="color:#4C58FF">— ‚'''Gx→E'''<sub>not</sub>'''x'''‘ —</span> ''':''' <span style="color:#00B000">(Das ist ein ,regulär‘-mögliches Korollar im 2. Beweisgang aus Term :16: ''':''' <span style="color:#4C58FF">— ‚'''Gy→Yy'''‘ —</span>, mit der <span style="color:#4C58FF">[ Instanz(Y:=E<sub>not</sub>) ]</span>, und der <span style="color:#4C58FF">[ FUB(y:=x) ]</span>; und auch ein ,regulär‘-mögliches Korollar im 3. Beweisgang ''':''' entsprechend der <span style="color:#FF6000">„logischen Implikation”</span> :: <span style="color:#4C58FF">[├ A ├ B ╞ A → B ]</span> von Term :01: <span style="color:#4C58FF">— ‚'''Gx'''‘ — </span> und Term :05: <span style="color:#4C58FF"> —‚'''E'''<sub>not</sub>'''x'''‘ —</span> aus diesem Beweisgang. In Worten ''':''' <span style="color:#FF6000">»</span>''Angenommen, '' <span style="color:#4C58FF">— ‚'''x'''‘ —</span> ''steht für den GOTT der Christen'' ''':''' <span style="color:#4C58FF">— ‚'''G'''‘ — </span>, ''dann existiert dieser GOTT'', <span style="color:#4C58FF">— ‚'''x'''‘ —</span>, ''für uns notwendig'', <span style="color:#4C58FF">— <sub>not</sub> —</span> <span style="color:#FF6000">«</span>.)</span> Der Unendliche, GOTT, ist <span style="color:#FF6000">»''unabhängig von der zufälligen'' <span style="color:#00B000">[ Raum-Zeit-]</span>''Struktur''«</span> unserer ‚vergänglichen‘, ,endlichen‘ Welt, welche prinzipiell vom dreidimensionalen Raum und von der unwiederbringlich ‚vergehenden‘ Zeit geprägt ist. Der ,GOTT der Christen‘ ist <span style="color:#FF6000">»''unabhängig''«</span> von dieser <span style="color:#FF6600">„vergehenden Raum-Zeit“, — »''jenes rätselhafte und anscheinend in sich widersprüchliche Etwas''« <span style="color:#00B000">(GÖDEL)<ref>Kurt GÖDEL, ‚''<span style="font-family: Times;"><big>Eine Bemerkung über die Beziehungen zwischen der Relativitätstheorie und der idealistischen Philosophie‘</big></span>'', in P.A.SCHILPP (Hg.): ‚''<span style="font-family: Times;"><big>Albert Einstein, Philosoph und Naturforscher‘</big></span>'', Seite 406</ref></span> —</span>. Ohne ‚Zeit‘ gibt es keinen zeitlichen Unterschied zwischen ‚Ursache‘ und ‚Wirkung‘, <span style="color:#00B000">(beides ist zeitlos ,eins‘)</span>, und so ist der zeitlos-ewige GOTT, der <span style="color:#FF6000">»''notwendig aus sich ,existiert‘'' «</span> ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ — </span>, <span style="color:#FF6000">„unverursacht“ <span style="color:#00B000">|</span> „ursprungslos“</span> für uns immer schon ‚da‘ ''':''' <span style="color:#00B000">(GÖDEL — ohne religiöses Bekenntnis)</span>. Mit dem GÖDEL-Kalkül ist die <span style="color:#FF6000">„Rede von GOTT“</span> auf eine ‚vernünftige Basis‘ gestellt worden, und ist somit für jeden Menschen nachvollziehbar, <span style="color:#FF6000">»''rein verstandesmäßig, (ohne sich auf den Glauben an irgendeine Religion zu stützen)''«</span>, wie obige Beispiele zeigen. '''Resümee :''' Das GÖDEL-Kalkül zeigt mit <span style="color:#FF6000">»''mathematischer Evidenz''«</span>, was notwendig folgt, wenn die Axiome ‚wahr‘ sind, <span style="color:#00B000">(die Axiome bilden formal-syntaktisch <span style="color:#FF6000">»''die theologische Weltanschauung''«</span> ab)</span>, unter der Voraussetzung, dass die Axiome <span style="color:#FF6000">»''unabhängig von der zufälligen'' <span style="color:#00B000">[ Raum-Zeit-]</span>'' Struktur''«</span> unserer Welt sind. Die ,Verifikation‘ der Axiome und Definitionen von GOTT und seiner Vollkommenheiten gelingt GÖDEL, — entsprechend seiner Unabhängigkeits-Bedingung —, durch den Aufweis ihrer Widerspruchsfreiheit ''':''' sie sind somit ,wahr‘ und, — im Kontext einer <span style="color:#FF6000">»''theologischen Weltanschauung''«</span> —, auch ,annehmbar‘ in unserer ,realen‘ Welt ''':''' <span style="color:#00B000">(siehe Anhang, 2. Beweisgang und Anmerkung-2)</span>. Er vermeidet damit den Fehler, der immer wieder im Diskurs über Gottesbeweise gemacht wird ''':''' GOTT mit seinen Geschöpfen zu vergleichen. Diese logisch-philosophische Rede von GOTT <span style="color:#00B000">(<span style="color:#FF6000">»''ohne sich auf den Glauben an irgendeine Religion zu stützen''«</span>)</span> hat eine <u>mehr</u> als zweitausendjährige Tradition hinter sich. Der <span style="color:#FF6000">„100-Taler-Gott“</span> des Philosophen KANT, hat heute, nachdem der Logiker und Systemtheoretiker GÖDEL sein System vorgelegt hat, an ‚Strahlkraft‘ verloren. Kurt GÖDEL ''':''' ::<span style="color:#FF6000">» ''Die theologische Weltanschauung'', <span style="color:#00B000">[ dass GOTT für uns immer schon ‚da‘ ist ]</span>, ''ist rein verstandesmäßig mit allen bekannten Tatsachen durchaus vereinbar'';«</span> <span style="color:#00B000">[ d.h. sie ist das ,Resultat‘ der, — vom Glauben geleiteten —, ‚theoretischen Vernunft‘, alias ‚reinen Vernunft‘, und nicht bloß das ‚Postulat‘ einer ‚praktischen Vernunft‘, wie KANT meint ]. <span style="color:#FF6000">»''Der'' <span style="color:#00B000">[ christliche ]</span> ''Glaube ist die ‚Pupille‘ im ‚Auge‘ unseres Verstandes.''«</span> (Heilige KATHARINA von Siena, Lehrerin der Kirche, Patronin Europas<ref>vgl. <span style="font-family: Times;"><big>''Gebet 7 ‚Für die neuen Kardinäle‘, Rom, 21. Dezember 1378,''</big></span> aus <span style="font-family: Times;"><big>''Caterina von Siena ,Die Gebete‘.''</big></span> Kleinhain 2019, online: https://caterina.at/werke/gebete/gebete-detailansicht/gebet-7.html</ref> )</span> Der sonst so rationale KANT, hier doch etwas emotionell, <span style="color:#00B000">(als wolle er die Ergebnisse im GÖDEL-Kalkül nicht wahr haben, die belegen, dass er sich bei GOTT geirrt, und die Funktion des christlichen Glaubens für die Philosophie falsch eingeschätzt hat)</span> ''':''' ::<span style="color:#FF6000">»</span> ''Es war etwas ganz Unnatürliches und eine bloße Neuerung des Schulwitzes, aus einer ganz willkürlich entworfenen Idee das Dasein des ihr entsprechenden Gegenstandes selbst ausklauben zu wollen''<ref>vgl. ‚''<span style="font-family: Times;"><big>Kritik der reinen Vernunft</big></span>''‘, Seite 403. https://www.korpora.org/kant/aa03/403.html</ref>.<span style="color:#FF6000">«</span> Für KANT, für die Scholastiker, <span style="color:#00B000">(und auch für uns)</span>, ist es natürlich ‚logisch‘, dass aus einem als ‚möglich’ gedachten Begriff, <span style="color:#FF6000">»</span>''aus einer ganz willkürlich entworfenen Idee''<span style="color:#FF6000">«</span>, keine Existenzaussage abgeleitet werden kann. <span style="color:#00B000">(Aus dem bloß gedachten Begriff ,goldene Berge‘ folgt natürlich nicht, dass es solche in Wirklichkeit auch gibt.)</span> In der philosophisch-<span style="color:#4C58FF">,theologischen’</span> Tradition, die von ARISTOTELES herkommt, ist der Begriff <span style="color:#FF6000">»''GOTT''«</span> jedoch von allen anderen Begriffen so verschieden, so dass für GOTT diese Logik KANTS nicht mehr gilt. GOTT ist ,unvergleichlich‘ und ,einzigartig‘. Dazu der Kommentar von HEGEL ''':''' ::<span style="color:#FF6000">»''Wenn KANT sagt, man könne aus dem Begriff'' <span style="color:#00B000">[ ‚GOTT‘ ]</span> ''die Realität nicht ,herausklauben‘, so ist da der Begriff als endlich gefasst''.« <span style="color:#00B000">[ In der Endlichkeit unserer Welt trifft die Logik KANTS zu, dass dem ‚Begriff‘ nicht ,notwendig‘ das ‚Sein‘ folgt, denn es gibt in ihr die ,Lüge‘, die das ,Wirklich-Sein‘ im Begriff bloß behauptet, ohne dass es ,in Wirklichkeit‘ zutrifft, was sie behauptet. Es gilt hier nach KANT ''':''' »''Sein ist kein reales Prädikat''«. Somit ist ]</span> »''...der Begriff ohne'' <span style="color:#00B000">[ reales ]</span> ''Sein ein Einseitiges und Unwahres, und ebenso das Sein, in dem kein Begriff ist'', <span style="color:#00B000">[ ist ]</span> ''das begrifflose Sein,'' <span style="color:#00B000">[ d.i. das relative ,Noch-Nicht-Begriffene‘ ]</span>.'' Dieser Gegensatz, der in die Endlichkeit fällt'' <span style="color:#00B000">[ im Endlichen zutrifft ]</span>, ''kann bei dem Unendlichen, GOTT, gar nicht statthaben''<ref>Georg Wilhelm Friedrich HEGEL, ‚<span style="font-family: Times;"><big>''Ausführungen des ontologischen Beweises''</big></span>‘ in den ‚<span style="font-family: Times;"><big>''Vorlesungen über die Philosophie der Religion vom Jahr 1831''</big></span>‘ . Hamburg 1966, Seiten 175 bzw. 174</ref>; <span style="color:#00B000">[ denn ,Begriff‘, bzw. ,Denken‘ und ,Sein‘ sind in dem Unendlichen, GOTT, untrennbar und real immer dasselbe. Auf Grund dieser ontologischen Identität ,personifiziert‘ und ,repräsentiert‘ GOTT die ,Wahrheit‘ ''':''' GOTT ist die ,Wahrheit‘. In GOTT, dem <span style="color:#FF6000">„Schöpfer der Welt“</span>, folgt dem ,Begriff‘ immer ,notwendig‘ das ,Sein‘ ''':''' <span style="color:#CC66FF">»''GOTT sprach ''':''' Es werde ,Licht‘. Und es wurde Licht''«, <small>{{Bibel | Genesis |1|3|EU}}</small>;</span> oder auch ''':''' <span style="color:#CC66FF">»''Der Herr sprach, und sogleich geschah es; er gebot, und alles war da''«,</span> <small>{{Bibel | Psalm |33|9|EU}}</small>.]</span>«</span> Das Entscheidende bei der <span style="color:#4C58FF">„theologischen“</span> Interpretation des GÖDEL-Kalküls ist, dass der <span style="color:#00B000">(Begriff)</span> GOTT der Christen ''':''' <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, nicht auf die Ebene seiner ,endlichen‘ Geschöpfe und unserer Welt gestellt wird, <span style="color:#00B000">(d.i. das ‚Universum‘ im ,Urknall‘, die ‚100-Taler‘, ein ‚Tsunami‘, auch ,einfache Modelle‘ von unserer Welt, etc.)</span>, und damit verglichen wird, sondern, dass der GOTT der Christen in seiner Einzigartigkeit und Besonderheit als <span style="color:#FF6000">»''der Unendliche''«</span> belassen und als <span style="color:#FF6000">»''unabhängig von der zufälligen'' <span style="color:#00B000">[ Raum-Zeit-]</span>''Struktur''«</span> unserer vergänglichen Welt, — als <span style="color:#FF6000">»''der Unvergleichliche''«</span> —, verstanden wird. <span style="color:#00B000">(Alle Kritiken des sog. ,ontologischen‘ Gottesbeweises übersehen die Einzigartigkeit und Besonderheit des <span style="color:#FF6000">»''Unendlichen''«</span>, und/oder wollen diese nicht ,wahr‘ haben.)</span> Auch THOMAS von Aquin ,verortet‘ den GOTT ANSELMS, — in seiner Kritik an dessen Theorem —, irrtümlich unter die ,Dinge‘ der uns umgebenden ,Natur‘, wenn er sagt ''':''' GOTT <span style="color:#FF6000">„<span style="font-family: Times;"><big>esse in rerum natura</big></span>“</span>, d.h. wörtlich, dass der GOTT ANSELMS <span style="color:#FF6000">»</span>''in der Natur der Dinge'' <span style="color:#00B000">(unserer Welt)</span> ''existiert''<span style="color:#FF6000">«</span>, und verkennt somit, — wie nach ihm auch KANT —, die ,Unvergleichlichkeit‘ GOTTES, <span style="color:#00B000">(vgl. STh I q.2 a.1 ad 2<ref>„Deus … illud quo maius cogitari non potest; non tamen propter hoc sequitur quod intelligat id quod significatur per nomen, esse in rerum natura; sed in apprehensione intellectus tantum.“ ——— »''GOTT ist'' (nach ANSELM) ''der, über den Größeres nicht mehr gedacht werden kann. Aber nicht deswegen, weil er'', (der Narr von Psalm 14.1, den ANSELM zitiert), ''das versteht, was durch diesen Namen,'' (d.h. mit dem Begriff ,GOTT‘, als der ,Größte‘, im Theorem ANSELMS), ''bezeichnet wird, folgt daraus'', (wie ANSELM meint), ''dass er auch versteht, dass er'', (der GOTT ANSELMS), ''auch in der ,Natur‘ der Dinge'' (unserer Welt) ''existiert''; <span style="color:#00B000">[ was ANSELM so nie gesagt hat ]</span>. ''Daraus folgt nur, dass er'', (als ,GOTT‘), ''bloß in der Auffassung seines Verstandes'', (d.h. nur im Denken des Narren als ,Begriff‘), ''existiert.''« ——— Hier ,verortet‘ THOMAS einerseits den unendlichen GOTT, von dem das Theorem ANSELMS spricht, irrtümlich unter die endlichen Dinge der uns umgebenden ,Natur‘, was sachlich dem theologischen Theorem der Unvergleichlichkeit GOTTES widerspricht, der nicht unter die Dinge unserer Welt eingereiht werden darf. Anderseits verliert er dadurch auch den ,Blick‘ für die Außerordentlichkeit und Besonderheit GOTTES, dessen Natur völlig verschieden und unabhängig von der ,Natur‘ unserer raum-zeitlichen Welt ist. GÖDEL beweist jedoch, mit ANSELM, weil es notwendig, ohne Widerspruch, (»''bloß in der Auffassung unseres Verstandes''«), möglich ist, dass GOTT existiert, ist es korrekt, daraus auch mit Notwendigkeit zu folgern, dass der Glaube des Erzbischofs ANSELM, und der Glaube seiner Anvertrauten, von der Wirklichkeit GOTTES, widerspruchsfrei, logisch richtig, und damit sinnvoll ist; denn Möglichkeit und Wirklichkeit sind in GOTT koinzident ,eins‘. Das ist das Privilegium GOTTES allein, der einzigartig und unvergleichlich ist. Damit zeigt er auf, dass THOMAS die Unvergleichlichkeit und Einzigartigkeit GOTTES in seinem Vorhalt nicht bedacht hat; und außerdem ANSELM missverstanden hat.</ref>)</span>; jedenfalls hier in der Auseinandersetzung mit ANSELM. Dagegen spricht ANSELM im ,''<span style="font-family: Times;"><big>Proslogion</big></span>''‘, Seite 85f, nur von einem <span style="color:#FF6000">„<span style="font-family: Times;"><big>esse et in re</big></span>“</span> GOTTES, d.h. dass GOTT ,auch in Wirklichkeit existiert‘, <span style="color:#FF6000">„<span style="font-family: Times;"><big>quod maius est</big></span>“</span>, was ,größer‘, bzw. ,mehr‘ ist, als <span style="color:#FF6000">„<span style="font-family: Times;"><big>esse solo in intellectu</big></span>“</span>, als nur ,im Verstand zu sein‘; wobei die ,zeitlose-überzeitliche‘ Wirklichkeit, <span style="color:#00B000">(Natur)</span>, GOTTES jedoch völlig verschieden und <span style="color:#FF6000">»''unabhängig von der zufälligen''«</span> Wirklichkeit <span style="color:#00B000">(die ,Natur‘)</span> der ,raum-zeitlichen‘ Welt der Dinge ist. Daher ist sie mit dieser auch nicht vergleichbar. GOTT ist <span style="color:#FF6000">„vollkommen“</span> und alle <span style="color:#FF6000">„Vollkommenheiten“</span> in GOTT, <span style="color:#00B000">(die ultimativen ,Transzendentalia‘)</span>, sind koinzident ,eins‘, — ,fallen <span style="color:#FF6000">„notwendig“</span> perspektivisch in eins zusammen‘, und sind daher konvertierbar. Darum ist auch die Wirklichkeit, <span style="color:#00B000">(Natur)</span>, GOTTES ,einzigartig‘ und ,unvergleichlich‘. Mit Korollar-3 ist die Exklusivität und Außerordentlichkeit GOTTES definitiv im Kalkül ,bewiesen‘ <span style="color:#00B000">( ╞ )</span>. Der abendländische Monotheïsmus ist somit eine ,logische‘ Konsequenz aus den GÖDEL-Axiomen. <span style="color:#00B000">(Das <span style="color:#4C58FF">„theologische“</span> Theorem von der ,Einzigartigkeit‘ und Exklusivität GOTTES, d.h. hier im Kontext ''':''' die exklusive Einheit von GOTT und Mensch in JESUS CHRISTUS; von Vater, Sohn und Geist im <span style="color:#4C58FF">„Dreifaltigen“</span>; von Essenz und Existenz, von Begriff und Sein, von Ursache und Wirkung, von Subjekt und Objekt, von Möglichkeit und Wirklichkeit, und die unbegrenzte Summeneinheit und Koinzidenz der unendlichen Transzendentalien in GOTT, ist, — mit HEGEL —, die Voraussetzung und Bedingung jeder Philosophie ''':''' <span style="color:#FF6000">»''Die Einheit muss am Anfang der Philosophie stehen''«</span>; und ist zugleich auch ihr gesuchtes und bewiesenes Endergebnis und Ziel ''':''' <span style="color:#FF6000">»''Diese Einheit muss auch das Resultat der Philosophie sein''«</span><ref>https://hegel-system.de/de/gottesbeweis.htm#hegels-kritik-an-kant</ref>, was hier im GÖDEL-Kalkül ,logisch‘ mit Korollar-3 verifiziert wird ''':''' <span style="color:#4C58FF">— ‚'''□(∃xGx ∧ ∀y(Gy→x=y))'''‘ —</span> ''':''' <span style="color:#FF6000">»''GOTT ist exklusiv einzigartig''«</span>.)</span> Die Einzigartigkeit GOTTES bedingt die Koinzidenz, den inneren Zusammenhang aller seiner Vollkommenheiten und Zuschreibungen, <span style="color:#00B000">(Axiom-2)</span>, d.h. ihr paarweise, perspektivisches ,Zusammenfallen in eins‘ im Unendlichen, GOTT. ——— Aus der Notwendigkeit aller positiven Eigenschaften und Zuschreibungen, <span style="color:#00B000">(d.h. aus den, an sich, notwendigen, ultimativen Transzendentalien, Axiom-4)</span>, die in GOTT paarweise, als ,Wesenseigenschaften‘ koinzident ,eins‘ sind, <span style="color:#00B000">(Definition-2)</span>, ist die Einzigkeit GOTTES für uns erschließbar, <span style="color:#00B000">(Korollar-3)</span>. Axiom-4 ist die erste, ,modal‘ <span style="color:#FF6000">„notwendige“</span>, d.h. die transzendentale Voraussetzung für Korollar-3. Wenn im Korollar-3 das <span style="color:#4C58FF">— ‚'''x'''‘ —</span> z. B. für GOTT, dem ,Vater‘ der Christen, und das <span style="color:#4C58FF">— ‚'''y'''‘ —</span> für GOTT, dem ,Sohn‘, d.h. für ,JESUS CHRISTUS‘ steht, oder für den ,HEILIGEN GEIST‘, <span style="color:#00B000">(den ,Dreifaltigen GOTT‘ der Christenheit)</span>; oder auch für die Gottesbezeichnung ,GOTT-ADONAI‘ der Juden, oder für die Gottesbezeichnung ,ALLAH‘ der Muslime steht, dann weist dieses Korollar, für <span style="color:#4C58FF">— ‚'''∀y'''‘ —</span>, mit der ,ontologischen Identität‘ ''':''' <span style="color:#4C58FF">— ‚'''x=y'''‘ —</span>, auf die ,Koinzidenz‘ des <span style="color:#4C58FF">„Dreifaltigen“</span>, und auf die <span style="color:#4C58FF">„Hypostatische Union“</span> der Naturen von GOTT und Mensch in JESUS CHRISTUS, bzw. auch auf den inneren Zusammenhang der drei Buch-Religionen hin. ===<div class="center"><span style="color:#660066">Anhang : das GÖDEL-Kalkül</span></div>=== In der ,Legende zum GÖDEL-Kalkül‘ wird an einige Basics erinnert, und diese für die operative Praxis im anstehenden Kalkül, mit Hilfe von logischen Meta-Terme, adaptiert. Zusätzliche, notwendige Regeln und Gesetze werden dann ,benannt‘, wenn sie in der Kalkül-Durchführung auftreten. {|class="wikitable" |- ! <div class="center"><span style="color:#660066">Legende zum GÖDEL-Kalkül</span></div> |- | <small> <math>\begin{align} {\color{blue}\text{ ◇}} \text{ :: konsistent ↔ widerspruchsfrei ↔ möglich ↔ denkbar, } & {\color{blue}\text{ □}} \text{ :: notwendig ↔ wirklich, für jede mögliche Welt ↔ exklusiv} \\ \text{logischer Meta-Term ::} {\color{blue}\text{ [ A ├ B ]}} \text{ ::} & \text{ „aus A folgt im Kalkül ,regulär‘ (├ ) B.“} \\ \text{ A, B sind Aussagen über Eigenschaften, (A ist keine Eigenschaft);} & \text{ die Aussage, z.B. in der Kalkül-Zeile 10, wird als ,Term :10:‘ bezeichnet} \\ {\color{blue}\text{ AE}} \text{ ::} & \text{ Argument Einführung, Prämisse, Postulat } \\ {\color{blue}\text{ Xx}} \text{ ::} & \text{ „X ist eine Eigenschaft der Individuum-Variable x.“ } \\ {\color{blue}\text{ ¬PX}} \text{ ::} & \text{ „X ist keine positive Eigenschaft, ist keine Perfektion, ist nicht vollkommen.“ } \\ {\color{blue}\text{ Instanz(X := Y)}} \text{ ::} & \text{ Substitution der Eigenschaft X durch die ,bestimmte‘ Eigenschaft Y } \\ \text{ (Eine ,Instanz‘ ist ein Exemplar aus einer Menge gleichartiger Dinge;} & \text{ hier die ,bestimmte‘ Eigenschaft Y, als Ersatz für das unbestimmte X.) } \\ {\color{blue}\text{ FUB(x := y)}} \text{ ::} & \text{ Freie-Um-Benennung der Individuum-Variable x in y } \\ \text{ ,modal‘-frei gewählte Kalkül-Prämisse ::} {\color{blue}\text{ Gx}} \text{ ::} & \text{ „Die Variable x steht für den GOTT der Christen.“ } \\ {\color{blue}\text{ [ G(y) ├ ⱯyG(y) ]}} \text{ ::} & \text{ All-Operator-Einführung der Variable y für GOTT } \\ \text{ „Angenommen, die Variable y steht für GOTT, dann } & \text{folgt ,regulär‘ (├ ), dass auch jedes y im Kalkül für GOTT steht.“}\\ {\color{blue}\text{[ ⱯXA(X) ├ A(X) ]}} \text{ ::} & \text{ All-Operator-Beseitigung für die substituierte Eigenschaft X } \\ \text{ „Wenn X durch eine ,bestimmte‘ Eigenschaft ,instanziiert‘ ist oder } & \text{wird, dann kann der All-Operator von X ,regulär‘ (├ ) beseitigt werden.}\\ {\color{blue}\text{ KOMM(↔)}} \text{ ::} & \;{\color{blue}\text{[ (A↔ B) ↔ (B ↔ A) ]}} \text{ :: Kommutativgesetz für ( ↔ )}\\ {\color{blue}\text{ DIST(□∧)}} \text{ ::} & \;{\color{blue}\text{[ (□A ∧ □B) ↔ □(A ∧ B) ]}} \text{ :: Distributivgesetz für (□∧ )} \\ \text{ (hypothetischer Syllogismus, häufige logische Schlussregel) ::} & \;{\color{blue}\text{[ A → B, A ├ B ]}} \text{ :: (Modus ponendo ponens) :: Abtrennregel.} \\ \text{ „Wenn es wahr ist, dass aus A ein B folgt, und wenn A wahr ist, } & \text{dann ist im Kalkül ,regulär‘ (├ ) ableitbar, dass auch B wahr ist.“} \\ \text{ (negativer hypothetischer Syllogismus) ::} & \;{\color{blue}\text{[ A → B, ¬B ├ ¬A ]}} \text{ :: (Modus tollendo tollens)} \\ \text{ „Wenn es wahr ist, dass aus A ein B folgt, und wenn B falsch ist, } & \text{dann ist im Kalkül ,regulär‘ (├ ) ableitbar, dass auch A falsch ist.“} \\ \text{''KONDITIONALER BEWEIS“ ::} & \;{\color{blue}\text{[ ├ A ├ B ╞ A → B ]}} \text{ :: (logische Implikation)} \\ \text{ „Angenommen, A ist ,regulär‘ Axiom oder Prämisse, und B ist im } & \text{Kalkül ,regulär‘ abgeleitet, dann ist ,bewiesen‘ ( ╞ ) : A impliziert B, ist wahr.“} \\ \text{''INDIREKTER BEWEIS“ ::} & \;{\color{blue}\text{[ ├ ¬A → F ╞ A ]}} \text{ :: (Reductio ad absurdum)} \\ \text{ „Wenn im Kalkül aus ¬A ,regulär‘ eine Kontradiktion } & \text{F folgt, dann ist A ,bewiesen‘ ( ╞ ) : A ist ,wahr‘.“} \\ \end{align}</math> </small> |} A. FUHRMANN ''':''' <span style="color:#FF6000">»</span> ''Eine Prädikatenlogik zweiter Stufe ist eine Logik, in der die Quantoren auch Eigenschaftsausdrücke <span style="color:#00B000">(<span style="color:#FF6000">„Prädikate”</span>)</span> binden können''. <span style="color:#00B000">[ Die ,Prädikate‘ werden in einem Kalkül dieser Logik durch Definitionen ,bestimmt‘ ]</span>. ''Wir werden uns im folgenden recht frei einer dafür geeigneten formalen Sprache bedienen. Äußere Quantoren werden meist weggelassen und wir schreiben kurz'' <span style="color:#4C58FF">— ‚'''Xx'''‘ — </span> ''bzw.'' <span style="color:#4C58FF">— ‚'''PX'''‘ — </span> ''um auszudrücken, dass das Individuum'' <span style="color:#4C58FF">— ‚'''x'''‘ — </span> ''die Eigenschaft'' <span style="color:#4C58FF">— ‚'''X'''‘ — </span> ''hat, bzw. dass die Eigenschaft'' <span style="color:#4C58FF">— ‚'''X'''‘ — </span> ''die höherstufige Eigenschaft'' <span style="color:#4C58FF">— ‚'''P'''‘ — </span> ''<span style="color:#00B000">(für <span style="color:#FF6000">„positiv”</span>)</span> hat;'' <span style="color:#00B000"> [ wobei die Eigenschaft <span style="color:#4C58FF">— ‚'''P'''‘ — </span> als einzige im Kalkül ,unbestimmt‘ bleibt ]</span>. <span style="color:#FF6000">«</span><ref>A. FUHRMANN ‚''<span style="font-family: Times;"><big>‚G‘ wie Gödel. Kurt Gödels axiomatische Theologie</big></span>''‘, Seite 6, Anmerkung 3. Konform mit seinem Artikel in ‚''<span style="font-family: Times;"><big>Logik in der Philosophie</big></span>''‘ hg. v. P. SCHROEDER-HEISTER, W. SPOHN und E. OLSSON. 2005, Synchron, Heidelberg.</ref> Der All-Quantor für Eigenschaften, hier im GÖDEL-Kalkül der ,modalen‘ Prädikatenlogik zweiter Stufe, bindet die ,unbestimmte‘ Eigenschafts-Variable <span style="color:#4C58FF">— ‚'''X'''‘ —</span> ausschließlich nur in den Definitionen im 2. und 3. Beweisgang . <span style="color:#00B000"> (Im ersten Beweisgang gibt es keine Definition.)</span> Dieser All-Quantor wird dann jedes Mal in der Beweis-Durchführung durch die Substitution ''':''' <span style="color:#4C58FF"> [ Instanz(X:= ..) ]</span> mit ,bestimmte‘ Eigenschafts-Konstanten wie <span style="color:#4C58FF">— (X:= G) —</span>, bzw. <span style="color:#4C58FF">— (X:= ¬Y) —</span>, oder <span style="color:#4C58FF">— (X:= E<sub>not</sub>) —</span> ,regulär‘ <span style="color:#00B000">(├ )</span> beseitigt ''':''' <span style="color:#4C58FF"> [ ⱯXA(X) ├ A(X) ]</span>; wobei die Eigenschafts-Konstante im Kalkül entweder als Zwischenergebnis ,regulär‘ abgeleitet, <span style="color:#00B000">(,errechnet‘)</span>, oder mit einer Definition schon ,bestimmt‘ worden ist. Die spezifische ‚Eigenschaft‘ einer Eigenschaft wird hier, in der formalen Syntax der ,modalen‘ Prädikatenlogik zweiter Stufe, als eine tiefer gestellte Abkürzung <span style="color:#00B000">(als Index)</span> an ihre Trägereigenschaft angehängt, wie z. B. ‚wesentlich‘, bzw. ‚essentiell‘ durch <span style="color:#4C58FF"> — <sub>ess</sub> —</span>, oder ‚notwendig‘ durch <span style="color:#4C58FF"> — <sub>not</sub> —</span>. In der Definition-3 steht der Term ''':''' <span style="color:#4C58FF"> —‚'''E'''<sub>not</sub>'''x'''‘ —</span>, um auszudrücken, dass das Individuum <span style="color:#4C58FF">— ‚'''x'''‘ —</span> notwendig <span style="color:#4C58FF">— <sub>not</sub> —</span> die Eigenschaft ''':''' <span style="color:#4C58FF">— ‚'''E'''‘ —</span>, für ,Existenz‘, hat, d.h. <span style="color:#FF6000">»''das <span style="color:#4C58FF">‚'''x'''‘</span> existiert notwendig''«</span>. Der schon von GÖDEL indizierte Term ''':''' <span style="color:#4C58FF">—‚'''G'''<sub>ess</sub>'''x'''‘ —</span> kann gelesen werden als ''':''' <span style="color:#FF6000">»''Das Individuum <span style="color:#4C58FF">‚'''x'''‘</span> hat die Wesenseigenschaft, <span style="color:#4C58FF"> — <sub>ess</sub> — </span> ''':''' GOTT zu sein, <span style="color:#4C58FF">‚'''G'''‘ </span>''«</span>, statt der ,an sich‘ konformen, aber <span style="color:#4C58FF">„theologisch“</span> etwas ungenauen Formulierung ''':''' <span style="color:#FF6000">»''das'' <span style="color:#4C58FF">‚'''x'''‘</span> ''ist wesentlich göttlich''«</span>; oder mit der Voraussetzung ''':''' <span style="color:#4C58FF">— ‚'''Gx'''→'''G'''<sub>ess</sub>'''x'''‘ — </span> deutlicher und <span style="color:#4C58FF">„theologisch“</span> korrekt ''':''' <span style="color:#FF6000">»''Wenn'' <span style="color:#4C58FF">‚'''x'''‘</span> ''für den GOTT der Christen'', <span style="color:#4C58FF">‚'''G'''‘</span>, ''steht, dann ist GOTT-Sein'', <span style="color:#4C58FF">‚'''G'''‘</span>, <span style="color:#00B000">(,Existenz‘)</span> ''das Wesen dieses GOTTES'', <span style="color:#4C58FF">— <sub>ess</sub>‚'''x'''‘ —</span>, <span style="color:#00B000">(,Essenz‘)</span>«</span>; wobei, — entsprechend der ,methodologischen‘ Prämisse des Kalküls <span style="color:#00B000">(<span style="color:#4C58FF">— ‚'''Gx'''‘ — </span> ''':''' das <span style="color:#4C58FF">‚'''x'''‘</span> steht für den ,GOTT der Christen‘)</span> —, bei der Interpretation der Terme dieses besonderen Kalküls, die <span style="color:#4C58FF">„christliche Theologie”</span> für den Begriff <span style="color:#FF6000">„GOTT”</span>, Korrektur und die leitende Instanz ist. Dabei muss die Dreifach-Äquivalenz von <span style="color:#4C58FF"><span style="color:#4C58FF">— ‚'''G'''‘ — </span></span>berücksichtigt werden. Welche der drei Äquivalenzen, bzw. Lesearten von <span style="color:#4C58FF">— ‚'''G'''‘ — </span> bei einem bestimmten Term im Kalkül zulässig ist, muss <span style="color:#4C58FF">„theologisch”</span> überprüft und evaluiert werden. Bei manchen können sogar alle drei Lesearten <span style="color:#4C58FF">„theologisch”</span> zulässig sein. Warum es in der modalen Prädikatenlogik zweiter Stufe, im GÖDEL-System, ,Definitionen‘ gibt, erklärt GÖDEL formal-syntaktisch ''':''' <span style="color:#FF6000">»''Definitionen dienen ja nur der kürzeren Schreibwelse und sind daher prinzipiell überflüssig.''«</span> <span style="color:#00B000">(Aus der Anmerkung 6 in seinem Hauptwerk ''':''' ,''<span style="font-family: Times;"><big>Über formal unentscheidbare Sätze der Principia Mathematica und verwandter Systeme I</big></span>''‘.)</span> Für die <span style="color:#4C58FF">„theologische”</span> Interpretation und Hermeneutik seines Kalküls, sind die ,Definitionen‘ im GÖDEL-System jedoch wesentlich, und letztlich entscheidend. Erst dadurch wird sein Axiomensystem zur <span style="color:#4C58FF">„axiomatischen Theologie”</span>. GÖDEL gibt selbst den hermeneutischen Hinweis dazu, wenn er über den höherstufigen Eigenschaftsbegriff <span style="color:#FF6000">»''positiv''«</span> sagt, der nur ,indirekt‘ definiert wird, jedoch mit seinem gesamten Axiomensystem ''':''' <span style="color:#FF6000">»''Positiv bedeutet positiv im moralisch ästhetischen Sinne, (unabhängig von der zufälligen Struktur der Welt). Nur dann sind die Axiome wahr''.«</span> Die Deutung dieses ,höherstufigen‘ Begriffs als ein anderes Wort für <span style="color:#FF6000">„Transzendentalia“</span> ergibt sich aus der <span style="color:#4C58FF">„theologischen”</span> Evaluierung, d.h. der Einordnung des GÖDEL-Systems in die ,laufende‘ <span style="color:#FF6000">„Rede von GOTT“</span>, seit Menschen, sich über den Sinn der Welt und unseres Lebens in ihr, Gedanken machen. GOTT, der ,transzendent‘, — unabhängig —, zur Welt ist, ist Thema im Theorem ANSELMS, um das es ja im GÖDEL-Kalkül geht. Eine <span style="color:#4C58FF">„theologische”</span> Hermeneutik des GÖDEL-Systems ist daher legitim, die, als ein Bemühen um ein überzeugendes Verstehen, aus dem <span style="color:#4C58FF">„theologischen”</span> Vorwissen vieler Generationen schöpft. Um philosophische, und sogar <span style="color:#4C58FF">„theologische”</span> Theoreme exakt zu formulieren, und untersuchen zu können, hat der Ausnahmelogiker GÖDEL, im 20. Jahrhundert, ein Tor aufgestoßen, das uns ermöglichen kann, <span style="color:#FF6000">»''mathematisch evident''«</span>, und logisch objektiv nachprüfbar, in diesen Disziplinen zu argumentieren. Mit seiner modalen Prädikatenlogik zweiter Stufe, hat GÖDEL dem alten Wunsch eines Raimundus LULLUS, eines Gottfried Wilhelm LEIBNIZ, eines Immanuel KANT, und anderer, nach einer nachprüfbaren ,Universalsprache‘ in den Geisteswissenschaften, entsprochen; analog zur Mathematik, als Universalsprache in den Naturwissenschaften. Der sog. ,Theorembeweiser‘ der Wissenschaftler Christoph BENZMÜLLER und Bruno WOLTZENLOGEL-PALEO, mit Hilfe eines Computers, im 21. Jahrhundert, ist die kongeniale und logische Folge aus diesem Quanten-Schritt GÖDELS. In der folgenden Neu-Kalkülisierung, wird jeder einzelne operative Logik-Schritt des Kalküls in der '''linken Spalte''' nummeriert und als Term-Ergebnis angezeigt, und in der '''rechten Spalte''' werden die dafür benötigten Term-Komponenten und die dabei angewendeten Logik-Regeln und -Gesetze, mit Meta-Terme, dokumentiert. Am Anfang stehen die Ressourcen und das angestrebte Ziel des Beweisganges, <span style="color:#00B000">(das Theorem)</span>. Die GÖDEL Axiome und Definitionen, die Theoreme und Korollare, die Zwischenergebnisse, das Endergebnis, und die logischen Meta-Terme, <span style="color:#00B000">[ in eckigen Klammern ]</span>, werden kontextabhängig, <span style="color:#00B000">(durch ''„Benennungen“'')</span>, interpretiert, <span style="color:#00B000">(angezeigt durch ,Interpretationspunkte‘ — '''::''' —, falls nötig)</span>. Der jeweilige Beweisgang wird in den Anmerkungen ausführlich und umfassend kommentiert. Die Kalkül-Prämissen, <span style="color:#00B000">(<span style="color:#4C58FF">'''AE:'''</span> Argument Einführung)</span>, sind der modal-frei gewählte Einstieg in das Kalkül. Sie dokumentieren, zusammen mit dem angestrebten Beweis-Ziel, eine bestimmte Problemlage in einem externen Diskurs, der mit dem modalen Logik-System hier, formal-syntaktisch überprüft, und gegebenenfalls, verifiziert oder falsifiziert werden soll. Korollare sind einfache, logische Folgerungen aus dem jeweiligen Beweisgang. Theoreme und Korollare sind ,modal‘ gleichwertig. ====<div class="center"><span style="color:#660066">1. Beweisgang</span></div>==== {|class="wikitable" |- ! <div class="center"><span style="color:#660066">GÖDELS ontologischer Beweis für Theorem 1, (Möglichkeitsbeweis)</span></div> |- ! <span style="color:#00B000">''Terme der erweiterten Prädikatenlogik zweiter Stufe__________ „Benennungen“ und durchgeführte Logik-Operationen''</span> |- | <small> <math>\begin{align} \text{(Axiom 1.1)} & \quad P \neg X \;\Longrightarrow\;\ \neg P\ X\ & \ & \text{„Wenn die Negation von X positiv ist, dann ist die Eigenschaft X nicht positiv“} \\ \text{(Axiom 2)} & \quad (P\ X \wedge \;\Box \;\forall x (\ X\ x \Longrightarrow \ Y\ x)) \Longrightarrow \ P\ Y & \ & \text{„Die Eigenschaften Y, die aus einer positiven Eigenschaft X modal} \\ \text{ } & \quad & \ & \; \; \text{notwendig folgen, sind auch positive Eigenschaften“} \\ \text{(Axiom 3)} & \quad P\ G \ & \ & \text{„Göttlichkeit, GOTT-Sein, ist eine pos. Eigenschaft“ ↔ „GOTT ist perfekt“} \\ \text{[RK]} &\quad \Box\; \forall x A \;\Longrightarrow\;\Box\; \forall x B\; \text{ ├ }\;\Box \; \forall x (A \Longrightarrow\; B)\ & \ & \; \text{( :: Modales Prinzip KRIPKE-Γ-Ɐx)} \\ \text{(Theorem 1)} &\quad P\ X \;\Longrightarrow\; \Diamond \; \exists x \ X \ x \ & \ & \text{ (◇ :: „möglich“ ↔ „konsistent“ ↔ „denkbar“; □ :: „notwendig“) } \\ \text{ } & \text{„Positive Eigenschaften sind konsistent“} & \ & \Longleftarrow\; \text{was zu beweisen ist !} \\ \text{01} & \quad P\ X \ & \ & \text{ AE: „Angenommen, es gibt positive Eigenschaften, Perfektionen“} \\ \text{02} & \quad P\ X \;\Rightarrow\; \neg \Diamond \; \exists x \ X \ x \ & \ & \text{ AE: „Angenommen, positive Eigenschaften sind nicht konsistent“} \\ \text{03} & \quad (\neg x = .. )\ & \ & \text{ AE: „Es gibt die Eigenschaft, nicht mit x identisch zu sein“ :: (ungleich)} \\ \text{04} & \quad (\ x = .. )\ & \ & \text{ AE: „Es gibt die Eigenschaft, mit x identisch zu sein“ :: (gleich)} \\ \text{05} & \quad \text{ ├ }\; \neg \Diamond \; \exists x \ X \ x \ & \ & \text{:01:02:[Modus ponendo ponens] :: [A, A → B├ B] :AE:} \\ \text{06} & \quad \neg\neg \Box \neg \exists x \ X \ x \ & \ & \text{:05:[ ◇A ↔ ¬□¬A] :: (Modalregel)} \\ \text{07} & \quad \neg\neg \Box \neg\neg \forall x \neg X \ x \ & \ & \text{:06:[∃xA ↔ ¬Ɐx¬A] :: (Quantoren Regel)} \\ \text{08} & \quad \text{ ├ }\; \Box \; \forall x \neg X \ x \ & \ & \text{:07:NEG :: [¬¬A↔A] :: (Gesetz der Aussagenlogik)} \\ \text{09} & \quad \Box \; \forall x \neg X \ x \Leftrightarrow\ W & \ & \text{:02:08:[(:02:↔W) → (├:08:↔W)] :: (Kalkülregel)} \\ \text{10} & \quad \Box \; \forall x \ X \ x \Leftrightarrow\ F & \ & \text{:09:[(¬A↔W)↔(A↔F)] :: (Regel für Wahrheitswerte)} \\ \text{11} & \quad \Box \; \forall x (\neg x = x ) \Leftrightarrow \ F \; \ & \text{ } & \text{□ⱯxXx:03:Instanz(X:=(¬x=..)) ⇒ Kontradiktion !} \\ \text{12} & \quad \Box \; \forall x (\ X \ x \Rightarrow\; (\neg x = x)) & \text{ } & \text{:10:11:[(:10:↔F) → (:11:↔F)] :: „ex falso sequitur quotlibet“ :[RK]} \\ \text{13} & \quad \ P\ X \wedge \;\Box \; \forall x (\ X \ x \Rightarrow\; (\neg x = x)) & \ & \text{:01:12:[Konjunktion] :: [A, B ├ A∧B]} \\ \text{14} & \quad \ (P\ X \wedge \;\Box \; \forall x (\ X \ x \Rightarrow \; (\neg x = x))) \Rightarrow \; P (\neg x = .. ) & \ & \text{(A2):Instanz(Y:=( ¬x= ..)) :: (Substitution für Eigenschaften)} \\ \text{15} & \quad \ P (\neg x = .. ) & \ & \text{:13:14:[Modus ponens] :: (logische Schlussregel)} \\ \text{16} & \quad \ P (\neg x = .. )\;\Rightarrow\ \neg P (\ x = .. )\ & \ & \text{(A1.1):Instanz(X:=(x=..))}\\ \text{17} & \quad \neg P (\ x = .. )\ & \ & \text{:15:16:[Modus ponens]}\\ \text{18} & \quad \Box \; \forall x \ (x = x ) \Leftrightarrow \ W \; \ & \ & \text{□ⱯxXx:04:Instanz(X:=(x=..)) ⇒ Tautologie !} \\ \text{19} & \quad \Box \; \forall x (\ X \ x \Rightarrow\; (x = x)) & \text{ } & \text{:10:18:[(:10:↔F) → (:18:↔W)] :: „ex falso sequitur etiam verum“ :[RK]} \\ \text{20} & \quad \ P\ X \wedge \;\Box \; \forall x (\ X \ x \Rightarrow\; (x = x)) & \ & \text{:01:19:[Konjunktion] } \\ \text{21} & \quad \ (P\ X \wedge \;\Box \; \forall x (\ X \ x \Rightarrow\; (x = x))) \Rightarrow \ P (x = .. ) & \ & \text{(A2):Instanz(Y:=(x=..))} \\ \text{22} & \quad \ P (\ x = .. )\ & \ & \text{:20:21:[Modus ponens]}\\ \text{23} & \quad \text{ ├ }\; (\neg P (\ x = .. )\ \wedge \ P (\ x = .. )) \Leftrightarrow\ F & \ & \text{:17:22:[Konjunktion] ⇒ Kontradiktion !}\\ \text{24} & \quad \neg \Diamond \; \exists x \ X \ x \Rightarrow (\neg P (\ x = .. )\ \wedge \ P (\ x = .. )) & \ & \text{:05:23:[├A├B╞ A→B] :: ''KONDITIONALER BEWEIS''}\\ \text{25} & \quad \neg\neg \Diamond \; \exists x \ X \ x & \ & \text{:24:23:[Modus tollendo tollens] :: [A→B,¬B ├ ¬A]}\\ \text{26} & \quad \text{ ├ }\; \Diamond \; \exists x \ X \ x & \ & \text{:25:NEG; bzw. :05:23:[├¬A→F ╞ A] :: ''INDIREKTER BEWEIS''}\\ \text{27} & \quad \ P\ X \;\Longrightarrow\; \Diamond \; \exists x \ X \ x \ & \ & \text{:01:26:[├A├B ╞ A→B]} \\ \text{(Theorem 1)} & \;\text{„Positive Eigenschaften sind konsistent“} & \ & \Longleftarrow\; \text{was zu beweisen war !} \\ \text{28} & \quad \ P\ G \;\Longrightarrow\; \Diamond \; \exists x \ G \ x \ & \ & \text{:27:Instanz(X:=G) } \\ \text{29} & \quad \Diamond \; \exists x \ G \ x \ & \ & \text{(A3):28:[Modus ponens]} \\ \text{(Korollar 1)} & \;\text{„Das Dasein GOTTES ist definitiv denkbar“} & \ & \text{„Es ist widerspruchsfrei möglich, dass es GOTT gibt“} \\ \end{align}</math> </small> |} Anmerkung-1 ''':''' <span style="color:#00B000">(Der GÖDEL-Term <span style="color:#4C58FF">— ‚'''PX'''‘ —</span>, im Axiom-2 ist an sich überflüssig, da dieser hier als Prämisse :01: ohnehin ,angenommen‘ wird. Der Beweisgang kommt mit Axiom-2 auch ohne diesen GÖDEL-Term zum selben Ergebnis, und verkürzt sich damit sogar um zwei Schritte ''':''' Zeile 13 und Zeile 20 sind dann unnötig.)</span> Der Beweisgang geht mit Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, als Kalkül-Ressource, prinzipiell von der Existenz eines GOTTES aus. Mit der Prämisse :01: <span style="color:#00B000">(hier im 1. Beweisgang)</span> postuliert GÖDEL vorerst allgemein, dass es <span style="color:#FF6000">»''Vollkommenheit, d.h. positive Eigenschaften''«</span> in unserer Welt gibt ''':''' <span style="color:#4C58FF">— ‚'''PX'''‘ —</span>, ohne im Kalkül zu definieren, was darunter zu verstehen ist. Definiert wird dann <span style="color:#00B000">(im 2. Beweisgang)</span>, was eine <span style="color:#FF6000">»''wesentliche Eigenschaft''«</span> ist ''':''' <span style="color:#4C58FF">— ‚'''X'''<sub>ess</sub>‘ —</span>, <span style="color:#00B000">(im Sinne von ,Transzendentalia‘)</span>; und mit Hilfe dieser Eigenschaft definiert GÖDEL <span style="color:#00B000">(im 3. Beweisgang)</span>, was eine <span style="color:#FF6000">»''notwendige Existenz''«</span> ist ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>‘ —</span>, die er <span style="color:#00B000">(im selben Beweisgang)</span> axiomatisch mit den <span style="color:#FF6000">»''positiven Eigenschaften in GOTT''«</span> gleich setzt ''':''' Axiom-5 ''':''' <span style="color:#4C58FF"> —‚'''PE'''<sub>not</sub>‘ —</span>. Erst im 2. Beweisgang wird mit Term :13:, nach einer <span style="font-family: Times;"><big>,Reductio ad absurdum‘</big></span>, definitiv bewiesen <span style="color:#00B000">( ╞ )</span>, dass die, von GÖDEL, hier postulierten, <span style="color:#00B000">(allgemeinen)</span>, positiven Eigenschaften, <span style="color:#4C58FF">— ‚'''PX'''‘ —</span>, tatsächlich auch in GOTT <span style="color:#FF6000">»''positive Eigenschaften''«</span>, <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, sind; <span style="color:#00B000">(das sind die ultimativen ,Transzendentalia‘ in GOTT)</span>. Jetzt aber muss vorerst der ,Wunsch‘, bzw. die LEIBNIZ-Frage beantwortet werden ''':''' Ob, mit <span style="color:#FF6000">»''mathematischer Evidenz''«</span>, <span style="color:#FF6000">»''GOTT''«</span> ,möglich‘ ist, der, nach traditioneller Auffassung, <span style="color:#FF6000">»''ein Wesen von äußerster Größe und Vollkommenheit'' <span style="color:#00B000">[ ist ]</span>, ''das alle Grade derselben in sich schließt''«</span>, <span style="color:#00B000">(nach LEIBNIZ; was GÖDEL mit Definition-1 ,abbildet‘)</span>. Wenn man also beweisen will, dass die Existenz eines solchen ''<span style="color:#FF6000">»GOTTES«</span>'' ,möglich‘ sein soll, dann muss man beweisen, dass dieses postulierte System der <span style="color:#FF6000">»''positiven Eigenschaften in GOTT''«</span> möglich und formal ,widerspruchsfrei‘ ist. Das Ergebnis des 1. Beweisganges, das ,Theorem-1‘, <span style="color:#00B000">(,Erster Satz‘)</span>, fasst A. FUHRMANN zusammen als ''':''' <span style="color:#FF6000">»''Positive Eigenschaften sind konsistent''«</span>. Wenn sie nicht konsistent wären, käme es zu unlösbaren Widersprüchen, <span style="color:#00B000">(Term :24:)</span>. Term :27: ,besagt‘ ''':''' <span style="color:#FF6000">»''Es ist definitiv, d.h. ohne Widerspruch möglich, dass es positive Eigenschaften gibt''«</span>; denn die Behauptung, es sei nicht möglich, dass es positive Eigenschaften, <span style="color:#00B000">(das sind die ,Transzendentalia‘)</span>, in unserer Welt gibt, führt zu einem Widerspruch, und ist daher falsch und ,unlogisch’. Einmal Axiom-1 und zweimal Axiom-2, <span style="color:#00B000">(das die Gleichwertigkeit aller positiven Eigenschaften nachdrücklich klarstellt)</span>, sichern hier die Konsistenz <span style="color:#FF6000">»''aller positiven Eigenschaften in der Welt'', <span style="color:#00B000">[ die ,Transzendentalien‘ ]</span>, ''und damit auch die, die in GOTT sind''«</span>. <span style="color:#00B000">(Der 2. Beweisgang bestätigt, dass es in GOTT tatsächlich positive Eigenschaften gibt.)</span> Die ,Gleichwertigkeit‘ aller Transzendentalia, <span style="color:#00B000">(ihre ,Äquivalenz‘)</span>, ist formal-syntaktisch daran erkennbar, dass die beiden Eigenschafts-Variablen <span style="color:#4C58FF">— ‚'''X'''‘ —</span> und <span style="color:#4C58FF">— ‚'''Y'''‘ —</span> im Axiom-2 für beliebige, unterschiedliche ,positive‘ Eigenschaften gegenseitig austauschbar, <span style="color:#00B000">(,konvertierbar‘)</span>, sind. Das heißt, dass beliebige, unterschiedliche ,positive‘ Eigenschaften, für die diese Variablen stehen, sich paarweise, wechselseitig ,implizieren‘, einschließen, und damit notwendig voneinander abhängen, d.h. koinzident ,eins‘ sind, konvertierbar, und somit gleichwertig sind; entsprechend dem Theorem von den Transzendentalia. Zu Term :29:, dem Korollar zu Theorem-1, notiert GÖDEL am 10. Feb. 1970, <span style="color:#00B000">(übersetzt von Joachim BROMAND)</span> ''':''' <span style="color:#FF6000">»''◇∃xG(x) besagt, dass das System aller positiver Eigenschaften kompatibel ist'',</span> <span style="color:#00B000">[ d.h. miteinander verträglich, weil ohne Widersprüche ].</span> <span style="color:#FF6000">''Dies ist ,wahr‘ auf Grund von Axiom-2,'' <span style="color:#00B000">[ weil alle positiven Eigenschaften, d.h. die Transzendentalien, koinzident gleichwertig und konvertierbar sind ]</span>.«</span> Darum ist es definitiv ,möglich‘, dass es diesen GOTT gibt, der <span style="color:#FF6000">»''alle Grade der Vollkommenheit in sich schließt''«</span> und <span style="color:#FF6000">»''über dem ,Größeres‘ nicht mehr gedacht werden kann''«</span>, und, in weiterer Konsequenz, ist der GOTT-Glaube deshalb ,notwendig‘ widerspruchsfrei und sinnvoll, nach Theorem-3 ''':''' <u>Wenn</u> es ,ohne Widerspruch‘ ''<span style="color:#FF6000">»möglich, bzw. denkbar«</span>'' ist, dass es ''<span style="color:#FF6000">»GOTT«</span>'' gibt, <u>dann</u> folgt daraus ''<span style="color:#FF6000">»notwendig«</span>'' ''':''' es ist auch ,widerspruchsfrei‘, wenn man als Voraussetzung ,annimmt‘, dass es ''<span style="color:#FF6000">»GOTT wirklich, für jede mögliche Welt«</span>'' gibt ''':''' Term :11: im 3. Beweisgang. Der Wenn-Satz ist hier mit Korollar-1 bewiesen; der Dann-Satz wird im 3. Beweisgang bewiesen <span style="color:#00B000">( ╞ )</span>, d.i. die Widerspruchsfreiheit und Sinnhaftigkeit des GOTT-Glaubens. Die ontologische ,Identität‘, d.h. die ,Gleichsetzung‘, bzw. die ,Koinzidenz‘ von Strukturen, die in der Endlichkeit für uns verschieden sind, jedoch in dem unbegrenzt Unendlichen, GOTT, paarweise, perspektivisch in eins zusammenfallen, wie ,Sein‘ und ,Wesen‘, wie ,Ursache‘ und ,Wirkung‘ usw., und auch die Äquivalenz und Austauschbarkeit der Transzendentalien, haben im GÖDEL-Kalkül die logisch-syntaktische Form einer, aus sich, ,modal‘ notwendigen Implikation zwischen zwei verschiedenen, gegenseitig austauschbaren Eigenschafts-Variablen ''':''' <span style="color:#4C58FF">— ‚'''□∀x(Xx→Yx)'''‘ —</span>. Dieses Term-Element stellt formal-syntaktisch die Gleichwertigkeit, <span style="color:#00B000">(Äquivalenz)</span>, bzw. die paarweise Koinzidenz aller positiven Eigenschaften und Zuordnungen in GOTT dar; sowohl hier im Axiom-2, als auch in der Definition-2 über die ,Wesenseigenschaften‘, im 2. Beweisgang, mit jeweils verschiedenen, frei umbenennbaren, Individuum-Variablen. Dieses Term-Element ,gilt‘ allgemein jedoch nur für positive Eigenschaften, alias ,Transzendentalia‘, und wird sofort <span style="color:#FF6000">„modal falsch“</span>, wenn für <span style="color:#4C58FF">— ‚'''X'''‘ —</span>, oder <span style="color:#4C58FF">— ‚'''Y'''‘ —</span>, Eigenschaften eingesetzt werden, die, — von Natur aus —, weder positiv noch negativ sind, wie z. B. ,rot‘ oder ,schwer‘. Die wechselseitige Austauschbarkeit der noch ,unbestimmten‘ Eigenschafts-Variablen, für beliebige positive Eigenschaften, ist formal äquivalent zur freien Umbenennung der noch ,unbestimmten‘ Individuum-Variablen ''':''' <span style="color:#4C58FF">[ FUB(x:=y) ]</span>. Der formale, gegenseitige, allgemeine Austausch der positiven Eigenschafts-Variablen, bzw. die formale Gleichsetzung beliebiger positiver Eigenschaften, kann, auf Grund der Äquivalenz aller Vollkommenheiten, bzw. ,Transzendentalia‘, auch dann noch durchgeführt werden, wenn eine, von zwei Eigenschafts-Variablen, durch eine Definition oder eine Schlussfolgerung ,bestimmt‘ worden ist, und dadurch zu einer positiven Eigenschafts-Konstante, d.h. zu einer ,bestimmten‘, positiven Eigenschaft geworden ist. Das ist z. B. bei einer instanziierenden Substitution der Fall ''':''' <span style="color:#4C58FF">[ Instanz(X:=..) ]</span>. Das ist eine spezifische Eigenheit der GÖDEL-Axiomatik, weil alle relevanten, positiven Eigenschaften und Zuordnungen in GOTT, als <span style="color:#FF6000">„ultimative Transzendentalia“</span>, immer auch miteinander kompatibel sind. Mit dem Term-Element ''':''' <span style="color:#4C58FF">— ‚'''□∀x(Xx→Yx)'''‘ —</span>, wird formal die <span style="color:#FF6000">„Koinzidenz“</span> aller ,Transzententalia‘ in der Welt, und auch der ,Zusammenfall‘ aller Gegensätze in GOTT, abgebildet. Da die Variable <span style="color:#4C58FF">‚'''x'''‘</span> für GOTT steht, <span style="color:#4C58FF">‚'''G'''‘</span>, <span style="color:#00B000">(im Korollar-1)</span>, ist die Eigenschaft ''':''' ''<span style="color:#FF6000">„nicht mit x identisch zu sein“</span>'' ''':''' <span style="color:#4C58FF">(¬x=..)</span>, d.h. das <span style="color:#FF6000">„Ungleichsein“</span>, das <span style="color:#FF6000">„Anderssein“</span> GOTTES, <span style="color:#00B000">(Prämisse :03:)</span>, die entscheidende Voraussetzung und Norm für jeden Diskurs über GOTT ''':''' um der <span style="color:#FF6000">„Unvergleichlichkeit“</span> GOTTES gerecht zu werden, darf GOTT niemals mit etwas aus der ''<span style="color:#FF6000">»zufälligen Struktur der Welt«</span>'' verglichen, d.h. gleich gesetzt werden. Der Term :18: <span style="color:#4C58FF">(x=x) ↔ W</span> erinnert an die Selbstbezeichnung des GOTTES-JHWH in Exodus 3,14 ''':''' <span style="color:#CC66FF">»''Ich bin der ‚Ich-Bin‘''«</span>. <span style="color:#00B000">(In der mystischen Tradition, im ''<span style="font-family: Times;"><big>‚Dialog über die Vorsehung‘</big></span>'', dem Hauptwerk der Heiligen KATHARINA von Siena, Mystikerin und Lehrerin der Kirche, sagt GOTT-VATER zur KATHARINA ''':''' <span style="color:#FF6000">»''ICH BIN der IST'', <span style="color:#00B000">[ aus mir selbst ]</span>, ''du bist, die nicht ist'', <span style="color:#00B000">[ aus dir selbst ]</span>.«</span> Das ist eine wichtige, deutende Ergänzung, und die authentische <span style="color:#4C58FF">,theologische‘</span> Interpretation dieser Exodus Text-Stelle. Das ist der Grund für die <span style="color:#FF6000">„Unvergleichlichkeit“</span> GOTTES.)</span> Zum Term :03: notiert A. FUHRMANN ''':''' <span style="color:#FF6000">»</span> ''Die Notation'' <span style="color:#4C58FF">(¬x=..)</span> ''für die Eigenschaft ''':''' <span style="color:#FF6000">„nicht mit x identisch zu sein“</span>'', <span style="color:#00B000">[ d.h. <span style="color:#FF6000">„Ungleichheit“, „Anderssein“</span>, bzw. die Notation <span style="color:#4C58FF">(x=..)</span> für den Existenzmodus-Perfektion ''':''' <span style="color:#FF6000">„Gleichheit“, „Idendität“</span> ]</span>, ''ist suggestiv und informell und ersetzt hier einen formal korrekten Abstraktionsausdruck wie'' <span style="color:#4C58FF">λy.(¬x=y)</span>, <span style="color:#00B000">[ bzw. <span style="color:#4C58FF">λy.(x=y)</span> ]</span>. ''Für die formal korrektere Notation bedarf es der zusätzlichen Vereinbarung, dass der Ausdruck'' <span style="color:#4C58FF">λy.(¬x=y)</span> ''gleichbedeutend sei mit dem Ausdruck'' <span style="color:#4C58FF">¬λy.(x=y)</span>. ''Diese Vereinbarung ist harmlos, da wir aufgrund der Regel der λ–Konversion'' ''':''' <span style="color:#4C58FF">λy.Xy.x ↔ Xx</span>, <span style="color:#00B000">[ mit der <span style="color:#4C58FF">Instanz(X:=(¬x=..))</span> ]</span>, ''so schließen dürfen'' ''':''' <span style="color:#4C58FF">λy.(¬x=y).x ↔ ¬x=x ↔ <span style="color:#00B000">¬(x=x)</span> ↔ ¬λy.(x=y).x</span> .<span style="color:#FF6000">«</span> <ref>A. FUHRMANN a.a.O. Seite 7, Anmerkung 4 (von mir korrigiert und ergänzt)</ref> In der Kalkül-Zeile 29 wird das Möglichkeits-Korollar-1 durch einen <span style="color:#4C58FF">[ Modus ponens ]</span> mit Axiom-3 von der Kalkül-Prämisse-Term :01: ,abgekoppelt‘, d.h. es ist nicht mehr vom Term :01: <span style="color:#4C58FF">— ‚'''PX'''‘ —</span> logisch abhängig. Das Möglichkeits-Korollar-1 behält jedoch die bewiesene Widerspruchsfreiheit von Theorem-1, und ist damit nur mehr von Axiom-1 und Axiom-2 abhängig, was für das Theorem-ANSELMS am Schluss entscheidend ist. Erklärung zu Term :05: Das Ergebnis einer Logik-Operation zwischen Prämissen ist ,regulär‘ <span style="color:#00B000">(├ )</span> den Prämissen zuzurechnen. Das Modale-Prinzip KRIPKE-Γ-Ɐx, <span style="color:#4C58FF">['''RK''']</span>, in Worten ''':''' <span style="color:#FF6000">»''Wenn mit ,modaler‘ Notwendigkeit'' <span style="color:#00B000">( □ )</span>, ''für alle'' <span style="color:#4C58FF">‚'''x'''‘</span> ''die Aussage'' <span style="color:#4C58FF">‚'''A'''‘</span> ''gilt, und daraus logisch folgt, dass mit ,modaler‘ Notwendigkeit'' <span style="color:#00B000">( □ )</span>, ''für alle'' <span style="color:#4C58FF">‚'''x'''‘</span> ''auch die Aussage'' <span style="color:#4C58FF">‚'''B'''‘</span> ''gilt, dann ist in einem Kalkül regulär'' <span style="color:#00B000">( ├ )</span> ''ableitbar'' ''':''' ''es ist wahr, dass mit ,modaler‘ Notwendigkeit'' <span style="color:#00B000">( □ )</span>, ''für alle'' <span style="color:#4C58FF">‚'''x'''‘</span> ''aus der Aussage'' <span style="color:#4C58FF">‚'''A'''‘</span> ''die Aussage'' <span style="color:#4C58FF">‚'''B'''‘</span> ''logisch folgt''«</span>. Der Term <span style="color:#4C58FF">— ‚'''□∀xXx'''‘ —</span> steht formal-syndaktisch, allgemein für ,Transzendentalia‘, und ist für alle ,Nicht-Transzendentalia‘ <span style="color:#FF6000">„modal falsch“</span>. ====<div class="center"><span style="color:#660066">2. Beweisgang</span></div>==== {|class="wikitable" |- ! <div class="center"><span style="color:#660066">GÖDELS ontologischer Beweis für Theorem 2, (,Basisbeweis‘)</span></div> |- ! <span style="color:#00B000">''Terme der erweiterten Prädikatenlogik zweiter Stufe____________„Benennungen“ und durchgeführte Logik-Operationen''</span> |- | <small> <math>\begin{align} \text{(Axiom 1.2)} & \quad \neg P\ X \;\Longrightarrow\;\ P\neg X\ & \ & \text{„Wenn X nicht positiv ist, dann ist die Negation ¬X positiv“} \\ \text{(Axiom 3)} & \quad \ P\ G \ & \ & \text{„Göttlichkeit, GOTT-Sein, ist eine pos. Eigenschaft“ ↔ „GOTT ist perfekt“} \\ \text{(Axiom 4)} & \quad \ P\ X \;\Longrightarrow\; \Box \; \ P\ X \ & \ & \text{„Positive Eigenschaften sind notwendig aus sich positiv“} \\ \text{(Definition 1)} &\quad \ G\ x \;\Longleftrightarrow\; \forall X(\ P \ X \Longrightarrow \ X \ x)\ & \ & \text{„x ist genau dann GOTT, wenn x alle positiven Eigenschaften hat“} \\ \text{(Definition 2)} & \quad \ X_{ess}\ x \;\Leftrightarrow X\ x \wedge \forall Y \left(\ Y\ x \Rightarrow \Box \; \forall y (\ X\ y \Rightarrow \ Y\ y)\right) & \ & \text{„X ist genau dann eine wesentliche Eigenschaft von x, wenn x sie hat, und} \\ \text{ } & \quad & \text { } & \;\;\text{alle anderen Eigenschaften Y von x notwendig aus dieser Eigenschaft X folgen“} \\ \text{[RM]} &\quad \ A \;\Longrightarrow\;\ B\; \text{ ├ }\;\Box \; A \Longrightarrow\;\Box\; \ B\ & \ & \text{( :: Modales Prinzip)} \\ \text{(Theorem 2)} &\quad \ G\ x \;\Longleftrightarrow\; \ G_{ess}\ x \ & \ & \text{(,G‘ :: „Göttlichkeit“ ↔ „GOTT“ ↔ „Dasein GOTTES“)} \\ \text{ } &\;\text{„Das Wesen GOTTES ist sein Dasein“} & \ & \Longleftarrow\; \text{was zu beweisen ist !} \\ \text{01} &\quad \ G\ x \ & \ & \text{ AE: „Angenommen, x steht für den GOTT der Christen“} \\ \text{02} &\quad \ Y\ x \ & \ & \text{ AE: „Angenommen, GOTT hat die Eigenschaften Y“} \\ \text{03} &\quad \neg P\ Y & \ & \text{ AE: „Angenommen, die Y in GOTT sind nicht positiv“} \\ \text{04} &\quad \neg P \ Y \Rightarrow \ P \neg Y\ & \ &\text{(A1.2):Instanz(X:=Y) :: (Substitution für Eigenschaften) } \\ \text{05} &\quad \ P \neg Y \ & \ & \text {:03:04:[Modus ponens] :: [A, A → B├ B] } \\ \text{06} &\quad \forall X(\ P \ X \Rightarrow \ X \ x)\ & \ &\text{(D1):01:[Modus ponens] :: (logische Schlussregel)} \\ \text{07} &\quad \ P \ X \Rightarrow \ X \ x\ & \ &\text{:06:[ⱯXA(X) ├ A(X)] :: (Quantorenregel)} \\ \text{08} &\quad \ P \neg Y \Rightarrow \neg Y \ x\ & \ &\text{:07:Instanz(X:=¬Y)} \\ \text{09} &\quad \neg Y \ x\ & \ &\text{:05:08:[Modus ponens]} \\ \text{10} &\quad \text{ ├ }\; (Y\ x \wedge \neg Y \ x) \;\Leftrightarrow\;\ F\ & \ & \text{:02:09:[Konjunktion] ⇒ Kontradiktion !} \\ \text{11} &\quad \neg P\ Y \; \Rightarrow \; (Y\ x \wedge \neg Y \ x )\ & \ &\text{:03:10:[├A├B ╞ A → B] :: ''KONDITIONALER BEWEIS''} \\ \text{12} &\quad \neg\neg P\ Y \ & \ &\text{:11:10:[Modus tollendo tollens] :: [A → B,¬B├ ¬A]} \\ \text{13} &\quad \text{ ├ }\; P\ Y \ & \ &\text{:12:NEG; bzw. :03:10:[├¬A→F ╞ A] :: ''INDIREKTER BEWEIS'' :AE:} \\ \text{14} &\quad \ P\ Y \;\Rightarrow\;\Box \; \ P\ Y \ & \ & \text{(A4):Instanz(X:=Y)} \\ \text{15} &\quad \Box \; \ P\ Y \ & \ & \text{:13:14:[Modus ponens]} \\ \text{16} &\quad \ G \ y \Rightarrow \ Y \ y\ & \ &\text{:01:02:[├A├B ╞ A→B]:FUB(x:=y)} \\ \text{17} &\quad \text{ ├ }\; \forall y(\ G \ y \Rightarrow \ Y \ y)\ & \ &\text{:16:[G(y) ├ ⱯyG(y)]} \\ \text{18} &\quad \Box \; \ P\ Y \;\Rightarrow\; \Box \; \forall y(\ G \ y \Rightarrow \ Y \ y)\ & \ &\text{:13:17:[├A├B ╞ A→B]:[RM]} \\ \text{19} &\quad \text{ ├ }\; \Box \; \forall y(\ G \ y \Rightarrow \ Y \ y)\ & \ &\text{:15:18:[Modus ponens]} \\ \text{20} &\quad \ Y\ x \;\Rightarrow\; \Box \; \forall y(\ G \ y \Rightarrow \ Y \ y)\ & \ &\text{:02:19:[├A├B ╞ A→B]} \\ \text{21} &\quad \ (Y\ x \;\Rightarrow\; \Box \; \forall y(\ G \ y \Rightarrow \ Y \ y)) \wedge \ G \ x & \ &\text{:20:01:[Konjunktion] :: [A, B├ A ∧ B]} \\ \text{22} &\quad \ (Y\ x \;\Rightarrow\; \Box \; \forall y(\ X \ y \Rightarrow \ Y \ y)) \wedge \ X \ x\;\Leftrightarrow\; X_{ess}\ x \ & \ &\text{(D2):KOMM(↔):KOMM(∧):[ⱯYA(Y) ├ A(Y)] wegen :13:} \\ \text{23} &\quad \ (Y\ x \;\Rightarrow\; \Box \; \forall y(\ G \ y \Rightarrow \ Y \ y)) \wedge \ G \ x\;\Leftrightarrow\; G_{ess}\ x \ & \ &\text{:22:Instanz(X:=G)} \\ \text{24} & \quad \text{ ├ }\; G_{ess}\ x \ & \ &\text{:21:23:[Modus ponens]:AE: wegen :30:} \\ \text{25} &\quad \ G\ x \;\Rightarrow\; \ G_{ess}\ x \ & \ & \text{:01:24:[├A├B ╞ A→B] :: Theorem 2.1} \\ \text{26} &\quad \forall X(\ P \ X \Rightarrow \ X \ x)\ & \ &\text{(D1):01:[Modus ponens] } \\ \text{27} &\quad \ P \ X \Rightarrow \ X \ x\ & \ &\text{:26:[ⱯXA(X) ├ A(X)]} \\ \text{28} &\quad \ P \ G \Rightarrow \ G \ x\ & \ &\text{:27:Instanz(X:=G)} \\ \text{29} &\quad \text{ ├ }\; G \ x\ & \ &\text{(A3):28:[Modus ponens]} \\ \text{30} &\quad \ G_{ess}\ x \;\Rightarrow \ G \ x\ & \ &\text{:24:29:[├A├B ╞ A→B] :: Theorem 2.2 } \\ \text{31} &\quad \ G\ x \;\Longleftrightarrow\; \ G_{ess}\ x \ & \ & \text{:25:30:[Konjunktion]:BIKONDITIONAL :: [(A→B) ∧ (B→A) ↔ (A↔B)] } \\ \text{(Theorem 2)} &\; \text{„Dasein, GOTT-Sein, ist das Wesen GOTTES“} & \ & \Longleftarrow\; \text{was zu beweisen war ! } \\ \text{32} &\quad \text{ ├ }\; \Box \; \forall y(\ G \ y \Rightarrow \ (x = y))\ & \ & \text{:19:Instanz(Y:=(x=..))} \\ \text{33} &\quad \ G\ x \;\Rightarrow\; \Box \; \forall y(\ G \ y \Rightarrow \ (x = y))\ & \ & \text{:01:32:[├A├B ╞ A→B]} \\ \text{(Korollar 2)} & \;\text{„Es gibt notwendig höchstens einen GOTT“} & \ & \text{„Wenn es GOTT gibt, dann gibt es für jede mögliche Welt nur einen GOTT“} \\ \end{align}</math> </small> |} <span style="color:#00B000"><small>(In den Kalkül-Zeilen 16, 18, 31 mussten zwei-, und in Zeile 22 drei Kalkül-Schritte, d.h. Logik-Operationen in eine Zeile zusammengezogen werden, weil der Parser dieser speziellen Mathematik-Funktion in Wikibooks jedes Mal wegen Puffer-Überlauf abstürzt, wenn zu den bestehenden Zeilen noch eine neue Zeile, oder ein Text-Element, zusätzlich eingefügt wird. Das vermindert etwas die Transparenz des Kalküls.)</small></span> Anmerkung-2 ''':''' <span style="color:#00B000">(Dieser Beweisgang kommt auch ohne das ,unbestimmte‘ Konjunkt <span style="color:#4C58FF"> — ‚'''Xx'''‘ —</span> in der Definition-2 zum gleichen Ergebnis, und wird dadurch um eine Zeile verkürzt ''':''' Zeile 21 entfällt, und <span style="color:#4C58FF">[ KOMM(∧) ]</span> ist dann unnötig. Dieses Konjunkt wird hier ebenfalls schon in der Kalkül-Prämisse :01: <span style="color:#4C58FF"> — ‚'''Gx'''‘ —</span>, als ,Annahme‘ gesetzt, vorentschieden und ,bestimmt‘ mit der <span style="color:#4C58FF">[ Instanz(X:=G) ]</span>. Es war also logisch korrekt, dass GÖDEL, in seiner Notiz vom 10. Feb. 1970 zum ontologischen Beweis, dieses Konjunkt weggelassen hat, was ihm von Kommentatoren als ein Flüchtigkeitsfehler angerechnet worden war. Der gesamte 2. Beweisgang bewegt sich im Geltungsbereich der Prämisse Term :01:, d.h. ist in jeder Zeile von der Annahme abhängig ''':''' die Variable <span style="color:#4C58FF"> — ‚'''x'''‘ —</span> steht für den GOTT der Christen. In der Kalkül-Zeile 33 wird mit Korollar-2 diese Abhängigkeit, für den Term :32:, explizit dargestellt.)</span> Der Beweisgang geht mit der Prämisse :01: prinzipiell, als ,modal‘ freigewählte Voraussetzung, von der Existenz eines GOTTES aus. Im 1. Beweisgang wurde bewiesen, dass die von GÖDEL ,postulierten‘ <span style="color:#FF6000">»''allgemeinen positiven Eigenschaften, Vollkommenheiten, Perfektionen'', <span style="color:#00B000">[ die sog. ,Transzendentalien‘ ]</span> ''konsistent''«</span>, d.i. widerspruchsfrei sind. Hier, in diesem Beweisgang wird nun die Prämisse vom 1. Beweisgang, <span style="color:#4C58FF"> — ‚'''PX'''‘ —</span>, im Bezug auf GOTT hinterfragt ''':''' Gibt es auch in GOTT so Etwas, wie <span style="color:#FF6000">»''Vollkommenheit, Positives, Perfektes''«</span> '''?''' Die ,Annahme‘ jedoch, dass es <span style="color:#FF6000">»''in GOTT keine Vollkommenheit, nichts Positives, nichts Perfektes''«</span> <span style="color:#00B000">(keine Transzendentalien)</span> gibt, <span style="color:#00B000">(Prämisse Term :03:)</span>,<span style="color:#4C58FF"> — ‚'''¬PY'''‘ —</span>, d.h. dass die <span style="color:#00B000">(wesentlichen)</span> Eigenschaften in GOTT keine <span style="color:#FF6000">„Vollkommenheiten“</span> seien, führt aber zu einem unlösbaren Widerspruch, <span style="color:#00B000">(Term :10:)</span>. Mit Term :13:, als 1. Hauptergebnis, ist damit, — als ,neue‘ Prämisse, <span style="color:#00B000">(ersetzt Term :03:)</span> —, definitiv ,bewiesen‘ <span style="color:#00B000">( ╞ , d.h. es ist ,wahr‘ und ,widerspruchsfrei‘)</span>, dass alle Eigenschaften, die hier mit <span style="color:#4C58FF">— ‚'''Y'''‘ —</span> symbolisiert werden, <span style="color:#FF6000">„positive Eigenschaften“</span>, d.h. <span style="color:#FF6000">„Perfektionen“</span> sind, von denen das Kalkül ,annimmt‘, <span style="color:#00B000">(Prämissen Term :01:, Term :02: und speziell Term :16:)</span>, dass der GOTT der Christen sie besitzt. Alle ,Wesenseigenschaften‘ in GOTT ''':''' <span style="color:#4C58FF">— ‚'''Y'''<sub>ess</sub>‘ —</span>, die durch den Term :13:, <span style="color:#4C58FF">— ‚'''PY'''‘ —, </span> dargestellt werden, sind somit <span style="color:#FF6000">„Vollkommenheiten“</span> ''':''' <span style="color:#4C58FF">— ‚'''P'''‘ —</span><span style="color:#00B000">, (,ultimative Transzendentalien‘, aller ,Grade‘)</span>. Damit ist definitiv ‚bestätigt‘, <span style="color:#00B000">( ╞ , es ist ,wahr‘ und ,widerspruchsfrei‘)</span>, was mit Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, schon ‚angenommen‘ worden ist ''':''' <span style="color:#FF6000">»''GOTT ist perfekt; er hat alle positiven Eigenschaften''«</span>; und auch Definition-1 ist damit ,verifiziert‘ ''':''' <span style="color:#FF6000">»''GOTT ist genau deswegen GOTT, weil er, als GOTT, positive Eigenschaften aller Grade in sich schließt''«</span>; entsprechend dem Quelltext bei LEIBNIZ ''':''' <span style="color:#FF6000">»''GOTT ist ein Wesen von äußerster Größe und Vollkommenheit, das alle Grade derselben in sich schließt''«</span>. Immer vorausgesetzt, <span style="color:#00B000">(,angenommen‘)</span>, man glaubt an GOTT ''':''' <span style="color:#00B000">(Term :01:)</span>. <span style="color:#00B000">(Der ,Schlüsselbegriff‘ <span style="color:#4C58FF">— ‚'''P'''‘ —</span> ist der ,Schlüssel‘ zur Erkenntnis, dass GOTT ,notwendig‘, sowohl ,wesentlich‘ für uns, als auch an sich ,grundlos‘, immer schon ,da‘ ist.)</span> Hier, <span style="color:#00B000">(im 2. Beweisgang)</span>, hat Axiom-1, <span style="color:#00B000">(im Term :04:)</span>, sicher gestellt, dass die Eigenschaften in GOTT, <span style="color:#00B000">(Definition-1; Term :06:)</span>, tatsächlich <span style="color:#FF6000">„ultimativ positiv, perfekt und vollkommen“</span> sind ''':''' <span style="color:#4C58FF">— ‚'''PY'''‘ —</span>. Das GÖDEL-Axiom-1 bezieht seine ,Potenz‘ aus dem Prinzip vom ,auszuschließenden‘ Widerspruch ''':''' eine Eigenschaft kann nicht zugleich ,positiv‘ und ,nicht positiv‘ sein '''!''' Formal lässt sich das 2. Hauptergebnis, Theorem-2 ''':''' <span style="color:#4C58FF">— ‚'''Gx'''↔'''G'''<sub>ess</sub>'''x'''‘ — </span> ''':''' schon aus Term :23: in diesem Beweisgang mit der <span style="color:#4C58FF">[ Vereinfachung ] :: [ A∧B ├ B ]</span> ohne Weiteres ,regulär‘ ableiten, — analog zu den Vorgehensweisen bei A. FUHRMANN und G.J. WIRSCHING. <span style="color:#00B000">(Beide Aussagen dieser ,Konjunktion‘ sind ,gleichwertig‘ und wahr, daher partizipiert das Theorem-2 auch am Ergebnis der Widerspruchsfreiheit von Term :13:, <span style="color:#4C58FF">— ‚'''PY'''‘ —</span>, dem 1. Hauptergebnis. Beide Aussagen im Term :23: interpretieren sich gegenseitig.)</span> Der hier gewählte, etwas längere Weg zum Ergebnis, soll die innere Struktur und Abhängigkeit der Ergebnisse von bestimmten Voraussetzungen offen legen, und ihren ,Zweck‘ verdeutlichen. Die beiden Hauptergebnisse im Basisbeweis gehen vom vorgefundenen und traditionell vorgegebenen Begriff von ,GOTT‘ aus, <span style="color:#00B000">(Term :06:, Term :16: und Term :26:)</span>. Das ,bewiesene‘ <span style="color:#00B000">( ╞ )</span> 1. Hauptergebnis, hier im 2. Beweisgang, Term :13: <span style="color:#4C58FF">— ‚'''PY'''‘ —</span> ''':''' <span style="color:#FF6000">»''die Eigenschaften in GOTT sind vollkommen, d.h. sind die ultimativen Transzendentalia''«</span>, rechtfertigt, bzw. verifiziert sowohl Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, als auch die Definition-1 ''':''' <span style="color:#4C58FF">— ‚'''Gx↔∀X(PX→Xx)'''‘ —</span>, für die Annahme ''':''' den ,GOTT der Christen‘, der deswegen GOTT ist, weil er alle Grade der Vollkommenheit in sich schließt. Und das ebenfalls ,bewiesene‘ <span style="color:#00B000">( ╞ )</span> 2. Hauptergebnis, hier im selben Beweisgang, Theorem-2 ''':''' <span style="color:#4C58FF">— ‚'''Gx'''↔'''G'''<sub>ess</sub>'''x'''‘ —</span> ''':''' <span style="color:#FF6000">»''das Wesen GOTTES ist sein eigenes Sein''«</span>, rechtfertigt, bzw. verifiziert sowohl Axiom-5 ''':''' <span style="color:#4C58FF"> — ‚'''PE'''<sub>not</sub>‘ —</span>, als auch die Definition-3 ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x ↔ ∀X(X'''<sub>ess</sub>'''x →□∃yXy)'''‘ —</span>, für die Wesenseigenschaft ''':''' ,notwendige Existenz‘, und widerlegt den Einwand KANTS, für den Spezialfall ''':''' <span style="color:#4C58FF">— ‚'''x'''‘ —</span> steht für ,GOTT‘. Zwei Axiome und zwei Definitionen von GOTT und seinen Vollkommenheiten werden durch die Ergebnisse im Basisbeweis des GÖDEL-Kalküls in unserer realen Welt als ,wahr‘, <span style="color:#00B000">(genauer als ,widerspruchsfrei‘)</span>, und, — im Rahmen des christlichen Glaubens —, als ,annehmbar‘ bestätigt. <span style="color:#00B000">(Anmerkung zu Term :24: ''':''' eine Prämisse ist regulär-,modal‘ immer ,frei‘ wählbar.)</span> Zusammengefasst heißt das ''':''' die ,strittige‘ Begründung der ,methodologischen‘ Prämisse des GÖDEL-Kalküls ''':''' <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span> ''':''' <span style="color:#00B000">(Prämisse, Term :01:)</span>, weil <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span> ''':''' <span style="color:#00B000">(Korollar-1)</span> ''':''' <span style="color:#FF6000">»''Das <span style="color:#4C58FF">‚'''x'''‘</span> steht für den GOTT der Christen, für den es ohne Widerspruch denkbar ist, dass es ihn gibt''«</span>, <span style="color:#00B000">(ANSELMS Prinzip, trotz der ,Warnung‘ KANTS)</span>, ist ,wahr‘ und für uns ,annehmbar, denn es ist auch, auf Grund der Ergebnisse des 2. Beweisganges, in unserer realen Welt ,wahr‘ und ,annehmbar‘, weil schon als ,widerspruchsfrei‘ verifiziert ''':''' <span style="color:#FF6000">»''Der GOTT der Christen'' <span style="color:#00B000">(Term :01:)</span> '',existiert‘ für uns ,notwendig‘''«</span> ''':''' <span style="color:#4C58FF"> — ‚'''Gx→E'''<sub>not</sub>'''x'''‘ —</span>, <span style="color:#00B000">(d.i. das ,regulär‘-mögliche Korollar sowohl im 2. als auch im 3. Beweisgang)</span>, denn dieser GOTT ist aus sich ,vollkommen‘ ''':''' <span style="color:#4C58FF"> — ‚'''PG'''‘ —</span>, und zu seiner ,Vollkommenheit‘ <span style="color:#4C58FF">— ‚'''P'''‘ —</span> gehört auch notwendig sein ,Existieren‘ ''':''' <span style="color:#4C58FF"> — ‚'''PE'''<sub>not</sub>‘ —</span>. <span style="color:#00B000">(Jeder dieser Terme ist im-, und durch den 2. Beweisgang, im Geltungsbereich der Prämisse Term :01:, als ,wahr‘ und ,annehmbar‘ bewiesen, bzw. verifiziert.)</span> Das ist der ,Kern‘ des ontologischen Arguments, und somit ist auch diese ,strittige‘ Begründung der Prämisse des GÖDEL-Kalküls mit den Maßstäben der modernen Logik <span style="color:#FF6000">»''durchaus vereinbar''«</span>, d.h. sie ist logisch ,richtig‘ und, im Kontext des christlichen Glaubens, vernünftig. Die Annahme des Gegenteils zu dieser Prämisse ''':''' <span style="color:#4C58FF">— ‚'''¬◇∃xGx'''‘ —</span> ''':''' <span style="color:#FF6000">»''Es ist undenkbar, dass es diesen GOTT gibt''«</span>, führt jedoch, unabhängig von jeder Glaubensüberzeugung, zu einem Widerspruch — ist unlogisch und daher ,falsch‘, <span style="color:#00B000">(siehe Anhang ''':''' Widerlegung)</span>. Die Behauptung einer ,formalen Unentscheidbarkeit‘ zu den Annahmen über die Existenz GOTTES, ob oder nicht, <span style="color:#00B000">(d.h. ein ,methodologischer‘ Agnostizismus)</span>, ist gegen jede ,Logik‘; und ist auch ,falsch‘, d.h. der Agnostizismus ist einfach nur ein ,logischer Irrtum‘. Denn aus dem, im Kalkül abgeleiteten, Widerspruch aus der einen Annahme, und damit ihrer Unrichtigkeit, folgt notwendig die Richtigkeit der gegenteiligen Annahme. Damit ist eine klare Entscheidung getroffen. Das Modale-Prinzip <span style="color:#4C58FF">['''RM''']</span> in Worten ''':''' <span style="color:#FF6000">»''Wenn es wahr ist, dass aus'' <span style="color:#4C58FF"> — ‚'''A'''‘ —</span> ''ein'' <span style="color:#4C58FF"> — ‚'''B'''‘ —</span> ''logisch folgt, dann ist in einem Kalkül regulär'' <span style="color:#00B000">( ├ )</span> ''ableitbar, dass, wenn'' <span style="color:#4C58FF"> — ‚'''A'''‘ —</span> '',modal‘ notwendig'' <span style="color:#00B000">( □ )</span> ''ist, auch'' <span style="color:#4C58FF"> — ‚'''B'''‘ —</span> '',modal‘ notwendig'' <span style="color:#00B000">( □ )</span> ''ist''«</span>. <span style="color:#00B000">(Das <span style="color:#4C58FF"> — ‚'''A'''‘ —</span> in Term :18: ist als ,modal notwendig‘ durch den Term :15: verifiziert '''!''' )</span> Mit dem 2. Hauptergebnis, Theorem-2 ''':''' <span style="color:#FF6000">»'',Dasein‘ ist das ,Wesen‘ GOTTES''«</span>, folgt die GÖDEL-Axiomatik der philosophisch-<span style="color:#4C58FF">,theologischen‘</span> Tradition der ,Rede von GOTT‘ seit ARISTOTELES, und schließt sich damit formal-syntaktisch zugleich auch der religiösen Überzeugung der Christen an, die glauben, dass GOTT, als unser Vater, aus Liebe, in seinem Sohn, JESUS CHRISTUS, für uns immer schon <span style="color:#FF6000">»''da''«</span> ist, <span style="color:#00B000">(der Sohn ist koinzident ,eins‘ mit GOTT, dem Vater und dem GEIST)</span>, wirksam in und durch seine <span style="color:#4C58F0">„Kirche“</span>, im HEILIGEN GEIST, bis ans Ende der Zeit. Das ist das, <span style="color:#FF6000">»''was''«</span> GOTT eigentlich für uns ausmacht, — die Selbstmitteilung seines unergründlichen Wesens in den Sakramenten der <span style="color:#4C58F0">„Kirche“</span> ''':''' <span style="font-family: Times;"><big>‘אֶֽהְיֶ֖ה אֲשֶׁ֣ר אֶֽהְיֶ֑ה‚</big></span> <span style="color:#00B000">| ‚eh'jeh asher eh'jeh‘ |</span> <span style="color:#CC66FF">»''Ich bin da für euch und für immer, als der ich ''<span style="color:#00B000">[ immer schon gewesen ]</span> ''bin''«</span>; <span style="color:#00B000">(d.i. das <span style="color:#4C58FF">,theologisch‘</span>-exegetische ,Axiom‘ der Christen, und eine <span style="color:#4C58FF">,theologisch‘</span> korrekte Explikation der ,regulären‘ Kalkül-Prämisse Term :01: <span style="color:#4C58FF"> — ‚'''Gx'''‘ —</span>, jeweils im 2. und 3. Beweisgang)</span>. Das heißt aber nicht, dass der Autor des Kalküls sich mit diesem Glauben identifiziert hat, <span style="color:#00B000">(,hat‘ er auch nicht)</span>, oder dass der Leser des ontologischen Beweises von Kurt GÖDEL sich damit identifizieren muss, wenn er dessen <span style="color:#FF6000">»''mathematische Evidenz''«</span> anerkennt. Zur erweiterten <span style="color:#4C58FF">„theologischen“</span> Explikation der Kalkül-Prämisse ''':''' Die <span style="color:#4C58F0">„Kirche“</span> ist das ,Meisterwerk‘ GOTTES ''':''' In ihr ist es GOTT gelungen, etwas Göttliches und Unzerstörbares in unsere korrupte Welt einzupflanzen ''':''' <span style="color:#4C58FF"> — ‚'''Gx→E'''<sub>not</sub>'''x'''‘ —</span> ''':''' <span style="color:#FF6000">»''Etwas Göttliches existiert notwendig, d.h. ,unzerstörbar‘ in unserer Welt''«</span>. Sie ist, durch die Menschwerdung des GOTTES Sohnes, JESUS CHRISTUS, dessen <span style="color:#4C58F0">„Leib“</span> die <span style="color:#4C58F0">„Kirche“</span> ist, untrennbar mit Menschen verbunden, die schon, von allem Anfang an, und jetzt immer noch, durch die Sünde korrumpiert sind. Mit ihr will und wird GOTT unsere Welt und die Menschheit, bis ans Ende der Zeit, von der Sünde und von deren Konsequenz, dem <span style="color:#00B000">(ewigen)</span> Tod <span style="color:#4C58FF">„erlösen“</span>, <span style="color:#00B000">(jedoch nicht ohne die Zustimmung des Menschen)</span>. Mit dieser Explikation wird die Tragweite des ontologischen Arguments ANSELMS, und damit auch die <span style="color:#4C58FF">„theologische“</span> Relevanz der GÖDEL-Axiomatik erkennbar. Immer vorausgesetzt, <span style="color:#00B000">(,angenommen‘)</span>, man glaubt an GOTT, <span style="color:#00B000">(Term :01:)</span>. ====<div class="center"><span style="color:#660066">3. Beweisgang</span></div>==== {|class="wikitable" |- ! <div class="center"><span style="color:#660066">GÖDELS ontologischer Beweis für Theorem 3, (ANSELMS Theorem)</span></div> |- ! <span style="color:#00B000">''Terme der erweiterten Prädikatenlogik zweiter Stufe___________________„Benennungen“ und durchgeführte Logik-Operationen''</span> |- | <small> <math>\begin{align} \text{(Axiom 5)} & \quad P\ E_{not}\; \ & \text { } & \text{„Notwendige Existenz ist eine positive Eigenschaft“} \\ \text{ } & \text{( :: Das ist nur dann wahr, wenn ,Dasein‘ und ,Wesen‘ } & \ & \text{( :: dagegen KANT : ,Existenz‘ ist keine ,Eigenschaft‘,} \\ \text{ } & \;\;\text{in eins zusammenfallen ! ARISTOTELES : Theorem-2)}\ & \ & \;\;\text{,Sein‘ ist für alles, was existiert, kein ,reales Prädikat‘ ! )} \\ \text{(Definition 1)} &\quad \ G\ x \;\Longleftrightarrow\; \forall X(\ P \ X \Longrightarrow \ X \ x)\ & \ & \text{„x ist genau dann GOTT, wenn x alle positiven Eigenschaften hat“} \\ \text{(Definition 3)} & \quad \ E_{not}\ x \;\Longleftrightarrow\;\ \forall X \left(\ X_{ess}\ x \Longrightarrow \Box \; \exists y \ X\ y \right) & \ & \text{„Notwendige Existenz ist genau dann eine Eigenschaft von x, wenn} \\ \text{ } & \quad & \ & \;\;\text{alle wesentl. Eigenschaften von x notwendig instanziiert sind“} \\ \text{(Korollar 1)} & \quad \Diamond \; \exists x \ G \ x \ & \ & \text{„Es ist widespruchsfrei möglich, dass es GOTT gibt“} \\ \text{(Theorem 2)} &\quad \ G\ x \;\Longleftrightarrow\; \ G_{ess}\ x \ & \ &\text{„Dasein, GOTT-Sein, Existenz ist das Wesen, die Essenz GOTTES“} \\ \text{(Korollar 2)} &\quad \ G\ x \;\Longrightarrow\; \Box \; \forall y(\ G \ y \Longrightarrow \ (x = y))\ & \ &\text{„Wenn es GOTT gibt, dann gibt es notwendig nur einen GOTT“} \\ \text{(Theorem 3)} & \quad \Diamond \; \exists x \ G \ x \;\Longrightarrow\; \Box \; \exists x \ G \ x \ & \ & \text{( :: ANSELMS Prinzip)} \\ \text{ } & \text{„Weil es widerspruchsfrei möglich ist, dass es GOTT gibt,} & \ & \Longleftarrow\; \text{was zu beweisen ist !} \\ \text{ } & \;\;\text{ist der Glaube, dass es GOTT wirklich gibt, widerspruchsfrei“} \\ \text{01} & \quad \ G \ x\ & \ & \text{ AE: „Angenommen, x steht für den GOTT der Christen“} \\ \text{02} & \quad \forall X(\ P \ X \Rightarrow \ X \ x)\ & \ & \text{(D1):01:[Modus ponens] :: (logische Schlussregel)} \\ \text{03} & \quad \ P \ X \Rightarrow \ X \ x\ & \ & \text{:02:[ⱯXA(X) ├ A(X)] :: (Quantorenregel)} \\ \text{04} & \quad \ P \ E_{not}\;\Rightarrow \ E_{not}\ x\ & \ & \text{:03:Instanz(X:= Enot) :: (Substitution für Eigenschaften)} \\ \text{05} & \quad \ E_{not}\ x\ & \ & \text{(A5):04:[Modus ponens] :: [A, A → B├ B]} \\ \text{06} & \quad \forall X \left(\ X_{ess}\ x \Rightarrow \Box \; \exists y \ X\ y \right) & \ & \text{(D3):05:[Modus ponens]} \\ \text{07} & \quad \ X_{ess}\ x \Rightarrow \Box \; \exists y \ X\ y & \ & \text{:06:[ⱯXA(X) ├ A(X)]} \\ \text{08} & \quad \ G_{ess}\ x \Rightarrow \Box \; \exists y \ G\ y & \ & \text{:07:Instanz(X:= G)} \\ \text{09} & \quad \ G_{ess}\ x \ & \ & \text{(Th2):01:[Modus ponens]} \\ \text{10} & \quad \text{ ├ }\;\Box \; \exists x \ G\ x & \ & \text{:08:09:[Modus ponens]:FUB(y:=x) :: (Freie-Um-Benennung der Var.)} \\ \text{ } & \text{„Es gibt GOTT wirklich, für jede mögliche Welt“} & \ & \Longleftarrow\; \text{1. Hauptergebnis !} \\ \text{11} & \quad \;\Diamond \exists x \ G \ x \;\Longrightarrow \; \Box \; \exists x \ G\ x & \ & \text{(K1):10:[├A├B ╞ A→B] :: ''KONDITIONALER BEWEIS''} \\ \text{(Theorem 3)} & \;\text{„Weil es widerspruchsfrei möglich ist, dass es GOTT gibt,} & \ & \Longleftarrow\; \text{was zu beweisen war ! 2. Hauptergebnis ! } \\ \text{ } & \;\;\text{ist der Glaube, dass es GOTT wirklich gibt, widerspruchsfrei“} \\ \text{12} & \quad \;\Box \; \forall y(\ G \ y \Longrightarrow \ (x = y))\ & \ &\text{(K2):01:[Modus ponens]} \\ \text{13} & \quad \;\Box \; (\exists x \ G\ x \wedge \; \forall y(\ G \ y \Longrightarrow \ (x = y)))\ & \ & \text{:10:12:[Konjunktion]:DIST(□∧)} \\ \text{(Korollar 3)} & \;\text{„Es gibt notwendig genau nur einen GOTT“} & \ & \text{„Es gibt für jede mögliche Welt nur den GOTT der Christen“} \\ \end{align}</math> </small> |} Anmerkung-3 ''':''' <span style="color:#00B000">(Ein Theorem und zwei Korollare, aus den beiden vorhergehenden Beweisgängen, werden hier, im 3. Beweisgang, zu ,Axiomen‘, die das Theorem-ANSELMS und sein Korollar mit-verifizieren und bestätigen.)</span> Dieser Beweisgang ist das Ziel aller Bemühungen. Hier wird der sog. ,ontologische Gottesbeweis‘ nach ANSELM von Canterbury formal-syntaktisch dargestellt und als logisch nachvollziehbar von GÖDEL bestätigt. Damit hat er aber auch klar gestellt, dass der ontologische Beweis ANSELMS kein Beweis für die ,Existenz‘ des GOTTES der Bibel sein kann, bzw. sein ,will‘ ''':''' Denn mit der Prämisse, <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, <span style="color:#00B000">(Term :01:, wie auch schon im ,Basisbeweis‘, und ausformuliert hier in Term :02:, mit der Definition für GOTT)</span>, wird mit dem traditionellen, abendländischen ,GOTT-Glauben‘, der ,glaubt‘, dass der Gott der Christen tatsächlich existiert, — methodologisch als ,Annahme‘ —, der Beweisgang schon regulär und explizit eröffnet, aus dem sich dann, logisch korrekt, mit Hilfe der GÖDEL-Axiome und Definitionen, das ,Theorem ANSELMS‘ ergibt; <span style="color:#00B000">(hier jedoch, mit Günther J. WIRSCHING, ohne den Umweg bei GÖDEL über den <span style="color:#4C58FF">[ Modus Barbara ] :: [ A → B, B → C ├ A → C ] </span>, mit dem modalen Axiom-BECKER ''':''' <span style="color:#4C58FF">— ‚'''◇□A→□A'''‘ —</span>, als <span style="color:#4C58FF">‚B → C‘</span> im kategorischen Syllogismus, das André FUHRMANN recherchiert hat)</span>. GÖDEL verwendet zur Darstellung des sog. ,ontologischen Gottesbeweises‘ nach ANSELM die Struktur eines modal-logischen Kalküls. Ein modal-logisches Kalkül ist ein genau geregeltes Schema, in dem bei bestimmten ,Annahmen‘ <span style="color:#00B000">(Axiome, Definitionen, Prämissen)</span> etwas anderes als das Vorausgesetzte, auf Grund des Vorausgesetzten mit Notwendigkeit folgt. Entsprechend der ,Modalität‘ der sechs ,modal‘ notwendigen, d.h. transzendentalen Voraussetzungen, hier, für den 3. Beweisgang, die in den <span style="color:#00B000">(und durch die)</span> beiden vorhergehenden Beweisgängen schon als <span style="color:#FF6000">„modal wahr“</span>, bzw. als logisch annehmbar, verifiziert und/oder ,bewiesen‘ wurden, sind auch die beiden ,Schlusssätze‘ <span style="color:#00B000">(Theorem-3 und Korollar-3)</span> <span style="color:#FF6000">„modal wahr“</span>, bzw. logisch annehmbar '''!''' Die Wahl der Prämisse :01: dagegen ist nicht ,modal‘ notwendig, sondern beruht auf einer freien Entscheidung, und damit ist auch ihre Interpretation eine freie Entscheidung, mit der Voraussetzung, dass man das Kalkül mit Theoremen aus der <span style="color:#4C58FF">„christlichen Theologie“</span> evaluieren, und damit interpretieren will. Dazu berechtigt die Genese des Kalküls. Der Glaube an den GOTT der Christen ''':''' <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, beruht immer auf einer freien Entscheidung. Das Kalkül, als solches, unabhängig von jeder Interpretation seiner Syntax, ist genau dann ,allgemein‘ <span style="color:#FF6000">»''mathematisch evident''«</span>, d.h. ,ist allgemein gültig‘, wenn es gültigen Logik-Regeln folgt. Die Bestimmung seiner Syntax jedoch, d.h. seine Interpretation, unterliegt hermeneutischen Kriterien, die nicht von Logik-Regeln abhängen, wie hier ''':''' <span style="color:#FF6000">»''(unabhängig von der zufälligen Struktur der Welt). Nur dann sind die Axiome wahr''«</span>, wie GÖDEL selbst hinzufügt. Mit der, — von GÖDEL eingeforderten —, ‚Unabhängigkeit‘ der Kalkül-Axiome von der zufälligen Struktur der Welt, wird implizit für das Kalkül auch festgelegt, dass <span style="color:#FF6000">„GOTT“</span> ‚unabhängig‘ von der zufälligen <span style="color:#00B000">(Raum-Zeit-)</span>Struktur unserer vergänglichen Welt, und daher ,zeitlos-ewig‘ ist, <span style="color:#00B000">(was <span style="color:#4C58FF">„theologisch“</span> korrekt ist)</span>, begründet durch Definition-1 und Axiom-3. Aus der zeitlosen Ewigkeit GOTTES folgt, dass GOTT, <span style="color:#FF6000">„unverursacht“ <span style="color:#00B000">|</span> „grundlos“</span>, für uns immer schon ‚da‘ ist, denn bei Zeitlosigkeit gibt es keinen ,zeitlichen‘ und damit auch keinen ,ontologischen‘ Unterschied zwischen ‚Ursache‘ und ‚Wirkung‘. Beides ist dann koinzident ,eins‘ ''':''' wie ,Wesen‘ und ,Dasein‘ in GOTT, bzw. wie ,Begriff‘ und ,Sein‘, oder ,Möglichkeit‘ und ,Wirklichkeit‘. <span style="color:#00B000">(Man vergleiche damit auch die ,postulierte‘ Einheit von ,Erkenntnisobjekt‘ und ,Erkenntnissubjekt‘ im ,Gott‘ des ARISTOTELES ''':''' im <span style="color:#FF6000">»<span style="color:#00B000">[ selbstbewussten ]</span> ''Erkennen seiner Erkenntnis''<span style="color:#00B000">[-Tätigkeit ]</span>«<span style="color:#00B000"> | </span>„<span style="font-family: Times;"><big>νοήσεως νόησις</big></span>“<span style="color:#00B000"> | </span>„noêseôs noêsis“</span> <small>(‚<span style="font-family: Times;"><big>''Metaphysik''</big></span>‘ XII 9, 1074b34)</small>, im Vollzug seiner Funktion als ,unbewegtes Bewegungsprinzip‘, als <span style="color:#FF6000">„<span style="font-family: Times;"><big>πρῶτον κινοῦν ἀκίνητον</big></span>“<span style="color:#00B000"> | </span>„prôton kinoûn akinêton“</span> der Welt, das alles Übrige <span style="color:#FF6000">»''wie ein Geliebtes''«<span style="color:#00B000"> | <span style="color:#FF6000">„<span style="font-family: Times;"><big>ὡς ἐρώμενον</big></span>“</span> | <span style="color:#FF6000">„hôs erômenon“</span> bewegt; d.h. christlich ''':''' <span style="color:#FF6000">»''aus Liebe''«</span> ,entstehen‘ lässt.)</span> Anmerkung-4 ''':''' Das <span style="color:#00B000">(im 2. Beweisgang)</span> schon bewiesene Theorem-2, d.i. die Koinzidenz von <span style="color:#FF6000">„Sein“</span> und <span style="color:#FF6000">„Wesen“</span> in GOTT, <span style="color:#00B000">(‚Existenz‘</span> und <span style="color:#00B000">‚Essenz‘)</span>, rechtfertigt sowohl Axiom-5 als auch die Definition-3, und widerlegt den Einwand KANTS. Somit ist deren Setzung <span style="color:#00B000">(hier, im 3. Beweisgang)</span> korrekt, und durch das Theorem-2 schon vorbestimmt und bestätigt, d.h. beide sind <span style="color:#FF6000">„modal wahr“</span> und ,logisch‘ annehmbar, da sie durch die Gültigkeit von Theorem-2 ,verifiziert‘ worden sind. Damit wird klar erkennbar, dass das Theorem-2 tatsächlich die Basis des GÖDEL-Kalküls ist. Und wenn damit Axiom-5 im GÖDEL-Kalkül ‚gerechtfertigt‘ ist, dann ist auch, <span style="color:#00B000">(als Voraussetzung dafür)</span>, das Axiom-4 ''':''' <span style="color:#4C58FF">— ‚'''PX → □PX'''‘ — ''':''' </span> <span style="color:#FF6000">»''Positive Eigenschaften'', <span style="color:#00B000">[ ,Transzendentalia‘ ]</span>, ''sind notwendig aus sich'', <span style="color:#00B000">[ von Natur aus ]</span>, ''positiv''«</span>, im 2. Beweisgang erklärbar, in dem die ‚Positivität‘, <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, einer Eigenschaft schon als ‚notwendig‘, <span style="color:#4C58FF">— '''□''' —</span>, charakterisiert worden ist, äquivalent zu Axiom-5 ''':''' <span style="color:#4C58FF"> — ‚'''PE'''<sub>not</sub>‘ —</span>, in dem die ‚Notwendigkeit‘, <span style="color:#4C58FF">— <sub>not</sub> —</span>, <span style="color:#00B000">(der Existenz <span style="color:#4C58FF">— ‚'''E'''‘ —</span>)</span>, dann als ‚positive‘ Eigenschaft, <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, ‚bestimmt‘ wird; <span style="color:#00B000">(unter der speziellen Voraussetzung, dass <span style="color:#FF6000">„Existieren“</span> definitiv als eine <span style="color:#FF6000">„Wesenseigenschaft“</span> in GOTT ,instanziiert‘ ist; vgl. Definition-3. Eine ,bestimmte‘ Eigenschaft ist genau dann ,instanziiert‘, wenn sie an einem Träger real ,existiert‘. Definition-3 ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x ↔ ∀X(X'''<sub>ess</sub>'''x →□∃yXy)'''‘ —</span>, besagt, dass die, von GÖDEL ,postulierte‘, und im Basis-Theorem-2 verifizierte, <span style="color:#FF6000">„notwendige Existenz“</span> zu den ,ultimativen‘ Transzendentalia in GOTT gehört. Genauer ''':''' Sie ist die ,Summe‘ aller Transzendentalia.)</span> Zum Axiom-4, <span style="color:#00B000">(bzw. zum Term :14:, im 2. Beweisgang)</span>, erklärt GÖDEL in seinen Notizen zum Kalkül ''':''' <span style="color:#FF6000">»''da es'' <span style="color:#00B000">[ das Notwendigsein, <span style="color:#4C58FF">— '''□''' —</span> ]</span> ''aus der Natur der'' <span style="color:#00B000">[ positiven ]</span> ''Eigenschaft folgt'', <span style="color:#00B000">[ deren Positivität, im selben Beweisgang, mit Term :13: vorher schon ,bewiesen‘ (╞ ) worden ist ]</span>«</span>. Die GÖDEL-Erklärung zum Axiom-4 entspricht der Modal-Regel zur sog. ,Nezessisierung‘ in der KRIPKE-Logik nach GÖDEL. <span style="color:#4C58FF">[ Nezessisierungsregel ] '''::''' [ ├ A →├ □ A ]</span> ''':''' <span style="color:#FF6000">»''Angenommen'', <span style="color:#4C58FF">‚'''A'''‘</span> ''ist in einem Kalkül eine Prämisse, oder darin regulär'' <span style="color:#4C58FF">(├ )</span> ''abgeleitet, dann folgt in diesem Kalkül regulär'' <span style="color:#4C58FF">(├ )</span>, ''dass dieses'' <span style="color:#4C58FF">‚'''A'''‘</span> ''auch ,modal‘ notwendig'' <span style="color:#4C58FF">— ,□‘ —</span> ''ist''«</span>. GÖDEL hat jedoch diese modale Notwendigkeit nur in der ,Natur‘ der positiven Eigenschaften, alias ,Transzendentalia‘, gesehen, und mit den Aussagen im Axiom-4 expliziert ''':''' <span style="color:#4C58FF">— ‚'''PX → □PX'''‘ —</span> ''':''' <span style="color:#FF6000">»''unabhängig von der zufälligen Struktur der Welt, nur dann sind die Axiome wahr''«</span>. Ob dieselbe modale Notwendigkeit auch auf Aussagen über Eigenschaften, wie ,rot‘ oder ,schwer‘, die weder positiv noch negativ sind, zutrifft, ist nicht erwiesen. Hier kann nur von modaler ,Kontingenz‘ gesprochen werden, die universal, alles Seiende innerhalb der <span style="color:#FF6000">»''zufälligen Struktur der Welt''«</span> betrifft. Somit sind die Aussagen <span style="color:#4C58FF">— ‚'''A'''‘ —</span> in der GÖDEL-Regel, nur auf Aussagen über ,positive‘ Eigenschaften eingeschränkt, und nicht allgemein gültig. Die <span style="color:#4C58FF">[ Nezessisierungsregel ]</span> ist nur für <span style="color:#FF6000">„Transzendentalia“ „modal wahr“</span>, und für ,Nicht-Transzendentalia‘ immer <span style="color:#FF6000">„modal falsch“</span>. Der unbegrenzt Unendliche, GOTT, — im Glauben der Christen —, ist deswegen ,notwendig für uns da‘ ''':''' <span style="color:#4C58FF">— ‚'''Gx→E'''<sub>not</sub>'''x'''‘ —</span>, weil er als GOTT ,vollkommen‘, ,perfekt‘ und absolut ,positiv‘, d.h. absolut ,gut allein‘ ist, ohne jede Negativität ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>; <span style="color:#00B000">(was auch schon im 2. Beweisgang mit Term :13: verifiziert wurde)</span>. Und wenn GOTT ,vollkommen‘, ,perfekt‘, ,positiv‘, und absolut ,gut‘ ist, dann ist er das auch ,notwendig aus sich‘ ''':''' <span style="color:#4C58FF">— ‚'''PG → □PG'''‘ — ::</span> <span style="color:#00B000">(als Zusatz-Korollar im 2. Beweisgang mit Axiom-4 und der <span style="color:#4C58FF">[ Instanz(X:=G) ]</span>)</span>, d.h. ,aus seinem Wesen‘. Das ist gerade das, ,was‘ GOTT als GOTT ausmacht ''':''' sein ,Wesen‘, bzw. seine <span style="color:#FF6000">„Natur“</span>. Zusammen mit der Definition-1 für GOTT, <span style="color:#00B000">(und der Definition-2 ''':''' Alle Wesenseigenschaften hängen notwendig gleichwertig aus sich zusammen)</span>, ist dieses, aus der <span style="color:#FF6000">„Natur“</span> GOTTES sich ergebende, ‚Notwendigsein‘, <span style="color:#4C58FF">— '''□''' —</span>, aller ‚positiven‘ Eigenschaften im Axiom-4, und ihr logischer Zusammenhang, d.i. die Koinzidenz aller ,Vollkommenheiten‘ und ,Zuschreibungen‘ im Unendlichen, GOTT, ihr ,Zusammenfallen in eins‘, die entscheidende Voraussetzung, aus der sich dann für GÖDEL <span style="color:#00B000">(im 2. Beweisgang)</span> auch der logische Zusammenhang, bzw. die ontologische Identität, <span style="color:#00B000">(die Koinzidenz)</span>, von <span style="color:#FF6000">„Dasein“</span> und <span style="color:#FF6000">„Wesen“</span> in GOTT, im Basis-Theorem-2 ''':''' <span style="color:#4C58FF"> — ‚'''Gx↔G'''<sub>ess</sub>'''x'''‘ —</span> mit Notwendigkeit ergibt. Damit hat GÖDEL ein altes <span style="color:#4C58FF">„theologisches“</span> Theorem der Vergessenheit entrissen. Das Theorem-2 ist dann, in weiterer Folge, die ,modal‘ notwendige, d.h. die transzendentale Voraussetzung auch für den Konsequenz-Teil im Theorem ANSELMS, <span style="color:#00B000">(Term :09: hier im 3. Beweisgang)</span>. <span style="color:#FF6000">„Positive Eigenschaften“<span style="color:#00B000"> | </span>„Vollkommenheiten“</span> sind ,immer‘ auch <span style="color:#FF6000">„notwendige Eigenschaften“</span>, daher ''':''' <span style="color:#4C58FF"> — ‚'''PE'''<sub>not</sub>‘ —</span>. Das ,Dasein‘, die <span style="color:#FF6000">„Existenz“</span> ist ,immer‘ etwas <span style="color:#FF6000">„Positives“</span>, speziell in GOTT, dem Schöpfer jeder ,Existenz‘, bzw. allen ,Seins‘. Axiom-4 begründet im GÖDEL-Kalkül das Basis-Theorem-2, <span style="color:#00B000">(wie auch das Korollar-3 von der exklusiven Einzigartigkeit GOTTES)</span>, und ,verankert‘ diese Theoreme damit zugleich in der <span style="color:#4C58FF">,theologisch‘</span>-philosophischen Tradition der ,Rede von GOTT‘ bei ARISTOTELES, — AVICENNA, — ANSELM, — DESCARTES, — LEIBNIZ, — HEGEL, — und bei GÖDEL mit äußerster ,logischer‘ Klarheit. Anmerkung-5 ''':''' Der ‚Schlüsselbegriff‘ in diesem Kalkül ''':''' <span style="color:#FF6000">„positive Eigenschaft“</span>, bzw. <span style="color:#FF6000">„Vollkommenheit“<span style="color:#00B000"> | </span>„Perfektion“</span>, <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, dominiert alle Axiome des GÖDEL-Kalküls, jedoch ohne inhaltlich genauer ‚bestimmt‘ worden zu sein. Für <span style="color:#4C58FF">— ‚'''P'''‘ — </span> gibt es keine explizite Definition '''!''' <span style="color:#00B000">(Das Theorem-1 ''':''' <span style="color:#4C58FF">— ‚'''PX→◇∃xXx'''‘ —</span>, besagt nur, dass die ,postulierten‘, positiven Eigenschaften, die <span style="color:#FF6000">„Transzendentalia“</span>, formal miteinander verträglich, d.h. ‚widerspruchsfrei‘ sind, wegen Axiom-2. Axiom-2 ''':''' <span style="color:#4C58FF">— ‚'''PX ∧ □∀x(Xx→Yx)→PY'''‘ —</span>, besagt, dass positive Eigenschaften ,gleichwertig‘ sind, d.h. gleich ,wahr‘ sind, weil sie ,notwendig‘, <span style="color:#4C58FF">— '''□''' —</span>, aus sich, alle paarweise mit- und voneinander ,impliziert‘ sind, sich gegenseitig ,einschließen‘, und damit eine Einheit bilden, d.h. in GOTT ,eins‘ sind. Axiom-2 ist somit zugleich eine ,indirekte‘ Definition für ,positive‘ Eigenschaften ''':''' <span style="color:#4C58FF">— ‚'''P'''‘ —</span>. Definition-2 ''':''' <span style="color:#4C58FF">— ‚'''X'''<sub>ess</sub>'''x ↔ Xx ∧ ∀Y(Yx→ □∀y(Xy→Yy))'''‘ —</span>, besagt ''':''' Weil die ,gleichwertigen‘, positiven Eigenschaften sich gegenseitig implizieren, und damit notwendig von einander abhängen, d.h. koinzident in GOTT ,eins‘ sind, — wenn <span style="color:#4C58FF">‚'''x'''‘</span> für GOTT steht —, dann sind sie somit auch die ,wesentlichen‘ Eigenschaften, die <span style="color:#FF6000">„ultimativen Transzendentalia“</span>, in GOTT, der, wesentlich und exklusiv, notwendig ,Einer‘ ist. Die Definition-2 ist nur dann <span style="color:#FF6000">„modal wahr“</span>, wenn ihre Eigenschafts-Variablen, <span style="color:#4C58FF">— ‚'''X'''‘ —</span> und <span style="color:#4C58FF">— ‚'''Y'''‘ —</span>, mit positive Eigenschaften, d.h. mit <span style="color:#FF6000">„Transzendentalien“</span>, besetzt werden. Diese Definition ist jedoch sofort <span style="color:#FF6000">„modal falsch“</span>, wenn ihre Variablen mit nicht-positive Eigenschaften, wie ,rot‘ oder ,schwer‘ belegt werden, die nicht ,transzendental‘-allgemein gültig sind. Fußnote zu Definition-2 in der GÖDEL-Notiz ''':''' <span style="color:#FF6000">»''any two essences of x are nec. equivalent''«</span>. Die paarweise, notwendige Äquivalenz von zwei beliebigen Wesenseigenschaften der Individuum-Variable <span style="color:#4C58FF">‚'''x'''‘</span>, wird hier, spezifisch für GOTT, d.h. wenn <span style="color:#4C58FF">‚'''x'''‘</span> für GOTT, dem ,Einen‘, steht, zur <span style="color:#FF6000">„Koinzidenz“</span>, — zum paarweise ,Zusammenfallen aller Gegensätze in Einem‘ —, dem inneren Zusammenhang aller seiner <span style="color:#FF6000">„ultimativen“</span> Vollkommenheiten, d.h. aller <span style="color:#FF6000">„Transzendentalia“</span> und Zuschreibungen, in dem unbegrenzt Unendlichen, GOTT, den schon der Philosoph und Kardinal NIKOLAUS von Cues als <span style="font-family: Times;"><big>,coincidentia oppositorum‘</big></span> verstanden hat.)</span> In den entscheidenden ‚Schlusssätzen‘ des Kalküls ist der ‚Schlüsselbegriff‘ verschwunden. Hier ist nur mehr von GOTT, <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, die Rede ''':''' Korollar-1, <span style="color:#FF6000">»''Es ist definitiv denkbar, dass es GOTT gibt''«</span>, Theorem-2, <span style="color:#FF6000">»''Dasein, GOTT-Sein, Göttlichkeit ist das Wesen GOTTES''«</span>, Theorem-3, <span style="color:#FF6000">»''Weil GOTT definitiv denkbar, d.h. widerspruchsfrei möglich ist, darum ist auch der Glaube an GOTT widerspruchsfrei, logisch richtig und mathematisch evident, der annimmt, dass es GOTT, mit Notwendigkeit, wirklich gibt''«</span>, <span style="color:#00B000">(nach ANSELM von Canterbury, und was spezifisch das <span style="color:#FF6000">»</span>''Privilegium der Gottheit allein''<span style="color:#FF6000">«</span> ist, nach LEIBNIZ)</span>, und Korollar-3, <span style="color:#FF6000">»''Es gibt notwendig aus sich, d.i. unverursacht, nur einen GOTT''«</span>. Das GÖDEL-Kalkül ist zu diesen Erkenntnissen gekommen, ohne die Eigenschaften, bzw. die ‚Vollkommenheiten‘ GOTTES, d.h. wer oder was GOTT ‚an sich‘ selbst ist, genauer bestimmen zu müssen, <span style="color:#00B000">(was ,für uns‘ ohnehin ,unmöglich‘ ist)</span>; außer im Theorem-2, in dem das <span style="color:#FF6000">„Dasein“</span> GOTTES als die ‚für uns‘ bestimmende und wichtigste <span style="color:#FF6000">„Wesenseigenschaft“</span> in GOTT erkannt worden ist, — immer vorausgesetzt <span style="color:#00B000">(,angenommen‘)</span>, man ‚glaubt‘ an den zeitlos-ewigen GOTT ''':''' <span style="color:#00B000">(Term :01:)</span>. Der GOTT des GÖDEL-Kalküls ist nicht mehr der an Raum und Zeit gebundene ‚Gott‘ des ARISTOTELES, sondern der von Raum und Zeit <span style="color:#FF6000">»''unabhängige''«</span> GOTT der Bibel bei ANSELM und bei LEIBNIZ. Das GÖDEL-Kalkül, <span style="color:#00B000">(wie ja auch der sog. ‚ontologische Gottesbeweis‘ ANSELMS)</span>, kann jedoch, — bei aller ‚Coolness‘ —, keinen GOTT-Glauben ‚erzeugen‘, sondern setzt vielmehr die Existenz GOTTES notwendig als gegeben schon voraus. Das Kalkül des Logiker GÖDEL beweist aber, dass der traditionelle ‚GOTT-Glaube‘, <span style="color:#FF6000">»''die theologische Weltanschauung''«</span>, mit den Maßstäben der modernen Logik <span style="color:#FF6000">»''durchaus vereinbar''«</span>, d.h. logisch ,richtig‘ und <span style="color:#FF6000">»''mathematisch evident''«</span> ist, weil der ‚Nicht-GOTT-Glaube‘, <span style="color:#FF6000">»''die atheistische Weltanschauung''«</span>, im Möglichkeitsbeweis notwendig zu unlösbaren Widersprüchen führt, und somit logisch ,falsch‘ ist. <span style="color:#00B000">(Die ,Logik‘ hat aber, — bekanntlich —, bei allen wichtigen, persönlichen Entscheidungen immer nur eine untergeordnete Rolle '''!''' )</span> Anmerkung-6 ''':''' Das erste, ,regulär‘ <span style="color:#00B000">(├ )</span> abgeleitete, Hauptergebnis im 3. Beweisgang, Term :10: <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span> ''':''' der Glaube, dass GOTT ,notwendig‘ existiert, ist die logische Konsequenz aus der Prämisse, Term :1: <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>. Dieses erste Hauptergebnis hat also den überlieferten, traditionellen GOTT-Glauben zur Voraussetzung, und ist daher davon ,abhängig‘, d.h. Term :10: ist der Ausdruck einer ,Glaubensüberzeugung‘. Das zweite Hauptergebnis im 3. Beweisgang, das Theorem ANSELMS ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx→□∃xGx'''‘ —</span>, dagegen, ist die Darstellung der Abhängigkeit des ersten Hauptergebnisses von dem, vorher schon bewiesenen, ,Axiom‘ von der ,möglichen‘ Existenz GOTTES ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span>, dem Möglichkeits-Korollar-1 aus dem 1. Beweisgang. Dem geht folgende Beobachtung voraus ''':''' Der Term ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span>, hat in seiner syntaktischen Stellung hier, im Theorem-3, nicht mehr den überlieferten, traditionellen GOTT-Glauben zur Voraussetzung, und ist damit, in seiner Position als Konsequenz-Teil im Theorem ANSELMS, auch nicht mehr davon syntaktisch abhängig, sondern stützt sich formal-syntaktisch nur auf die behauptete Möglichkeit GOTTES; daher muss diese ,angenommene‘ Möglichkeit noch bewiesen <span style="color:#00B000">( ╞ )</span> werden. Dazu die Feststellung LEIBNIZ‘, der diesen Zusammenhang, und seinen Mangel, erkannt hat ''':''' ::Das Theorem ANSELMS ist <span style="color:#FF6000">» ''ein unvollständiger Beweis, der etwas voraussetzt, was man noch hätte beweisen'' <span style="color:#00B000">( ╞ )</span> ''sollen, um ihm mathematische Evidenz zu verleihen — nämlich, dass man dabei stillschweigend voraussetzt, diese Vorstellung des durchaus großen oder durchaus vollkommenen Wesens sei möglich und enthalte keinen Widerspruch'' «</span>. Diesen <span style="color:#FF6000">»''unvollständigen Beweis''«</span> hat GÖDEL im 1. Beweisgang mit dem ,regulär‘ <span style="color:#00B000">(├ )</span> abgeleiteten, und widerspruchfreien Möglichkeits-Korollar-1, vervollständigt, und damit hat er mit <span style="color:#FF6000">»''mathematischer Evidenz''«</span> bewiesen ''':''' <span style="color:#FF6000">»''Diese Vorstellung des durchaus großen oder durchaus vollkommenen Wesens''«</span> enthält <span style="color:#FF6000">»''keinen Widerspruch''«</span> '''!''' Das Korollar-1 ist nur vom logischen Axiom-1 und von der mathematischen Äquivalenz der Perfektionen, <span style="color:#00B000">(der Transzendentalien)</span>, im Axiom-2 ,abhängig‘, und nicht mehr von der ,methodologischen‘ Kalkül-Prämisse, dem traditionellen GOTT-Glauben. Damit hat das Glaubens-Theorem ANSELMS die gesuchte <span style="color:#FF6000">»''mathematische Evidenz''«</span> erreicht, unabhängig von jeder Glaubensüberzeugung. Entscheidend dafür ist der mathematisch-logische Beweis GÖDELS, dass der Nicht-GOTT-Glaube zu einem Widerspruch führt. Zusammenfassung ''':''' Theorem-1 ''':''' <span style="color:#4C58FF">— ‚'''PX→◇∃xXx'''‘ —</span> ''':''' <span style="color:#FF6000">»''Positive Eigenschaften sind konsistent''«</span>, ist die logische Konsequenz aus der Prämisse im 1. Beweisgang, Term :01: <span style="color:#4C58FF">— ‚'''PX'''‘ —</span>, den, — <u>modal-frei</u> — gewählten, ,angenommenen‘ positiven Eigenschaften, bzw. ,Transzendentalia‘. Theorem-2 ''':''' <span style="color:#4C58FF"> — ‚'''Gx↔G'''<sub>ess</sub>'''x'''‘ — </span> ''':''' <span style="color:#FF6000">»''GOTT-Sein ist das Wesen GOTTES''«</span>, ist die logische Konsequenz aus der Prämisse im 2. Beweisgang, Term :01: <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, dem, — <u>modal-frei</u> — gewählten, ,angenommenen‘ GOTT-Glauben der Christen. Im Unterschied dazu ist im 3. Beweisgang, das Theorem-3 ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx→□∃xGx'''‘ —</span> ''':''' der Glaube, dass es einen GOTT notwendig gibt ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span>, die logische Konsequenz aus dem, — <u>modal-notwendig</u> — als widerspruchsfrei ,bewiesenen‘, Möglichkeits-Korollar-1 ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span>, im 1. Beweisgang, <span style="color:#00B000">(auch im Beweisgang ,Widerlegung‘ im Anhang)</span>, und damit ist das Glaubens-Theorem-3, als ganzes, ,widerspruchsfrei‘. Das Theorem ANSELMS ist, mit Korollar-1, nur vom logischen Axiom-1 der Widerspruchsfreiheit, und der paarweisen, mathematischen Äquivalenz beliebiger positiver Eigenschaften, <span style="color:#00B000">(aller Transzendentalia)</span>, im Axiom-2, abhängig. Damit ist die Bedingung für die geforderte, spezielle <span style="color:#FF6000">»''mathematische Evidenz''«</span>, und auch für die Widerspruchsfreiheit im Glaubens-Theorem ANSELMS erfüllt; unabhängig von jeder Glaubensüberzeugung. Weil es <span style="color:#FF6000">„modal wahr“</span> ist, dass die Transzendentalien, bzw. die Vollkommenheiten ontologisch, — dem Sein nach —‚ alle <span style="color:#00B000">(zueinander)</span> widerspruchsfrei, und alle <span style="color:#00B000">(miteinander)</span> gleichwertig sind, ist es auch <span style="color:#FF6000">„modal wahr“</span>, dass es möglich ist, dass GOTT, — dem Sein nach —‚ da ist, <span style="color:#00B000">(d.h. existiert)</span>, der die unbegrenzte Summe aller ultimativen Transzendentalia, bzw. der unendlichen Vollkommenheiten allen Grades ist, wie es der ,christliche Glaube‘ des Erzbischofs ANSELM und seiner Anvertrauten ,annimmt‘. ====<div class="center"><span style="color:#660066">Widerlegung</span></div>==== {|class="wikitable" |- ! <div class="center"><span style="color:#660066">GÖDEL-Kalkül : der Möglichkeitsbeweis als Widerlegung des Nicht-GOTT-Glaubens</span></div> |- ! <span style="color:#00B000">''Terme der erweiterten Prädikatenlogik zweiter Stufe_____________ „Benennungen“ und durchgeführte Logik-Operationen''</span> |- | <small> <math>\begin{align} \text{(Axiom 1.1)} & \quad P \neg X \;\Longrightarrow\;\ \neg P\ X\ & \ & \text{„Wenn die Negation von X positiv ist, dann ist X nicht positiv“} \\ \text{(Axiom 2)} & \quad \Box \;\forall x (\ X\ x \Longrightarrow \ Y\ x) \Longrightarrow \ P\ Y & \ & \text{„Die Eigenschaft Y in allen x, die aus der Eigenschaft X in allen x} \\ \text{ } & \quad & \ & \; \; \text{mit modaler Notwendigkeit folgt, ist eine positive Eigenschaft“} \\ \text{[RK]} &\quad \Box\; \forall x A \;\Longrightarrow\;\Box\; \forall x B\; \text{ ├ }\;\Box \; \forall x (A \Longrightarrow\; B)\ & \ & \; \; \text{( :: Modales Prinzip KRIPKE-Γ-Ɐx)} \\ \text{(Korollar-1)} &\quad \Diamond \; \exists x \ G \ x \ & \ & \; \; \text{( „das —,x‘— steht für den GOTT, —,G‘—, der Christen“ )} \\ \text{ } & \text{„Es ist möglich, dass es den GOTT der Christen gibt“} & \ & \Longleftarrow\; \text{was zu beweisen ist !} \\ \text{01} & \quad \; \neg \Diamond \; \exists x \ G \ x \ & \ & \text{ AE: „Es ist unmöglich, dass es diesen GOTT gibt“ (dezidierter Atheismus)} \\ \text{02} & \quad (\neg x = .. )\ & \ & \text{ AE: „Es gibt die Eigenschaft, nicht mit x identisch zu sein“ :: (ungleich)} \\ \text{03} & \quad (\ x = .. )\ & \ & \text{ AE: „Es gibt die Eigenschaft, mit x identisch zu sein“ :: (gleich)} \\ \text{04} & \quad \neg\neg \Box \neg \exists x \ G \ x \ & \ & \text{:01:[ ◇A ↔ ¬□¬A ] :: (Modalregel) } \\ \text{05} & \quad \neg\neg \Box \neg\neg \forall x \neg \ G \ x \ & \ & \text{:04:[ ∃xA ↔ ¬Ɐx¬A ] :: (Quantorenregel) } \\ \text{06} & \quad \text{ ├ }\; \Box \; \forall x \neg G \ x \ & \ & \text{:05:NEG :: [ ¬¬A↔A ] :: (Gesetz der Aussagenlogik) } \\ \text{07} & \quad \Box \; \forall x \neg G \ x \Leftrightarrow\ W & \ & \text{:01:06:[ (:01:↔W) → (├:06:↔W) ] :: (Kalkülregel) } \\ \text{08} & \quad \Box \; \forall x \ G \ x \Leftrightarrow\ F & \ & \text{:07:[ (¬A↔W)↔(A↔F) ] :: (Regel für Wahrheitswerte)} \\ \text{ } & \text{„Jeder GOTT-Glaube ist ganz sicher falsch ! “} & \ & \Longleftarrow\; \text{die logische Konsequenz aus der Prämisse :01: !} \\ \text{09} & \quad \Box \; \forall x (\neg x = x ) \Leftrightarrow \ F \; \ & \text{ } & \text{□ⱯxXx:02:Instanz(X:=(¬x=..)) ⇒ Kontradiktion !} \\ \text{10} & \quad \Box \; \forall x (\ G \ x \Rightarrow\; (\neg x = x)) & \text { } & \text{:08:09:[ (:08:↔F) → (:09:↔F) ] :: „ex falso sequitur quotlibet“ :[RK]} \\ \text{11} & \quad \Box \; \forall x (\ G \ x \Rightarrow \; (\neg x = x)) \Rightarrow \; P (\neg x = .. ) & \ & \text{(A2):Instanz(X:=G):Instanz(Y:=(¬x= ..)) } \\ \text{12} & \quad \ P (\neg x = .. ) & \ & \text{:10:11:[ Modus ponens ] :: [ A→B, A ├ B ]} \\ \text{13} & \quad \ P (\neg x = .. )\;\Rightarrow\ \neg P (\ x = .. )\ & \ & \text{(A1.1):Instanz(X:=(x=..))}\\ \text{14} & \quad \neg P (\ x = .. )\ & \ & \text{:12:13:[ Modus ponens ] :: (log. Schlussregel)}\\ \text{15} & \quad \Box \; \forall x \ (x = x ) \Leftrightarrow \ W \; \ & \ & \text{□ⱯxXx:03:Instanz(X:=(x=..)) ⇒ Tautologie !} \\ \text{16} & \quad \Box \; \forall x (\ G \ x \Rightarrow\; (x = x)) & \ & \text{:08:15:[ (:08:↔F) → (:15:↔W) ] :: „ex falso sequitur etiam verum“ :[RK]} \\ \text{17} & \quad \Box \; \forall x (\ G \ x \Rightarrow\; (x = x)) \Rightarrow \ P (x = .. ) & \ & \text{(A2):Instanz(X:=G):Instanz(Y:=( x= ..))} \\ \text{18} & \quad \ P (\ x = .. )\ & \ & \text{:16:17:[ Modus ponens ]}\\ \text{19} & \quad \text{ ├ }\; (\neg P (\ x = .. )\ \wedge \ P (\ x = .. )) \Leftrightarrow\ F & \ & \text{:14:18:[ Konjunktion ] ⇒ Kontradiktion !}\\ \text{20} & \quad \neg \Diamond \; \exists x \ G \ x \Rightarrow (\neg P (\ x = .. )\ \wedge \ P (\ x = .. )) & \ & \text{:01:19:[ ├A├B╞ A→B ] :: ''KONDITIONALER BEWEIS''}\\ \text{ } & {\color{RedOrange}\text{Der Atheismus führt zu einem logischen Widerspruch ! }} & \ & \Longleftarrow\; \text{was mit Term :20: bewiesen ist !} \\ \text{21} & \quad \neg\neg \Diamond \; \exists x \ G \ x & \ & \text{:20:19:[ Modus tollendo tollens ] :: [ A→B,¬B ├ ¬A ]}\\ \text{22} & \quad \; \Diamond \; \exists x \ G \ x & \ & \text{:21:NEG }\\ \text{(Korollar-1)} & \;\text{„Es ist definitiv möglich, dass es diesen GOTT gibt“} & \ & \Longleftarrow\; \text{was zu beweisen war !} \\ \end{align}</math> </small> |} Anmerkung-7 ''':''' <span style="color:#00B000">( Dieser Beweisgang ist praktisch identisch mit dem 1. Beweisgang, jedoch gestrafft und präzisiert nach G.J.WIRSCHING. Diese Widerlegung des Nicht-GOTT-Glaubens beginnt sofort mit dem Korollar-1 <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span> aus dem 1. Beweisgang, als in Frage gestelltes ,Theorem‘, und beweist, ohne das Axiom-3 <span style="color:#4C58FF">— ,'''PG'''‘ —</span>, und ohne die GÖDEL-Prämisse <span style="color:#4C58FF">— ,'''PX'''‘ —</span>, in einem Zwischenergebnis, die innere Widersprüchlichkeit und damit auch die Unhaltbarkeit der atheistischen Glaubens-Annahme, aus rein logischen ,Gründen‘, bzw. Axiomen. )</span> Dieser Beweisgang geht von der Existenz GOTTES, <span style="color:#4C58FF">— ,'''G'''‘ —</span>, als Glaubens-Annahme, aus, wobei aber die Möglichkeit seiner Existenz, und damit die Sinnhaftigkeit des Glaubens an GOTT, durch die Prämisse :01: in Frage gestellt wird, und daher im Kalkül überprüft werden muss. Denn mit der Behauptung der Existenz GOTTES allein ist es nicht getan. Es muss auch seine ,Möglichkeit‘, d.h. die Sinnhaftigkeit des Glaubens an GOTT aufgewiesen werden. LEIBNIZ hat als erster, <span style="color:#00B000">(nach ANSELM)</span>, dieses Problem gesehen, und GÖDEL hat dafür die Lösung gefunden. Dieser Beweisgang, <span style="color:#00B000">(analog zum Möglichkeitsbeweis von Günther J. WIRSCHING konzipiert)</span>, setzt in den Axiomen, genau wie im 1. Beweisgang, die Existenz von etwas <span style="color:#FF6000">„Positiven“, „Perfekten“, „Vollkommenen“</span>, <span style="color:#4C58FF">— ,'''P'''‘ —</span>, <span style="color:#00B000">(d.h. die Transzendentalien)</span>, allgemein für die Welt voraus, <span style="color:#00B000">(was im Axiom-3 ''':''' <span style="color:#4C58FF">— ,'''PG'''‘ —</span>, auch GOTT ultimativ zugeordnet wird ''':''' <span style="color:#FF6000">»''GOTT ist absolut positiv, perfekt und vollkommen''«</span>)</span>; das dann im 2. Beweisgang mit Term :13: als widerspruchsfrei, <span style="color:#00B000">(als ,wahr‘ und ,annehmbar‘ im Kontext des christlichen Glaubens)</span>, schon ,bewiesen‘ <span style="color:#00B000">( ╞ )</span> worden ist. Die Existenz von ,Transzendentalien‘ in der Welt, ist ein, mit Beispielen belegbares, allgemeines Faktum; ihre Existenz auch in GOTT ist mit dem Term :13: des 2. Beweisganges bewiesen, die jedoch im Unendlichen, GOTT, als Transzendentalia, auch in ,ultimativer‘ Form vorliegen. Axiom-1 ,besagt‘, dass Eigenschaften nicht zugleich, vollkommen und nicht vollkommen, sein können. Axiom-2 ,besagt‘, dass, allgemein, alle Vollkommenheiten, <span style="color:#00B000">(alle Transzendentalien)</span>, gleichwertig, <span style="color:#00B000">(mathematisch äquivalent)</span>, sind. <span style="color:#00B000">(Axiom-2 wird hier um das GÖDEL-Konjunkt <span style="color:#4C58FF">— ,'''PX'''‘ —</span> verkürzt dargestellt. Damit ist auch Axiom-3 für diesen Beweisgang unnötig geworden, ohne dass sich wegen dieser Kürzung am Ergebnis etwas ändert. Axiom-2 wird jedoch sofort <span style="color:#FF6000">„modal falsch“</span>, wenn seine Variablen mit nicht-positive Eigenschaften, wie ,rot‘ oder ,schwer‘ belegt werden, die nicht ,transzendental‘-allgemein gültig sind, die keine ,Transzendentalia‘ sind.)</span> Die Eigenschaft <span style="color:#4C58FF">— (¬x=..) —</span> ,besagt‘, dass GOTT <span style="color:#FF6000">„unvergleichlich“</span> ist, wenn <span style="color:#4C58FF">,'''x'''‘</span> für GOTT steht. <span style="color:#00B000">(Der informelle Term, <span style="color:#4C58FF">— (¬x=..) —</span>, ersetzt hier, wie bei A. FUHRMANN, den formal korrekten Abstraktionsausdruck ''':''' <span style="color:#4C58FF">— λy.(¬x=y) —</span>, aus dem Lambda-Kalkül.)</span> Der Term :16: <span style="color:#4C58FF">— (x=x) ↔ W —</span> steht für die Selbstbezeichnung des GOTTES-JHWH in Exodus 3,14 ''':''' <span style="color:#CC66FF">»''Ich bin der ‚IST‘'' <span style="color:#00B000">(aus mir selbst)</span>«</span>, der Grund für die <span style="color:#FF6000">„Unvergleichlichkeit“</span> GOTTES. Der GOTT der abendländischen, christlichen Tradition wird mit <span style="color:#4C58FF">— ,'''G'''‘ —</span> bezeichnet ''':''' d.i. der <span style="color:#FF6000">„GOTT der Christen“</span>, entsprechend der ,methodologischen‘ Prämisse und der ,Genese‘ des Kalküls, syntaktisch formalisiert in der Definition-1 ''':''' <span style="color:#4C58FF">— ‚'''Gx↔∀X(PX→Xx)'''‘ —</span> ''':''' <span style="color:#FF6000">»''Das Individuum'' <span style="color:#4C58FF">,'''x'''‘</span> ''ist genau dann GOTT'', <span style="color:#4C58FF">,'''G'''‘</span>, ''wenn es alle Vollkommenheiten'', <span style="color:#4C58FF">,'''P'''‘</span>, ''in sich schließt''«</span>, nach der Vorgabe von LEIBNIZ ''':''' <span style="color:#FF6000">»''GOTT ist ein Wesen von äußerster Größe und Vollkommenheit, das alle Grade derselben in sich schließt''«</span>. Mit Korollar-1 hat dieser Beweisgang dasselbe Endergebnis, wie der 1. Beweisgang. Der Beweis, dass der dezidierte Atheismus zu einem logischen Widerspruch führt, und damit falsch ist, ist ein Zwischenergebnis in diesem Beweisgang, und begründet mit <span style="color:#FF6000">»''mathematischer Evidenz''«</span>, und unabhängig von jeder Glaubensüberzeugung, den, von LEIBNIZ gesuchten, Möglichkeitsbeweis für die Existenz GOTTES im Argument des Erzbischofs, und bestätigt damit die Sinnhaftigkeit des GOTT-Glaubens. Einmal Axiom-1 und zweimal Axiom-2 sichern hier das Ergebnis des Kalküls ''':''' das Möglichkeits-Korollar-1 ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span>''':''' <span style="color:#FF6000">»''Es ist definitiv möglich, dass es den GOTT der Christen gibt''«</span>. Diese zwei Axiome sind die einzigen, und modal-notwendigen, d.h. die transzendentalen Voraussetzungen und Bedingungen für das Endergebnis ''':''' der Widerspruchsfreiheit und Sinnhaftigkeit des Glaubens der Christen an GOTT; <span style="color:#00B000">(dasselbe gilt natürlich auch für die <span style="color:#4C58FF">„theologische“</span> Weltanschauung jeder monotheïstischen Religion '''!''' Dem Erzbischof ANSELM ging es damals nur um seinen Glauben an GOTT.)</span>. Die Logik-Regel <span style="color:#FF6000"><span style="font-family: Times;"><big>„ex falso sequitur quotlibet, etiam verum“</big></span></span>, <span style="color:#00B000">(‚Aus Falschem folgt irgendetwas, auch Wahres‘)</span>, ist der scholastische Ausdruck für die ‚Implikation‘ <span style="color:#00B000">(Folgerung)</span> von Aussagen, die nur dann falsch, <span style="color:#4C58FF">— F —</span> ist, wenn das Antezedens wahr, <span style="color:#4C58FF">— W —</span>, und die Konsequenz falsch, <span style="color:#4C58FF">— F —</span> ist. Andernfalls ist sie immer wahr, <span style="color:#4C58FF">— W —</span>, auch wenn die Voraussetzung falsch, <span style="color:#4C58FF">— F —</span> ist ''':''' ‚Modern‘ darstellbar durch die ‚Wahrheitswertetafel‘ für die ‚materiale Implikation‘, <span style="color:#4C58FF">— ,(A → B)‘ —</span> <span style="color:#FF6000">„wenn A, dann B“</span>. Damit ist auch der <span style="color:#4C58FF">[ Modus tollendo tollens ] :: [ A → B, ¬B ├ ¬A ] </span> verstehbar; <span style="color:#00B000">(vgl. die vierte Zeile der ‚materialen Implikation‘)</span>. Der positive hypothetische Syllogismus ''':''' <span style="color:#4C58FF">[ Modus ponendo ponens ] :: [ A → B, A ├ B ] </span> ist aus der ersten Zeile ablesbar. Die folgende Tabelle gibt für jeden ,Wahrheitswert‘ der Aussagen <math>A</math> und <math>B</math> das Resultat einiger zweiwertiger Verknüpfungen an ''':''' {|class="wikitable hintergrundfarbe2" style="text-align:center;" |- !colspan="2"|''Belegung''!!Konjunktion!!Disjunktion!!materiale<br /> Implikation!!Äquivalenz<br /> Bikonditional!!kopulative<br /> Konjunktion |- !<math>A</math> !<math>B</math> !<math>A</math> und <math>B</math> !<math>A</math> oder <math>B</math> !wenn <math>A</math> dann <math>B</math> !sowohl <math>A</math> als auch <math>B</math> !entweder <math>A</math> oder <math>B</math> |- !W!!W |W||W||W||W||F |- !W!!F |F||W||F||F||W |- !F!!W |F||W||W||F||W |- !F!!F |F||F||W||W||F |} <span style="color:#00B000">(Eine ‚Konjunktion‘ ist nur dann ,wahr‘, wenn beide Aussagen einer ‚Konjunktion‘ wahr sind. Eine ‚kopulative Konjunktion‘ ist nur dann ,wahr‘, wenn entweder die eine, oder die andere Aussage der ‚kopulativen Konjunktion‘ wahr ist. Es besteht also eine Wenn-Dann-Verbindung zwischen beiden Aussagen — eine ,Kopplung‘. Das ist die logische Grundlage von Axiom-1 im GÖDEL-Formalismus)</span> Um das Widersprüchliche der ,Annahme‘ nachzuweisen, dass positive Eigenschaften ,nicht konsistent‘ seien, <span style="color:#00B000">(im 1. Beweisgang)</span>, bzw. um das Unlogische und Sinnwidrige der ,Annahme‘ klarzustellen, es sei ,unmöglich‘, dass es einen GOTT gibt, <span style="color:#00B000">(hier, in der Widerlegung)</span>, verwendet das GÖDEL-Kalkül den Gegensatz ''':''' wahr, <span style="color:#4C58FF">— W —</span>, falsch, <span style="color:#4C58FF">— F —</span>, zwischen der dritten und vierten Zeile der Wahrheitswertetafel, für zwei ,wahre‘ <span style="color:#4C58FF">— W —</span> ,materiale Implikationen‘, in denen die Voraussetzung jeweils falsch, <span style="color:#4C58FF">— F —</span>, ist, entsprechend der Regel <span style="color:#FF6000"><span style="font-family: Times;"><big>„ex falso, <span style="color:#4C58FF">— F —</span>, sequitur quotlibet, <span style="color:#4C58FF">— F —</span>, etiam verum, <span style="color:#4C58FF">— W —</span>“</big></span></span>, jeweils mit der Hilfe von Axiom-1 und Axiom-2, in einer <span style="font-family: Times;"><big>,Reductio ad absurdum‘</big></span>; hier unabhängig von jeder Glaubensüberzeugung. Im Gegensatz dazu, wird, <span style="color:#00B000">(im 2. Beweisgang)</span>, aus dem Glauben an GOTT, auch mit einer <span style="font-family: Times;"><big>,Reductio ad absurdum‘</big></span>, speziell mit Axiom-1, das Widersprüchliche in der ,Annahme‘ nachgewiesen, es gäbe in GOTT <span style="color:#FF6000">»''keine Vollkommenheit, nichts Positives, nichts Perfektes''«</span>, d.h. keine ,Transzendentalia‘. In dieser <span style="font-family: Times;"><big>,Reductio ad absurdum‘</big></span>, im 2. Beweisgang, wird vorausgesetzt <span style="color:#00B000">(,angenommen‘)</span> ''':''' es gibt den GOTT der Christen, <span style="color:#00B000">(als Prämisse :01:)</span>, der ,unvergleichlich‘ und ,einzigartig‘ ist, und in dem auch alle ,Transzendentalia‘ <span style="color:#FF6000">„koinzident“</span> ,eins‘ sind, entsprechend Axiom-2. Für KANT entsteht ein Widerspruch in den Prädikaten eines Satzes. ::<span style="color:#FF6000">»</span> ''Wenn ich das Prädicat in einem identischen Urtheile aufhebe'', <span style="color:#00B000">[ durch eine Negation ]</span>, ''und behalte das Subject, so entspringt ein Widerspruch''. <span style="color:#00B000">[ Wenn ich sage ''':''' ,''GOTT ist nicht allmächtig''‘, entsteht ein Widerspruch zur richtigen Aussage ''':''' ,''GOTT ist allmächtig''‘. ]</span> … ''Wenn ihr aber sagt ''':''' ,GOTT ist nicht‘, so ist weder die Allmacht, noch irgendein anderes seiner Prädicate gegeben; denn sie sind alle zusammt dem Subjecte aufgehoben'', <span style="color:#00B000">[ negiert ]</span>, ''und es zeigt sich in diesem Gedanken nicht der mindeste Widerspruch.'' <span style="color:#FF6000">«</span><ref>vgl. ‚''<span style="font-family: Times;"><big>Kritik der reinen Vernunft</big></span>''‘, Seite 398f; https://www.korpora.org/kant/aa03/398.html</ref> Es ist richtig, wie KANT sagt, der Widerspruch entsteht nicht in dem Gedanken ''':''' <span style="color:#FF6000">»</span>''GOTT ist nicht''<span style="color:#FF6000">«</span>. GÖDEL zeigt daher, dass der Widerspruch erst dann entsteht, wenn von der Annahme ausgegangen wird ''':''' ''<span style="color:#FF6000">»</span>Es ist unmöglich, dass GOTT ist''<span style="color:#FF6000">«</span>. Daraus folgt dann ,regulär‘, mit Hilfe von Axiom-1 und Axiom-2, <span style="color:#00B000">(d.h. mit den Theoremen von den Transzendentalien)</span>, die logische ,Möglichkeit‘ GOTTES, unabhängig von jeder Glaubensüberzeugung. Wie LEIBNIZ klar erkannt hat, muss zuerst, aus dem Widerspruch des Gegenteils, die logische ,Möglichkeit‘, <span style="color:#00B000">(die Konsistenz)</span>, der Existenz GOTTES bewiesen werden ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span>, bevor daraus die reale ,Notwendigkeit‘ GOTTES abgeleitet werden kann ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span>, dessen ,Existenz‘ jedoch, aus dem ,Glauben‘, im Voraus, schon angenommen worden ist. Dieser Sachverhalt ist das ausschließliche Spezifikum GOTTES, <span style="color:#00B000">(das <span style="color:#FF6000">»''Privilegium der Gottheit allein''«</span>)</span>, und gilt nur bei GOTT, als dem Unvergleichlichen und Einzigartigen. Dieses ,Spezifikum‘ wird im Theorem ANSELMS abgebildet ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx→□∃xGx'''‘ —</span>, auf Grund von Axiom-2, das den inneren Zusammenhang, die Koinzidenz auch von ,Möglichkeit‘ und ,Notwendigkeit‘ im Unendlichen, GOTT, erkennen lässt. Bis Zeile 10, im 3. Beweisgang, reicht der Geltungsbereich der ,modal‘-frei gewählten Kalkül-Prämisse :01:, der ,methodologische‘ GOTT-Glaube. In Zeile 11 liegt der ,Schwerpunkt‘ des ontologischen Beweises dann aber am, — modal als notwendig — ,bewiesenen‘ Widerspruch des Gegenteils zum GOTT-Glauben, <span style="color:#00B000"> (formal-syntaktisch dargestellt als widerspruchfreies Antezedens, <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span>, dem Möglichkeits-Korollar-1 aus dem 1. Beweisgang)</span>, und nicht mehr am ,angenommenen‘ GOTT-Glauben der Kalkül-Voraussetzung, <span style="color:#00B000">(nun dargestellt als Konsequenz <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span> im Theorem ANSELMS)</span>. Das Möglichkeits-Korollar-1 muss jetzt immer, wie folgt, gelesen werden ''':''' <span style="color:#FF6000">»''Es ist <u>widerspruchfrei</u> möglich, dass GOTT ist''«</span>. Damit hat er, — angeregt durch LEIBNIZ, und mit ihm —, die fast einhellig akzeptierte Fehldeutung des ontologisch-<span style="color:#4C58FF">„theologischen“</span> Arguments ANSELMS für GOTT durch gewichtige philosophische, <span style="color:#00B000">(KANT<ref>GOTT ist absolut einzigartig und unvergleichlich. KANT macht GOTT jedoch zu einem ,Ding‘ unter den vielen ,Dingen‘ dieser Welt, indem er die Existenz, bzw. das ,Sein‘ GOTTES mit dem ,Sein der Dinge‘ gleich setzt. Eine solche Gleichsetzung ist bei GOTT unangebracht und daher unzulässig! KANT verkennt damit die Einzigartigkeit und Besonderheit GOTTES. Das ,Sein‘ der Dinge ist, — wie KANT sagt —, kein ,reales Prädikat’, d.h. Existenz ist keine Eigenschaft. Jedoch in GOTT ist ,Sein‘ ein ,reales Prädikat‘, d.h. Existieren ist ,real‘ die Wesenseigenschaft GOTTES, denn GOTT ist der, der für uns, — aus Liebe —, immer schon ,da‘ ist ''':''' in der ,Hypostatischen Union‘, sowohl als GOTT von Ewigkeit zu Ewigkeit, als auch als Mensch in unserer Zeitlichkeit. Das ist das, was GOTT für uns ausmacht —, sein Wesen.</ref>)</span>, und <span style="color:#4C58FF">„theologische“</span>, <span style="color:#00B000">(THOMAS<ref>GOTT ist absolut einzigartig und unvergleichlich. THOMAS unterscheidet die ,Natur GOTTES‘ nicht von der ,Natur der Dinge‘, indem er die ,Natur‘ des GOTTES ANSELMS irrtümlich mit der ,Natur‘ der Dinge gleich setzt. Damit reiht er GOTT unter die vielen Dinge unserer Welt ein, indem er für den GOTT ANSELMS annimmt ''':''' GOTT ,esse in rerum natura‘, d.h. wörtlich, dass der GOTT ANSELMS in der ,Natur‘ der Dinge existiert, <span style="color:#00B000">(was ANSELM nie gesagt hat)</span>. Eine solche Gleichsetzung ist bei GOTT unangebracht und daher unzulässig! Die ,zeitlose-überzeitliche‘ Wirklichkeit, (Natur), GOTTES ist völlig verschieden und unabhängig von der zufälligen Wirklichkeit, (die ,Natur‘), unserer ,raum-zeitlichen‘ Welt. Daher ist sie mit dieser auch nicht vergleichbar. Thomas verkennt damit die Einzigartigkeit und Besonderheit GOTTES.</ref>)</span>, Autoritäten zurechtgerückt, welche die Einzigartigkeit und Unvergleichlichkeit des Unendlichen, GOTT, bei ihrer Beurteilung des Theorem ANSELMS nicht berücksichtigt, sondern den Unendlichen, <span style="color:#00B000">(irrtümlich)</span>, unter die endlichen Dinge unserer Welt eingereiht haben. GÖDEL hat mit dem bewiesenen Widerspruch des Gegenteils zum GOTT-Glauben, den Beweis für die <span style="color:#FF6000">»''mathematische Evidenz''«</span> des Theorem ANSELMS geliefert, was, nach LEIBNIZ, für die Akzeptanz dieses Theorems noch gefehlt hat. Das Theorem ANSELMS besagt universell ''':''' Die <span style="color:#FF6000">»''theologische Weltanschauung''«</span> der Juden, Christen und Muslime, <span style="color:#00B000">(und des ägyptischen Pharaos ECHNATON)</span>, die ,annehmen‘, dass es mit ,Notwendigkeit‘ <span style="color:#4C58FF">— ‚'''□'''‘ —</span> <span style="color:#00B000">(nur)</span> einen GOTT gibt, ist logisch richtig und <span style="color:#FF6000">»''mathematisch evident''«</span>, weil es <u>ohne Widerspruch</u> ,denkbar‘ <span style="color:#4C58FF">— ‚'''◇'''‘ —</span> ist, dass es GOTT gibt ''':''' Nicht mehr und nicht weniger, <span style="color:#FF6000">»''rein verstandesmäßig, (ohne sich auf den Glauben an irgendeine Religion zu stützen)''«</span>. Es geht hier bei GÖDEL nicht um Theoriefindung oder ähnliches. GÖDEL ist kein ,spekulierender‘ Theoretiker. GÖDEL ist Logiker und Mathematiker. Was er sagt, ist mathematisch wahr und logisch richtig. Wenn er sagt, dass die Aussage ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ — »''wahr''«</span> ist ''':''' <span style="color:#FF6000">»''es ist möglich, dass es Gott gibt'' ''':''' ''das ist ,wahr‘ wegen Axiom-2 (und Axiom-1)''«</span>, dann spricht er hier von der mathematischen Wahrheit. Logischerweise ist dann die konträre Aussage ''':''' <span style="color:#4C58FF">— ‚'''¬◇∃xGx'''‘ — »''falsch''«</span> ''':''' <span style="color:#FF6000">»''es ist nicht möglich, dass es einen Gott gibt''«</span>, und zwar mathematisch falsch, weil sich aus dieser Aussage ein Widerspruch ergibt. Jeder, der die mathematische Logik GÖDELS lesen kann, kann das sehen und verstehen ''':''' Das Zwischenergebnis, <span style="color:#00B000">(Term :20:)</span>, in dieser Kalkül-Ableitung, die logische Konsequenz aus der Annahme des dezidierten Atheismus, es sei unmöglich, dass es GOTT gibt, ist der faktische, nachprüfbare, und für jeden Menschen sichtbare Beweis dafür, dass diese Annahme in einen Widerspruch mündet, und damit falsch und unlogisch ist. Das bedeutet, es ist eine Tatsache, bzw. es ist Faktum, dass der Atheismus, — mit <span style="color:#FF6000">»''mathematischer Evidenz''«</span> —, wirklich falsch und unlogisch ist, und daher, mit Recht, als ,Unsinn‘ bezeichnet werden darf '''!''' Das ist nicht bloß als eine Theoriefindung, oder als eine Interpretation eines Autors zu verstehen. Das ist vielmehr genau so wahr und <span style="color:#FF6000">»''mathematisch evident''«</span>, wie, dass zwei mal zwei vier ergibt, und wirklich genau so logisch richtig, wie, dass die Erde sich um die Sonne dreht. Das ist gerade das Überraschende und Unerwartete am Gödel-Kalkül. Es geht hier nicht mehr um Theoriefindung oder Interpretationen, denen man zustimmen kann oder nicht. Es geht hier <span style="color:#FF6000">»''rein verstandesmäßig''«</span> um mathematisch-logische Fakten. Damit steht GÖDEL, in seiner Bedeutung, in gewisser Weise, neben KOPERNIKUS, weil seine Kalkül-Ergebnisse, wie die Berechnungs-Ergebnisse dieses Pioniers der damaligen Zeitenwende, heute, in unserem Äon, ebenfalls mit eingefleischte Vorurteile aufräumen, ohne aber, dass GÖDEL für sich selbst, im Glauben, logisch konsequent gewesen wäre. <span style="color:#00B000">(Er ist sich der Tragweite und der Konsequenzen seiner <span style="color:#4C58FF">„axiomatischen Theologie“</span> anscheinend nicht bewusst gewesen, wenn er sagt ''':''' Man sei heute noch <span style="color:#FF6000">»''weit davon entfernt, das theologische Weltbild wissenschaftlich begründen zu können''«</span>, nachdem sein Kalkül das <span style="color:#FF6000">„atheistische Weltbild“</span> fundamental ins Wanken gebracht und als irrationalen ,Unsinn‘ entlarvt hat. Sein Kalkül ,beweist‘ ( ╞ ) indirekt, dass das <span style="color:#FF6000">„theologische Weltbild“</span>, im Beweisgang ,Widerlegung‘, aus dem Widerspruch des Gegenteils, mit <span style="color:#FF6000">»''mathematisch-logischer Evidenz''«</span>, offensichtlich doch, wissenschaftlich begründet werden kann)</span>. ---- Kurt GÖDEL ist auch deswegen ein Ausnahmelogiker. ---- ===<div class="center"><span style="color:#660066">Epilog für Skeptiker</span></div>=== Wenn man das GÖDEL-Argument genau liest, dann ist nur die Annahme ''':''' <span style="color:#FF6000"> „es ist möglich, dass es GOTT gibt“</span> bewiesen, weil aus der Annahme ''':''' <span style="color:#FF6000">„es ist unmöglich, dass es GOTT gibt“</span> ein logischer Widerspruch ableitbar ist. Die Aussage ''':''' <span style="color:#FF6000">„es gibt GOTT“</span> ist dagegen schon eine Glaubensaussage, und damit ist das auch die ,Grundannahme‘ eines gläubigen Menschen, der dann aus der ,bewiesenen Möglichkeit‘, dass es Gott gibt, ableiten kann ''':''' <span style="color:#FF6000">»''es gibt GOTT wirklich''«</span>, wenn er will ''':''' <span style="color:#FF6000">»''Es stimmt also, was ich glaube '''!''''' «</span> Das ist das Argument ANSELMS, der ein christlicher Amtsträger war, und der daher von dieser Grundannahme auch ausgeht. Solange in den Voraussetzungen des Möglichkeitsbeweises im GÖDEL-Kalkül kein Widerspruch nachweisbar ist, und solange in der logischen Durchführung dieses Beweises keine schweren Mängel festgestellt werden können, ist das Ergebnis des Möglichkeitsbeweises, wie GÖDEL ihn durchgeführt hat, korrekt, und die Folgerungen daraus, logisch richtig, dass es sich hier um <span style="color:#FF6000">»''mathematische Evidenz''«</span> handelt, <span style="color:#00B000">(z. B. wie 2 x 2 = 4)</span>. Aber niemand ist gezwungen, aus der Möglichkeit, dass es GOTT gibt, daraus zu schließen, dass es GOTT auch mit Notwendigkeit gibt, wie das im Argument ANSELMS geschieht, außer, er akzeptiert auch die Grundannahme, dass es den Unendlichen und Unvergleichlichen tatsächlich gibt. Dann kann er mit LEIBNIZ, der selbst an GOTT geglaubt hat, mit Bestimmtheit sagen ''':''' <span style="color:#FF6000">»''gesetzt, dass GOTT möglich ist, so ist er, was das Privilegium der Gottheit allein ist''«</span>, weil GÖDEL mit seinem Kalkül den noch ausstehenden Beweis der Widerspruchsfreiheit dafür geliefert hat. Wenn Du den 3. Beweisgang des GÖDEL-Kalküls genauer anschaust, dann siehst Du, dass der Konsequenz-Teil im Argument ANSELMS, der identisch ist mit dem Term in der Zeile 10, <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span>, immer noch formallogisch abhängig ist von der methodologischen Glaubens-Prämisse, Term :01:, <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span> ''':''' <span style="color:#FF6000">»''das'' <span style="color:#4C58FF">‚'''x'''‘</span> ''steht für den Gott der Christen''«</span>. Diese Abhängigkeit ist bis zur Zeile 10 offensichtlich und logisch korrekt. <span style="color:#00B000">(Man könnte nach dieser Zeile, ohne Weiteres, ,regulär‘ die <span style="color:#FF6000">„logische Implikation”</span> :: <span style="color:#4C58FF">[├ A ├ B ╞ A→B ]</span> mit Term :01: und Term :10: als ein mögliches Korollar bilden ''':''' <span style="color:#4C58FF">— ‚'''Gx→□∃xGx'''‘ — </span>)</span>. Das bedeutet, der Konsequenz-Teil im Theorem ANSELMS, der in diesem ,regulär‘-möglichen Korollar an zweiter Stelle steht, ist damit in seiner Formal-Struktur offensichtlich ,regulär‘ von der Glaubens-Prämisse, Term :01:, abhängig, d.h. er ist der Ausdruck einer Glaubensüberzeugung. Im Theorem ANSELMS steht er jetzt, in der Zeile 11, als Konsequenz-Teil auch an zweiter Stelle, hat aber nicht mehr seine Glaubens-Prämisse als notwendige Bedingung an erster Stelle vor sich, wie im ,regulär‘-möglichen Korollar. Jetzt steht eine neue und andere Voraussetzung als Begründung vor ihm. Der Schwerpunkt des Argument ANSELMS liegt damit am Begründungs-Teil des ANSELM-Theorems, der jetzt die erste Stelle im Theorem einnimmt ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span> ''':''' <span style="color:#FF6000">»''es ist möglich, dass es GOTT gibt''«</span>, der erst dadurch entstanden ist, und davon abhängig ist, weil sein Gegenteil ''':''' <span style="color:#4C58FF">— ‚'''¬◇∃xGx'''‘ —</span> ''':''' <span style="color:#FF6000">»''es ist unmöglich, dass es GOTT gibt''«</span>, zu einem Widerspruch geführt hat. Dieser Begründungs-Teil, das Antezedens, im Argument ANSELMS, ist daher nicht mehr von der methodologischen Glaubens-Prämisse, Term :01:, abhängig, sondern nur vom Axiom-1, der Widerspruchsfreiheit, und von der paarweisen, mathematischen Äquivalenz beliebiger positiver Eigenschaften im Axiom-2, die im 1. Beweisgang, bzw. im Beweisgang ,Widerlegung‘, mit dem <span style="color:#4C58FF">[ Modus tollendo tollens ] :: [ A → B, ¬B ├ ¬A ]</span>, die Widerspruchsfreiheit der Möglichkeit des GOTT-Glaubens mit Notwendigkeit herbeigeführt haben. Daraus ergibt sich eine logische Verschiebung in der Argumentationskette, denn dieser Begründungs-Teil, der jetzt die Widerspruchsfreiheit für den Konsequenz-Teil liefert, ist selbst unabhängig und frei von jeder Glaubensüberzeugung. Weil widerspruchsfrei und <span style="color:#FF6000">»''mathematisch evident''«</span>, muss er als logische Begründung für die Widerspruchsfreiheit und als Beweis für die <span style="color:#FF6000">»''mathematische Evidenz''«</span> des Konsequenz-Teils gelesen werden, und damit bestätigt er die Widerspruchsfreiheit und Sinnhaftigkeit der Glaubensüberzeugung eines gläubigen Menschen, <span style="color:#00B000">(was auch das Ziel ANSELMS war)</span>. Das heißt also ''':''' der Glaube dieses Menschen ist widerspruchsfrei und sinnvoll, und enthält keinen Zirkelschluss, weil sein Gegenteil, der Nicht-GOTT-Glaube, zu einem Widerspruch führt; <span style="color:#00B000">(das hat GÖDEL mit seinem Kalkül-System bewiesen, dessen Argumentationskette mit einem Computer-Programm, dem sog. ,Theorembeweiser‘, überprüft worden ist, und als <span style="color:#FF6000">»''nachweisbar korrekt''«</span> befunden wurde)</span>. Das Theorem ANSELMS beweist, nach GÖDEL, dass der Glaube an GOTT, mit <span style="color:#FF6000">»''mathematische Evidenz''«</span> notwendig widerspruchsfrei und sinnvoll ist, weil der Nicht-GOTT-Glaube notwendig zu einem Widerspruch führt. <u>Das Theorem beweist jedoch nicht, dass die Existenz GOTTES notwendig ist</u>, <span style="color:#00B000">(wie es fast immer fälschlich gelesen wurde und wird)</span>, sondern, das Theorem ANSELMS geht davon aus, als nicht hinterfragtes Faktum, dass GOTT notwendig, schon immer existiert, und beweist, mit dem GÖDEL-Kalkül, dass diese Glaubens-Annahme widerspruchsfrei und sinnvoll, und <span style="color:#FF6000">»''mit allen bekannten Tatsachen durchaus vereinbar ist''«</span>, wie GÖDEL abschließend sagt. GOTT hat es ja auch nicht ,nötig‘, bewiesen zu werden. Für den Erzbischof ANSELM war die Existenz GOTTES, überall und jederzeit, die ungefragte und für ihn die selbstverständlichste Voraussetzung aller seiner Bemühungen, in seinem Leben, und in seinem Beruf als christlicher Amtsträger, und auch als Theologe in den philosophischen Überlegungen über seinen Glauben. Mit diesen Überlegungen hat er, mit GÖDEL, bewiesen ''':''' Glaube ist nicht irrational, kein Sprung ins Unbekannte, sondern eine freie, vernünftige Entscheidung. Glaube ist rational und vertrauenswürdig. Zusammengefasst heißt das Ergebnis dieser Bemühungen ANSELMS ''':''' Wenn Du an GOTT glauben willst, dann kannst Du das unbedenklich tun, denn Dein Glaube ist auch logisch in der <u>bewiesenen Möglichkeit</u>, dass es GOTT geben kann, begründet, und damit ist er widerspruchsfrei, sinnvoll und kein Zirkelschluss. Dein Glaube an GOTT beruht jedoch, nach wie vor und in erster Linie, auf Deiner freien Entscheidung für GOTT, und nicht auf dem Zwang einer ,logischen‘ Argumentation. Wenn Du nicht an GOTT glauben willst, dann <u>musst Du, und sollst Du, auch nicht deswegen</u> an GOTT glauben, weil der Nicht-GOTT-Glaube zu einem Widerspruch führt, und damit falsch und unlogisch ist. Denn der Glaube an GOTT muss immer eine freie und Deine ganz persönliche Entscheidung für GOTT sein und bleiben. Niemand darf zum Glauben an GOTT gezwungen werden, auch nicht mit ,logischen‘ Argumenten. Warum '''?''' Weil GOTT die Liebe ist '''!''' Und die Liebe duldet keinen Zwang '''!''' Zum Abschluss, und für eine bessere Verständlichkeit dieser Studie, hat die KI, der ich diese Studie für die Erstellung eines Podcast übergeben habe, eine, — sogar für Kinder —, verständliche Metapher kreiert. Sie sagt, man stelle sich vor ''':''' Es sei irgendwo ein ,Schatz’ vergraben, und es gäbe auch eine ,Schatzkarte’ für diesen ,Schatz’. Kurt GÖDEL ist nun gekommen, und hat mit seinem Kalkül bewiesen, dass diese ,Schatzkarte’ korrekt ist und fehlerfrei. Ob aber jemand, mit Hilfe dieser ,Schatzkarte’ auf ,Schatzsuche’ gehen will oder nicht ''':''' das ist und bleibt jedem selbst überlassen, und ist immer eine freie, und ganz persönliche Entscheidung. Damit hat die KI erstaunlich treffend, sowohl die Bedeutung, als auch die reale Funktion des GOTT-Glaubens in der Lebens-Wirklichkeit unserer Welt und Zeit charakterisiert, in Übereinstimmung mit der Gleichniserzählung JESU vom ,Schatz im Acker’; <small><span style="color:#00B000">( vgl. {{Bibel | Matthäus-Evangelium |13|44|EU}} )</span></small>. Der ,Schatz’ ist die <span style="color:#FF6000">„<span style="font-family: Times;"><big>Βασιλεία του Θεού</big></span>“</span><span style="color:#00B000"> | ,Basileía tou Theoú’</span>, d.h. das <span style="color:#CC66FF">»''Königtum GOTTES''«</span>, oder auch das <span style="color:#CC66FF">»''Himmelreich''«</span>. Die ,Schatzkarte’ ist der Glaube an GOTT. Die ,Schatzsuche’ ist der Weg des Glaubens in der Nachfolge JESU, der uns den Weg zeigt zum Ziel, zur Erfüllung aller unserer Sehnsüchte und Wünsche. ---- ---- ;Fußnoten <references /> mccp0eusbwb3ho6d1i3uj4crr9jzjee 1090606 1090605 2026-09-09T09:04:27Z Santiago 19191 /* Kurt GÖDEL und der sog. ‚ontologische Gottesbeweis‘ */ ::NOFRETETE:: hinzugefügt 1090606 wikitext text/x-wiki [[Kategorie: Buch]] {{Regal|ort=Philosophie}} {{Vorlage:StatusBuch|9}} ==<div class="center"><span style="color:#660066">'''Kurt GÖDEL und der sog. ‚ontologische Gottesbeweis‘'''</span></div>== <span style="font-family: Times;"><big><div class="center">לַמְנַצֵּ֗חַ לְדָ֫וִ֥ד אָ֘מַ֤ר נָבָ֣ל בְּ֭לִבּוֹ אֵ֣ין אֱלֹהִ֑ים הִֽשְׁחִ֗יתוּ הִֽתְעִ֥יבוּ עֲלִילָ֗ה אֵ֣ין עֹֽשֵׂה־טֽוֹב׃ (Psalm 14,1)</div></big></span> ---- ===<div class="center"><span style="color:#660066">Vorwort</span></div>=== Zur Orientierung ''':''' Die Diskussion um GOTT läuft schon über zweitausend Jahren. Vor etwa tausend Jahren hat sich ein gewisser ANSELM gesagt ''':''' <span style="color:#FF6000">»''Ich glaube an GOTT'' … <span style="color:#00B000">[ sonst wäre er sicher nicht Erzbischof von Canterbury geworden ]</span> … ''aber ich möchte auch wissen und verstehen, ob das stimmt und sinnvoll ist, was ich da glaube '''!''''' «</span> Dann hat er seine Überlegungen dazu aufgeschrieben, und das kann man in seinen Schriften auch heute noch lesen. Der sehr geschätzte deutsche Professor und Philosoph aus Königsberg, Immanuel KANT, hat das, was ANSELM da aufgeschrieben hat, gelesen, <span style="color:#00B000">(vermittelt durch CARTESIUS)</span>, und das dann den <span style="color:#FF6000">„ontologischen Gottesbeweis“</span> genannt, <span style="color:#00B000">(obwohl es in Wirklichkeit gar kein Gottesbeweis ist; genauer ''':''' es ist kein Beweis für die Existenz GOTTES)</span>, und dieser große KANT hat dann großartig bewiesen, das, was ANSELM da aufgeschrieben hat, sei falsch. Es sei <span style="color:#FF6000">„ja gar kein“</span> Gottesbeweis '''!''' <span style="color:#00B000">( Naja, was denn sonst '''?''' )</span> Wobei er den Fehler gemacht hat, dass er den, an sich, unvergleichbaren GOTT mit hundert Talern in seinem Vermögenszustande verglichen hat. <span style="color:#00B000">(Das ist aber eine andere Geschichte.)</span> Hundert Taler und GOTT haben ,an sich‘ nichts gemeinsam, außer, wenn KANT ,wirklich‘ hundert Taler hat, und GOTT auch ,wirklich‘ existiert, <span style="color:#00B000">(wie ANSELM und gläubige Menschen glauben)</span>, dann gibt es GOTT und die Taler eben ,wirklich‘. Aber damit ist man nicht schlauer geworden. Seit KANT läuft die ganze Diskussion um GOTT immer nur als Diskussion um den <span style="color:#00B000">(von KANT)</span> so genannten <span style="color:#FF6000">„ontologischen, <span style="color:#00B000">[ kosmologischen, teleologischen etc. ]</span> Gottesbeweis“</span> —, obwohl es niemals einen Beweis für die Existenz GOTTES geben kann und niemals geben wird. <span style="color:#00B000">(Das haben Wissenschaftler jeder Richtung und Philosophen aller Weltanschauungen uns immer wieder nachdrücklich versucht zu sagen, weil keiner dieser sog. Beweise für die Existenz eines GOTTES stringent ist.)</span> Beweisen kann man die Existenz von Naturgesetzen. Die sind unveränderlich und fix, immer und überall. Jeder vernünftige Mensch muss sie akzeptieren. Man kann darüber nicht diskutieren und sie dann mit Mehrheitenbeschlüsse verändern. Wenn GOTT ebenso bewiesen werden könnte, dann wäre jeder vernünftige Mensch gezwungen, die Existenz GOTTES wie ein Naturgesetz anzunehmen. Gott ist aber kein Naturgesetz. GOTT ist <span style="color:#FF6000">„Person“</span>, — für Christgläubige ''':''' <span style="color:#FF6000">„ein GOTT in drei Personen“</span>. Und GOTT ist <span style="color:#FF6000">„Geist“</span>. Das besagt, dass GOTT nicht mit materiellen Dingen aus unserer Welt verglichen werden darf; <span style="color:#00B000">(was sowohl THOMAS von Aquin als auch Immanuel KANT doch getan haben)</span>. Und ganz wesentlich ''':''' der Zugang zu GOTT läuft nicht über den Beweis, sondern immer nur über den Glauben. Wer an GOTT glauben will, dem antwortet GOTT auf seine Weise — nämlich <span style="color:#FF6000">„geistig“</span> bzw. <span style="color:#FF6000">„geistlich“</span>. Wer nicht an GOTT glauben will, dessen Entscheidung respektiert GOTT, und drängt sich nicht auf. Glaube ist immer eine freie Entscheidung des Menschen für GOTT. Niemand darf gezwungen werden. Wenn es einen Beweis für GOTT gäbe, wäre jeder vernünftige Mensch gezwungen, an GOTT zu glauben. Und das widerspricht ganz entschieden der Freiheit des Glaubens. Daher gibt es nie und nimmermehr einen Existenzbeweis für GOTT '''!!!''' ... Daher darf man das Kalkül des Logiker GÖDEL, <span style="color:#00B000">(und damit auch das Theorem ANSELMS)</span>, nicht als einen Existenzbeweis für GOTT lesen. Sowohl ANSELM als auch GÖDEL setzen die Existenz GOTTES notwendig als gegeben schon voraus. Das GÖDEL-System, und auch das Theorem ANSELMS, sind bloß die logische Bestätigung der Widerspruchsfreiheit der Glaubensüberzeugung eines Menschen, der sich schon entschieden hat, an GOTT zu glauben; und nicht der Grund für seine Entscheidung. Alle sogenannten ,Gottesbeweise‘, sind in Wirklichkeit nichts anderes, als nachträgliche Evaluierungen eines GOTT-Glaubens, bzw. ,Wege‘, <span style="color:#00B000">(bei THOMAS von Aquin)</span>, die aufzeigen, dass der GOTT-Glaube widerspruchsfrei, sinnvoll, und <span style="color:#FF6000">»''mit allen bekannten Tatsachen durchaus vereinbar ist''«</span>, wie GÖDEL sagt. GOTT hat es nicht nötig, ,bewiesen‘ <span style="color:#00B000">( ╞ )</span> zu werden. ===<div class="center"><span style="color:#660066">Einleitung</span></div>=== Eine Studie zum GÖDEL-Kalkül. Der Logiker Kurt GÖDEL <span style="color:#00B000">(1906-1978)</span> hat mit diesem Kalkül eine moderne Rekonstruktion des, <span style="color:#00B000">(von KANT)</span>, so genannten ‚ontologischen Gottesbeweises‘ nach ANSELM von Canterbury auf modal-logischer Basis vorgelegt. Damit hat er die <span style="color:#FF6000">„Rede von GOTT“</span> auf eine ‚vernünftige Basis‘ gestellt, d.h. sie soll für jeden Menschen nachvollziehbar sein, <span style="color:#FF6000">»''rein verstandesmäßig, (ohne sich auf den Glauben an irgendeine Religion zu stützen)''«</span>, wie er sagt. GÖDEL ,nimmt‘ als Logiker, angeregt durch den Philosophen und Mathematiker Gottfried Wilhelm LEIBNIZ, rein theoretisch, fürs Erste, einmal ‚an‘, <span style="color:#00B000">(als Prämisse, d.i. der Term :01: im 3. Beweisgang zum Theorem ANSELMS im Anhang)</span>, dass es GOTT gibt ''':''' d.i. ein sog. ,methodologischer GOTT-Glaube‘, und untersucht die logischen Konsequenzen. Dabei zeigt sich, beim genaueren Hinsehen, dass der ‚Nicht-GOTT-Glaube‘, der ‚dezidierte‘ Atheismus, <span style="color:#00B000">(im Beweisgang ,Widerlegung‘ im Anhang)</span>, überraschender Weise, zu einem Widerspruch führt, und damit logisch ,falsch‘ ist. Jedoch, GÖDEL kann und will mit seinem Kalkül keinen ,GOTT-Glauben‘ ,erzeugen‘, d.h. das GÖDEL-Kalkül ist kein <span style="color:#FF6000">„Existenz-Beweis"</span> für den GOTT der Bibel, sondern, es setzt die Existenz eines GOTTES, einfach als gegeben, schon voraus. GÖDEL beweist dann mit seinem System, dass der traditionelle abendländische ,GOTT-Glaube‘, <span style="color:#FF6000">»''die theologische Weltanschauung''«</span>, <span style="color:#00B000">(d.i. die Kalkül-Prämisse, und das, daraus ,regulär‘ (├ ) abgeleitete, Theorem ANSELMS)</span>, mit den Maßstäben der modernen Logik <span style="color:#FF6000">»''durchaus vereinbar''«</span> <span style="color:#00B000">(d.h. logisch ,richtig‘)</span> ist, im Gegensatz zum ,Nicht-GOTT-Glauben‘, der davon ausgeht, dass es keinen GOTT gibt. GÖDEL beweist mit seinem System ''':''' der traditionelle GOTT-Glaube ist, — mit mathematisch-logischer Evidenz —, widerspruchfrei und wahr. <span style="color:#00B000">(Der Beweis aus dem Widerspruch des Gegenteils ist ein ,indirekter Beweis‘ und kein ,Zirkelbeweis‘ '''!''' )</span> GÖDEL blieb bis zu seinem Tod ohne ein dezidiertes religiöses Bekenntnis. <span style="color:#00B000">(Das Leben ist nicht immer ,logisch‘.)</span> Entsprechend der <span style="color:#FF6000">»''theologischen Weltanschauung''«</span> ist GOTT der Größte, <span style="color:#FF6000">»''über dem nichts Größeres mehr gedacht werden kann''«</span>, <span style="color:#00B000">(ANSELM)</span>; bzw. <span style="color:#FF6000">»''GOTT ist ein Wesen von äußerster Größe und Vollkommenheit, das alle Grade derselben in sich schließt''«</span>, <span style="color:#00B000">(LEIBNIZ)</span>, und der für uns immer schon ,da‘ ist. Das ist die methodologische Prämisse des GÖDEL-Kalküls. Davon ausgehend, zeigen seine Axiome und Definitionen, dass es zu einem Widerspruch führt, falls man ,annimmt‘, es sei nicht möglich, dass es <span style="color:#FF6000">„GOTT“</span>, <span style="color:#4C58FF">— ‚'''G'''‘ —</span> gibt. Aus dem Widerspruch des Gegenteils wird von GÖDEL, mit dem <span style="color:#4C58FF">[ Modus tollendo tollens ] :: [ A → B, ¬B ├ ¬A ]</span>, dann ,bewiesen‘ <span style="color:#00B000">( ╞ )</span> ''':''' es ist doch möglich, dass es <span style="color:#FF6000">„GOTT“</span> wirklich gibt. Somit ist der Glaube an <span style="color:#FF6000">„GOTT“</span>, — weil widerspruchsfrei —, mit den Worten GÖDELS ''':''' <span style="color:#FF6000">»''mit allen bekannten Tatsachen durchaus vereinbar''«</span>. Immanuel KANT <span style="color:#00B000">(1724-1804)</span> scheint diesen Fall vorausgesehen zu haben, dass versucht werden könnte, die ,Möglichkeit‘ GOTTES aus einem Widerspruch zu ,beweisen‘ ''':''' ::<span style="color:#FF6000">»</span> <span style="color:#00B000">[ Angenommen, es gibt ]</span> ''doch einen und zwar nur diesen '''Einen''' Begriff'' <span style="color:#00B000">[ ,GOTT‘, so dass ]</span> ''das Nichtsein oder das Aufheben seines Gegenstandes'' <span style="color:#00B000">[ GOTT ]</span>, ''in ,sich selbst‘ widersprechend sei; und dieses ist der Begriff des allerrealsten Wesens. Es hat, sagt ihr, alle Realität'', <span style="color:#00B000">[ bzw. alle Vollkommenheit ]</span>, ''und ihr seid berechtigt, ein solches Wesen als ,möglich‘ anzunehmen'' ... <span style="color:#00B000">[ denn das GÖDEL-Kalkül ,beweist‘ ( ╞ ) in der ,Widerlegung‘ im Anhang, wie auch im 1. Beweisgang, aus einem Widerspruch, dass die Existenz GOTTES definitiv logisch ,möglich‘ ist. ]</span> … ''obgleich der sich nicht widersprechende'', <span style="color:#00B000">[ ,mögliche‘ ]</span>, ''Begriff'', <span style="color:#00B000">[ ,GOTT‘ ]</span>, ''noch lange nicht die'' <span style="color:#00B000">[ reale ]</span> ''Möglichkeit des Gegenstandes'', <span style="color:#00B000">[ GOTT ]</span>, ''beweiset. … Das ist eine Warnung, von der Möglichkeit der Begriffe (logische)'', <span style="color:#4C58FF">— '''◇''' —</span>, ''nicht sofort auf die Möglichkeit der Dinge (reale)'', <span style="color:#4C58FF">— '''□''' —</span>, ''zu schließen''<ref>vgl. ‚''<span style="font-family: Times;"><big>Kritik der reinen Vernunft</big></span>''‘, Seite 399; https://www.korpora.org/kant/aa03/399.html</ref>. <span style="color:#00B000">[ Trotz dieser Warnung, wird dieser Schluss dennoch im Theorem ANSELMS vollzogen, bzw. mit GÖDEL im 3. Beweisgang ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx→□∃xGx'''‘ —</span> '''!''' ]</span>. <span style="color:#FF6000">«</span> Warum das <span style="color:#FF6000">»''mit allen bekannten Tatsachen durchaus vereinbar''«</span> ist, und inwieweit KANT sich irrt, wird in dieser Studie gezeigt. ===<div class="center"><span style="color:#660066">Der Schlüsselbegriff im Kalkül</span></div>=== Der ‚Schlüsselbegriff‘ in diesem Kalkül ist <span style="color:#FF6000">„positive Eigenschaft“</span>, bzw. <span style="color:#FF6000">„Perfektion“, „Vollkommenheit“</span> ''':''' <span style="color:#4C58FF">— ‚'''P'''‘ —</span>. Für diesen wichtigen Begriff gibt es aber im Kalkül selbst keine explizite Definition, sondern er wird nur durch seine Verwendung innerhalb des Kalküls indirekt ‚definiert‘. <span style="color:#00B000">(Das heißt ''':''' <span style="color:#4C58FF"> — ‚'''P'''‘ — </span> bezeichnet ein System von ,Eigenschaften‘, die ,positiv‘, bzw. ,vollkommen‘ | ,perfekt‘ | genannt werden, von denen im Kalkül wohl beweisbar ist, dass sie sich gegenseitig ,nicht widersprechen‘, weil sie im System als solche ,gleichwertig‘, bzw. gleich ,wahr‘ sind, jedoch ohne sie erschöpfend aufzählen zu können, oder auch nur sagen zu können, was sie alle im einzelnen bedeuten, außer, dass sie kompatibel sind.)</span> Mit der Wahl dieses Schlüsselbegriffes hat GÖDEL eine wesentliche Vorentscheidung für die Ergebnisse des Kalküls getroffen '''!''' In seinen Notizen zum ‚ontologischen Beweis‘ vom 10. Februar 1970 gibt GÖDEL, — für die nachträgliche Interpretation dieses Begriffes <span style="color:#00B000">(und auch für das Kalkül selbst)</span> —, die richtungsweisende Erklärung ''':''' ::<span style="color:#FF6000">»''Positiv bedeutet positiv im moralisch ästhetischen Sinne...''«</span> ::Und er fügt in Klammer hinzu ''':''' ::<span style="color:#FF6000">»...''(unabhängig von der zufälligen Struktur der Welt). Nur dann sind die Axiome wahr''.«</span><ref>GÖDEL, Kurt, ''<span style="font-family: Times;"><big>‚Ontological proof‘</big></span>'' in ''<span style="font-family: Times;"><big>‚Collected Works‘</big></span>'', vol. III, ed. S.FEFERMAN et al., Oxford (U.P.), 1995; 403–404.</ref> GÖDEL-Axiom-1 ''':''' <span style="color:#4C58FF">— ‚('''PX <small><math>{ \color{Blue} \dot\lor}</math></small> P¬X''')‘ ↔<span style="color:#00B000"> ‚('''¬PX ↔ P¬X''')‘</span> — </span> ''':''' <span style="color:#FF6000"> »''Entweder die Eigenschaft'' <span style="color:#4C58FF">‚'''X'''‘</span> ''oder ihre Negation'' <span style="color:#4C58FF">‚'''¬X'''‘</span> ''ist positiv''«</span>. Hier ist der Hauptkritikpunkt, dass es Eigenschaften gibt, die ,an sich‘ weder positiv noch negativ sind. Beispiele wären ''':''' ‚rothaarig‘ oder ‚schwerwiegend‘; solche Eigenschaften können aber ,für mich‘ entweder positiv oder negativ sein, abhängig von meiner Betrachtungsweise und subjektiven Vorlieben. Diese Eigenschaften, wie ‚rothaarig‘ an sich, oder meine positiv-negativen ‚Betrachtungsweisen‘, sind jedoch der <span style="color:#FF6000">»''zufälligen Struktur der Welt''«</span> entnommen und treffen nicht den <span style="color:#FF6000">»''moralisch ästhetischen Sinn''«</span> von <span style="color:#FF6000">»''positiv''«</span> bei GÖDEL. Er orientierte sich an LEIBNIZ, welcher im Bezug zum ‚ontologischen Beweis‘ definiert ''':''' ::<span style="color:#FF6000">»''Vollkommenheit'' <span style="color:#00B000">[ GOTTES ]</span> ''nenne ich jede einfache Eigenschaft, die sowohl positiv als auch absolut ist, oder dasjenige, was sie ausdrückt, ohne jede Begrenzung ausdrückt''.«</span><ref>Zitiert nach Thomas GAWLICK, in ''<span style="font-family: Times;"><big>‚Was sind und was sollen mathematische Gottesbeweise ?‘</big></span>'', Predigt vom 8.1.2012 in der Kreuzkirche zu Hannover. https://web.archive.org/web/20130524164359/http://www.idmp.uni-hannover.de/fileadmin/institut/IDMP-Studium-Mathematik/downloads/Gawlick/Predigt_Gawlick_Gottesbeweise.pdf</ref> Die Seins-Eigentümlichkeiten <span style="color:#00B000">(Daseinsmodi, Perfektionen)</span> wie ‚wahr‘, ‚gut‘, ‚edel‘ usw. entsprechen dem <span style="color:#FF6000">»''moralisch ästhetischen Sinn''«</span> von <span style="color:#FF6000">»''positiv''«</span> bei GÖDEL. Das sind Beispiele für ‚absolut‘ positive Begriffe aus der Lehre der Seinsanalogie ''':''' <span style="font-family: Times;"><big>‚verissimum‘, ‚optimum‘, ‚nobilissimum‘</big></span>, usw., die, an sich, <span style="color:#FF6000">»''ohne jede Begrenzung gelten''«</span>; zu finden in der <span style="font-family: Times;"><big>‚Via quarta‘</big></span>, bei THOMAS von Aquin, über die <span style="color:#FF6000">„analoge"</span> Abstufung im ‚Sein‘ der Dinge. Diese <span style="color:#FF6000">„analoge"</span> ‚Abstufung‘ ist dann die faktische Begrenztheit <span style="color:#00B000">(d.h. Unvollkommenheit)</span> im <span style="color:#FF6000">»''zufälligen''«</span> ‚Sein‘ der Dinge —. Die <span style="color:#FF6000">„positiven Eigenschaften“</span> GÖDELS ''':''' <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, wie Wahrheit, Einheit, Gutheit, <span style="color:#00B000">(von ,Güte‘)</span>, Schönheit, Adel, <span style="color:#00B000">(von ,edel‘)</span>, Gleichheit, Andersheit, Wirklichkeit, ,Sein‘ im Sinne von Etwas-sein, etc. werden <span style="color:#FF6000">„Perfektionen“</span>, oder auch <span style="color:#FF6000">„Transzendentalia“</span> genannt, <span style="color:#00B000">(von lateinisch ''':''' <span style="font-family: Times;"><big>transcendere</big></span>, <span style="color:#FF6000">„übersteigen“</span>)</span>. In der mittelalterlichen Scholastik sind Transzendentalien die Grundbegriffe, die allem Seienden als <span style="color:#FF6000">„Modus“</span>, <span style="color:#00B000">(d.h. ,Eigentümlichkeit‘, als allgemeine Seinsweisen)</span>, zukommen. Wegen ihrer Allgemeinheit ,übersteigen‘ sie die besonderen Seinsweisen, welche ARISTOTELES die ,Kategorien‘ nannte. Ontologisch betrachtet, werden die Transzendentalien als das allem Seienden Gemeinsame aufgefasst, da sie von allem ausgesagt werden können. Von der KI werden sie, nicht unpassend, als <span style="color:#FF6000">„ultimative Eigenschaften des Seins“</span> bezeichnet, die <span style="color:#FF6000">„jenseits der materiellen Welt existieren“</span>, <span style="color:#00B000">(da sie ,ultimativ‘ nur von GOTT, als den unbegrenzt Vollkommenen, ausgesagt werden können, die jedoch, auch von allen übrigen Seienden, wegen deren seinsmäßigen Unvollkommenheit und Begrenztheit, abgestuft, d.h. <span style="color:#FF6000">„analog"</span>, ausgesagt werden)</span>. Diese Transzendentalien sind ,inakzident‘, das heißt, sie entstehen nicht aus anderen Begriffen, sondern sind erste, unteilbare Bestimmungen <span style="color:#4C58FF">— ‚'''X'''‘ —</span> des Denkens und des Seins, die allen Seienden ''':''' <span style="color:#4C58FF">— ‚'''□∀xXx'''‘ —</span>, unabhängig von ihren speziellen Eigenschaften, als ,relative‘ Vollkommenheiten, <span style="color:#00B000">(bzw. Unvollkommenheiten)</span>, mit ,modaler‘ Notwendigkeit, <span style="color:#4C58FF">— ‚□‘ —</span>, <span style="color:#FF6000">„analogisch"</span> zukommen, d.h. sie sind in allen Seienden, seinsmäßig abgestuft und abgegrenzt, ,relativ‘ zum unbegrenzt Unendlichen ihrer selbst, und <span style="color:#FF6000">»''dasjenige, was sie ausdrücken, drücken sie ohne jede Begrenzung aus''«</span>, <span style="color:#00B000">(LEIBNIZ)</span>; und damit stehen sie ontologisch in einer <span style="color:#FF6000">„analogen"</span> ,Beziehung‘ zu GOTT, dem absolut Vollkommenen und unbegrenzt Unendlichen. In der Erkenntnisordnung wirken sie als die ersten Begriffe des menschlichen Verstehens, die eine Basis für alle weiteren wissenschaftlichen Erkenntnisse bilden. In der Seinsordnung sind die Transzendentalien ontologisch eins, gleichwertig, <span style="color:#00B000">(,mathematisch äquivalent‘)</span>, und daher konvertierbar, d.h. austauschbar, <span style="color:#00B000">(vgl. z. B. den scholastischen ,Merksatz‘ ''':''' <span style="font-family: Times;"><big>,ens et verum convertuntur‘</big></span>)</span>. Damit sind sie auch von einander abhängig, was GÖDEL sowohl im Axiom-2 ''':''' <span style="color:#4C58FF">— ‚'''PX ∧ □∀x(Xx→Yx)→PY'''‘ —</span>, für positive Eigenschaften, als auch in der Definition-2 ''':''' <span style="color:#4C58FF">— ‚'''X'''<sub>ess</sub>'''x ↔ Xx ∧ ∀Y(Yx→ □∀y(Xy→Yy))'''‘ —</span>, für die Wesenseigenschaften, syntaktisch formalisiert hat mit dem Term-Element ''':''' <span style="color:#4C58FF">— ‚'''□∀x(Xx→Yx)'''‘ —</span>, weil sie sich gegenseitig, — mit ,modaler‘ Notwendigkeit —, gleichwertig ,implizieren‘, d.h. einschließen, <span style="color:#00B000">(im Axiom-2 mit der Individuum-Variable <span style="color:#4C58FF"> — ‚'''x'''‘ —</span>, und in der Definition-2 mit der Individuum-Variable <span style="color:#4C58FF"> — ‚'''y'''‘ — </span>)</span>. Man kann die Transzendentalia, <span style="color:#00B000">(wie GÖDEL)</span>, auch ,Wesenseigenschaften‘ ''':''' <span style="color:#4C58FF"> — ‚'''X'''<sub>ess</sub>‘ —</span>, nennen, weil sie allem Seienden <span style="color:#FF6000">„wesentlich analog"</span> zukommen. Weil Transzendentalien miteinander austauschbar sind, sind sie auch widerspruchsfrei, was GÖDEL mit Axiom-1 syntaktisch darstellt. Die Gültigkeit und Wahrheit, d.h. die mathematisch-logische Evidenz von Axiom-1 und Axiom-2, beruht auf der ontologischen Allgemeinheit und Gültigkeit der Transzendentalia, die GÖDEL mit Definition-2, in sein Kalkül explizit eingeführt und als Wesenseigenschaften ,bestimmt‘ hat. <span style="color:#00B000">(Definitionen werden formal-syntaktisch durch das Äquivalenzzeichen <span style="color:#4C58FF">,'''↔'''‘</span> angezeigt, gelesen als <span style="color:#FF6000">„...ist genau dann ... wenn...“</span>)</span> Die GÖDEL-Axiome und -Definitionen werden jedoch sofort <span style="color:#FF6000">„modal falsch"</span>, wenn ihre Eigenschafts-Variablen, <span style="color:#4C58FF">— ‚'''X'''‘ —</span> und <span style="color:#4C58FF">— ‚'''Y'''‘ —</span>, mit ,Nicht-Transzendentalia‘, wie z. B. ,rot‘ oder ,schwer‘, belegt werden. <span style="color:#00B000">(Dieser ,Sachverhalt‘ wird von Kritikern des GÖDEL-Systems, — zu vorschnell —, verwendet, um ihre Behauptungen zu ,belegen‘, das GÖDEL-Kalkül und seine Konsequenzen seien ,falsch‘.)</span> Zum Überblick ''':''' <span style="color:#FF6000">„Transzendentalia“</span> sind universale, alles Seiende charakterisierende Begriffe, die über kategoriale Einteilungen hinausgehen, und sowohl in der klassischen Scholastik, als auch in der modernen Philosophie, <span style="color:#00B000">(KANT, Uwe MEIXNER<ref>vgl. die ,transzendentalen‘ Bedingungen möglicher Erkenntnisse bei KANT; und auch in der ,Axiomatischen Ontologie‘ bei Uwe MEIXNER</ref>)</span>, als Grundlage der Metaphysik und Erkenntnistheorie dienen. Sie sind die <span style="color:#FF6000">„ersten Begriffe des Seins“</span>, die jedem Ding als ,relative‘ Vollkommenheiten, <span style="color:#00B000">(Perfektionen)</span>, inhärent sind, <span style="color:#FF6000">„analogisch"</span> abgestuft, auf einen ,ultimativ‘-unbegrenzten Bezugspunkt ausgerichtet, und die sich im Denken, <span style="color:#00B000">(für uns als wahr)</span>, und in der moralischen Wertung, <span style="color:#00B000">(für uns als gut und edel)</span>, manifestieren, relativ zum ,ultimativ‘-unbegrenzten Bezugspunkt ihrer selbst. Die faktische, zusätzliche Unvollkommenheit, die sich generell in der notwendigen, und unausweichlichen Vergänglichkeit aller Dinge zeigt, ist einem ontologischen Defekt ,geschuldet‘, der stark zeitabhängig ist, d.h. der einen Anfang und ein Ende hat. Das GÖDEL-Axiom-5 ''':''' <span style="color:#4C58FF"> — ‚'''PE'''<sub>not</sub>‘ —</span> ''':''' <span style="color:#FF6000">»''Notwendige Existenz ist eine positive Eigenschaft''«</span>, ist immer falsch, wenn es auf etwas aus der <span style="color:#FF6000">»''zufälligen Struktur der Welt''«</span> angewendet wird, wie z. B. auf einen <span style="color:#FF6000">„Tsunami“</span>, dessen ‚Existenz‘ für uns nicht ‚positiv‘ ist. KANT hat schon festgestellt ''':''' <span style="color:#FF6000">„Existenz ist keine Eigenschaft“</span>. Das gilt für alles, was <span style="color:#FF6000">„existiert“</span>. Das Axiom-5 hat nur dann seine Gültigkeit, ist nur dann ,wahr‘, wenn <span style="color:#FF6000">„Dasein“</span> <span style="color:#00B000">(Existenz)</span> und <span style="color:#FF6000">„Wesenseigenschaften“</span> <span style="color:#00B000">(Essenz)</span> in eins zusammenfallen. Bei allen Dingen, die ‚da‘ sind, ist ihr ‚Da-Sein‘ ontologisch immer verschieden zu dem ‚was‘ sie sind ''':''' zu ihrem ,Was-Sein‘. In der philosophischen Tradition, seit ARISTOTELES, wird die ontologische Identität, d.i. die Koinzidenz, der innere Zusammenhang von ‚Sein‘ und ‚Wesen‘ allein nur dem <span style="color:#FF6000">„selbst ‚unbewegten‘ Erstbewegenden“</span> zugeschrieben, dem <span style="color:#FF6000">„<span style="font-family: Times;"><big>πρῶτον κινοῦν ἀκίνητον</big></span>“</span><span style="color:#00B000"> | ,prôton kinoûn akinêton‘</span>, von dem ARISTOTELES etwas später sagt ''':''' <span style="color:#FF6000">»''denn dies ist der Gott''«</span> und dann hinzufügt ''':''' <span style="color:#FF6000">»''so sagen wir ja''«</span>; d.h. das ist eine Interpretation aus dem Glaubenskontext des ARISTOTELES. Er war ein Gott-gläubiger Grieche. Wer an GOTT glaubt, kann das nachvollziehen. GÖDEL musste dieses Axiom-5 postulieren, sonst wäre sein Kalkül nicht aufgegangen, ohne dass er deswegen schon an GOTT glauben müsste. Er hat für sein Kalkül das ontologische Theorem von der Identität von ‚Sein‘ und ‚Wesen‘ im ‚unbewegten Erstbeweger‘ des ARISTOTELES benutzt, ohne diese Herkunft explizit referenziert zu haben. <span style="color:#00B000">(Gilt auch für Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span> ''':''' <span style="color:#FF6000">»''Göttlichkeit, das GOTT-Sein, das ‚Dasein‘ GOTTES, ist eine positive Wesenseigenschaft, eine Perfektion; d.h. ist das ‚Wesen‘ GOTTES ''':''' GOTT ist perfekt''«</span>)</span>. Die ontologische Identität von Sein und Wesen, Existenz und Essenz, wie auch die Koinzidenz von Möglichkeit und Wirklichkeit, von Ursache und Wirkung, sowie auch die ontologische Einheit von <span style="color:#00B000">(Erkenntnis-)</span>Subjekt und <span style="color:#00B000">(Erkenntnis-)</span>Objekt im <span style="color:#FF6000">»''Erkennen seiner Erkenntnis''<span style="color:#00B000">[-Tätigkeit ]</span>«<span style="color:#00B000"> | </span>„<span style="font-family: Times;"><big>νοήσεως νόησις</big></span>“</span><span style="color:#00B000"> | ,noêseôs noêsis‘ <small>(<span style="font-family: Times;"><big>,''Metaphysik''‘</big></span> XII 9, 1074b34)</small></span>, und der innere Zusammenhang der <span style="color:#FF6000">„ultimativen Transzendentalia“</span>, gilt nur in der <span style="color:#FF6000">„unverursachten Letztursache"</span>, auf die ARISTOTELES bei seiner Prinzipienforschung gestoßen ist. Es gibt verschiedene Versuche, die GÖDEL-Axiome durch sog. ,Modelle‘, relativ zu einfacheren ,Welten‘, zu verifizieren, um damit ihre relative Konsistenz nachzuweisen. Für GÖDEL aber <span style="color:#FF6000">»''sind die Axiome nur dann'' <span style="color:#00B000">[ in unserer ,realen‘ Welt ]</span> ''wahr'' <span style="color:#00B000">[ und annehmbar ]</span>«</span>, wenn sie <span style="color:#FF6000">»''unabhängig von der zufälligen Struktur der Welt'' <span style="color:#00B000">[ d.h. jeder auch nur ,möglichen‘ Welt ]</span> ''sind''«</span>. Diese Bedingung verweist jede Verifikation und jede Interpretation der Axiome auf das ,Nicht-Zufällige‘, das ,Notwendige‘, ,Absolute‘, in dem die Axiome und Definitionen des GÖDEL-Kalküls erst dadurch ihren Sinn und ihre Bedeutung bekommen, wenn sie vom ,Absoluten‘ und ,Unendlichen‘ her erklärt und verstanden werden. Damit insistiert GÖDEL auf eine genuin <span style="color:#4C58FF">,theologische‘</span> Interpretation seines Kalküls, mit der <span style="color:#4C58FF">„Theologie“</span> zum Begriff GOTT, dem unbegrenzt Unendlichen, als Verifikationskriterium. Das entspricht auch der ,methodologischen‘ Prämisse seines Kalküls. Die wichtigsten Axiome und Definitionen im GÖDEL-Kalkül sind jedoch bloße ,Annahmen‘, deren Evidenz, sowohl die ,mathematische‘ als auch die <span style="color:#4C58FF">,theologische‘</span>, erst evaluiert, d.h. ,bewiesen‘ <span style="color:#00B000">( ╞ )</span> werden muss. Das bedeutet ''':''' die logische Verifikation der Axiome und Definitionen von GOTT und seinen Vollkommenheiten kann nur Kalkül-intern durch den Aufweis ihrer Widerspruchsfreiheit erfolgen, d.i. <span style="color:#FF6000">»''unabhängig von der zufälligen Struktur der Welt''«</span>. Logisch evaluierte und verifizierte Axiome und Definitionen sind die ,modal‘ notwendigen, d.h. die ,transzendentalen‘ Voraussetzungen für die Ergebnisse eines Kalküls, damit seine Theoreme und Korollare in unserer ,realen‘ Welt als logisch ,wahr‘ und damit für uns auch als ,annehmbar‘ gelten können, während die Prämissen eines Kalküls, <span style="color:#00B000">(die Argument Einführung, <span style="color:#4C58FF">— '''AE:''' —</span> )</span>, nicht notwendige, und somit ,modal‘ frei gewählte ,Annahmen‘ sind. Jedoch aus diesen ,modal‘ frei gewählten, ,möglichen‘ <span style="color:#00B000">( <span style="color:#4C58FF">'''◇'''</span> )</span> Prämissen folgen mit Hilfe der ,bewiesenen‘ <span style="color:#00B000">( ╞ )</span> Axiome und Definitionen die Ergebnisse mit ,modaler‘ Notwendigkeit <span style="color:#00B000">( <span style="color:#4C58FF">'''□'''</span> )</span>. Die Logik des GÖDEL-Systems ist eine ,Prädikatenlogik‘ zweiter Stufe, in der die Quantoren nicht nur Individuum-Variable, sondern auch Eigenschafts-Variable, <span style="color:#00B000">(als noch ,unbestimmte‘ Prädikate im Allgemeinen)</span>, binden können. Die formale Struktur des GÖDEL-Kalküls besteht aus fünf Axiomen und drei Definitionen, mit deren Hilfe in drei Beweisgängen drei Theoreme und mehrere Korollare aus seiner ,methodologischen‘ Prämisse ,regulär‘ <span style="color:#00B000">(├ )</span> abgeleitet werden können, wobei die beiden ersten Beweisgänge, mit ihren Ergebnissen, den dritten vorbereiten, in dem es dann um das Theorem ANSELMS geht. Die Prämisse des GÖDEL-Kalküls in allen Beweisgängen ist der traditionelle ,GOTT-Glaube‘, in der Formulierung speziell nach LEIBNIZ. Ein Axiom, eine Definition, zwei Theoreme und alle Korollare im GÖDEL-Kalkül sind Aussagen über <span style="color:#FF6000">„GOTT“</span>, <span style="color:#4C58FF">— ‚'''G'''‘ —</span>. Alle fünf Axiome, eine Definition und ein Theorem, <span style="color:#00B000">(und das Korollar aus Axiom-4)</span>, sind auch Aussagen über die Eigenschaft <span style="color:#FF6000">„Vollkommenheit“, „Perfektion“</span>, <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, die in der <span style="color:#FF6000">»''theologischen Weltanschauung''«</span> als die Wesenseigenschaft GOTTES gilt ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, <span style="color:#FF6000">»''GOTT ist vollkommen''«</span> bzw. <span style="color:#FF6000">»''GOTT ist das Vollkommenste der Wesen''«</span>, <span style="color:#00B000">(DESCARTES)</span>. Zwei Definitionen sind Aussagen über die allgemeinen Wesenseigenschaften aller Seienden, <span style="color:#4C58FF">— ‚'''X'''<sub>ess</sub>‘ —</span>, die Transzendentalien, die, als notwendige Existenz, <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>‘ —</span>, auch GOTT zugeordnet werden, mit der Besonderheit bei GOTT, dass sowohl alle Eigenschaften, als auch alle anderen Zuordnungen, wie Sein und Wesen, wie Ursache und Wirkung, usw., im Unendlichen, GOTT, <span style="color:#FF6000">„koinzident“</span> sind, d.h. in GOTT paarweise perspektivisch in ,eins‘ zusammenfallen, und die auch, als Transzendentalia, konvertierbar, d.h. austauschbar sind. Diese Sachverhalte machen deutlich, dass eine spezifische ,Verifikation‘ und sachgerechte ,Evaluierung‘ der GÖDEL-Axiomatik nur genuin <span style="color:#4C58FF">,theologisch‘</span> erfolgen kann. Die Evaluierung der <span style="color:#FF6000">»''mathematischen Evidenz''«</span> des GÖDEL-Systems, im Allgemeinen, muss jedoch entsprechend der Maßstäbe einer modalen Prädikatenlogik zweiter Stufe durchgeführt werden. Das GÖDEL-Kalkül unterscheidet <span style="color:#00B000">(in Definition-3 ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x ↔ ∀X(X'''<sub>ess</sub>'''x →□∃yXy)'''‘ —</span>)</span> formal-syntaktisch zwischen der Eigenschaft ,Existenz‘, <span style="color:#4C58FF"> — ‚'''E'''‘ —</span>, die nur GOTT zugeordnet werden kann, und dem Existenz-Operator, <span style="color:#4C58FF">— ‚'''∃'''‘ —</span>, der auch allem Übrigen, das nicht GOTT ist, zugeordnet wird. Es gibt hier auch den formal-syntaktischen Unterschied zwischen der, <span style="color:#00B000">(von mir notierten, jedoch von GÖDEL schon intendierten und angesprochenen)</span>, speziellen ,Notwendigkeit‘, <span style="color:#4C58FF"> — <sub>not</sub> —</span>, die nur der Existenz GOTTES zugeordnet ist, und der modalen ,Notwendigkeit‘, <span style="color:#4C58FF">— ‚'''□'''‘ —</span>, die auf Verschiedenes bezogen werden kann. Diese Unterschiede sind Hinweise, dass GÖDEL in seiner Kalkül-Logik und -Syntax, die Außerordentlichkeit und Eigenständigkeit GOTTES berücksichtigt, der, als Schöpfer der Welt, prinzipiell und absolut <span style="color:#FF6000">»''unabhängig von der zufälligen Struktur der Welt''«</span> ist, die erst durch GOTT auch das ist, was sie ist. ===<div class="center"><span style="color:#660066">Die Genese des Kalküls</span></div>=== Wie kommt GÖDEL zu seinem Kalkül '''?''' Sein Gewährsmann war Gottfried Wilhelm LEIBNIZ, <span style="color:#00B000">(1646-1716)</span>, den er sehr schätzte. Die rekonstruierbare Genese seines Kalküls findet man in LEIBNIZ ''':''' ''<span style="font-family: Times;"><big>‚Neue Abhandlungen über den menschlichen Verstand‘</big></span>'', <span style="color:#00B000">(1704)</span>‚ ''<span style="font-family: Times;"><big>Viertes Buch, Kapitel X ''':''' ‚Von unserer Erkenntnis des Daseins Gottes‘</big></span>'', Seite 475f. Hier der <span style="color:#00B000">[ kommentierte ]</span> Textausschnitt zum sog. ontologischen ‚Gottesbeweis‘''':''' ::<span style="color:#FF6000">»</span>''Folgendes etwa ist der Gang seines'' <span style="color:#00B000">[ d.h. ANSELMS, Erzbischof von Canterbury; 1033-1109, ]</span> ''Beweises ''':''' GOTT ist das Größte'', <span style="color:#00B000">[ ANSELM spricht vom biblischen GOTT des Glaubens, als ''':''' <span style="color:#FF6000">»''den, über dem ,Größeres‘'' | <span style="font-family: Times;"><big>‚maius‘</big></span> | ''nicht mehr gedacht werden kann''«</span> ]</span>, ''oder, wie DESCARTES es ausdrückt ''':''' das Vollkommenste der Wesen oder auch ein Wesen von äußerster Größe und Vollkommenheit'' ''':''' <span style="color:#00B000"> [ GÖDEL ''':''' </span><span style="color:#4C58FF">‚'''P'''‘</span> <span style="color:#00B000">:= ‚Perfektion‘, ‚positive Eigenschaft‘ ]</span>, ''das alle Grade derselben in sich schließt.''<span style="color:#00B000"> [ GÖDEL-Definition-1 ''':''' <span style="color:#4C58FF">— ‚'''Gx↔∀X(PX→Xx)'''‘ —</span> ''':''' <span style="color:#FF6000">»''Das Individuum'' <span style="color:#4C58FF">,'''x'''‘</span> ''ist genau dann GOTT'', <span style="color:#4C58FF">,'''G'''‘</span>, ''wenn'' <span style="color:#4C58FF">,'''x'''‘</span> ''alle Vollkommenheiten'', <span style="color:#4C58FF">,'''P'''‘</span>, ''in sich schließt''«</span>. Definition-1 bildet die traditionelle Vorstellung von GOTT ab. ]</span> ''Dies also ist der Begriff GOTTES.'' <span style="color:#00B000">[ Der Term <span style="color:#4C58FF">— ,'''G'''‘ —</span> steht hier für den biblischen ‚Begriff‘ <span style="color:#FF6000">„GOTT“</span> als ,Individuumname‘ '''!''' ]</span> ''Sehen wir nun, wie aus diesem Begriff das ‚Dasein’ folgt.''<span style="color:#00B000"> [ GÖDEL ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span> ''':''' <span style="color:#FF6000">»''GOTT ist notwendig aus sich ‚da‘''«</span> ''':''' Term :10:, 1. Hauptergebnis im 3. Beweisgang. ]</span> ''Es ist etwas <u>mehr</u>, ‚da‘ zu sein, als nicht ‚da‘ zu sein, oder auch das ‚Dasein‘ fügt der Größe oder der Vollkommenheit'' <span style="color:#00B000">[ GOTTES ]</span> ''einen Grad hinzu, und wie DESCARTES es ausspricht, das ‚Dasein‘ ist selbst eine Vollkommenheit.''<span style="color:#FF6000">«</span> <span style="color:#00B000">(Diesen Ausspruch DESCARTES übernimmt GÖDEL im Axiom-5 ''':''' <span style="color:#4C58FF"> — ‚'''PE'''<sub>not</sub>‘ —</span> ''':''' <span style="color:#FF6000">»''notwendige Existenz''</span> [ alias ‚Dasein GOTTES’ ] <span style="color:#FF6000">''ist eine positive Eigenschaft''</span> [ alias Vollkommenheit ]<span style="color:#FF6000">«</span>. Dem widerspricht KANT ''':''' <span style="color:#FF6000">„Existenz ist keine Eigenschaft“</span>, bzw. <span style="color:#FF6000">»''Sein ist kein reales Prädikat''«</span>. Das Axiom-5 ist daher nur dann ‚wahr‘, wenn ‚Wirklichsein‘ | <span style="color:#FF6000">„<span style="font-family: Times;"><big>ἐνέργεια οὖσα</big></span>“</span> | ‚enérgeia oúsa‘ | d.h. ‚Dasein‘ und ‚Wesen‘ | <span style="color:#FF6000">„<span style="font-family: Times;"><big>οὐσία</big></span>“</span> | ‚ousía‘ | — genauer ''':''' ‚Wesenseigenschaften’ —, ontologisch ,eins‘ sind, d.h. wenn <span style="color:#FF6000">„Existieren“</span> immer schon die <span style="color:#FF6000">„Wesenseigenschaft“</span> GOTTES ist. Was nach ARISTOTELES nur im <span style="color:#FF6000">„unbewegten Erstbeweger“</span> der Fall ist; bzw. mit LEIBNIZ ''':''' <span style="color:#FF6000">»''was das Privilegium der Gottheit allein ist''«</span> '''!''' Aus der ,methodologischen‘ ,Annahme‘ im 2. Beweisgang GÖDELS ''':''' <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span> ''':''' <span style="color:#FF6000">»''das'' <span style="color:#4C58FF">‚'''x'''‘</span> ''steht für den GOTT der Christen''«</span>, und mit Hilfe von Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span> ''':''' <span style="color:#FF6000">»''Göttlichkeit ist eine positive Eigenschaft''«</span>, bzw. <span style="color:#FF6000">»''GOTT ist perfekt''«</span>, mit Axiom-4 ''':''' <span style="color:#4C58FF">— ‚'''PX → □PX'''‘ —</span> ''':''' <span style="color:#FF6000">»''Positive Eigenschaften sind notwendig aus sich, — von Natur aus —, positiv''«</span>, mit Definition-2 ''':''' <span style="color:#4C58FF">— ‚'''X'''<sub>ess</sub>'''x ↔ Xx ∧ ∀Y(Yx→ □∀y(Xy→Yy))'''‘ —</span> ''':''' <span style="color:#FF6000">»''Zum Wesen gehören notwendig auch alle Konsequenzen aus einer Wesenseigenschaft''«</span>, und mit Axiom-1 und der Definition für GOTT, folgt nach einigen logischen Umformungen das GÖDEL-Theorem-2 ''':''' <span style="color:#4C58FF">— ‚'''Gx↔G'''<sub>ess</sub>'''x'''‘ —</span> ''':''' <span style="color:#FF6000">»''Das'' <span style="color:#4C58FF">‚'''x'''‘</span> ''ist genau dann der GOTT der Christen, wenn das Wesen dieses GOTTES sein eigenes Sein ist''«</span>. Dasein und Wesen sind im Unendlichen, GOTT <span style="color:#FF6000">„koinzident“</span> ,eins‘, übereinstimmend mit dem Theorem des ARISTOTELES. Mit diesem, im Kalkül <u>ohne</u> Axiom-5 ,regulär‘ (├ ) abgeleiteten Theorem, widerlegt er KANT für den individuellen Spezialfall <span style="color:#4C58FF">‚'''G'''‘</span> := <span style="color:#FF6000">„GOTT“</span>. Nachprüfbar im Anhang ''':''' im ‚ontologischen‘ Beweis für das Basis-Theorem-2. Somit ist Axiom-5 ,wahr‘, und KANT, der <span style="color:#FF6000">»''eine Abneigung gegen das Gebet hatte''«</span> und auch <span style="color:#FF6000">»''nie zu den sonntäglichen Kirchgängern zählte''«</span><ref>Uwe SCHULTZ ''':''' ‚''<span style="font-family: Times;"><big>Immanuel Kant</big></span>''‘, Rowohlt Monographie 50659, Seite 12</ref>, hat sich hier, im Bezug auf GOTT, geirrt. <span style="color:#4C58FF">„Theologie“</span>, als Wissenschaft von GOTT, war für KANT nie eine ernstzunehmende Option. Die <span style="color:#4C58FF">„Theologie“</span>, als Wissenschaft von GOTT, die natürlich immer auch verbunden sein muss mit der täglichen ,Erfahrung‘ einer Glaubens-Praxis, im Gebet und in den Gottesdienst-Feiern des <span style="color:#4C58FF">„Theologen“</span>, und die daraus entsteht, ist eine ziemlich ,ausgereifte‘ Disziplin. Es haben sich, durch Jahrhunderte hindurch, viele gläubige und auch gescheite Menschen, schon im Judentum, und dann im Christentum, und ebenfalls im Islam, darum bemüht.)</span> :: <span style="color:#FF6000">»</span>''Darum ist dieser Grad von Größe und Vollkommenheit oder auch diese Vollkommenheit, welche im ‚Dasein‘ besteht, in diesem höchsten, durchaus großen, ganz vollkommenen Wesen, denn sonst würde ihm ein Grad fehlen, was gegen seine Definition wäre. Und folglich ist dies höchste Wesen ‚da‘. Die Scholastiker, ohne selbst ihren'' <span style="font-family: Times;"><big>doctor angelicus</big></span> <span style="color:#00B000">[ := THOMAS von Aquin ]</span> ''auszunehmen, haben diesen Beweis verachtet'', <span style="color:#00B000">[ wie später auch Immanuel KANT ]</span>, ''und ihn als einen Paralogismus'' <span style="color:#00B000">[ := Fehlschluss ]</span> ''betrachtet, worin sie sehr unrecht gehabt haben; und DESCARTES, welcher die scholastische Philosophie im Kolleg der Jesuiten zu La Flèche lange genug studiert hatte, hat sehr recht gehabt, ihn wieder zu Ehren zu bringen. Es ist nicht ein Paralogismus, sondern ein unvollständiger Beweis'', <span style="color:#00B000">[ den GÖDEL vervollständigt hat ]</span>, ''der etwas voraussetzt, was man noch hätte beweisen sollen, um ihm mathematische Evidenz zu verleihen — nämlich, dass man dabei stillschweigend voraussetzt, diese Vorstellung des durchaus großen oder durchaus vollkommenen Wesens sei möglich und enthalte keinen Widerspruch'' <span style="color:#00B000">[ '''::''' <span style="color:#4C58FF">— '''◇''' —</span> '''::''' ,möglich‘, ,konsistent‘, ,denkbar‘; GÖDEL beweist im 1. Beweisgang aus Theorem-1 ''':''' <span style="color:#4C58FF">— ‚'''PX→◇∃xXx'''‘ —</span>, <span style="color:#FF6000">»''positive Eigenschaften'', <span style="color:#00B000">[ die allgemeinen Transzendentalien ]</span>, ''sind widerspruchsfrei''«</span>, mit Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, folgt Korollar-1 ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span>, <span style="color:#FF6000">»''GOTT ist widerspruchsfrei möglich''«</span> ]</span>. ''Und es ist schon etwas, dass man durch diese Bemerkung beweist ''':''' gesetzt, dass GOTT'' <span style="color:#00B000">['' <span style="color:#FF6000">»widerspruchsfrei«</span> '']</span> '',möglich‘ ist, so ‚ist‘ er'' <span style="color:#00B000">[ ,notwendig‘ '''::''' <span style="color:#4C58FF">— '''□''' —</span> '''::''' für jede mögliche Welt auch wirklich aus sich ‚da‘ ]</span>, ''was das Privilegium der Gottheit allein ist'' ''':''' <span style="color:#00B000">[ Im 3. Beweisgang, Theorem-3 ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx→□∃xGx'''‘ —</span> ''':''' ‚ANSELMS Prinzip‘ ''':''' <span style="color:#FF6000">»''Weil GOTT widerspruchsfrei ,möglich‘ ist, darum ist auch der Glaube widerspruchsfrei, der annimmt, dass GOTT aus sich ,notwendig‘ da ist''«</span>; mit Korollar-3 ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx ∧ □∀y(Gy→x=y)'''‘ —</span>, <span style="color:#FF6000">»''Es gibt notwendig nur einen einzigen GOTT''«</span>. Damit ist auch der Monotheïsmus bewiesen. ]</span> ''Man hat recht, die Möglichkeit eines jeden Wesens anzunehmen und vor allem die GOTTES, bis ein anderer das Gegenteil beweist''. <span style="color:#00B000">[ Das Gegenteil besagt, dass GOTT ,unmöglich‘ ist. Hier setzt der Möglichkeitsbeweis im GÖDEL-Kalkül an, und beweist, dass diese Aussage zu einem Widerspruch führt. ]</span> ''Somit gibt dieser metaphysische Beweis schon einen moralischen zwingenden Schluss ab, wonach wir dem gegenwärtigen Stande unserer Erkenntnisse zufolge urteilen müssen, dass GOTT ‚da‘ sei, und demgemäß handeln.'' <span style="color:#00B000">[ Aber nicht logisch zwingend '''!''' Denn die Interpretation <span style="color:#4C58FF">— ‚'''G'''‘ —</span> mit dem GOTT der Bibel, als ,methodologische‘ Kalkül-Prämisse, ist nicht zwingend, jedoch ,modal‘ möglich, <span style="color:#4C58FF">— '''◇''' —</span>, und im christlichen Glaubenskontext sinnvoll, was mit einer stimmigen <span style="color:#4C58FF">„theologischen“</span> Interpretation des GÖDEL-Kalküls gezeigt werden kann. Damit wäre dann auch die Frage beantwortet, ob das GÖDEL-System sich plausibel als eine Theorie von GOTT und seinen Eigenschaften interpretieren lässt, bzw. als eine <span style="color:#FF6000">»''axiomatische''«</span> <span style="color:#4C58FF">„Theologie“</span>, wie sie André FUHRMANN apostrophiert. Das <span style="color:#4C58FF">— ‚'''G'''‘ —</span> ist der ,Individuumname‘ für den GOTT der Bibel, — ,GOTT‘ groß geschrieben —, im monotheïstischen, christlichen Glaubenskontext, den auch LEIBNIZ teilt. Dann steht der ,Name‘ auch synonym für das ,existierende‘ Individuum, d.h. für dessen ,Existenz‘. ]</span> ''Es wäre aber doch zu wünschen, dass gescheite Männer'' <span style="color:#00B000">[ sic ! ]</span> ''den Beweis mit der Strenge einer mathematischen Evidenz vollendeten'', <span style="color:#00B000">[ was GÖDEL veranlasst hat, seine Version eines ‚ontologischen Beweises’ zu kreieren, dessen <span style="color:#FF6000">»''mathematische Evidenz''«</span> man heute mit Computerprogrammen<ref>siehe Fußnote 12</ref> schon nachgewiesen hat ]</span> ... <span style="color:#FF6000">«</span>. Für GÖDEL war dieser Text eine intellektuelle Herausforderung, und er hat sie angenommen. Das war für GÖDEL sicher keine Glaubensangelegenheit. GOTT hat es ja auch nicht nötig, ‚bewiesen‘ zu werden. Wer <span style="color:#4C58FF">— ‚'''G'''‘ —</span> z. B. mit dem sog. ‚Urknall‘ gleich setzt, macht die <span style="color:#FF6000">»''zufällige Struktur der Welt''«</span> im ‚Urknall‘, <span style="color:#00B000">(pantheistisch)</span> zu einem ,Gott‘, was GÖDEL dezidiert für sein Kalkül ausgeschlossen haben wollte. Kurt GÖDEL schreibt 1961 in einem Brief, in Anlehnung an den obigen Text ''':''' ::<span style="color:#FF6000">»...''ich glaube, schon heute dürfte es möglich sein, rein verstandesmäßig ''<span style="color:#00B000">[ sic '''!''' ]</span>, ''(ohne sich auf den Glauben an irgendeine Religion zu stützen) einzusehen, dass die theologische Weltanschauung'', <span style="color:#00B000">[ dass es GOTT gibt ]</span>, ''mit allen bekannten Tatsachen'', <span style="color:#00B000">[ z. B. mit den Maßstäben einer modernen Logik ]</span>, ''durchaus vereinbar ist. Das hat schon vor 250 Jahren der berühmte Philosoph und Mathematiker LEIBNIZ versucht''.«</span><ref>Zitiert nach SCHIMANOVICH-GALIDESCU, M.-E. ''':''' ‚''<span style="font-family: Times;"><big>Princeton–Wien 1946–1966. Briefe an die Mutter</big></span>''‘, in ‚''<span style="font-family: Times;"><big>Kurt Gödel – Leben und Werk</big></span>''‘, Hg. B.BULDT et alia, Wien (HÖLDER–PICHLER–TEMSKY), 2001, Band 1</ref> ===<div class="center"><span style="color:#660066">Die Interpretation des Kalküls</span></div>=== Wenn man sich das GÖDEL-Kalkül ansieht, wie es heute formalisiert vorliegt, stellt sich die Frage ''':''' <span style="color:#FF6000">„Lässt sich dieses System plausibel als eine Theorie von GOTT <span style="color:#00B000">(als eine ‚Rede von GOTT’ := <span style="color:#4C58FF">,Theologie’</span>)</span> und seiner Eigenschaften verstehen '''?''' “ — „Ist hier eine genuin <span style="color:#4C58FF">,theologische’</span> Interpretation möglich '''?''' “</span> Seine Herkunft aus der intellektuellen Auseinandersetzung des Logikers GÖDEL mit dem GOTT-gläubigen Philosophen LEIBNIZ und dem christlichen Theologen und Erzbischof ANSELM rechtfertigt diese Frage. Die <span style="color:#FF6000">„mathematische Evidenz“</span> des GÖDEL-Formalismus, <span style="color:#00B000">(im Anhang nachgestellt)</span>, ist allgemein anerkannt, <span style="color:#00B000">(Vorbehalte dagegen gibt es nur bei der Interpretation seiner Syntax, d.h. ob die Axiome und Definitionen, wie GÖDEL sie konzipiert hat, bzw. ob die Theoreme und Korollare, die aus diesen Axiomen ,regulär’ (├ ) abgeleitet werden, auch in unserer realen Welt ,wahr’ und ,annehmbar’ sind)</span>. Die <span style="color:#FF6000">„theologische Evidenz“</span> des GÖDEL-Systems wird durch eine ,Verankerung’ der Axiome und Definitionen in den <span style="color:#4C58FF">,theologisch’</span>-philosophischen Diskurs über GOTT evaluiert, der schon seit zweieinhalbtausend Jahren läuft. In diesen zweieinhalbtausend Jahren hat sich, — gegen ARISTOTELES und die antike Philosophie —, die Erkenntnis durchgesetzt, dass GOTT <span style="color:#FF6000">»''unabhängig''«</span> von der <span style="color:#FF6000">»''zufälligen''«</span> Raum-Zeit-Struktur unserer vergänglichen Welt ist. In meiner Darstellung des GÖDEL-Kalküls folge ich, <span style="color:#00B000">(im Unterschied zum Autographen GÖDELS, vom 10. Feb 1970)</span>, in der Axiom-Formulierung und -Nummerierung, in der Syntax, und in der Beweis-Struktur, der Arbeit von André FUHRMANN ''':''' ''<span style="font-family: Times;"><big>‚Existenz und Notwendigkeit. Kurt Gödels axiomatische Theologie‘</big></span>'' in ''<span style="font-family: Times;"><big>‚Logik in der Philosophie‘</big></span>'' Hg. SCHROEDER-HEISTER, SPOHN und OLSSON, 2005, Synchron, Heidelberg, Seite 349–374. <span style="color:#00B000">(Die tiefer gestellte Notation der spezifischen ,Eigenschaft‘ einer Eigenschaft ist meine Ergänzung zur formalen Syntax, z. B. ''':''' <span style="color:#4C58FF"> — ‚'''G'''<sub>ess</sub>'''x'''‘ — </span>, angeregt durch die indizierende Schreibweise GÖDELS ''':''' <span style="color:#4C58FF">— ,'''G''' Ess. '''x'''’ —</span>.)</span> Die Erkenntnisse zur Straffung und Präzisierung der GÖDEL-Syntax, <span style="color:#00B000">(besonders im Möglichkeitsbeweis)</span>, stammen aus der Arbeit von Günther J. WIRSCHING ''':''' ,''<span style="font-family: Times;"><big>Der Gödelsche Gottesbeweis</big></span>''‘, im Web <ref>https://edoc.ku.de/id/eprint/10243/1/OntBw.pdf</ref>. <span style="color:#00B000">(Auch der Hinweis auf AVICENNA kommt von WIRSCHING.)</span> Die Zitate von THOMAS von Aquin´s Stellungnahme zum Theorem ANSELMS, und von Georg Wilhelm Friedrich HEGEL zur Immanuel KANTS Ablehnung des Theorem ANSELMS, befinden sich in Franz SCHUPP, ,<span style="font-family: Times;"><big>''Geschichte der Philosophie im Überblick''</big></span>‘, Band 2 ‚<span style="font-family: Times;"><big>''Christliche Antike, Mittelalter''</big></span>‘, Hamburg 2003, Seite 168 und Seite 170. Meines Erachtens ist der entscheidende Ansatzpunkt einer <span style="color:#4C58FF">„theologischen“</span> Interpretation das GÖDEL-Axiom-5 ''':''' <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub>‘ —</span>, <span style="color:#FF6000">»''notwendige Existenz ist eine positive Eigenschaft''«</span>. ‚Frei‘ nach KANT ‚formuliere‘ ich ‚kurz‘ ''':''' <span style="color:#FF6000">„Existenz ist keine Eigenschaft“</span>. Hier die Positionen KANTS zum Thema ‚Existenz‘ und ‚Eigenschaften‘ ''':''' ::<span style="color:#FF6000">»</span>''… unbeschadet der wirklichen Existenz äußerer Dinge'', <span style="color:#00B000">[ kann man ]</span> ''von einer Menge ihrer Prädikate'', <span style="color:#00B000">[ d.h. Eigenschaften ],</span> ''sagen'' … ''':''' ''sie gehöreten nicht zu diesen ‚Dingen an sich selbst‘, sondern nur zu ihren Erscheinungen, und hätten außer unserer Vorstellung'' <span style="color:#00B000">[ ihrer, als ,wirklich‘ gedachten Erscheinung, ]</span> ''keine eigene Existenz, … weil ich finde, dass … '''alle Eigenschaften, die die Anschauung eines Körpers ausmachen''', bloß zu seiner Erscheinung gehören; denn die Existenz des Dinges, was erscheint, wird dadurch nicht … aufgehoben, sondern nur gezeigt, dass wir es'', <span style="color:#00B000">[ das Ding ]</span>, ''wie es ‚an sich selbst‘ sei'', <span style="color:#00B000">[ d.h. existiert ]</span>, ''durch Sinne gar nicht erkennen können''.<span style="color:#FF6000">«</span><ref>vgl. ‚''<span style="font-family: Times;"><big>Prolegomena zu einer jeden künftigen Metaphysik, die als Wissenschaft wird auftreten können</big></span>''‘, Seite 289; https://www.korpora.org/kant/aa04/289.html</ref> <span style="color:#00B000"><small>(Hervorhebung durch KANT.)</small> [ Seine Prädikate, d.h. Eigenschaften, jedoch können wir mit unseren Sinnen ,anschauen‘, aber nur in Kombination mit unserer Vorstellung ihrer, als ,wirklich‘ gedachten Erscheinung, vermittelt durch den sog. ,transzendentalen Schematismus‘ unserer Einbildungskraft ''':'''</span> <span style="color:#FF6000">»</span>''Eine verborgene Kunst in den Tiefen der menschlichen Seele''<span style="color:#FF6000">«</span>, <span style="color:#00B000">jedoch auch eines der ,dunkelsten‘ Kapitel in der K.d.r.V., bedingt durch KANTS Konzept von ,Wirklichkeit‘, bzw. ,Sein‘. ]</span> Mit anderen Worten, man kann die ‚Existenz‘, bzw. das ‚Sein‘ der Dinge, <span style="color:#00B000">(das ‚Ding an sich’ bei KANT)</span>, nicht unter dem Mikroskop finden. Die ‚Existenz‘ bzw. das ‚Sein‘ ist keine sinnlich registrierbare ‚Eigenschaft‘ z. B. des rekonstruierten ‚Stadt-Schlosses‘ in Berlin. <span style="color:#00B000">(‚Sein‘ ist kein reales ‚Prädikat‘.)</span> Dafür haben wir andere Fähigkeiten ''':''' Ich kann seine ‚Existenz‘ mit meinem Verstand einsehen, weil auch ich selbst ‚existiere‘. Seine ‚Ansicht‘, wie ‚gefällig‘ es ist, und auch weitere ‚Eigenschaften‘, die mir auffallen, kann ich mit einem Handy-Foto dokumentieren. Diese ‚Eigenschaften‘ sind nicht die Ursache, dass das ‚Berliner Schloss‘ existiert. Wohl aber die Rekonstruktion dieses Schlosses ist die ‚Ursache‘, dass es ,existiert‘, und jetzt so aussieht. Insofern ist ‚Existenz‘ keine ‚Eigenschaft‘, sondern die ‚Existenz‘ des Dinges ist die Voraussetzung, der ‚Grund‘, dass ich die ‚Eigenschaften‘ des Dinges mit meinen Sinnen feststellen kann. In einer Auseinandersetzung mit CARTESIUS schreibt KANT, philosophisch ‚tiefgründig‘ und logisch ‚exakt‘, über dessen <span style="color:#FF6000"><span style="font-family: Times;"><big>„Cogito, ergo sum“</big></span></span> ''':''' ::<span style="color:#FF6000">»</span>''Das ‚Ich denke‘ ist ein empirischer Satz, und hält den Satz ‚Ich existiere‘ in sich. Ich kann aber nicht sagen ''':''' ‚Alles, was denkt, existiert‘; denn da würde die Eigenschaft des Denkens'', <span style="color:#00B000">[ eine essentielle Eigenschaft ]</span>, ''alle Wesen, die sie besitzen, zu notwendigen'' <span style="color:#00B000">[ d.h. notwendig existierenden ]</span> ''Wesen machen''. <span style="color:#00B000">[ Was allein nur von GOTT ausgesagt werden kann; mit AVICENNA, als anerkannter ARISTOTELES-Kommentator ''':''' <span style="color:#FF6000">»''GOTT ist das einzige Sein, bei dem Essenz'' <span style="color:#00B000">[ ‚Wesenseigenschaften‘ ]</span> ''und Existenz'' <span style="color:#00B000">[ ‚Dasein‘ ]</span> ''nicht zu trennen sind und das daher notwendig an sich da ist''«, <span style="color:#00B000">— konform mit GÖDEL ''':'''</span> »''notwendige Existenz ist eine positive'' <span style="color:#00B000">[ essentielle ]</span> ''Eigenschaft''«</span> ].</span> ''Daher kann meine Existenz auch nicht aus dem Satz, ‚Ich denke‘, als'' <span style="color:#00B000">[ logisch ]</span> ''gefolgert angesehen werden, wie CARTESIUS dafür hielt (weil sonst der Obersatz : ‚Alles, was denkt, existiert‘, vorausgehen müsste), sondern ist mit ihm identisch.'' <span style="color:#00B000">[ Eine einfache Schlussfolgerung ''':''' meine ‚Existenz‘ ist auch nicht von meiner ‚Eigenschaft‘ Denken ‚verursacht‘. ,Existenz‘ ist nicht bloß ein ,Gedanke‘ von mir. ]</span><span style="color:#FF6000">«</span> <span style="color:#00B000">(Aus der Anmerkung 41 zu den ‚''<span style="font-family: Times;"><big>Paralogismen der reinen Vernunft</big></span>''‘, in ‚''<span style="font-family: Times;"><big>Kritik der reinen Vernunft</big></span>''‘, Seite 275,<ref>https://korpora.org/kant/aa03/275.html</ref> mit meinem Einschub des AVICENNA-Zitat aus Wikipedia.<ref>{{w|Avicenna#Metaphysik}}</ref>)</span> Mit anderen Worten ''':''' <span style="color:#FF6000">„Die Eigenschaft, dass ich denken kann, ist nicht die Ursache meiner ‚Existenz‘“</span>, sondern, <span style="color:#FF6000">„Die Liebe meiner Eltern und ihre Entscheidung füreinander ist die Ursache meiner ‚Existenz‘. Daher ‚bin’ ich. Und weil ich ein Mensch ‚bin‘, kann ich denken.“</span> Auch mit diesen Anmerkungen ist leicht einsehbar, dass ‚Existenz‘ keine ‚Eigenschaft‘ ist — außer bei GOTT. In GOTT ist ‚Dasein‘ die ‚Wesenseigenschaft‘ GOTTES, d.h. ‚Dasein‘ und ‚Wesen‘ sind in GOTT untrennbar verbunden; sind <span style="color:#FF6000">„koinzident“</span> ‚eins‘. Das ist die Einzigartigkeit im Wesen GOTTES, dass GOTT immer schon ‚da‘ ist. Die Frage nach dem ‚Wesen‘ GOTTES lautet ''':''' <span style="color:#FF6000">„Was bist du ? “</span>/<span style="color:#CC66FF">„Wer bist Du ? “</span> Antwort, Exodus 3,14 ''':''' <span style="color:#CC66FF">»''Ich bin der ‚Ich-Bin-Da‘'' <span style="color:#00B000">[ für euch und für immer ]</span>«.</span> Weil GOTT für uns immer schon ‚da‘ ist, — <span style="color:#CC66FF">„von Ewigkeit zu Ewigkeit“</span> —, hat GOTT es nicht nötig, ‚bewiesen‘ zu werden. <span style="color:#00B000">(In der Mathematik ist ein ‚Satz‘ erst dann ‚wahr‘ und ‚existent‘, wenn er bewiesen ist. Bei GOTT ist es jedoch nicht so ''':''' GOTTES ‚Existenz‘ ist nicht erst dann ‚wahr‘, wenn seine ‚Existenz‘ von uns ‚bewiesen‘ ist. Sein ‚Dasein‘ ist jedem unserer ‚Beweisversuche‘ immer schon voraus. Der Zugang zu GOTT ist nicht der ,Beweis‘, sondern der ,Glaube‘. Wer an GOTT glauben ,will‘, dem antwortet GOTT. Wer nicht an GOTT glauben ,will‘, dessen Entscheidung respektiert GOTT, und drängt sich nicht auf. Die Glaubens-Entscheidung hat jedoch für jeden Menschen eine existenzielle Konsequenz ''':''' <span style="color:#CC66FF">»''Wer glaubt und sich taufen lässt, wird gerettet; wer aber nicht glaubt'', <span style="color:#00B000">[ und diese Entscheidung auch im Augenblick der ,Wahrheit‘, im Tod, in der sog. ,Endentscheidung‘, nicht widerruft ]</span>, ''wird verurteilt werden''«,</span> <small>({{Bibel | Markus Evangelium |16|16|EU}})</small>. Das Urteil lautet ''':''' <span style="color:#CC66FF">»''zweiter Tod ''':''' der Feuersee''«</span>, <small>({{Bibel | Offenbarung |20|14f|EU}})</small>, ohne Berufungsmöglichkeit. <span style="color:#CC66FF">»''Ohne Glauben aber ist es unmöglich, Gott zu gefallen; denn wer zu Gott kommen will, muss glauben, dass er ist und dass er denen, die ihn suchen, ihren Lohn geben wird''«.</span> <small>({{Bibel | Hebräer Brief |11|6|LUT}})</small>)</span> Das GÖDEL-Axiom-5 ist m.E. der entscheidende Ansatzpunkt einer stimmigen <span style="color:#4C58FF">„theologischen“</span> Interpretation der GÖDEL-Axiomatik. ===<div class="center"><span style="color:#660066">Das Kalkül ist kein Existenz-Beweis für GOTT</span></div>=== Die allgemeine <span style="color:#FF6000">»''mathematische Evidenz''«</span> des GÖDEL-Formalismus, d.h. seine ‚Schlusskraft‘, ist von kompetenten Leuten<ref>„GÖDELS Argumentationskette ist nachweisbar korrekt – so viel hat der Computer nach Ansicht der Wissenschaftler Christoph BENZMÜLLER und Bruno WOLTZENLOGEL-PALEO nun gezeigt;“ vgl. https://www.fu-berlin.de/presse/informationen/fup/2013/fup_13_308/index.html</ref> schon festgestellt worden, <span style="color:#00B000">(im Anhang ‚nachrechenbar‘ mit den Regeln und Gesetzen einer modalen Prädikatenlogik 2. Stufe)</span>. Das GÖDEL-Kalkül ist jedoch kein ‚moderner‘<span style="color:#FF6000">„Existenz-Beweis“</span> für GOTT, wofür es gehalten oder meistens bezweifelt wird, sondern setzt, <span style="color:#00B000">(theoretisch methodisch)</span>, den <span style="color:#FF6000">„Glauben an die Existenz GOTTES“</span> schon voraus, ohne ihn zu hinterfragen. Das <span style="color:#FF6000">„Dasein“</span> bzw. die <span style="color:#FF6000">„Existenz“</span> GOTTES wird mit der Definition-1 für <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, bzw. mit dem Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ — </span>, im Kalkül ‚definitorisch‘ bzw. ‚axiomatisch‘ als Kalkül-,Annahme‘, als <span style="color:#FF6000">„Prämisse“</span>, eingeführt, unter der Voraussetzung, dass die ‚Eigenschaft‘ <span style="color:#4C58FF">‚'''G'''‘ := </span><span style="color:#FF6000">„Göttlichkeit“</span> <span style="color:#00B000">(Essenz)</span> und das <span style="color:#FF6000">„Dasein GOTTES“</span>, <span style="color:#4C58FF">— ‚'''G'''‘ —</span> <span style="color:#00B000">(Existenz)</span>, ontologisch ‚identisch‘, genauer ''':''' <span style="color:#FF6000">„koinzident“</span> sind, was GÖDEL im Axiom-5 definitiv für sein System vorschreibt ''':''' <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub>‘ — </span> ''':''' <span style="color:#FF6000">»''notwendige Existenz ist eine positive Eigenschaft''«</span>. Das <span style="color:#FF6000">„Dasein GOTTES“</span> ist faktisch äquivalent zur <span style="color:#FF6000">„notwendigen Existenz als GOTT“</span>; und <span style="color:#FF6000">„Göttlichkeit“</span> ist die <span style="color:#FF6000">„positive Eigenschaft in GOTT“</span>. Beides ist nach Axiom-5 ‚identisch‘, d.h. dem ‚Sein nach‘ dasselbe, und daher konvertierbar. Beide, <span style="color:#00B000">(sowohl die Essenz, als auch die Existenz GOTTES)</span>, werden daher auch mit demselben Term ''':''' <span style="color:#4C58FF">— ‚'''G'''‘ —</span> im Kalkül dargestellt. Der traditionelle, christliche ,GOTT-Glaube‘ wird zugleich mit diesem Term <span style="color:#4C58FF">‚'''G'''‘ := </span> <span style="color:#FF6000">„GOTT“ <span style="color:#00B000">|</span> „göttlich“</span>, im 2. Beweisgang, dem Basisbeweis, und im 3. Beweisgang für das Theorem ANSELMS, jeweils als ,methodologische‘ Prämisse :01: <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span> regulär <span style="color:#00B000">( ├ )</span> und explizit eingeführt ''':''' <span style="color:#FF6000">»''Das'' <span style="color:#4C58FF">,'''x'''‘</span> ''steht für den GOTT'' <span style="color:#4C58FF">‚'''G'''‘</span> ''der Christen''«</span>. Das ist die ,modal‘-frei gewählte, <span style="color:#4C58FF">„theologische“</span> Kalkül-,Annahme‘, <span style="color:#00B000">(als ,Argument-Einführung‘ := <span style="color:#4C58FF">‚'''AE:'''‘</span> )</span>, und wird dann mit Definition-1 näher ,bestimmt‘ ''':''' <span style="color:#4C58FF">— ‚'''Gx↔∀X(PX→Xx)'''‘ — </span> ''':''' <span style="color:#FF6000"> »''Das'' <span style="color:#4C58FF">,'''x'''‘</span> ''steht genau dann für ‚GOTT‘'' <span style="color:#00B000">|</span> ''‚göttlich‘'', <span style="color:#4C58FF">‚'''G'''‘</span>, ''wenn'' <span style="color:#4C58FF">,'''x'''‘</span> ''alle positiven Eigenschaften, bzw. Vollkommenheiten'', <span style="color:#4C58FF">‚'''PX'''‘</span>, ''hat''«</span>, entsprechend dem ‚Quelltext‘ bei LEIBNIZ. <span style="color:#00B000">(Das ,postulierte‘ Axiom-3 ''':''' <span style="color:#4C58FF"> — ‚'''PG'''‘ —</span>, wird standardmäßig gelesen als <span style="color:#FF6000">»''Göttlichkeit ist eine positive Eigenschaft''«</span>, hat aber auch die alternative Leseart ''':''' <span style="color:#FF6000">»''GOTT ist perfekt d.h. vollkommen''«</span>, was <span style="color:#4C58FF">„theologisch“</span> auch richtig ist; mit <span style="color:#4C58FF">‚'''P'''‘ </span> := <span style="color:#FF6000">„Perfektion“/„Vollkommenheit“</span> ist dann die Summe aller <span style="color:#FF6000">„positiven Eigenschaften“</span>.)</span> Mit Axiom-3, — in dieser <span style="color:#4C58FF">„theologischen“</span> Leseart —, ist der ‚Wenn-Satz‘ in Definition-1 ‚aufgelöst‘ ''':''' <span style="color:#FF6000">»''GOTT hat alle positiven Eigenschaften, weil er ‚perfekt‘ ist''«</span>. In Definition-3 ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x ↔ ∀X(X'''<sub>ess</sub>'''x →□∃yXy)'''‘ —</span>, wird die ,für uns‘ <span style="color:#FF6000">„notwendige Existenz“</span> ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>‘ —, </span> durch die ,aus sich‘ <span style="color:#FF6000">„notwendig“</span> <span style="color:#4C58FF">— '''□''' —</span> instanziierten <span style="color:#FF6000">„Wesenseigenschaften“</span>, <span style="color:#4C58FF">— ‚'''X'''<sub>ess</sub>‘ —</span>, <span style="color:#00B000">(als zu den Transzendentalia gehörig)</span>, bestimmt. Das GÖDEL-Kalkül setzt sowohl in Definition-3 als auch im Axiom-5 das Theorem des ARISTOTELES von der ontologischen ‚Identität‘, d.i. die Koinzidenz von <span style="color:#FF6000">„Dasein“</span>, <span style="color:#00B000">(Existenz)</span> und <span style="color:#FF6000">„Wesenseigenschaften“</span>, <span style="color:#00B000">(Essenz)</span> im prinzipiell <span style="color:#FF6000">„unbewegten Erstbewegenden“</span> voraus. Ohne diese Annahme bzw. ohne Axiom-5, würde das GÖDEL-Kalkül nicht ‚funktionieren‘. Das GÖDEL-Theorem-2.1 ''':''' <span style="color:#4C58FF">— ‚'''Gx→G'''<sub>ess</sub>'''x'''‘ —</span>, kann unter dieser Voraussetzung dann, <span style="color:#4C58FF">„theologisch“</span> richtig und eindeutig, so gelesen werden ''':''' <span style="color:#FF6000">»''Wenn'' <span style="color:#4C58FF">‚'''x'''‘</span> ''für GOTT'', <span style="color:#4C58FF">‚'''G'''‘</span>, ''als Individuum steht, dann ist GOTT-Sein'', <span style="color:#4C58FF">‚'''G'''‘</span>, <span style="color:#00B000">(,Existenz‘)</span>, ''das Wesen'', <span style="color:#4C58FF">—<sub>ess</sub>—, </span> <span style="color:#00B000">(,Essenz‘)</span>, ''GOTTES'' <span style="color:#4C58FF">‚'''x'''‘</span>«</span><ref>vgl. z.B. THOMAS von Aquin ''':''' ,''<span style="font-family: Times;"><big>De Ente et Essentia</big></span>''’, Kapitel 5 ''':''' „Deus, cuius essentia est ipsummet suum esse“ ''':''' „GOTT, dessen Wesen sein eigenes Sein ist“.</ref>, statt der <span style="color:#4C58FF">„theologisch“</span> unrichtigen Lesearten in der Wikipedia ''':''' <span style="color:#FF6000">»''Göttlich ist eine essentielle Eigenschaft jedes göttlichen Wesens''«</span><ref>{{w|Gottesbeweis#Kurt_Gödel|Gottesbeweis 2.1.2, Theorem 2}}; Version vom 10.09.2025</ref>, oder bei Christoph BENZMÜLLER et alia, im sog. ,Theorembeweiser‘ ''':''' <span style="color:#FF6000">»''Gottähnlich zu sein ist eine Essenz von jeder gottähnlichen Entität''«</span><ref>[https://www.fu-berlin.de/presse/informationen/fup/2013/fup_13_308/index.html ‚Gödels „Gottesbeweis“ bestätigt’, Theorem 2]</ref>, mit der suggestiven Annahme, es gäbe polytheïstisch, mehrere ,göttliche Wesen‘, bzw. ,gottähnliche Entitäten‘, was der monotheïstischen, abendländischen Tradition, bzw. dem <span style="color:#4C58FF">„theologischen“</span> Theorem von der ,Unvergleichlichkeit‘ und ,Einzigartigkeit‘ GOTTES widerspricht, das im GÖDEL-Kalkül mit Korollar-3 bestätigt wird. <span style="color:#00B000">(Die Interpretation <span style="color:#4C58FF">‚'''G'''‘ :=</span> <span style="color:#FF6000">„GOTT“</span>, als ,Individuumname‘, ist synonym zum <span style="color:#FF6000">„Dasein <span style="color:#00B000">(Existenz)</span> GOTTES“</span>, und äquivalent zur ‚positiven Eigenschaft‘ <span style="color:#FF6000">„Göttlichkeit“</span>, alias <span style="color:#FF6000">„göttlich zu sein“</span> = <span style="color:#FF6000">„GOTT zu sein“</span> = <span style="color:#FF6000">„GOTT-Sein“</span>; und mit dem GÖDEL-Term ''':''' <span style="color:#4C58FF">‚'''G'''<sub>ess</sub>‘ :=</span> <span style="color:#FF6000">„das Wesen <span style="color:#00B000">(Essenz)</span> GOTTES“</span>.)</span> <div class="center"><span style="color:#FF6000"><span style="color:#4C58FF">‚'''G'''‘ :=</span> „'''G'''öttlichkeit“ <span style="color:#4C58FF">↔</span> „'''G'''OTT“ <span style="color:#4C58FF">↔</span> „'''G'''OTT-Sein“</span> </div> Die Rechtfertigung für diese <span style="color:#4C58FF">„theologische“</span> Dreifach-Äquivalenz für <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, im GÖDEL-Kalkül, gibt Axiom-5 ''':''' <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub>‘ — </span> ''':''' <span style="color:#FF6000">»''die positive <u>Eigenschaft</u>'', <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, ''Göttlichkeit'', <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, ''äquivalent zu GOTT als Individuum-Name'', <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, ''ist auch äquivalent zum Dasein GOTTES'', <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, ''gleichbedeutend mit notwendiger <u>Existenz</u>'', <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>‘ —</span>'', dem <u>Sein</u> GOTTES für uns''«</span>. Hier hat GÖDEL explizit <span style="color:#FF6000">„Eigenschaft“</span> mit <span style="color:#FF6000">„Existenz“</span> bzw. <span style="color:#FF6000">„Sein“</span> gleichgesetzt; <span style="color:#00B000">(was jedoch nach KANT für alles, was in unserer Welt ‚existiert‘, bzw. für alles, was zur <span style="color:#FF6000">»''zufälligen Struktur der Welt''«</span> gehört, wie GÖDEL selbst sagt, in jedem Fall ‚unstatthaft‘ ist ''':''' <span style="color:#FF6000">„Existenz ist keine Eigenschaft“</span>, bzw. <span style="color:#FF6000">»''Sein ist kein reales Prädikat''«</span>)</span>. Jedoch wegen dieser ‚Gleichsetzung‘, die einzig und allein, der aristotelisch-<span style="color:#4C58FF">,theologischen‘</span> Tradition entsprechend, singulär nur in GOTT ‚statthaft‘ ist, kann jetzt die ‚positive Eigenschaft‘ <span style="color:#00B000">(Essenz)</span> <span style="color:#FF6000">„Göttlichkeit“</span> <span style="color:#00B000">(ontologisch korrekt)</span> gelesen werden als <span style="color:#FF6000">„das, was GOTT zu dem macht, ‚was‘ GOTT an sich selbst ist“</span>, nämlich zu seinem <span style="color:#FF6000">„GOTT-Sein“</span> <span style="color:#00B000">(Existenz)</span>, zu seinem <span style="color:#FF6000">„Dasein als GOTT“</span>; zur Tatsache, dass <span style="color:#FF6000">„GOTT GOTT ist“</span>, d.h. dass <span style="color:#FF6000">„GOTT als GOTT ‚da‘ ist“</span>. Das ist, <span style="color:#00B000">(und da folgt ARISTOTELES seinem Lehrer PLATO)</span>, nach traditioneller Auslegung, die übliche, ontologische Funktion des ‚Wesens‘<span style="color:#00B000"> | <span style="color:#FF6000">„<span style="font-family: Times;"><big>οὐσία</big></span>“</span> | ‚ousía‘ |</span> eines Seienden ''':''' es ‚macht‘ das Seiende zu dem, ‚was‘ es ist; es ist die ‚Ursache‘ dafür, dass das Seiende, das ‚ist‘, ‚was‘ es ist | ‚Was-Sein‘ — ‚Wesen‘. <span style="color:#00B000">(ARISTOTELES lokalisiert jedoch das ,Wesen‘ im Seienden, im Gegensatz zu PLATO, der das ,Wesen‘, — ,getrennt‘ vom Seienden —, in den allgemeinen ,Ideen‘ lokalisiert.)</span> Da aber in ‚Gott‘, <span style="color:#00B000">(dem <span style="color:#FF6000">„unbewegten, ‚unverursachten‘ Erstbeweger“</span>)</span>, Prozesshaftes, ‚Ursächliches‘ auszuschließen ist, ist die übliche prozesshafte, ‚ursächliche‘ Funktion von <span style="color:#FF6000">„<span style="font-family: Times;"><big>οὐσία</big></span>“</span><span style="color:#00B000"> | ‚ousía‘ |</span> ,Wesen‘ im <span style="color:#FF6000">„Erstbewegenden“</span> nach ARISTOTELES, sozusagen, schon ‚zum Abschluss‘ gekommen, schon ‚verwirklicht‘, — <span style="color:#FF6000">„<span style="font-family: Times;"><big>ἐν-έργεια οὖσα</big></span>“</span><span style="color:#00B000"> | ‚en-érgeia oúsa‘</span> —, schon ‚ins-Werk‘ gesetzt; <span style="color:#00B000">(<span style="color:#FF6000">„<span style="font-family: Times;"><big>τὸ ἔργον</big></span>“</span> | ‚to érgon‘ | ‚das Werk‘; <span style="color:#FF6000">„<span style="font-family: Times;"><big>ἐνέργεια</big></span>“</span> | ‚enérgeia‘ | ,Wirksamkeit‘, ,Wirklichkeit‘, ,Aktualität‘, ,Energie‘; und <span style="color:#FF6000">„<span style="font-family: Times;"><big>οὖσα</big></span>“</span> | ,oúsa‘ | feminin Nominativ Singular von <span style="color:#FF6000">„<span style="font-family: Times;"><big>ὤν</big></span>“</span> | ‚ón‘ | ‚seiend‘)</span>. Sein ,Wesen‘ ist im ,Dasein‘ vollendet, ist ,wirkliches, verwirklichendes Sein‘, ‚seiende Aktualität‘, <span style="color:#FF6000">„<span style="font-family: Times;"><big>actus purus</big></span>“</span> ''':''' sein Wesen ist ‚reine Tätigkeit‘, ,reine verwirklichende Gegenwärtigkeit‘, d.h. ,existent‘, ohne jede prozesshafte ‚Potenzialität‘. Aus der wichtigen und richtigen Erkenntnis, dass GOTT <span style="color:#FF6000">»''unabhängig von der zufälligen'' <span style="color:#00B000">[ Raum-Zeit-]</span>''Struktur unserer Welt''«</span> ist, folgt mit der ontologischen Identität von ,Dasein‘ und ,Wesen‘ in GOTT ''':''' Der zeitlos ewige GOTT ist <span style="color:#FF6000">»''notwendig aus sich'' <span style="color:#00B000">(von Natur aus)</span> ''immer schon da''«</span>, m.a.W. ist <span style="color:#FF6000">„zeitlos-ursprungslos“</span>. Insofern ist <span style="color:#FF6000">„Göttlichkeit“</span> die <span style="color:#FF6000">„Wesenseigenschaft“</span>, die im <span style="color:#FF6000">„Dasein GOTTES“</span> d.h. in <span style="color:#FF6000">„GOTT“</span>, schon ihr ‚Ziel‘, ihre Vollendung, — <span style="color:#FF6000">„Perfektion“</span>, Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, erreicht hat. GOTT ist <span style="color:#FF6000">»''vollkommen''«</span> und darum auch <span style="color:#FF6000">»''notwendig für uns immer schon ‚da‘''«</span> ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x'''‘ — </span>. GOTT ist in seinem ‚zeitlosen Wesen‘ <span style="color:#FF6000">„unverursacht“</span>, da er <span style="color:#FF6000">»''notwendig aus sich'' <span style="color:#00B000">(von Natur aus)</span> ''vollkommen''«</span> ist ''':''' <span style="color:#4C58FF">— ‚'''□PG'''‘ —</span>, <span style="color:#00B000">(eine Instanz von Axiom-4)</span>. <span style="color:#FF6000">„Vollkommenheit“</span>, <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, ist die <span style="color:#FF6000">„Wesenseigenschaft“</span>, bzw. das <span style="color:#FF6000">„Wesen GOTTES“</span> ''':''' <span style="color:#4C58FF"> — ‚'''G'''<sub>ess</sub>‘ —</span>. <span style="color:#FF6000">»''GOTT ist ,der‘ Vollkommenste''«</span> ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, d.h. <span style="color:#4C58FF">— ‚'''G'''‘ —</span> ''':''' <span style="color:#FF6000">»''GOTT ist die unbegrenzte Summe der unendlichen Vollkommenheiten''«</span>. Und zur absoluten <span style="color:#FF6000">„Vollkommenheit“</span> gehört <span style="color:#FF6000">„notwendig“</span> auch das <span style="color:#FF6000">„Existieren“</span> ''':''' <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub>‘ — </span>. <span style="color:#FF6000">„Notwendige Existenz“</span> gehört zu den ,ultimativen‘ Transzendentalia in GOTT, was GÖDEL mit Definition-3 ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x ↔ ∀X(X'''<sub>ess</sub>'''x →□∃yXy)'''‘ —</span>, syntaktisch formalisiert hat, wenn sowohl das <span style="color:#4C58FF">— ‚'''x'''‘ —</span>, als auch alle <span style="color:#4C58FF">— ‚'''∀y'''‘ —</span> im Kalkül, für den Dreifaltigen GOTT der Christen stehen, was dann im Korollar-3, mit der Identität, <span style="color:#4C58FF">— ‚'''x=y'''‘ —</span>, bzw. der Koinzidenz beider Individuum-Variablen, explizit gezeigt wird. Entscheidend für diese Interpretation des GÖDEL-Systems ist ''':''' nur unter der ,modal‘ notwendigen Voraussetzung der ontologischen ‚Identität‘ von <span style="color:#FF6000">„Sein“</span> und <span style="color:#FF6000">„Wesen“</span> in GOTT, Theorem-2 ''':''' <span style="color:#4C58FF"> — '''Gx↔G'''<sub>ess</sub>'''x'''‘ —</span>, bzw. der ‚Gleichsetzung‘, <span style="color:#00B000">(Koinzidenz)</span>, von <span style="color:#FF6000">„notwendiger Existenz“</span> mit den ‚positiven‘ Wesenseigenschaften, der <span style="color:#FF6000">„Essenz“</span> in GOTT, Axiom-5 ''':''' <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub>‘ —</span>, ‚funktioniert‘ die GÖDEL-Axiomatik '''!''' Diese ‚Identität‘, bzw. ,Koinzidenz‘ wird in ARISTOTELES, ‚''<span style="font-family: Times;"><big>Metaphysik</big></span>''‘, Buch XII 7, in einem Indizienbeweis erbracht, der mit der Methode der philosophischen Induktion zum Ergebnis kommt ''':''' ::<span style="color:#FF6000">» … ''es muss'' <span style="color:#00B000">[ notwendig ]</span> ''etwas geben, das, ohne selbst ‚bewegt‘'' <span style="color:#00B000">[ </span>''worden''<span style="color:#00B000"> ]</span> ''zu sein'', <span style="color:#00B000">[ ‚unentstanden‘ ]</span>, ''alles Übrige wie ein Geliebtes ‚bewegt‘'' <span style="color:#00B000">[ ‚entstehen lässt‘ ]</span>«</span>, das darum selbst ‚zugleich‘ <span style="color:#FF6000">„<span style="font-family: Times;"><big>αἴδιον καί οὐσία καί ἐνέργεια οὖσα</big></span>“ <span style="color:#00B000">| ,aídion kai ousía kai enérgeia oúsa‘ |</span> »<span style="color:#00B000">[ zeitlich-]</span>''ewig, sowohl <u>Wesen</u>'', <span style="color:#00B000">[ etwas Konkretes, Essentielles ]</span>, ''als auch seiende Wirksamkeit — ''<span style="color:#00B000">[ </span>„<span style="font-family: Times;"><big>actus purus</big></span>“, „reine Tätigkeit“<span style="color:#00B000"> ]</span> ''— verwirklichendes, wirkliches <u>Sein</u> ist'', <span style="color:#00B000">[ ein Existierendes, das alles Übrige ,zur Existenz‘ bringen kann ]</span> «</span>, bzw. <span style="color:#FF6000">„<span style="font-family: Times;"><big>ὀρεκτόν καί νοητόν</big></span>“ <span style="color:#00B000"> | ,orektón kai noêtón‘ | </span>»''das ersehnt und erkennbar ist''.«</span> <span style="color:#00B000">(''<span style="font-family: Times;"><big>vgl. ,Metaphysik</big></span>''‘ XII 7, 1072a,23 – 1072b,4)</span> Was <span style="color:#FF6000">»''alles Übrige''«</span> ,zur Existenz‘ bringen kann, bzw. ,verwirklichen‘ kann, ohne selbst ,entstanden‘ zu sein, muß auch selbst, als etwas Konkretes, Essentielles, immer schon ,existieren‘, bzw. ,wirklich sein‘. Die, daraus abgeleitete, und damit ,erkannte‘, ontologische ‚Identität‘, — ,Koinzidenz‘ —, von ‚Wesen‘ und ‚Sein‘, <span style="color:#00B000">(Ziel aller Sehnsucht und jedes Erkenntnisstrebens)</span>, <span style="color:#FF6000">»''ist das Privilegium der Gottheit allein''«</span> ''':''' mit Gottfried Wilhelm LEIBNIZ interpretiert, entsprechend einer adäquaten, aristotelisch-<span style="color:#4C58FF">,theologischen‘</span> Tradition. Dieses induktive, ‚ontologisch‘ a-posteriori Ergebnis aus der ‚Prinzipienforschung‘ des ARISTOTELES ist die metaphysische und logische Voraussetzung, dass GÖDEL seine Axiomatik im Kalkül des sog. ‚ontologischen Gottesbeweises‘ a-priori des ANSELM von Canterbury, und nach LEIBNIZ, deduktiv korrekt formulieren konnte; <span style="color:#00B000">(vgl. 3. Beweisgang)</span>. Angenommen, die Variable <span style="color:#4C58FF">— ‚'''x'''‘ —</span> steht für den <span style="color:#FF6000">„GOTT“</span>, <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, der Christen, <span style="color:#00B000">(siehe Anhang, Term :01: im 2. Beweisgang)</span>, dann ist, — auf Grund von diesem Beweisgang —, in unserer Welt ,wahr‘ und evident ''':''' sowohl die ‚positive Eigenschaft‘ <span style="color:#FF6000">»''Göttlichkeit''«</span>, <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, als auch das faktische <span style="color:#FF6000">»''‚Da‘-Sein'' <span style="color:#00B000">[ Existenz ]</span> ''GOTTES''«</span>, <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, ‚benennen‘, ontologisch ident, denselben Sachverhalt ''':''' nämlich das, was wir das <span style="color:#FF6000">»''Wesen'' <span style="color:#00B000">[ Essenz ]</span> ''GOTTES''«</span>, <span style="color:#4C58FF"> — ‚'''G'''<sub>ess</sub>‘ —</span>, nennen. <span style="color:#FF6000">»''Göttlichkeit'', bzw. ''GOTT-‚Sein‘ ist das Wesen GOTTES''«</span>, <span style="color:#00B000">(Theorem-2.1)</span>, und dann umgedreht und äquivalent ''':''' <span style="color:#FF6000">»''Das Wesen GOTTES ist sein ‚Da‘-Sein als GOTT'', bzw. ''seine Göttlichkeit''«</span>, <span style="color:#00B000">(Theorem-2.2)</span>, m.a.W. ''':''' <span style="color:#FF6000">»''GOTT ist wesentlich ‚grundlos‘'' <span style="color:#00B000">[ d.h. </span> ''notwendig aus sich''<span style="color:#00B000"> ]</span> ''‚da‘''«</span>. Das ist das Einzigartige im <span style="color:#FF6000">»''Wesen GOTTES''«</span> ''':''' GOTT ist ohne zeitlichen Anfang, zeitlos-ewig, für uns immer schon ‚da‘, und das ‚ist‘ sein <span style="color:#FF6000">»''Wesen''«</span>; vorausgesetzt, ,angenommen‘, man glaubt an GOTT ''':''' Term :01:. <span style="color:#00B000">(Der schon von GÖDEL indizierte Term <span style="color:#4C58FF"> — ‚'''G'''<sub>ess</sub>‘ — </span> ,expliziert‘ nur eine der drei Lesearten, die der Term <span style="color:#4C58FF"> — ‚'''G'''‘ — „theologisch“</span> ,impliziert‘.)</span> Theorem-2 hat somit die syntaktische Form einer Definition ''':''' <div class="center"><span style="color:#4C58FF"> — ‚'''Gx↔G'''<sub>ess</sub>'''x'''‘ — </span></div> Somit kann GOTT ‚explizit‘ <span style="color:#00B000">(aus einer bewiesenen Kalkül-Definition)</span> <span style="color:#4C58FF">„theologisch“</span> genauer ‚bestimmt‘ werden ''':''' <span style="color:#FF6000">»''GOTT ist gerade deswegen GOTT, weil sein überzeitlich-ewiges und an sich ‚grundloses‘'' <span style="color:#00B000">[ aber für uns notwendiges ]</span> ''Dasein'' <span style="color:#00B000">[ Existenz ]</span> ''als GOTT, ontologisch, — dem Sein nach —, identisch ist mit seinem persönlichen und für uns liebevollen Wesen'' <span style="color:#00B000">[ Essenz ]</span> ''als GOTT; diese Identität von Dasein und Wesen gilt einzig und allein nur bei GOTT.''«</span> Die philosophische Frage nach dem <span style="color:#FF6000">„Wesen GOTTES“</span> lautet, <span style="color:#00B000">(auf die Person bezogen)</span> ''':''' <span style="color:#FF6000">„Was bist du ? “</span> Sie ist äquivalent zur <span style="color:#4C58FF">,theologisch’</span>-biblischen Frage des MOSE ''':''' <span style="color:#CC66FF">„Wer bist Du ? “</span> Die bekannte Antwort des GOTTES-JHWH aus ‚Exodus 3,14‘, im Dornbusch, thematisiert das persönliche, für uns liebevolle und für immer notwendige <span style="color:#FF6000">„Dasein GOTTES“</span> ''':''' <span style="font-family: Times;"><big>‘אֶֽהְיֶ֖ה אֲשֶׁ֣ר אֶֽהְיֶ֑ה‚</big></span> <span style="color:#00B000">| ‚eh'jeh asher eh'jeh‘ |</span> <span style="color:#CC66FF">»''Ich bin der ‚Ich-Bin-Da‘'', <span style="color:#00B000">[ für euch und für immer ]</span>«.</span> Mit diesem Zitat aus der Bibel ist die GÖDEL-Axiomatik, sozusagen, <span style="color:#4C58FF">„theologisch“</span> ‚verifiziert‘. Sie hat einerseits im Theorem-2 ihren philosophischen ‚Abschluss’ erreicht, und andererseits damit formal-syntaktisch den ‚Anschluss‘ an eine allgemeine Basis-Glaubensaussage gefunden, die ‚an sich‘ für jeden CHRIST-gläubigen Menschen ‚selbstverständlich‘ ist. Was in der Metaphysik des ARISTOTELES das Ergebnis einer philosophischen ,Induktion‘ a-posteriori ist ''':''' <span style="color:#FF6000">„,Dasein‘ ist das ,Wesen‘ GOTTES“</span>, — <span style="color:#00B000">(das mit Theorem-2, auch ein Ergebnis der deduktiven GÖDEL-Axiomatik a-priori ist ''':''' die Beweisgrundlage für den Konsequenz-Teil im Theorem AMSELMS)</span>, — das ist in der Bibel die Grundüberzeugung jedes Menschen, der an GOTT glaubt ''':''' GOTT ist für uns immer schon <span style="color:#FF6000">„da“</span>, weil er uns liebt. Das ist das, <span style="color:#FF6000">„was“</span> GOTT für uns als GOTT ausmacht, — sein Wesen ''':''' <span style="color:#CC66FF">»''Wir haben die Liebe, die GOTT zu uns hat, erkannt und gläubig angenommen. GOTT ist Liebe, und wer in der Liebe bleibt, bleibt in GOTT und GOTT bleibt in ihm''«</span>, <small>({{Bibel | 1. Johannesbrief |4|16|EU}})</small>. Das eigentliche Ergebnis der GÖDEL-Axiomatik ist somit die ‚triviale‘ Erkenntnis, dass GOTT, <span style="color:#FF6000">„unverursacht“ <span style="color:#00B000">|</span> „grundlos“</span>, für uns immer schon ‚da‘ ist, — <span style="color:#CC66FF">„von Ewigkeit zu Ewigkeit“</span> —, vorausgesetzt <span style="color:#00B000">(‚angenommen‘)</span>, man ‚glaubt‘ an den zeitlos-ewigen GOTT ''':''' <span style="color:#CC66FF">»''Ehe die Berge geboren wurden, ehe die Erde entstand und das Weltall erschaffen wurden, bist du, o GOTT, von Ewigkeit zu Ewigkeit''«</span>, <small>({{Bibel | Psalm |90|2|LUT}})</small>. <span style="color:#00B000">(Der Glaube an die Zeitlosigkeit GOTTES ist mit der ‚Annahme‘ von Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span> ''':''' <span style="color:#FF6000">»''GOTT ist perfekt''«</span>, und der ‚Annahme‘ der Definition-1 für <span style="color:#4C58FF"> ‚'''Gx'''‘ := </span> den <span style="color:#FF6000">„GOTT der Christen“</span>, im Kalkül ‚implizit‘ schon eingeführt, da die Axiome und Definitionen, — nach GÖDEL —, nur dann <span style="color:#FF6000">»''wahr''«</span> sind, wenn sie <span style="color:#FF6000">»''unabhängig von der zufälligen''</span> [ Raum-Zeit-]<span style="color:#FF6000">''Struktur''«</span> unserer Welt sind. Das ,impliziert‘ auch, dass der GOTT von Axiom-3 und Definition-1 ebenfalls <span style="color:#FF6000">»''unabhängig''«</span> von Raum und Zeit, d.h. zeitlos-ewig ist '''!''' )</span> Wer an den GOTT der Bibel glaubt, kann sich von der ‚Vernünftigkeit‘ seines Glaubens mit Hilfe des sog. ,ontologischen‘ Gottesbeweises nach ANSELM von Canterbury, mit Kurt GÖDEL <span style="color:#FF6000">»''rein verstandesmäßig''«</span>, überzeugen. <span style="color:#00B000">(Das war auch die Absicht ANSEMS '''!''' )</span> Die Annahme, es sei ‚unmöglich‘, dass es GOTT gibt ''':''' <span style="color:#4C58FF">— ‚'''¬◇∃xGx'''‘ —</span>, <span style="color:#00B000">(dezidierter Atheismus)</span>, führt im GÖDEL-Kalkül formal zu einem logischen Widerspruch; vgl. z. B. ‚''<span style="font-family: Times;"><big>Gödels Möglichkeitsbeweis</big></span>''‘, in ‚''<span style="font-family: Times;"><big>Der Gödelsche Gottesbeweis</big></span>''‘, Seite 17, von Günther J. WIRSCHING; (https://edoc.ku.de/id/eprint/10243/1/OntBw.pdf), d.h. es ist also nicht ‚unmöglich‘, dass es GOTT gibt. Der GOTT-Glaube ist mit den Maßstäben einer modernen Logik <span style="color:#FF6000">»''durchaus vereinbar''«</span> und darum ,vernünftig‘. Damit steht fest ''':''' das GÖDEL-Kalkül ist kein moderner ‚Existenz-Beweis‘ für den GOTT der Bibel, sondern es setzt, <span style="color:#FF6000">»''rein verstandesmäßig''«</span>, ,methodologisch‘, den Glauben an die Existenz eines zeitlos-ewigen GOTTES voraus, der, — <span style="color:#FF6000">»''unabhängig von der zufälligen'' <span style="color:#00B000">[ Raum-Zeit-]</span>''Struktur unserer '' <span style="color:#00B000">[ vergänglichen ]</span> ''Welt''«</span> —, für uns immer schon ‚da‘ ist. Wenn aber einmal als fix ‚angenommen‘ worden ist, <span style="color:#00B000">(als Prämisse)</span>, dass es wahr ist, dass GOTT ‚existiert‘, dann ist natürlich die ‚Annahme‘, dass GOTT ‚nicht existiert‘, falsch. Aber sie ist auch ,unlogisch‘ und ,unsinnig‘, weil die Annahme ''':''' <span style="color:#FF6000">»''Es ist unmöglich, dass es einen GOTT gibt''«</span>, offensichtlich und eindeutig zu einem Widerspruch führt; was z. B. Günther J. WIRSCHING mit seiner Version des <span style="color:#00B000">(nicht umkehrbaren)</span> ‚Möglichkeitsbeweises‘ für ,GOTT‘, explizit vorexerziert hat; <span style="color:#00B000">( nachgestellt im Anhang ''':''' GÖDELS ‚Möglichkeitsbeweis‘ als ,Widerlegung‘ eines Nicht-GOTT-Glaubens; in Entsprechung zu Psalm 14,1 und Psalm 53,2 ''':''' <span style="color:#CC66FF">»''Der'' <span style="color:#00B000">[ ,unvernünftige‘ ]</span> ''Tor sagt in seinem Herzen ''':''' Es gibt keinen Gott. Sie handeln verderbt, handeln abscheulich; da ist keiner, der Gutes tut''«</span>. Historischer Hintergrund zu diesem Psalm-Text ''':''' Die Zerstörung des Tempels in Jerusalem 586 v.Ch. durch die Truppen des NEBUKADNEZAR II.)</span> Der Logiker GÖDEL hat in seinem System zum ,ontologischen Beweis‘ keine ‚formale Unentscheidbarkeit‘ <span style="color:#00B000">(Agnostizismus)</span> feststellen können, wie auf einem anderen Feld seiner Forschungsarbeiten. Das GÖDEL-Konsequenz-Teil von der ‚Notwendigkeit‘ GOTTES ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span>, <span style="color:#00B000">(die ‚Konsequenz’ aus dem ‚widerspruchsfreien‘ Korollar-1 ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —,</span>)</span> im ‚Theorem ANSELMS‘, ist <span style="color:#00B000">(im 3. Beweisgang, Term :10:)</span> dann auch eine weitere Explikation des Basis-Theorems-2 des Kalküls ''':''' <span style="color:#4C58FF"> — ‚'''Gx↔G'''<sub>ess</sub>'''x'''‘ — </span>, über die ‚ontologische Identität‘ vom <span style="color:#FF6000">„Dasein GOTTES“</span> ''':''' <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, mit seinem <span style="color:#FF6000">„Wesen“</span> ''':''' <span style="color:#4C58FF"> — <sub>ess</sub> —</span>, nach einem <span style="color:#4C58FF">[ Modus ponens ]</span>, dargestellt mit Term :09:. <span style="color:#00B000">(Die ontologische Identität von Dasein und Wesen in GOTT, ist die, für uns, <span style="color:#FF6000">„notwendige Präsenz <span style="color:#00B000">[ das Sein, <span style="color:#4C58FF">— ‚'''E'''‘ —</span>]</span> GOTTES“</span> ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x'''‘ —</span>, die äquivalent, bzw. koinzident ist zur <span style="color:#FF6000">„Vollkommenheit <span style="color:#00B000">[ das Wesen, <span style="color:#4C58FF">— ‚'''P'''‘ —</span>]</span> GOTTES“</span> ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>. Diese Identität von Sein und Wesen in GOTT ''':''' <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub> —</span>, bedeutet <span style="color:#4C58FF">,theologisch‘</span> konkret ''':''' die, für uns, notwendige Gegenwärtigkeit GOTTES, [ sein Dasein ], ist verwirklicht worden in der liebevollen [ Wesens-]Zuwendung GOTTES zu uns Menschen, in seiner Kindwerdung in Bethlehem, durch die Jungfrau MARIA ''':''' GOTTES Wesen ist ,Sein-mit-uns‘ ''':''' <span style="color:#CC66FF">»''sein Name'', <span style="color:#00B000">[ sein Wesen ]</span>, ''ist IMMANUEL, das heiß übersetzt ''':''' GOTT-ist-mit-uns''«, <small>({{Bibel | Matthäus Evangelium |1|23|EU}})</small></span>, der unsere Not-,wenden‘-wird, d.h. der uns und die Welt von der Korruption der Sünde und des Todes <span style="color:#4C58FF">,erlösen‘</span> will und wird; jedoch nicht ohne uns. Die <span style="color:#4C58FF">„Menschwerdung“</span> GOTTES in JESUS CHRISTUS, die <span style="color:#4C58FF">„Hypostatische Union“</span>, bzw. diese außergewöhnliche und einzigartige <span style="color:#FF6000">„Koinzidenz“</span> von GOTT und Mensch, ist der wirkliche und historische Beginn der <span style="color:#4C58FF">„Erlösung“</span> des Menschen und der Welt; vergegenwärtigt für jede Generation der Menschen in und durch die <span style="color:#4C58FF">„Kirche“</span> JESU CHRISTI.)</span> Die, von GÖDEL im 1. Beweisgang, als Prämissen schon vorausgesetzten und ,angenommenen‘ Perfektionen, bzw. Vollkommenheiten, <span style="color:#00B000">(das sind die allgemeinen ,Transzendentalia‘ für alles Nicht-Göttliche in der Welt)</span>, werden im ersten Teil des 2. Beweisganges, mit Term :13: <span style="color:#4C58FF">— ‚'''PY'''‘ —</span>, dann auch als <span style="color:#FF6000">„positive Wesenseigenschaften“</span>, <span style="color:#00B000">(als die ultimativen ,Transzendentalia‘)</span>, in GOTT ‚definitiv‘ <span style="color:#00B000">( ╞ )</span> bestätigt; <span style="color:#00B000">(siehe Anhang, 2. Beweisgang, Anmerkung-2)</span>. Im 3. Beweisgang ist das Basis-Theorem-2 die ,modal‘ notwendige, bzw. transzendentale, Voraussetzung, sowohl für das <span style="color:#FF6000">„an sich notwendige Dasein GOTTES“</span>, <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span>, im Term :10:, als auch für die <span style="color:#FF6000">„für uns notwendige Existenz GOTTES“</span>, <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>‘ —</span>, in den Ressourcen dieses Beweisganges ''':''' in der Definition-3, und im Axiom-5; <span style="color:#00B000">(das <span style="color:#4C58FF">— ‚'''E'''‘ —</span> wird nur GOTT zugeordnet; vgl. auch Anhang, 3. Beweisgang, Anmerkung-4)</span>. Dieses Basis-Theorem-2 ist auch zugleich die Antwort auf die Frage nach dem ‚Ursprung‘ GOTTES ''':''' GOTT ist <span style="color:#FF6000">„unverursacht“ <span style="color:#00B000">|</span> „ursprungslos“</span> ‚da‘, von <span style="color:#CC66FF">„Ewigkeit zu Ewigkeit“</span>, denn es ‚ist‘ sein <span style="color:#FF6000">„Wesen“</span>, <span style="color:#00B000">(überzeitlich-ewig)</span> für uns immer schon ‚da‘ zu sein. Weitere ‚Einzelheiten‘ über Wesen und Eigenschaften GOTTES gehören in die Mystik, bzw. in die <span style="color:#4C58FF">„Theologie“</span>. ===<div class="center"><span style="color:#660066">Die Bedeutung des Kalküls</span></div>=== <div class="center">Immanuel KANT und Kurt GÖDEL im ‚Dialog‘</div> KANT sagt ''':''' ::<span style="color:#FF6000">»</span>'''''Sein''' ist offenbar kein reales Prädikat''. ... ''Es ist bloß die'' <span style="color:#00B000">[ gedachte ]</span>'' Position'' <span style="color:#00B000">[ latinisiert, deutsch für ''':''' ,Setzung‘ ]</span> ''eines Dinges ... Nehme ich nun das Subjekt (Gott) mit allen seinen Prädikaten'' <span style="color:#00B000">[ d.h. Eigenschaften ]</span> ''(worunter auch die Allmacht gehört) zusammen, und sage ''':''' ‚'''Gott ist'''‘'', <span style="color:#00B000">[ ,GOTT existiert wirklich‘ ]</span>, ''oder ‚es ist ein Gott‘, so <u>setze</u> ich kein neues Prädikat'' <span style="color:#00B000">[ keine neue Eigenschaft ]</span> ''zum ‚Begriffe‘ von Gott ''':''''' <span style="color:#00B000">[ <span style="color:#0000FF; background-color:#FFFF00">‚Sein’ ist kein ‚reales Prädikat’ in GOTT</span>; ‚Existenz‘ ist in GOTT keine ‚Eigenschaft‘ ],</span> ... ''es kann daher zu dem Begriffe'', <span style="color:#00B000">[ ,GOTT‘ ]</span>, ''der bloß die'' <span style="color:#00B000">[ gedachte ]</span>'' Möglichkeit ausdrückt, darum, dass ich dessen Gegenstand'', <span style="color:#00B000">[ GOTT ]</span>, ''als schlechthin gegeben (durch den Ausdruck ''':''' er ist'', <span style="color:#00B000">[ GOTT ist wirklich ]</span>'' ) <u>denke</u>, nichts weiter hinzukommen.'' <span style="color:#00B000">[ Beides ist ,bloß gedacht‘ '''!''' ]</span> ''Und so enthält das Wirkliche nichts mehr als das bloß Mögliche. Hundert ‚wirkliche‘ Taler enthalten nicht das mindeste <u>mehr</u>, als hundert ‚mögliche‘. Denn, da diese den'' <span style="color:#00B000">[ gedachten ]</span>'' ‚Begriff‘, jene aber den Gegenstand und dessen'' <span style="color:#00B000">[ gedachte ]</span>'' Position an sich selbst bedeuten, so würde, im Fall dieser'', <span style="color:#00B000">[ die 100, als ,wirklich‘ bloß gedachten Taler ]</span>, ''<u>mehr</u> enthielte als jener,'' <span style="color:#00B000">[ als ihr ‚gedachter‘ Begriff im Verstand, wie ΑNSELM von Canterbury für GOTT, als ‚wirklich‘ Existierenden, argumentierte, …''so würde'' ]</span> ''mein ‚Begriff‘'' <span style="color:#00B000">[ die 100 im Verstand ‚gedachten‘ Taler ]</span> ''nicht den ganzen Gegenstand ausdrücken, und also auch <u>nicht der angemessene Begriff</u> von ihm sein. Aber in meinem Vermögenszustande ist <u>mehr</u> bei hundert ‚wirklichen‘ Talern, als bei dem bloßen Begriffe derselben'', <span style="color:#00B000">[ als bei 100 bloß ‚gedachten‘ Talern ]</span> ... <span style="color:#FF6000">«</span> <span style="color:#00B000"><ref>‚''<span style="font-family: Times;"><big>Kritik der reinen Vernunft</big></span>''‘, Seite 401; https://www.korpora.org/kant/aa03/401.html</ref></span>. GÖDEL würde darauf <span style="color:#00B000">(korrespondierend zur aristotelisch-<span style="color:#4C58FF">,theologischen‘</span> Tradition von der Identität von Sein und Wesen in GOTT)</span> antworten ''':''' ::<span style="color:#FF6000">»</span>Die <span style="color:#FF6000">„100 Taler“</span> sind der <span style="color:#FF6000">»''zufälligen Struktur der'' <span style="color:#00B000">[ vergänglichen ]</span> ''Welt''«</span> entnommen, und sind daher nicht mit GOTT vergleichbar, der, <span style="color:#FF6000">»''unabhängig von der zufälligen'' <span style="color:#00B000">[ Raum-Zeit-]</span>''Struktur''«</span> unserer Welt, <span style="color:#FF6000">„über“</span> dieser Welt steht. Einzig und allein nur von GOTT gilt ''':''' Der mit Dingen aus unserer Welt ,nicht vergleichbare‘ GOTT, <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, <span style="color:#FF6000">„existiert notwendig für uns“</span>, <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x'''‘ —</span>, und <span style="color:#FF6000">„notwendiges Existieren, <u>Sein</u>“</span> ,ist‘ eine <span style="color:#FF6000">„positive <u>Wesen</u>seigenschaft“</span> in GOTT, <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub>‘ —</span>, weil GOTT aus sich <span style="color:#FF6000">„vollkommen“ <span style="color:#00B000">|</span> „perfekt“</span> ist, <span style="color:#4C58FF">— ‚'''PG'''‘ —</span> ''':''' <span style="color:#0000FF; background-color:#FFFF00">‚Sein‘ ist in GOTT ein ‚reales Prädikat‘</span>; <span style="color:#00B000">(notwendige ‚Existenz’ ist eine positive ‚Wesenseigenschaft’ in GOTT)</span>, und nur bei GOTT '''!''' Zum zeitlos-ewigen GOTT der Christen ''':''' <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, <span style="color:#00B000">(als methodologische Kalkül-Prämisse)</span>, kann man sagen ''':''' Weil es, wegen Axiom-1 und Axiom-2, <span style="color:#FF6000">„widerspruchsfrei möglich"</span> ist, dass es GOTT gibt ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span>, darum ist GOTT auch das ‚einzige‘ <span style="color:#FF6000">„Wesen“</span>, <span style="color:#4C58FF">— ‚'''x'''‘ —</span>, von dem ein Christ sagen kann, dass es <span style="color:#FF6000">„notwendig aus sich“</span> ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span>, d.h. <span style="color:#FF6000">„grundlos“ <span style="color:#00B000">|</span> „unverursacht“</span>, für uns immer schon ‚da’ ist, und immer ,da’ sein wird; und zusätzlich gilt ''':''' Es gibt für jede mögliche Welt ‚nur‘ diesen einen GOTT ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx ∧ □∀y(Gy→x=y)'''‘ — </span><span style="color:#00B000">(Monotheïsmus, Korollar-3)</span>; vorausgesetzt, man geht von der ,Existenz’ dieses GOTTES aus, wobei diese Annahme für GÖDEL <span style="color:#FF6000">»''mit allen bekannten Tatsachen durchaus vereinbar''«</span> ist.<span style="color:#FF6000">«</span> Eine Beobachtung ''':''' KANT sagt, gleichsam als ,krönenden‘ Abschluss seiner Widerlegung des, — von ihm so genannten —, ,ontologischen Gottesbeweises‘ ''':''' <span style="color:#FF6000">»</span>''Aber in meinem Vermögenszustande ist <u>mehr</u> bei hundert ‚wirklichen‘ Talern, als bei dem bloßen Begriffe derselben, (d.i. ihrer Möglichkeit).''<span style="color:#FF6000">«</span> Diese Feststellung KANTS entspricht jedoch genau der Argumentation ANSELMS ''':''' GOTT <span style="color:#FF6000">„<span style="font-family: Times;"><big>esse et in re</big></span>“</span>, d.h. GOTT ,existiert auch in Wirklichkeit‘, <span style="color:#FF6000">„<span style="font-family: Times;"><big>quod maius est</big></span>“</span>, was <u>mehr</u> ist, als <span style="color:#FF6000">„<span style="font-family: Times;"><big>esse solo in intellectu</big></span>“</span>, als nur ein bloßer Begriff ,im Verstand zu sein‘. Der ,Mehr-Wert‘ ergibt sich in beiden Fällen, sowohl bei den Talern als auch bei GOTT, aus der ,Wirklichkeit‘ ihrer Existenz, im Gegensatz zur bloßen, <span style="color:#00B000">(im Begriff gedachten)</span>, ,Möglichkeit‘ ihrer Existenz, so dass, in jedem Fall, der ,Begriff‘ im Verstand ohne Abstriche <span style="color:#FF6000">»</span>''den ganzen Gegenstand ausdrückt''<span style="color:#FF6000">«</span>, und von diesem auch <span style="color:#FF6000">»</span>''der angemessene Begriff''<span style="color:#FF6000">«</span> ist. Alles andere wäre eine ,Lüge‘. Mit dieser ,Beobachtung‘ ist das implizit ,Widersprüchliche‘ in KANTS Argumentation aufgedeckt ''':''' Das Wirkliche in KANTS Vermögenszustande enthält <span style="color:#FF6000">,doch mehr‘</span> als das bloß Mögliche, konträr zu seiner vorigen Behauptung ''':''' <span style="color:#FF6000">»</span>''das Wirkliche''<span style="color:#FF6000">«</span> enthalte <span style="color:#FF6000">»'',nichts mehr‘</span> als das bloß Mögliche''<span style="color:#FF6000">«</span>. Diese Behauptung ist offensichtlich falsch. Das ist somit ein indirekter Beweis und damit eine Bestätigung für die analoge Argumentation ANSELMS aus dem Wiederspruch des Gegenteils, am Beispiel KANTS <span style="color:#FF6000">»</span>''Vermögenzustandes bei hundert wirklichen Talern''<span style="color:#FF6000">«</span>, in dem in Wirklichkeit <span style="color:#FF6000">,doch mehr‘</span> ist, <span style="color:#FF6000">»</span>''als bei dem bloßen Begriffe derselben''<span style="color:#FF6000">«</span>. <span style="color:#00B000">(Diese ,Beobachtung‘ ist zugleich auch das entscheidende Indiz dafür, dass das systembedingte Konzept KANTS von der ,Existenz‘, bzw. vom ,Sein‘ eines jeden Gegenstandes, als</span> <span style="color:#FF6000">»</span>''dessen bloße Position''<span style="color:#FF6000">«</span>, <span style="color:#00B000">d.i. als seine ,Setzung‘ bloß im- und durch den Verstand, ,falsch‘ ist, — d.h. im Klartext ''':''' für KANT ist das ,Sein‘ eines Gegenstandes bloß ein ,Gedanke‘ in uns, wenn er meint, dass uns ein Gegenstand erst dann wirklich ,gegeben‘ sei, wenn wir uns den</span> <span style="color:#FF6000">»</span>''Gegenstand als schlechthin gegeben (durch den Ausdruck : <u>er ist</u>) <u>denken</u>''<span style="color:#FF6000">«</span>, <span style="color:#00B000">was nur dem Irrtum einer falschen System-Konzeption geschuldet sein kann. Auf Grund dieser Konzeption ist das</span> <span style="color:#FF6000">»</span>''Ding, wie es an sich selbst ist''<span style="color:#FF6000">«</span>, <span style="color:#00B000">für KANT systembedingt weder ,anschaubar‘, noch ,erkennbar‘. Diese falsche Konzeption über die ,Existenz‘, bzw. das ,Sein‘ eines Dinges, als</span> <span style="color:#FF6000">»</span>''dessen bloße Position''<span style="color:#FF6000">«</span>, <span style="color:#00B000">ist für KANT letztendlich auch die Beweisgrundlage und Voraussetzung für seine Ablehnung des ontologischen Argumentes für GOTT im Theorem ANSELMS. Wenn das ,wirkliche‘ Sein eines Dinges nichts anderes ist, als</span> <span style="color:#FF6000">»</span>''dessen'' <span style="color:#00B000">[ bloß gedachte ]</span> ''Position''<span style="color:#FF6000">«</span>, <span style="color:#00B000">d.h. als seine ,mögliche‘ Setzung bloß im- und durch den Verstand, — das ist das, als ,wirklich‘ bloß nur ,gedachte‘ Ding —, dann</span> <span style="color:#FF6000">»</span>''enthält''<span style="color:#FF6000">«</span> <span style="color:#00B000">natürlich</span> <span style="color:#FF6000">»</span>''das Wirkliche''<span style="color:#00B000">, [ als die bloß gedachte Existenz ],</span> ''nichts mehr als das bloß Mögliche''<span style="color:#00B000">, [ als der gedachte Begriff ]<span style="color:#FF6000">«</span>, was offensichtlich unhaltbar ist. <span style="color:#4C58FF">[ Modus tollendo tollens ] </span> ''':''' Wenn die Konsequenz einer Wenn-Dann-Folgerung ,falsch‘ ist, dann ist auch ihre Voraussetzung, das System-Konzept KANTS, ,falsch‘ ''':''' d.i. seine ,Kopernikanische Wende‘ für die Metaphysik, soweit sie KANTS ,Sein’-Konzept betrifft. Korrekt und ,wahr‘ ist in jedem Fall ''':''' Das Wirkliche enthält <span style="color:#FF6000">,doch mehr‘</span> als das bloß Mögliche, und die Dinge ,existieren‘ schon immer unabhängig von unserem Denken. ,Existenz‘, das ,Sein‘, ist <span style="color:#FF6000">,doch mehr‘</span>, als bloß ein ,Gedanke‘ von uns.)</span> Somit ist die Argumentation KANTS gegen den ontologischen Beweis ANSELMS für GOTT ,falsch‘ und unhaltbar, weil sie auf der ,falschen‘ Voraussetzung beruht ''':''' die ,Existenz‘, bzw. das ,Sein‘ eines jeden ,Gegenstandes‘, — wie z. B. auch die Existenz bei GOTT —, sei bloß dessen gedachte ,Position‘ an sich selbst, d.h. bloß seine ,Setzung‘ im- und durch den Verstand. Damit ,macht‘ er GOTT außerdem zu einem ,Ding‘ unter den vielen ,Dingen‘ dieser Welt, und verkennt so, — wie vor ihm THOMAS von Aquin —, auch die Einzigartigkeit und Exklusivität GOTTES im Theorem ANSELMS. <div class="center">Die <span style="color:#FF6000">„Rede von GOTT“</span> in der philosophischen Tradition</div> Wenn man die philosophische Tradition der <span style="color:#FF6000">„Rede von GOTT“</span> im Lichte der Ergebnisse der <span style="color:#4C58FF">„axiomatischen Theologie“</span> GÖDELS liest, dann stellt sie sich am Beispiel bei ARISTOTELES, — AVICENNA, — ANSELM, und bei GÖDEL wie folgt dar ''':''' <span style="color:#FF6000">»''Das Erstbewegende,'' (<span style="font-family: Times;"><big>,πρῶτον κινοῦν‘</big></span>), ''das, ohne selbst ‚bewegt‘ zu sein'', (<span style="font-family: Times;"><big>,ἀκίνητον‘</big></span> <span style="color:#00B000">| ''unverursacht, ,entstehungslos‘'' |</span> ), ''alles Übrige wie ein Geliebtes ‚bewegt‘'', (<span style="font-family: Times;"><big>,κινεῖ δὴ ὡς ἐρώμενον‘</big></span> <span style="color:#00B000"> | ''-verursacht, ,entstehen‘ lässt'' |</span> ), ''ist sowohl'' <span style="color:#00B000">[ zeitlich-]</span>''ewiges ‚Wesen‘'', (<span style="font-family: Times;"><big>,ἀΐδιον καί οὐσία‘</big></span> <span style="color:#00B000">| ''‚Substanz‘'' |</span> ), ''als auch'' <span style="color:#00B000">[ zeitlich-]</span>''ewiges ‚wirksames, verwirklichendes Sein‘'', (<span style="font-family: Times;"><big>‚ἀΐδιον καί ἐνέργεια οὖσα‘ = ‚actus purus‘</big></span><span style="color:#00B000"> | '',reine Tätigkeit‘'' |</span> ), … ''ersehnt'', (<span style="font-family: Times;"><big>,ὀρεκτόν‘</big></span>), ''und erkennbar'', (<span style="font-family: Times;"><big>,νοητόν‘</big></span>), ... ''denn dies ist der ‚Gott‘'', (<span style="font-family: Times;"><big>,τοῦτο γὰρ ὁ θεός‘</big></span>), <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, ''der'' <span style="color:#00B000">[ zeitlich-]</span>''Ewige'', (<span style="font-family: Times;"><big>,ἀΐδιον‘</big></span>), — ''der Unvergleichliche'', (<span style="font-family: Times;"><big>,ἄριστον‘</big></span> <span style="color:#00B000">| ''‚der Beste‘'' |</span> ), — ''der Lebendige'', (<span style="font-family: Times;"><big>,ζῷον‘</big></span> <span style="color:#00B000">| ,''das Leben selbst‘'' |</span> ), — ... ''so sagen wir ja'', (<span style="font-family: Times;"><big>,φαμὲν δὴ‘</big></span>), — ...«</span> ''':''' <span style="color:#00B000">(ARISTOTELES — Grieche)</span>. Der ‚Begriff’ <span style="color:#FF6000">„GOTT“</span>, <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, als ,Individuumname‘, ist synonym mit <span style="color:#FF6000">„göttliches ‚Da-Sein’“</span>, das sowohl <span style="color:#FF6000">„aus sich vollkommen“</span>, als auch <span style="color:#FF6000">„notwendig für uns“</span> ‚da‘ ist; <span style="color:#00B000">(das ist das, an sich, vollkommene ‚Was-Sein‘ GOTTES ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ — </span>, das zugleich, für uns, das notwendige ‚Da-Sein‘ GOTTES ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x'''‘</span> — ist)</span>; <span style="color:#CC66FF">„von Ewigkeit zu Ewigkeit“</span>. Das ist der <u>angemessene Begriff</u> von GOTT, und gilt ‚nur‘ von GOTT. Weil GOTT <span style="color:#FF6000">„vollkommen“</span> ist, ist <span style="color:#FF6000">„Da-Sein“ <span style="color:#00B000">|</span> „GOTT-Sein“ <span style="color:#00B000">|</span> „Göttlichkeit“</span> das <span style="color:#FF6000">„Wesen“</span> GOTTES ''':''' <span style="color:#4C58FF">— ‚'''Gx↔G'''<sub>ess</sub>'''x'''‘ —</span>. Im Unendlichen, GOTT, sind <span style="color:#FF6000">„Essenz“</span> und <span style="color:#FF6000">„Existenz“</span> koinzident ,eins‘, und daher untrennbar, und <span style="color:#FF6000">»''darum ist GOTT das einzige ‚Sein’, das notwendig an sich ‚da‘ ist''«</span> ''':''' <span style="color:#00B000">(ABU ALI SINA alias AVICENNA — Muslim)</span>. Der <span style="color:#00B000">(gedachte)</span> ‚Eigenschafts-Begriff‘ <span style="color:#FF6000">„Vollkommenheit (die Größe) GOTTES“</span>, <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, <span style="color:#00B000">(‚Perfektion‘, die unbegrenzte Summe aller ‚positiven Eigenschaften‘ in GOTT)</span> schließt koinzident die ‚Eigenschaft’ <span style="color:#FF6000">„notwendige Existenz für uns“</span> mit ein ''':''' <span style="color:#4C58FF">— ‚'''PE'''<sub>not</sub>‘ —</span>. GOTT wäre nicht <span style="color:#FF6000">„vollkommen“</span>, wenn er nicht auch real für uns ‚da‘ wäre, wenn er nicht ,immer schon’ <span style="color:#FF6000">„existierte“</span>. ‚Sein’ ist <u>mehr</u> als ‚Nicht-Sein’. ,Sein’, bzw. ,Existenz’ gehört in GOTT zu den ,Transzendentalia’. Das sind die <span style="color:#00B000">(ultimativen)</span> ,Wesenseigenschaften’ in GOTT. Der unbegrenzt Unendliche, GOTT, ist daher das <span style="color:#FF6000">»''vollkommenste Wesen, über das nichts ,Größeres‘ d.h. Vollkommeneres <u>mehr</u> ‚gedacht‘ werden kann''«</span> ''':''' <span style="color:#00B000">(ANSELM von Canterbury — Christ)</span>. Der ‚Begriff’ <span style="color:#FF6000">„Perfektion GOTTES“</span>, <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, schließt koinzident das <span style="color:#FF6000">„notwendige Dasein GOTTES“</span>, <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x'''‘</span> —, für uns mit ein, ohne einen zeitlichen Anfang und ohne ein zeitliches Ende. Das ist die ‚zeitlos-ewige‘, an sich absolute, und <span style="color:#FF6000">„für uns notwendige Existenz GOTTES“</span> ''':''' <span style="color:#4C58FF">— ‚'''Gx→E'''<sub>not</sub>'''x'''‘ —</span> ''':''' <span style="color:#00B000">(Das ist ein ,regulär‘-mögliches Korollar im 2. Beweisgang aus Term :16: ''':''' <span style="color:#4C58FF">— ‚'''Gy→Yy'''‘ —</span>, mit der <span style="color:#4C58FF">[ Instanz(Y:=E<sub>not</sub>) ]</span>, und der <span style="color:#4C58FF">[ FUB(y:=x) ]</span>; und auch ein ,regulär‘-mögliches Korollar im 3. Beweisgang ''':''' entsprechend der <span style="color:#FF6000">„logischen Implikation”</span> :: <span style="color:#4C58FF">[├ A ├ B ╞ A → B ]</span> von Term :01: <span style="color:#4C58FF">— ‚'''Gx'''‘ — </span> und Term :05: <span style="color:#4C58FF"> —‚'''E'''<sub>not</sub>'''x'''‘ —</span> aus diesem Beweisgang. In Worten ''':''' <span style="color:#FF6000">»</span>''Angenommen, '' <span style="color:#4C58FF">— ‚'''x'''‘ —</span> ''steht für den GOTT der Christen'' ''':''' <span style="color:#4C58FF">— ‚'''G'''‘ — </span>, ''dann existiert dieser GOTT'', <span style="color:#4C58FF">— ‚'''x'''‘ —</span>, ''für uns notwendig'', <span style="color:#4C58FF">— <sub>not</sub> —</span> <span style="color:#FF6000">«</span>.)</span> Der Unendliche, GOTT, ist <span style="color:#FF6000">»''unabhängig von der zufälligen'' <span style="color:#00B000">[ Raum-Zeit-]</span>''Struktur''«</span> unserer ‚vergänglichen‘, ,endlichen‘ Welt, welche prinzipiell vom dreidimensionalen Raum und von der unwiederbringlich ‚vergehenden‘ Zeit geprägt ist. Der ,GOTT der Christen‘ ist <span style="color:#FF6000">»''unabhängig''«</span> von dieser <span style="color:#FF6600">„vergehenden Raum-Zeit“, — »''jenes rätselhafte und anscheinend in sich widersprüchliche Etwas''« <span style="color:#00B000">(GÖDEL)<ref>Kurt GÖDEL, ‚''<span style="font-family: Times;"><big>Eine Bemerkung über die Beziehungen zwischen der Relativitätstheorie und der idealistischen Philosophie‘</big></span>'', in P.A.SCHILPP (Hg.): ‚''<span style="font-family: Times;"><big>Albert Einstein, Philosoph und Naturforscher‘</big></span>'', Seite 406</ref></span> —</span>. Ohne ‚Zeit‘ gibt es keinen zeitlichen Unterschied zwischen ‚Ursache‘ und ‚Wirkung‘, <span style="color:#00B000">(beides ist zeitlos ,eins‘)</span>, und so ist der zeitlos-ewige GOTT, der <span style="color:#FF6000">»''notwendig aus sich ,existiert‘'' «</span> ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ — </span>, <span style="color:#FF6000">„unverursacht“ <span style="color:#00B000">|</span> „ursprungslos“</span> für uns immer schon ‚da‘ ''':''' <span style="color:#00B000">(GÖDEL — ohne religiöses Bekenntnis)</span>. Mit dem GÖDEL-Kalkül ist die <span style="color:#FF6000">„Rede von GOTT“</span> auf eine ‚vernünftige Basis‘ gestellt worden, und ist somit für jeden Menschen nachvollziehbar, <span style="color:#FF6000">»''rein verstandesmäßig, (ohne sich auf den Glauben an irgendeine Religion zu stützen)''«</span>, wie obige Beispiele zeigen. '''Resümee :''' Das GÖDEL-Kalkül zeigt mit <span style="color:#FF6000">»''mathematischer Evidenz''«</span>, was notwendig folgt, wenn die Axiome ‚wahr‘ sind, <span style="color:#00B000">(die Axiome bilden formal-syntaktisch <span style="color:#FF6000">»''die theologische Weltanschauung''«</span> ab)</span>, unter der Voraussetzung, dass die Axiome <span style="color:#FF6000">»''unabhängig von der zufälligen'' <span style="color:#00B000">[ Raum-Zeit-]</span>'' Struktur''«</span> unserer Welt sind. Die ,Verifikation‘ der Axiome und Definitionen von GOTT und seiner Vollkommenheiten gelingt GÖDEL, — entsprechend seiner Unabhängigkeits-Bedingung —, durch den Aufweis ihrer Widerspruchsfreiheit ''':''' sie sind somit ,wahr‘ und, — im Kontext einer <span style="color:#FF6000">»''theologischen Weltanschauung''«</span> —, auch ,annehmbar‘ in unserer ,realen‘ Welt ''':''' <span style="color:#00B000">(siehe Anhang, 2. Beweisgang und Anmerkung-2)</span>. Er vermeidet damit den Fehler, der immer wieder im Diskurs über Gottesbeweise gemacht wird ''':''' GOTT mit seinen Geschöpfen zu vergleichen. Diese logisch-philosophische Rede von GOTT <span style="color:#00B000">(<span style="color:#FF6000">»''ohne sich auf den Glauben an irgendeine Religion zu stützen''«</span>)</span> hat eine <u>mehr</u> als zweitausendjährige Tradition hinter sich. Der <span style="color:#FF6000">„100-Taler-Gott“</span> des Philosophen KANT, hat heute, nachdem der Logiker und Systemtheoretiker GÖDEL sein System vorgelegt hat, an ‚Strahlkraft‘ verloren. Kurt GÖDEL ''':''' ::<span style="color:#FF6000">» ''Die theologische Weltanschauung'', <span style="color:#00B000">[ dass GOTT für uns immer schon ‚da‘ ist ]</span>, ''ist rein verstandesmäßig mit allen bekannten Tatsachen durchaus vereinbar'';«</span> <span style="color:#00B000">[ d.h. sie ist das ,Resultat‘ der, — vom Glauben geleiteten —, ‚theoretischen Vernunft‘, alias ‚reinen Vernunft‘, und nicht bloß das ‚Postulat‘ einer ‚praktischen Vernunft‘, wie KANT meint ]. <span style="color:#FF6000">»''Der'' <span style="color:#00B000">[ christliche ]</span> ''Glaube ist die ‚Pupille‘ im ‚Auge‘ unseres Verstandes.''«</span> (Heilige KATHARINA von Siena, Lehrerin der Kirche, Patronin Europas<ref>vgl. <span style="font-family: Times;"><big>''Gebet 7 ‚Für die neuen Kardinäle‘, Rom, 21. Dezember 1378,''</big></span> aus <span style="font-family: Times;"><big>''Caterina von Siena ,Die Gebete‘.''</big></span> Kleinhain 2019, online: https://caterina.at/werke/gebete/gebete-detailansicht/gebet-7.html</ref> )</span> Der sonst so rationale KANT, hier doch etwas emotionell, <span style="color:#00B000">(als wolle er die Ergebnisse im GÖDEL-Kalkül nicht wahr haben, die belegen, dass er sich bei GOTT geirrt, und die Funktion des christlichen Glaubens für die Philosophie falsch eingeschätzt hat)</span> ''':''' ::<span style="color:#FF6000">»</span> ''Es war etwas ganz Unnatürliches und eine bloße Neuerung des Schulwitzes, aus einer ganz willkürlich entworfenen Idee das Dasein des ihr entsprechenden Gegenstandes selbst ausklauben zu wollen''<ref>vgl. ‚''<span style="font-family: Times;"><big>Kritik der reinen Vernunft</big></span>''‘, Seite 403. https://www.korpora.org/kant/aa03/403.html</ref>.<span style="color:#FF6000">«</span> Für KANT, für die Scholastiker, <span style="color:#00B000">(und auch für uns)</span>, ist es natürlich ‚logisch‘, dass aus einem als ‚möglich’ gedachten Begriff, <span style="color:#FF6000">»</span>''aus einer ganz willkürlich entworfenen Idee''<span style="color:#FF6000">«</span>, keine Existenzaussage abgeleitet werden kann. <span style="color:#00B000">(Aus dem bloß gedachten Begriff ,goldene Berge‘ folgt natürlich nicht, dass es solche in Wirklichkeit auch gibt.)</span> In der philosophisch-<span style="color:#4C58FF">,theologischen’</span> Tradition, die von ARISTOTELES herkommt, ist der Begriff <span style="color:#FF6000">»''GOTT''«</span> jedoch von allen anderen Begriffen so verschieden, so dass für GOTT diese Logik KANTS nicht mehr gilt. GOTT ist ,unvergleichlich‘ und ,einzigartig‘. Dazu der Kommentar von HEGEL ''':''' ::<span style="color:#FF6000">»''Wenn KANT sagt, man könne aus dem Begriff'' <span style="color:#00B000">[ ‚GOTT‘ ]</span> ''die Realität nicht ,herausklauben‘, so ist da der Begriff als endlich gefasst''.« <span style="color:#00B000">[ In der Endlichkeit unserer Welt trifft die Logik KANTS zu, dass dem ‚Begriff‘ nicht ,notwendig‘ das ‚Sein‘ folgt, denn es gibt in ihr die ,Lüge‘, die das ,Wirklich-Sein‘ im Begriff bloß behauptet, ohne dass es ,in Wirklichkeit‘ zutrifft, was sie behauptet. Es gilt hier nach KANT ''':''' »''Sein ist kein reales Prädikat''«. Somit ist ]</span> »''...der Begriff ohne'' <span style="color:#00B000">[ reales ]</span> ''Sein ein Einseitiges und Unwahres, und ebenso das Sein, in dem kein Begriff ist'', <span style="color:#00B000">[ ist ]</span> ''das begrifflose Sein,'' <span style="color:#00B000">[ d.i. das relative ,Noch-Nicht-Begriffene‘ ]</span>.'' Dieser Gegensatz, der in die Endlichkeit fällt'' <span style="color:#00B000">[ im Endlichen zutrifft ]</span>, ''kann bei dem Unendlichen, GOTT, gar nicht statthaben''<ref>Georg Wilhelm Friedrich HEGEL, ‚<span style="font-family: Times;"><big>''Ausführungen des ontologischen Beweises''</big></span>‘ in den ‚<span style="font-family: Times;"><big>''Vorlesungen über die Philosophie der Religion vom Jahr 1831''</big></span>‘ . Hamburg 1966, Seiten 175 bzw. 174</ref>; <span style="color:#00B000">[ denn ,Begriff‘, bzw. ,Denken‘ und ,Sein‘ sind in dem Unendlichen, GOTT, untrennbar und real immer dasselbe. Auf Grund dieser ontologischen Identität ,personifiziert‘ und ,repräsentiert‘ GOTT die ,Wahrheit‘ ''':''' GOTT ist die ,Wahrheit‘. In GOTT, dem <span style="color:#FF6000">„Schöpfer der Welt“</span>, folgt dem ,Begriff‘ immer ,notwendig‘ das ,Sein‘ ''':''' <span style="color:#CC66FF">»''GOTT sprach ''':''' Es werde ,Licht‘. Und es wurde Licht''«, <small>{{Bibel | Genesis |1|3|EU}}</small>;</span> oder auch ''':''' <span style="color:#CC66FF">»''Der Herr sprach, und sogleich geschah es; er gebot, und alles war da''«,</span> <small>{{Bibel | Psalm |33|9|EU}}</small>.]</span>«</span> Das Entscheidende bei der <span style="color:#4C58FF">„theologischen“</span> Interpretation des GÖDEL-Kalküls ist, dass der <span style="color:#00B000">(Begriff)</span> GOTT der Christen ''':''' <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, nicht auf die Ebene seiner ,endlichen‘ Geschöpfe und unserer Welt gestellt wird, <span style="color:#00B000">(d.i. das ‚Universum‘ im ,Urknall‘, die ‚100-Taler‘, ein ‚Tsunami‘, auch ,einfache Modelle‘ von unserer Welt, etc.)</span>, und damit verglichen wird, sondern, dass der GOTT der Christen in seiner Einzigartigkeit und Besonderheit als <span style="color:#FF6000">»''der Unendliche''«</span> belassen und als <span style="color:#FF6000">»''unabhängig von der zufälligen'' <span style="color:#00B000">[ Raum-Zeit-]</span>''Struktur''«</span> unserer vergänglichen Welt, — als <span style="color:#FF6000">»''der Unvergleichliche''«</span> —, verstanden wird. <span style="color:#00B000">(Alle Kritiken des sog. ,ontologischen‘ Gottesbeweises übersehen die Einzigartigkeit und Besonderheit des <span style="color:#FF6000">»''Unendlichen''«</span>, und/oder wollen diese nicht ,wahr‘ haben.)</span> Auch THOMAS von Aquin ,verortet‘ den GOTT ANSELMS, — in seiner Kritik an dessen Theorem —, irrtümlich unter die ,Dinge‘ der uns umgebenden ,Natur‘, wenn er sagt ''':''' GOTT <span style="color:#FF6000">„<span style="font-family: Times;"><big>esse in rerum natura</big></span>“</span>, d.h. wörtlich, dass der GOTT ANSELMS <span style="color:#FF6000">»</span>''in der Natur der Dinge'' <span style="color:#00B000">(unserer Welt)</span> ''existiert''<span style="color:#FF6000">«</span>, und verkennt somit, — wie nach ihm auch KANT —, die ,Unvergleichlichkeit‘ GOTTES, <span style="color:#00B000">(vgl. STh I q.2 a.1 ad 2<ref>„Deus … illud quo maius cogitari non potest; non tamen propter hoc sequitur quod intelligat id quod significatur per nomen, esse in rerum natura; sed in apprehensione intellectus tantum.“ ——— »''GOTT ist'' (nach ANSELM) ''der, über den Größeres nicht mehr gedacht werden kann. Aber nicht deswegen, weil er'', (der Narr von Psalm 14.1, den ANSELM zitiert), ''das versteht, was durch diesen Namen,'' (d.h. mit dem Begriff ,GOTT‘, als der ,Größte‘, im Theorem ANSELMS), ''bezeichnet wird, folgt daraus'', (wie ANSELM meint), ''dass er auch versteht, dass er'', (der GOTT ANSELMS), ''auch in der ,Natur‘ der Dinge'' (unserer Welt) ''existiert''; <span style="color:#00B000">[ was ANSELM so nie gesagt hat ]</span>. ''Daraus folgt nur, dass er'', (als ,GOTT‘), ''bloß in der Auffassung seines Verstandes'', (d.h. nur im Denken des Narren als ,Begriff‘), ''existiert.''« ——— Hier ,verortet‘ THOMAS einerseits den unendlichen GOTT, von dem das Theorem ANSELMS spricht, irrtümlich unter die endlichen Dinge der uns umgebenden ,Natur‘, was sachlich dem theologischen Theorem der Unvergleichlichkeit GOTTES widerspricht, der nicht unter die Dinge unserer Welt eingereiht werden darf. Anderseits verliert er dadurch auch den ,Blick‘ für die Außerordentlichkeit und Besonderheit GOTTES, dessen Natur völlig verschieden und unabhängig von der ,Natur‘ unserer raum-zeitlichen Welt ist. GÖDEL beweist jedoch, mit ANSELM, weil es notwendig, ohne Widerspruch, (»''bloß in der Auffassung unseres Verstandes''«), möglich ist, dass GOTT existiert, ist es korrekt, daraus auch mit Notwendigkeit zu folgern, dass der Glaube des Erzbischofs ANSELM, und der Glaube seiner Anvertrauten, von der Wirklichkeit GOTTES, widerspruchsfrei, logisch richtig, und damit sinnvoll ist; denn Möglichkeit und Wirklichkeit sind in GOTT koinzident ,eins‘. Das ist das Privilegium GOTTES allein, der einzigartig und unvergleichlich ist. Damit zeigt er auf, dass THOMAS die Unvergleichlichkeit und Einzigartigkeit GOTTES in seinem Vorhalt nicht bedacht hat; und außerdem ANSELM missverstanden hat.</ref>)</span>; jedenfalls hier in der Auseinandersetzung mit ANSELM. Dagegen spricht ANSELM im ,''<span style="font-family: Times;"><big>Proslogion</big></span>''‘, Seite 85f, nur von einem <span style="color:#FF6000">„<span style="font-family: Times;"><big>esse et in re</big></span>“</span> GOTTES, d.h. dass GOTT ,auch in Wirklichkeit existiert‘, <span style="color:#FF6000">„<span style="font-family: Times;"><big>quod maius est</big></span>“</span>, was ,größer‘, bzw. ,mehr‘ ist, als <span style="color:#FF6000">„<span style="font-family: Times;"><big>esse solo in intellectu</big></span>“</span>, als nur ,im Verstand zu sein‘; wobei die ,zeitlose-überzeitliche‘ Wirklichkeit, <span style="color:#00B000">(Natur)</span>, GOTTES jedoch völlig verschieden und <span style="color:#FF6000">»''unabhängig von der zufälligen''«</span> Wirklichkeit <span style="color:#00B000">(die ,Natur‘)</span> der ,raum-zeitlichen‘ Welt der Dinge ist. Daher ist sie mit dieser auch nicht vergleichbar. GOTT ist <span style="color:#FF6000">„vollkommen“</span> und alle <span style="color:#FF6000">„Vollkommenheiten“</span> in GOTT, <span style="color:#00B000">(die ultimativen ,Transzendentalia‘)</span>, sind koinzident ,eins‘, — ,fallen <span style="color:#FF6000">„notwendig“</span> perspektivisch in eins zusammen‘, und sind daher konvertierbar. Darum ist auch die Wirklichkeit, <span style="color:#00B000">(Natur)</span>, GOTTES ,einzigartig‘ und ,unvergleichlich‘. Mit Korollar-3 ist die Exklusivität und Außerordentlichkeit GOTTES definitiv im Kalkül ,bewiesen‘ <span style="color:#00B000">( ╞ )</span>. Der abendländische Monotheïsmus ist somit eine ,logische‘ Konsequenz aus den GÖDEL-Axiomen. <span style="color:#00B000">(Das <span style="color:#4C58FF">„theologische“</span> Theorem von der ,Einzigartigkeit‘ und Exklusivität GOTTES, d.h. hier im Kontext ''':''' die exklusive Einheit von GOTT und Mensch in JESUS CHRISTUS; von Vater, Sohn und Geist im <span style="color:#4C58FF">„Dreifaltigen“</span>; von Essenz und Existenz, von Begriff und Sein, von Ursache und Wirkung, von Subjekt und Objekt, von Möglichkeit und Wirklichkeit, und die unbegrenzte Summeneinheit und Koinzidenz der unendlichen Transzendentalien in GOTT, ist, — mit HEGEL —, die Voraussetzung und Bedingung jeder Philosophie ''':''' <span style="color:#FF6000">»''Die Einheit muss am Anfang der Philosophie stehen''«</span>; und ist zugleich auch ihr gesuchtes und bewiesenes Endergebnis und Ziel ''':''' <span style="color:#FF6000">»''Diese Einheit muss auch das Resultat der Philosophie sein''«</span><ref>https://hegel-system.de/de/gottesbeweis.htm#hegels-kritik-an-kant</ref>, was hier im GÖDEL-Kalkül ,logisch‘ mit Korollar-3 verifiziert wird ''':''' <span style="color:#4C58FF">— ‚'''□(∃xGx ∧ ∀y(Gy→x=y))'''‘ —</span> ''':''' <span style="color:#FF6000">»''GOTT ist exklusiv einzigartig''«</span>.)</span> Die Einzigartigkeit GOTTES bedingt die Koinzidenz, den inneren Zusammenhang aller seiner Vollkommenheiten und Zuschreibungen, <span style="color:#00B000">(Axiom-2)</span>, d.h. ihr paarweise, perspektivisches ,Zusammenfallen in eins‘ im Unendlichen, GOTT. ——— Aus der Notwendigkeit aller positiven Eigenschaften und Zuschreibungen, <span style="color:#00B000">(d.h. aus den, an sich, notwendigen, ultimativen Transzendentalien, Axiom-4)</span>, die in GOTT paarweise, als ,Wesenseigenschaften‘ koinzident ,eins‘ sind, <span style="color:#00B000">(Definition-2)</span>, ist die Einzigkeit GOTTES für uns erschließbar, <span style="color:#00B000">(Korollar-3)</span>. Axiom-4 ist die erste, ,modal‘ <span style="color:#FF6000">„notwendige“</span>, d.h. die transzendentale Voraussetzung für Korollar-3. Wenn im Korollar-3 das <span style="color:#4C58FF">— ‚'''x'''‘ —</span> z. B. für GOTT, dem ,Vater‘ der Christen, und das <span style="color:#4C58FF">— ‚'''y'''‘ —</span> für GOTT, dem ,Sohn‘, d.h. für ,JESUS CHRISTUS‘ steht, oder für den ,HEILIGEN GEIST‘, <span style="color:#00B000">(den ,Dreifaltigen GOTT‘ der Christenheit)</span>; oder auch für die Gottesbezeichnung ,GOTT-ADONAI‘ der Juden, oder für die Gottesbezeichnung ,ALLAH‘ der Muslime steht, dann weist dieses Korollar, für <span style="color:#4C58FF">— ‚'''∀y'''‘ —</span>, mit der ,ontologischen Identität‘ ''':''' <span style="color:#4C58FF">— ‚'''x=y'''‘ —</span>, auf die ,Koinzidenz‘ des <span style="color:#4C58FF">„Dreifaltigen“</span>, und auf die <span style="color:#4C58FF">„Hypostatische Union“</span> der Naturen von GOTT und Mensch in JESUS CHRISTUS, bzw. auch auf den inneren Zusammenhang der drei Buch-Religionen hin. ===<div class="center"><span style="color:#660066">Anhang : das GÖDEL-Kalkül</span></div>=== In der ,Legende zum GÖDEL-Kalkül‘ wird an einige Basics erinnert, und diese für die operative Praxis im anstehenden Kalkül, mit Hilfe von logischen Meta-Terme, adaptiert. Zusätzliche, notwendige Regeln und Gesetze werden dann ,benannt‘, wenn sie in der Kalkül-Durchführung auftreten. {|class="wikitable" |- ! <div class="center"><span style="color:#660066">Legende zum GÖDEL-Kalkül</span></div> |- | <small> <math>\begin{align} {\color{blue}\text{ ◇}} \text{ :: konsistent ↔ widerspruchsfrei ↔ möglich ↔ denkbar, } & {\color{blue}\text{ □}} \text{ :: notwendig ↔ wirklich, für jede mögliche Welt ↔ exklusiv} \\ \text{logischer Meta-Term ::} {\color{blue}\text{ [ A ├ B ]}} \text{ ::} & \text{ „aus A folgt im Kalkül ,regulär‘ (├ ) B.“} \\ \text{ A, B sind Aussagen über Eigenschaften, (A ist keine Eigenschaft);} & \text{ die Aussage, z.B. in der Kalkül-Zeile 10, wird als ,Term :10:‘ bezeichnet} \\ {\color{blue}\text{ AE}} \text{ ::} & \text{ Argument Einführung, Prämisse, Postulat } \\ {\color{blue}\text{ Xx}} \text{ ::} & \text{ „X ist eine Eigenschaft der Individuum-Variable x.“ } \\ {\color{blue}\text{ ¬PX}} \text{ ::} & \text{ „X ist keine positive Eigenschaft, ist keine Perfektion, ist nicht vollkommen.“ } \\ {\color{blue}\text{ Instanz(X := Y)}} \text{ ::} & \text{ Substitution der Eigenschaft X durch die ,bestimmte‘ Eigenschaft Y } \\ \text{ (Eine ,Instanz‘ ist ein Exemplar aus einer Menge gleichartiger Dinge;} & \text{ hier die ,bestimmte‘ Eigenschaft Y, als Ersatz für das unbestimmte X.) } \\ {\color{blue}\text{ FUB(x := y)}} \text{ ::} & \text{ Freie-Um-Benennung der Individuum-Variable x in y } \\ \text{ ,modal‘-frei gewählte Kalkül-Prämisse ::} {\color{blue}\text{ Gx}} \text{ ::} & \text{ „Die Variable x steht für den GOTT der Christen.“ } \\ {\color{blue}\text{ [ G(y) ├ ⱯyG(y) ]}} \text{ ::} & \text{ All-Operator-Einführung der Variable y für GOTT } \\ \text{ „Angenommen, die Variable y steht für GOTT, dann } & \text{folgt ,regulär‘ (├ ), dass auch jedes y im Kalkül für GOTT steht.“}\\ {\color{blue}\text{[ ⱯXA(X) ├ A(X) ]}} \text{ ::} & \text{ All-Operator-Beseitigung für die substituierte Eigenschaft X } \\ \text{ „Wenn X durch eine ,bestimmte‘ Eigenschaft ,instanziiert‘ ist oder } & \text{wird, dann kann der All-Operator von X ,regulär‘ (├ ) beseitigt werden.}\\ {\color{blue}\text{ KOMM(↔)}} \text{ ::} & \;{\color{blue}\text{[ (A↔ B) ↔ (B ↔ A) ]}} \text{ :: Kommutativgesetz für ( ↔ )}\\ {\color{blue}\text{ DIST(□∧)}} \text{ ::} & \;{\color{blue}\text{[ (□A ∧ □B) ↔ □(A ∧ B) ]}} \text{ :: Distributivgesetz für (□∧ )} \\ \text{ (hypothetischer Syllogismus, häufige logische Schlussregel) ::} & \;{\color{blue}\text{[ A → B, A ├ B ]}} \text{ :: (Modus ponendo ponens) :: Abtrennregel.} \\ \text{ „Wenn es wahr ist, dass aus A ein B folgt, und wenn A wahr ist, } & \text{dann ist im Kalkül ,regulär‘ (├ ) ableitbar, dass auch B wahr ist.“} \\ \text{ (negativer hypothetischer Syllogismus) ::} & \;{\color{blue}\text{[ A → B, ¬B ├ ¬A ]}} \text{ :: (Modus tollendo tollens)} \\ \text{ „Wenn es wahr ist, dass aus A ein B folgt, und wenn B falsch ist, } & \text{dann ist im Kalkül ,regulär‘ (├ ) ableitbar, dass auch A falsch ist.“} \\ \text{''KONDITIONALER BEWEIS“ ::} & \;{\color{blue}\text{[ ├ A ├ B ╞ A → B ]}} \text{ :: (logische Implikation)} \\ \text{ „Angenommen, A ist ,regulär‘ Axiom oder Prämisse, und B ist im } & \text{Kalkül ,regulär‘ abgeleitet, dann ist ,bewiesen‘ ( ╞ ) : A impliziert B, ist wahr.“} \\ \text{''INDIREKTER BEWEIS“ ::} & \;{\color{blue}\text{[ ├ ¬A → F ╞ A ]}} \text{ :: (Reductio ad absurdum)} \\ \text{ „Wenn im Kalkül aus ¬A ,regulär‘ eine Kontradiktion } & \text{F folgt, dann ist A ,bewiesen‘ ( ╞ ) : A ist ,wahr‘.“} \\ \end{align}</math> </small> |} A. FUHRMANN ''':''' <span style="color:#FF6000">»</span> ''Eine Prädikatenlogik zweiter Stufe ist eine Logik, in der die Quantoren auch Eigenschaftsausdrücke <span style="color:#00B000">(<span style="color:#FF6000">„Prädikate”</span>)</span> binden können''. <span style="color:#00B000">[ Die ,Prädikate‘ werden in einem Kalkül dieser Logik durch Definitionen ,bestimmt‘ ]</span>. ''Wir werden uns im folgenden recht frei einer dafür geeigneten formalen Sprache bedienen. Äußere Quantoren werden meist weggelassen und wir schreiben kurz'' <span style="color:#4C58FF">— ‚'''Xx'''‘ — </span> ''bzw.'' <span style="color:#4C58FF">— ‚'''PX'''‘ — </span> ''um auszudrücken, dass das Individuum'' <span style="color:#4C58FF">— ‚'''x'''‘ — </span> ''die Eigenschaft'' <span style="color:#4C58FF">— ‚'''X'''‘ — </span> ''hat, bzw. dass die Eigenschaft'' <span style="color:#4C58FF">— ‚'''X'''‘ — </span> ''die höherstufige Eigenschaft'' <span style="color:#4C58FF">— ‚'''P'''‘ — </span> ''<span style="color:#00B000">(für <span style="color:#FF6000">„positiv”</span>)</span> hat;'' <span style="color:#00B000"> [ wobei die Eigenschaft <span style="color:#4C58FF">— ‚'''P'''‘ — </span> als einzige im Kalkül ,unbestimmt‘ bleibt ]</span>. <span style="color:#FF6000">«</span><ref>A. FUHRMANN ‚''<span style="font-family: Times;"><big>‚G‘ wie Gödel. Kurt Gödels axiomatische Theologie</big></span>''‘, Seite 6, Anmerkung 3. Konform mit seinem Artikel in ‚''<span style="font-family: Times;"><big>Logik in der Philosophie</big></span>''‘ hg. v. P. SCHROEDER-HEISTER, W. SPOHN und E. OLSSON. 2005, Synchron, Heidelberg.</ref> Der All-Quantor für Eigenschaften, hier im GÖDEL-Kalkül der ,modalen‘ Prädikatenlogik zweiter Stufe, bindet die ,unbestimmte‘ Eigenschafts-Variable <span style="color:#4C58FF">— ‚'''X'''‘ —</span> ausschließlich nur in den Definitionen im 2. und 3. Beweisgang . <span style="color:#00B000"> (Im ersten Beweisgang gibt es keine Definition.)</span> Dieser All-Quantor wird dann jedes Mal in der Beweis-Durchführung durch die Substitution ''':''' <span style="color:#4C58FF"> [ Instanz(X:= ..) ]</span> mit ,bestimmte‘ Eigenschafts-Konstanten wie <span style="color:#4C58FF">— (X:= G) —</span>, bzw. <span style="color:#4C58FF">— (X:= ¬Y) —</span>, oder <span style="color:#4C58FF">— (X:= E<sub>not</sub>) —</span> ,regulär‘ <span style="color:#00B000">(├ )</span> beseitigt ''':''' <span style="color:#4C58FF"> [ ⱯXA(X) ├ A(X) ]</span>; wobei die Eigenschafts-Konstante im Kalkül entweder als Zwischenergebnis ,regulär‘ abgeleitet, <span style="color:#00B000">(,errechnet‘)</span>, oder mit einer Definition schon ,bestimmt‘ worden ist. Die spezifische ‚Eigenschaft‘ einer Eigenschaft wird hier, in der formalen Syntax der ,modalen‘ Prädikatenlogik zweiter Stufe, als eine tiefer gestellte Abkürzung <span style="color:#00B000">(als Index)</span> an ihre Trägereigenschaft angehängt, wie z. B. ‚wesentlich‘, bzw. ‚essentiell‘ durch <span style="color:#4C58FF"> — <sub>ess</sub> —</span>, oder ‚notwendig‘ durch <span style="color:#4C58FF"> — <sub>not</sub> —</span>. In der Definition-3 steht der Term ''':''' <span style="color:#4C58FF"> —‚'''E'''<sub>not</sub>'''x'''‘ —</span>, um auszudrücken, dass das Individuum <span style="color:#4C58FF">— ‚'''x'''‘ —</span> notwendig <span style="color:#4C58FF">— <sub>not</sub> —</span> die Eigenschaft ''':''' <span style="color:#4C58FF">— ‚'''E'''‘ —</span>, für ,Existenz‘, hat, d.h. <span style="color:#FF6000">»''das <span style="color:#4C58FF">‚'''x'''‘</span> existiert notwendig''«</span>. Der schon von GÖDEL indizierte Term ''':''' <span style="color:#4C58FF">—‚'''G'''<sub>ess</sub>'''x'''‘ —</span> kann gelesen werden als ''':''' <span style="color:#FF6000">»''Das Individuum <span style="color:#4C58FF">‚'''x'''‘</span> hat die Wesenseigenschaft, <span style="color:#4C58FF"> — <sub>ess</sub> — </span> ''':''' GOTT zu sein, <span style="color:#4C58FF">‚'''G'''‘ </span>''«</span>, statt der ,an sich‘ konformen, aber <span style="color:#4C58FF">„theologisch“</span> etwas ungenauen Formulierung ''':''' <span style="color:#FF6000">»''das'' <span style="color:#4C58FF">‚'''x'''‘</span> ''ist wesentlich göttlich''«</span>; oder mit der Voraussetzung ''':''' <span style="color:#4C58FF">— ‚'''Gx'''→'''G'''<sub>ess</sub>'''x'''‘ — </span> deutlicher und <span style="color:#4C58FF">„theologisch“</span> korrekt ''':''' <span style="color:#FF6000">»''Wenn'' <span style="color:#4C58FF">‚'''x'''‘</span> ''für den GOTT der Christen'', <span style="color:#4C58FF">‚'''G'''‘</span>, ''steht, dann ist GOTT-Sein'', <span style="color:#4C58FF">‚'''G'''‘</span>, <span style="color:#00B000">(,Existenz‘)</span> ''das Wesen dieses GOTTES'', <span style="color:#4C58FF">— <sub>ess</sub>‚'''x'''‘ —</span>, <span style="color:#00B000">(,Essenz‘)</span>«</span>; wobei, — entsprechend der ,methodologischen‘ Prämisse des Kalküls <span style="color:#00B000">(<span style="color:#4C58FF">— ‚'''Gx'''‘ — </span> ''':''' das <span style="color:#4C58FF">‚'''x'''‘</span> steht für den ,GOTT der Christen‘)</span> —, bei der Interpretation der Terme dieses besonderen Kalküls, die <span style="color:#4C58FF">„christliche Theologie”</span> für den Begriff <span style="color:#FF6000">„GOTT”</span>, Korrektur und die leitende Instanz ist. Dabei muss die Dreifach-Äquivalenz von <span style="color:#4C58FF"><span style="color:#4C58FF">— ‚'''G'''‘ — </span></span>berücksichtigt werden. Welche der drei Äquivalenzen, bzw. Lesearten von <span style="color:#4C58FF">— ‚'''G'''‘ — </span> bei einem bestimmten Term im Kalkül zulässig ist, muss <span style="color:#4C58FF">„theologisch”</span> überprüft und evaluiert werden. Bei manchen können sogar alle drei Lesearten <span style="color:#4C58FF">„theologisch”</span> zulässig sein. Warum es in der modalen Prädikatenlogik zweiter Stufe, im GÖDEL-System, ,Definitionen‘ gibt, erklärt GÖDEL formal-syntaktisch ''':''' <span style="color:#FF6000">»''Definitionen dienen ja nur der kürzeren Schreibwelse und sind daher prinzipiell überflüssig.''«</span> <span style="color:#00B000">(Aus der Anmerkung 6 in seinem Hauptwerk ''':''' ,''<span style="font-family: Times;"><big>Über formal unentscheidbare Sätze der Principia Mathematica und verwandter Systeme I</big></span>''‘.)</span> Für die <span style="color:#4C58FF">„theologische”</span> Interpretation und Hermeneutik seines Kalküls, sind die ,Definitionen‘ im GÖDEL-System jedoch wesentlich, und letztlich entscheidend. Erst dadurch wird sein Axiomensystem zur <span style="color:#4C58FF">„axiomatischen Theologie”</span>. GÖDEL gibt selbst den hermeneutischen Hinweis dazu, wenn er über den höherstufigen Eigenschaftsbegriff <span style="color:#FF6000">»''positiv''«</span> sagt, der nur ,indirekt‘ definiert wird, jedoch mit seinem gesamten Axiomensystem ''':''' <span style="color:#FF6000">»''Positiv bedeutet positiv im moralisch ästhetischen Sinne, (unabhängig von der zufälligen Struktur der Welt). Nur dann sind die Axiome wahr''.«</span> Die Deutung dieses ,höherstufigen‘ Begriffs als ein anderes Wort für <span style="color:#FF6000">„Transzendentalia“</span> ergibt sich aus der <span style="color:#4C58FF">„theologischen”</span> Evaluierung, d.h. der Einordnung des GÖDEL-Systems in die ,laufende‘ <span style="color:#FF6000">„Rede von GOTT“</span>, seit Menschen, sich über den Sinn der Welt und unseres Lebens in ihr, Gedanken machen. GOTT, der ,transzendent‘, — unabhängig —, zur Welt ist, ist Thema im Theorem ANSELMS, um das es ja im GÖDEL-Kalkül geht. Eine <span style="color:#4C58FF">„theologische”</span> Hermeneutik des GÖDEL-Systems ist daher legitim, die, als ein Bemühen um ein überzeugendes Verstehen, aus dem <span style="color:#4C58FF">„theologischen”</span> Vorwissen vieler Generationen schöpft. Um philosophische, und sogar <span style="color:#4C58FF">„theologische”</span> Theoreme exakt zu formulieren, und untersuchen zu können, hat der Ausnahmelogiker GÖDEL, im 20. Jahrhundert, ein Tor aufgestoßen, das uns ermöglichen kann, <span style="color:#FF6000">»''mathematisch evident''«</span>, und logisch objektiv nachprüfbar, in diesen Disziplinen zu argumentieren. Mit seiner modalen Prädikatenlogik zweiter Stufe, hat GÖDEL dem alten Wunsch eines Raimundus LULLUS, eines Gottfried Wilhelm LEIBNIZ, eines Immanuel KANT, und anderer, nach einer nachprüfbaren ,Universalsprache‘ in den Geisteswissenschaften, entsprochen; analog zur Mathematik, als Universalsprache in den Naturwissenschaften. Der sog. ,Theorembeweiser‘ der Wissenschaftler Christoph BENZMÜLLER und Bruno WOLTZENLOGEL-PALEO, mit Hilfe eines Computers, im 21. Jahrhundert, ist die kongeniale und logische Folge aus diesem Quanten-Schritt GÖDELS. In der folgenden Neu-Kalkülisierung, wird jeder einzelne operative Logik-Schritt des Kalküls in der '''linken Spalte''' nummeriert und als Term-Ergebnis angezeigt, und in der '''rechten Spalte''' werden die dafür benötigten Term-Komponenten und die dabei angewendeten Logik-Regeln und -Gesetze, mit Meta-Terme, dokumentiert. Am Anfang stehen die Ressourcen und das angestrebte Ziel des Beweisganges, <span style="color:#00B000">(das Theorem)</span>. Die GÖDEL Axiome und Definitionen, die Theoreme und Korollare, die Zwischenergebnisse, das Endergebnis, und die logischen Meta-Terme, <span style="color:#00B000">[ in eckigen Klammern ]</span>, werden kontextabhängig, <span style="color:#00B000">(durch ''„Benennungen“'')</span>, interpretiert, <span style="color:#00B000">(angezeigt durch ,Interpretationspunkte‘ — '''::''' —, falls nötig)</span>. Der jeweilige Beweisgang wird in den Anmerkungen ausführlich und umfassend kommentiert. Die Kalkül-Prämissen, <span style="color:#00B000">(<span style="color:#4C58FF">'''AE:'''</span> Argument Einführung)</span>, sind der modal-frei gewählte Einstieg in das Kalkül. Sie dokumentieren, zusammen mit dem angestrebten Beweis-Ziel, eine bestimmte Problemlage in einem externen Diskurs, der mit dem modalen Logik-System hier, formal-syntaktisch überprüft, und gegebenenfalls, verifiziert oder falsifiziert werden soll. Korollare sind einfache, logische Folgerungen aus dem jeweiligen Beweisgang. Theoreme und Korollare sind ,modal‘ gleichwertig. ====<div class="center"><span style="color:#660066">1. Beweisgang</span></div>==== {|class="wikitable" |- ! <div class="center"><span style="color:#660066">GÖDELS ontologischer Beweis für Theorem 1, (Möglichkeitsbeweis)</span></div> |- ! <span style="color:#00B000">''Terme der erweiterten Prädikatenlogik zweiter Stufe__________ „Benennungen“ und durchgeführte Logik-Operationen''</span> |- | <small> <math>\begin{align} \text{(Axiom 1.1)} & \quad P \neg X \;\Longrightarrow\;\ \neg P\ X\ & \ & \text{„Wenn die Negation von X positiv ist, dann ist die Eigenschaft X nicht positiv“} \\ \text{(Axiom 2)} & \quad (P\ X \wedge \;\Box \;\forall x (\ X\ x \Longrightarrow \ Y\ x)) \Longrightarrow \ P\ Y & \ & \text{„Die Eigenschaften Y, die aus einer positiven Eigenschaft X modal} \\ \text{ } & \quad & \ & \; \; \text{notwendig folgen, sind auch positive Eigenschaften“} \\ \text{(Axiom 3)} & \quad P\ G \ & \ & \text{„Göttlichkeit, GOTT-Sein, ist eine pos. Eigenschaft“ ↔ „GOTT ist perfekt“} \\ \text{[RK]} &\quad \Box\; \forall x A \;\Longrightarrow\;\Box\; \forall x B\; \text{ ├ }\;\Box \; \forall x (A \Longrightarrow\; B)\ & \ & \; \text{( :: Modales Prinzip KRIPKE-Γ-Ɐx)} \\ \text{(Theorem 1)} &\quad P\ X \;\Longrightarrow\; \Diamond \; \exists x \ X \ x \ & \ & \text{ (◇ :: „möglich“ ↔ „konsistent“ ↔ „denkbar“; □ :: „notwendig“) } \\ \text{ } & \text{„Positive Eigenschaften sind konsistent“} & \ & \Longleftarrow\; \text{was zu beweisen ist !} \\ \text{01} & \quad P\ X \ & \ & \text{ AE: „Angenommen, es gibt positive Eigenschaften, Perfektionen“} \\ \text{02} & \quad P\ X \;\Rightarrow\; \neg \Diamond \; \exists x \ X \ x \ & \ & \text{ AE: „Angenommen, positive Eigenschaften sind nicht konsistent“} \\ \text{03} & \quad (\neg x = .. )\ & \ & \text{ AE: „Es gibt die Eigenschaft, nicht mit x identisch zu sein“ :: (ungleich)} \\ \text{04} & \quad (\ x = .. )\ & \ & \text{ AE: „Es gibt die Eigenschaft, mit x identisch zu sein“ :: (gleich)} \\ \text{05} & \quad \text{ ├ }\; \neg \Diamond \; \exists x \ X \ x \ & \ & \text{:01:02:[Modus ponendo ponens] :: [A, A → B├ B] :AE:} \\ \text{06} & \quad \neg\neg \Box \neg \exists x \ X \ x \ & \ & \text{:05:[ ◇A ↔ ¬□¬A] :: (Modalregel)} \\ \text{07} & \quad \neg\neg \Box \neg\neg \forall x \neg X \ x \ & \ & \text{:06:[∃xA ↔ ¬Ɐx¬A] :: (Quantoren Regel)} \\ \text{08} & \quad \text{ ├ }\; \Box \; \forall x \neg X \ x \ & \ & \text{:07:NEG :: [¬¬A↔A] :: (Gesetz der Aussagenlogik)} \\ \text{09} & \quad \Box \; \forall x \neg X \ x \Leftrightarrow\ W & \ & \text{:02:08:[(:02:↔W) → (├:08:↔W)] :: (Kalkülregel)} \\ \text{10} & \quad \Box \; \forall x \ X \ x \Leftrightarrow\ F & \ & \text{:09:[(¬A↔W)↔(A↔F)] :: (Regel für Wahrheitswerte)} \\ \text{11} & \quad \Box \; \forall x (\neg x = x ) \Leftrightarrow \ F \; \ & \text{ } & \text{□ⱯxXx:03:Instanz(X:=(¬x=..)) ⇒ Kontradiktion !} \\ \text{12} & \quad \Box \; \forall x (\ X \ x \Rightarrow\; (\neg x = x)) & \text{ } & \text{:10:11:[(:10:↔F) → (:11:↔F)] :: „ex falso sequitur quotlibet“ :[RK]} \\ \text{13} & \quad \ P\ X \wedge \;\Box \; \forall x (\ X \ x \Rightarrow\; (\neg x = x)) & \ & \text{:01:12:[Konjunktion] :: [A, B ├ A∧B]} \\ \text{14} & \quad \ (P\ X \wedge \;\Box \; \forall x (\ X \ x \Rightarrow \; (\neg x = x))) \Rightarrow \; P (\neg x = .. ) & \ & \text{(A2):Instanz(Y:=( ¬x= ..)) :: (Substitution für Eigenschaften)} \\ \text{15} & \quad \ P (\neg x = .. ) & \ & \text{:13:14:[Modus ponens] :: (logische Schlussregel)} \\ \text{16} & \quad \ P (\neg x = .. )\;\Rightarrow\ \neg P (\ x = .. )\ & \ & \text{(A1.1):Instanz(X:=(x=..))}\\ \text{17} & \quad \neg P (\ x = .. )\ & \ & \text{:15:16:[Modus ponens]}\\ \text{18} & \quad \Box \; \forall x \ (x = x ) \Leftrightarrow \ W \; \ & \ & \text{□ⱯxXx:04:Instanz(X:=(x=..)) ⇒ Tautologie !} \\ \text{19} & \quad \Box \; \forall x (\ X \ x \Rightarrow\; (x = x)) & \text{ } & \text{:10:18:[(:10:↔F) → (:18:↔W)] :: „ex falso sequitur etiam verum“ :[RK]} \\ \text{20} & \quad \ P\ X \wedge \;\Box \; \forall x (\ X \ x \Rightarrow\; (x = x)) & \ & \text{:01:19:[Konjunktion] } \\ \text{21} & \quad \ (P\ X \wedge \;\Box \; \forall x (\ X \ x \Rightarrow\; (x = x))) \Rightarrow \ P (x = .. ) & \ & \text{(A2):Instanz(Y:=(x=..))} \\ \text{22} & \quad \ P (\ x = .. )\ & \ & \text{:20:21:[Modus ponens]}\\ \text{23} & \quad \text{ ├ }\; (\neg P (\ x = .. )\ \wedge \ P (\ x = .. )) \Leftrightarrow\ F & \ & \text{:17:22:[Konjunktion] ⇒ Kontradiktion !}\\ \text{24} & \quad \neg \Diamond \; \exists x \ X \ x \Rightarrow (\neg P (\ x = .. )\ \wedge \ P (\ x = .. )) & \ & \text{:05:23:[├A├B╞ A→B] :: ''KONDITIONALER BEWEIS''}\\ \text{25} & \quad \neg\neg \Diamond \; \exists x \ X \ x & \ & \text{:24:23:[Modus tollendo tollens] :: [A→B,¬B ├ ¬A]}\\ \text{26} & \quad \text{ ├ }\; \Diamond \; \exists x \ X \ x & \ & \text{:25:NEG; bzw. :05:23:[├¬A→F ╞ A] :: ''INDIREKTER BEWEIS''}\\ \text{27} & \quad \ P\ X \;\Longrightarrow\; \Diamond \; \exists x \ X \ x \ & \ & \text{:01:26:[├A├B ╞ A→B]} \\ \text{(Theorem 1)} & \;\text{„Positive Eigenschaften sind konsistent“} & \ & \Longleftarrow\; \text{was zu beweisen war !} \\ \text{28} & \quad \ P\ G \;\Longrightarrow\; \Diamond \; \exists x \ G \ x \ & \ & \text{:27:Instanz(X:=G) } \\ \text{29} & \quad \Diamond \; \exists x \ G \ x \ & \ & \text{(A3):28:[Modus ponens]} \\ \text{(Korollar 1)} & \;\text{„Das Dasein GOTTES ist definitiv denkbar“} & \ & \text{„Es ist widerspruchsfrei möglich, dass es GOTT gibt“} \\ \end{align}</math> </small> |} Anmerkung-1 ''':''' <span style="color:#00B000">(Der GÖDEL-Term <span style="color:#4C58FF">— ‚'''PX'''‘ —</span>, im Axiom-2 ist an sich überflüssig, da dieser hier als Prämisse :01: ohnehin ,angenommen‘ wird. Der Beweisgang kommt mit Axiom-2 auch ohne diesen GÖDEL-Term zum selben Ergebnis, und verkürzt sich damit sogar um zwei Schritte ''':''' Zeile 13 und Zeile 20 sind dann unnötig.)</span> Der Beweisgang geht mit Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, als Kalkül-Ressource, prinzipiell von der Existenz eines GOTTES aus. Mit der Prämisse :01: <span style="color:#00B000">(hier im 1. Beweisgang)</span> postuliert GÖDEL vorerst allgemein, dass es <span style="color:#FF6000">»''Vollkommenheit, d.h. positive Eigenschaften''«</span> in unserer Welt gibt ''':''' <span style="color:#4C58FF">— ‚'''PX'''‘ —</span>, ohne im Kalkül zu definieren, was darunter zu verstehen ist. Definiert wird dann <span style="color:#00B000">(im 2. Beweisgang)</span>, was eine <span style="color:#FF6000">»''wesentliche Eigenschaft''«</span> ist ''':''' <span style="color:#4C58FF">— ‚'''X'''<sub>ess</sub>‘ —</span>, <span style="color:#00B000">(im Sinne von ,Transzendentalia‘)</span>; und mit Hilfe dieser Eigenschaft definiert GÖDEL <span style="color:#00B000">(im 3. Beweisgang)</span>, was eine <span style="color:#FF6000">»''notwendige Existenz''«</span> ist ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>‘ —</span>, die er <span style="color:#00B000">(im selben Beweisgang)</span> axiomatisch mit den <span style="color:#FF6000">»''positiven Eigenschaften in GOTT''«</span> gleich setzt ''':''' Axiom-5 ''':''' <span style="color:#4C58FF"> —‚'''PE'''<sub>not</sub>‘ —</span>. Erst im 2. Beweisgang wird mit Term :13:, nach einer <span style="font-family: Times;"><big>,Reductio ad absurdum‘</big></span>, definitiv bewiesen <span style="color:#00B000">( ╞ )</span>, dass die, von GÖDEL, hier postulierten, <span style="color:#00B000">(allgemeinen)</span>, positiven Eigenschaften, <span style="color:#4C58FF">— ‚'''PX'''‘ —</span>, tatsächlich auch in GOTT <span style="color:#FF6000">»''positive Eigenschaften''«</span>, <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, sind; <span style="color:#00B000">(das sind die ultimativen ,Transzendentalia‘ in GOTT)</span>. Jetzt aber muss vorerst der ,Wunsch‘, bzw. die LEIBNIZ-Frage beantwortet werden ''':''' Ob, mit <span style="color:#FF6000">»''mathematischer Evidenz''«</span>, <span style="color:#FF6000">»''GOTT''«</span> ,möglich‘ ist, der, nach traditioneller Auffassung, <span style="color:#FF6000">»''ein Wesen von äußerster Größe und Vollkommenheit'' <span style="color:#00B000">[ ist ]</span>, ''das alle Grade derselben in sich schließt''«</span>, <span style="color:#00B000">(nach LEIBNIZ; was GÖDEL mit Definition-1 ,abbildet‘)</span>. Wenn man also beweisen will, dass die Existenz eines solchen ''<span style="color:#FF6000">»GOTTES«</span>'' ,möglich‘ sein soll, dann muss man beweisen, dass dieses postulierte System der <span style="color:#FF6000">»''positiven Eigenschaften in GOTT''«</span> möglich und formal ,widerspruchsfrei‘ ist. Das Ergebnis des 1. Beweisganges, das ,Theorem-1‘, <span style="color:#00B000">(,Erster Satz‘)</span>, fasst A. FUHRMANN zusammen als ''':''' <span style="color:#FF6000">»''Positive Eigenschaften sind konsistent''«</span>. Wenn sie nicht konsistent wären, käme es zu unlösbaren Widersprüchen, <span style="color:#00B000">(Term :24:)</span>. Term :27: ,besagt‘ ''':''' <span style="color:#FF6000">»''Es ist definitiv, d.h. ohne Widerspruch möglich, dass es positive Eigenschaften gibt''«</span>; denn die Behauptung, es sei nicht möglich, dass es positive Eigenschaften, <span style="color:#00B000">(das sind die ,Transzendentalia‘)</span>, in unserer Welt gibt, führt zu einem Widerspruch, und ist daher falsch und ,unlogisch’. Einmal Axiom-1 und zweimal Axiom-2, <span style="color:#00B000">(das die Gleichwertigkeit aller positiven Eigenschaften nachdrücklich klarstellt)</span>, sichern hier die Konsistenz <span style="color:#FF6000">»''aller positiven Eigenschaften in der Welt'', <span style="color:#00B000">[ die ,Transzendentalien‘ ]</span>, ''und damit auch die, die in GOTT sind''«</span>. <span style="color:#00B000">(Der 2. Beweisgang bestätigt, dass es in GOTT tatsächlich positive Eigenschaften gibt.)</span> Die ,Gleichwertigkeit‘ aller Transzendentalia, <span style="color:#00B000">(ihre ,Äquivalenz‘)</span>, ist formal-syntaktisch daran erkennbar, dass die beiden Eigenschafts-Variablen <span style="color:#4C58FF">— ‚'''X'''‘ —</span> und <span style="color:#4C58FF">— ‚'''Y'''‘ —</span> im Axiom-2 für beliebige, unterschiedliche ,positive‘ Eigenschaften gegenseitig austauschbar, <span style="color:#00B000">(,konvertierbar‘)</span>, sind. Das heißt, dass beliebige, unterschiedliche ,positive‘ Eigenschaften, für die diese Variablen stehen, sich paarweise, wechselseitig ,implizieren‘, einschließen, und damit notwendig voneinander abhängen, d.h. koinzident ,eins‘ sind, konvertierbar, und somit gleichwertig sind; entsprechend dem Theorem von den Transzendentalia. Zu Term :29:, dem Korollar zu Theorem-1, notiert GÖDEL am 10. Feb. 1970, <span style="color:#00B000">(übersetzt von Joachim BROMAND)</span> ''':''' <span style="color:#FF6000">»''◇∃xG(x) besagt, dass das System aller positiver Eigenschaften kompatibel ist'',</span> <span style="color:#00B000">[ d.h. miteinander verträglich, weil ohne Widersprüche ].</span> <span style="color:#FF6000">''Dies ist ,wahr‘ auf Grund von Axiom-2,'' <span style="color:#00B000">[ weil alle positiven Eigenschaften, d.h. die Transzendentalien, koinzident gleichwertig und konvertierbar sind ]</span>.«</span> Darum ist es definitiv ,möglich‘, dass es diesen GOTT gibt, der <span style="color:#FF6000">»''alle Grade der Vollkommenheit in sich schließt''«</span> und <span style="color:#FF6000">»''über dem ,Größeres‘ nicht mehr gedacht werden kann''«</span>, und, in weiterer Konsequenz, ist der GOTT-Glaube deshalb ,notwendig‘ widerspruchsfrei und sinnvoll, nach Theorem-3 ''':''' <u>Wenn</u> es ,ohne Widerspruch‘ ''<span style="color:#FF6000">»möglich, bzw. denkbar«</span>'' ist, dass es ''<span style="color:#FF6000">»GOTT«</span>'' gibt, <u>dann</u> folgt daraus ''<span style="color:#FF6000">»notwendig«</span>'' ''':''' es ist auch ,widerspruchsfrei‘, wenn man als Voraussetzung ,annimmt‘, dass es ''<span style="color:#FF6000">»GOTT wirklich, für jede mögliche Welt«</span>'' gibt ''':''' Term :11: im 3. Beweisgang. Der Wenn-Satz ist hier mit Korollar-1 bewiesen; der Dann-Satz wird im 3. Beweisgang bewiesen <span style="color:#00B000">( ╞ )</span>, d.i. die Widerspruchsfreiheit und Sinnhaftigkeit des GOTT-Glaubens. Die ontologische ,Identität‘, d.h. die ,Gleichsetzung‘, bzw. die ,Koinzidenz‘ von Strukturen, die in der Endlichkeit für uns verschieden sind, jedoch in dem unbegrenzt Unendlichen, GOTT, paarweise, perspektivisch in eins zusammenfallen, wie ,Sein‘ und ,Wesen‘, wie ,Ursache‘ und ,Wirkung‘ usw., und auch die Äquivalenz und Austauschbarkeit der Transzendentalien, haben im GÖDEL-Kalkül die logisch-syntaktische Form einer, aus sich, ,modal‘ notwendigen Implikation zwischen zwei verschiedenen, gegenseitig austauschbaren Eigenschafts-Variablen ''':''' <span style="color:#4C58FF">— ‚'''□∀x(Xx→Yx)'''‘ —</span>. Dieses Term-Element stellt formal-syntaktisch die Gleichwertigkeit, <span style="color:#00B000">(Äquivalenz)</span>, bzw. die paarweise Koinzidenz aller positiven Eigenschaften und Zuordnungen in GOTT dar; sowohl hier im Axiom-2, als auch in der Definition-2 über die ,Wesenseigenschaften‘, im 2. Beweisgang, mit jeweils verschiedenen, frei umbenennbaren, Individuum-Variablen. Dieses Term-Element ,gilt‘ allgemein jedoch nur für positive Eigenschaften, alias ,Transzendentalia‘, und wird sofort <span style="color:#FF6000">„modal falsch“</span>, wenn für <span style="color:#4C58FF">— ‚'''X'''‘ —</span>, oder <span style="color:#4C58FF">— ‚'''Y'''‘ —</span>, Eigenschaften eingesetzt werden, die, — von Natur aus —, weder positiv noch negativ sind, wie z. B. ,rot‘ oder ,schwer‘. Die wechselseitige Austauschbarkeit der noch ,unbestimmten‘ Eigenschafts-Variablen, für beliebige positive Eigenschaften, ist formal äquivalent zur freien Umbenennung der noch ,unbestimmten‘ Individuum-Variablen ''':''' <span style="color:#4C58FF">[ FUB(x:=y) ]</span>. Der formale, gegenseitige, allgemeine Austausch der positiven Eigenschafts-Variablen, bzw. die formale Gleichsetzung beliebiger positiver Eigenschaften, kann, auf Grund der Äquivalenz aller Vollkommenheiten, bzw. ,Transzendentalia‘, auch dann noch durchgeführt werden, wenn eine, von zwei Eigenschafts-Variablen, durch eine Definition oder eine Schlussfolgerung ,bestimmt‘ worden ist, und dadurch zu einer positiven Eigenschafts-Konstante, d.h. zu einer ,bestimmten‘, positiven Eigenschaft geworden ist. Das ist z. B. bei einer instanziierenden Substitution der Fall ''':''' <span style="color:#4C58FF">[ Instanz(X:=..) ]</span>. Das ist eine spezifische Eigenheit der GÖDEL-Axiomatik, weil alle relevanten, positiven Eigenschaften und Zuordnungen in GOTT, als <span style="color:#FF6000">„ultimative Transzendentalia“</span>, immer auch miteinander kompatibel sind. Mit dem Term-Element ''':''' <span style="color:#4C58FF">— ‚'''□∀x(Xx→Yx)'''‘ —</span>, wird formal die <span style="color:#FF6000">„Koinzidenz“</span> aller ,Transzententalia‘ in der Welt, und auch der ,Zusammenfall‘ aller Gegensätze in GOTT, abgebildet. Da die Variable <span style="color:#4C58FF">‚'''x'''‘</span> für GOTT steht, <span style="color:#4C58FF">‚'''G'''‘</span>, <span style="color:#00B000">(im Korollar-1)</span>, ist die Eigenschaft ''':''' ''<span style="color:#FF6000">„nicht mit x identisch zu sein“</span>'' ''':''' <span style="color:#4C58FF">(¬x=..)</span>, d.h. das <span style="color:#FF6000">„Ungleichsein“</span>, das <span style="color:#FF6000">„Anderssein“</span> GOTTES, <span style="color:#00B000">(Prämisse :03:)</span>, die entscheidende Voraussetzung und Norm für jeden Diskurs über GOTT ''':''' um der <span style="color:#FF6000">„Unvergleichlichkeit“</span> GOTTES gerecht zu werden, darf GOTT niemals mit etwas aus der ''<span style="color:#FF6000">»zufälligen Struktur der Welt«</span>'' verglichen, d.h. gleich gesetzt werden. Der Term :18: <span style="color:#4C58FF">(x=x) ↔ W</span> erinnert an die Selbstbezeichnung des GOTTES-JHWH in Exodus 3,14 ''':''' <span style="color:#CC66FF">»''Ich bin der ‚Ich-Bin‘''«</span>. <span style="color:#00B000">(In der mystischen Tradition, im ''<span style="font-family: Times;"><big>‚Dialog über die Vorsehung‘</big></span>'', dem Hauptwerk der Heiligen KATHARINA von Siena, Mystikerin und Lehrerin der Kirche, sagt GOTT-VATER zur KATHARINA ''':''' <span style="color:#FF6000">»''ICH BIN der IST'', <span style="color:#00B000">[ aus mir selbst ]</span>, ''du bist, die nicht ist'', <span style="color:#00B000">[ aus dir selbst ]</span>.«</span> Das ist eine wichtige, deutende Ergänzung, und die authentische <span style="color:#4C58FF">,theologische‘</span> Interpretation dieser Exodus Text-Stelle. Das ist der Grund für die <span style="color:#FF6000">„Unvergleichlichkeit“</span> GOTTES.)</span> Zum Term :03: notiert A. FUHRMANN ''':''' <span style="color:#FF6000">»</span> ''Die Notation'' <span style="color:#4C58FF">(¬x=..)</span> ''für die Eigenschaft ''':''' <span style="color:#FF6000">„nicht mit x identisch zu sein“</span>'', <span style="color:#00B000">[ d.h. <span style="color:#FF6000">„Ungleichheit“, „Anderssein“</span>, bzw. die Notation <span style="color:#4C58FF">(x=..)</span> für den Existenzmodus-Perfektion ''':''' <span style="color:#FF6000">„Gleichheit“, „Idendität“</span> ]</span>, ''ist suggestiv und informell und ersetzt hier einen formal korrekten Abstraktionsausdruck wie'' <span style="color:#4C58FF">λy.(¬x=y)</span>, <span style="color:#00B000">[ bzw. <span style="color:#4C58FF">λy.(x=y)</span> ]</span>. ''Für die formal korrektere Notation bedarf es der zusätzlichen Vereinbarung, dass der Ausdruck'' <span style="color:#4C58FF">λy.(¬x=y)</span> ''gleichbedeutend sei mit dem Ausdruck'' <span style="color:#4C58FF">¬λy.(x=y)</span>. ''Diese Vereinbarung ist harmlos, da wir aufgrund der Regel der λ–Konversion'' ''':''' <span style="color:#4C58FF">λy.Xy.x ↔ Xx</span>, <span style="color:#00B000">[ mit der <span style="color:#4C58FF">Instanz(X:=(¬x=..))</span> ]</span>, ''so schließen dürfen'' ''':''' <span style="color:#4C58FF">λy.(¬x=y).x ↔ ¬x=x ↔ <span style="color:#00B000">¬(x=x)</span> ↔ ¬λy.(x=y).x</span> .<span style="color:#FF6000">«</span> <ref>A. FUHRMANN a.a.O. Seite 7, Anmerkung 4 (von mir korrigiert und ergänzt)</ref> In der Kalkül-Zeile 29 wird das Möglichkeits-Korollar-1 durch einen <span style="color:#4C58FF">[ Modus ponens ]</span> mit Axiom-3 von der Kalkül-Prämisse-Term :01: ,abgekoppelt‘, d.h. es ist nicht mehr vom Term :01: <span style="color:#4C58FF">— ‚'''PX'''‘ —</span> logisch abhängig. Das Möglichkeits-Korollar-1 behält jedoch die bewiesene Widerspruchsfreiheit von Theorem-1, und ist damit nur mehr von Axiom-1 und Axiom-2 abhängig, was für das Theorem-ANSELMS am Schluss entscheidend ist. Erklärung zu Term :05: Das Ergebnis einer Logik-Operation zwischen Prämissen ist ,regulär‘ <span style="color:#00B000">(├ )</span> den Prämissen zuzurechnen. Das Modale-Prinzip KRIPKE-Γ-Ɐx, <span style="color:#4C58FF">['''RK''']</span>, in Worten ''':''' <span style="color:#FF6000">»''Wenn mit ,modaler‘ Notwendigkeit'' <span style="color:#00B000">( □ )</span>, ''für alle'' <span style="color:#4C58FF">‚'''x'''‘</span> ''die Aussage'' <span style="color:#4C58FF">‚'''A'''‘</span> ''gilt, und daraus logisch folgt, dass mit ,modaler‘ Notwendigkeit'' <span style="color:#00B000">( □ )</span>, ''für alle'' <span style="color:#4C58FF">‚'''x'''‘</span> ''auch die Aussage'' <span style="color:#4C58FF">‚'''B'''‘</span> ''gilt, dann ist in einem Kalkül regulär'' <span style="color:#00B000">( ├ )</span> ''ableitbar'' ''':''' ''es ist wahr, dass mit ,modaler‘ Notwendigkeit'' <span style="color:#00B000">( □ )</span>, ''für alle'' <span style="color:#4C58FF">‚'''x'''‘</span> ''aus der Aussage'' <span style="color:#4C58FF">‚'''A'''‘</span> ''die Aussage'' <span style="color:#4C58FF">‚'''B'''‘</span> ''logisch folgt''«</span>. Der Term <span style="color:#4C58FF">— ‚'''□∀xXx'''‘ —</span> steht formal-syndaktisch, allgemein für ,Transzendentalia‘, und ist für alle ,Nicht-Transzendentalia‘ <span style="color:#FF6000">„modal falsch“</span>. ====<div class="center"><span style="color:#660066">2. Beweisgang</span></div>==== {|class="wikitable" |- ! <div class="center"><span style="color:#660066">GÖDELS ontologischer Beweis für Theorem 2, (,Basisbeweis‘)</span></div> |- ! <span style="color:#00B000">''Terme der erweiterten Prädikatenlogik zweiter Stufe____________„Benennungen“ und durchgeführte Logik-Operationen''</span> |- | <small> <math>\begin{align} \text{(Axiom 1.2)} & \quad \neg P\ X \;\Longrightarrow\;\ P\neg X\ & \ & \text{„Wenn X nicht positiv ist, dann ist die Negation ¬X positiv“} \\ \text{(Axiom 3)} & \quad \ P\ G \ & \ & \text{„Göttlichkeit, GOTT-Sein, ist eine pos. Eigenschaft“ ↔ „GOTT ist perfekt“} \\ \text{(Axiom 4)} & \quad \ P\ X \;\Longrightarrow\; \Box \; \ P\ X \ & \ & \text{„Positive Eigenschaften sind notwendig aus sich positiv“} \\ \text{(Definition 1)} &\quad \ G\ x \;\Longleftrightarrow\; \forall X(\ P \ X \Longrightarrow \ X \ x)\ & \ & \text{„x ist genau dann GOTT, wenn x alle positiven Eigenschaften hat“} \\ \text{(Definition 2)} & \quad \ X_{ess}\ x \;\Leftrightarrow X\ x \wedge \forall Y \left(\ Y\ x \Rightarrow \Box \; \forall y (\ X\ y \Rightarrow \ Y\ y)\right) & \ & \text{„X ist genau dann eine wesentliche Eigenschaft von x, wenn x sie hat, und} \\ \text{ } & \quad & \text { } & \;\;\text{alle anderen Eigenschaften Y von x notwendig aus dieser Eigenschaft X folgen“} \\ \text{[RM]} &\quad \ A \;\Longrightarrow\;\ B\; \text{ ├ }\;\Box \; A \Longrightarrow\;\Box\; \ B\ & \ & \text{( :: Modales Prinzip)} \\ \text{(Theorem 2)} &\quad \ G\ x \;\Longleftrightarrow\; \ G_{ess}\ x \ & \ & \text{(,G‘ :: „Göttlichkeit“ ↔ „GOTT“ ↔ „Dasein GOTTES“)} \\ \text{ } &\;\text{„Das Wesen GOTTES ist sein Dasein“} & \ & \Longleftarrow\; \text{was zu beweisen ist !} \\ \text{01} &\quad \ G\ x \ & \ & \text{ AE: „Angenommen, x steht für den GOTT der Christen“} \\ \text{02} &\quad \ Y\ x \ & \ & \text{ AE: „Angenommen, GOTT hat die Eigenschaften Y“} \\ \text{03} &\quad \neg P\ Y & \ & \text{ AE: „Angenommen, die Y in GOTT sind nicht positiv“} \\ \text{04} &\quad \neg P \ Y \Rightarrow \ P \neg Y\ & \ &\text{(A1.2):Instanz(X:=Y) :: (Substitution für Eigenschaften) } \\ \text{05} &\quad \ P \neg Y \ & \ & \text {:03:04:[Modus ponens] :: [A, A → B├ B] } \\ \text{06} &\quad \forall X(\ P \ X \Rightarrow \ X \ x)\ & \ &\text{(D1):01:[Modus ponens] :: (logische Schlussregel)} \\ \text{07} &\quad \ P \ X \Rightarrow \ X \ x\ & \ &\text{:06:[ⱯXA(X) ├ A(X)] :: (Quantorenregel)} \\ \text{08} &\quad \ P \neg Y \Rightarrow \neg Y \ x\ & \ &\text{:07:Instanz(X:=¬Y)} \\ \text{09} &\quad \neg Y \ x\ & \ &\text{:05:08:[Modus ponens]} \\ \text{10} &\quad \text{ ├ }\; (Y\ x \wedge \neg Y \ x) \;\Leftrightarrow\;\ F\ & \ & \text{:02:09:[Konjunktion] ⇒ Kontradiktion !} \\ \text{11} &\quad \neg P\ Y \; \Rightarrow \; (Y\ x \wedge \neg Y \ x )\ & \ &\text{:03:10:[├A├B ╞ A → B] :: ''KONDITIONALER BEWEIS''} \\ \text{12} &\quad \neg\neg P\ Y \ & \ &\text{:11:10:[Modus tollendo tollens] :: [A → B,¬B├ ¬A]} \\ \text{13} &\quad \text{ ├ }\; P\ Y \ & \ &\text{:12:NEG; bzw. :03:10:[├¬A→F ╞ A] :: ''INDIREKTER BEWEIS'' :AE:} \\ \text{14} &\quad \ P\ Y \;\Rightarrow\;\Box \; \ P\ Y \ & \ & \text{(A4):Instanz(X:=Y)} \\ \text{15} &\quad \Box \; \ P\ Y \ & \ & \text{:13:14:[Modus ponens]} \\ \text{16} &\quad \ G \ y \Rightarrow \ Y \ y\ & \ &\text{:01:02:[├A├B ╞ A→B]:FUB(x:=y)} \\ \text{17} &\quad \text{ ├ }\; \forall y(\ G \ y \Rightarrow \ Y \ y)\ & \ &\text{:16:[G(y) ├ ⱯyG(y)]} \\ \text{18} &\quad \Box \; \ P\ Y \;\Rightarrow\; \Box \; \forall y(\ G \ y \Rightarrow \ Y \ y)\ & \ &\text{:13:17:[├A├B ╞ A→B]:[RM]} \\ \text{19} &\quad \text{ ├ }\; \Box \; \forall y(\ G \ y \Rightarrow \ Y \ y)\ & \ &\text{:15:18:[Modus ponens]} \\ \text{20} &\quad \ Y\ x \;\Rightarrow\; \Box \; \forall y(\ G \ y \Rightarrow \ Y \ y)\ & \ &\text{:02:19:[├A├B ╞ A→B]} \\ \text{21} &\quad \ (Y\ x \;\Rightarrow\; \Box \; \forall y(\ G \ y \Rightarrow \ Y \ y)) \wedge \ G \ x & \ &\text{:20:01:[Konjunktion] :: [A, B├ A ∧ B]} \\ \text{22} &\quad \ (Y\ x \;\Rightarrow\; \Box \; \forall y(\ X \ y \Rightarrow \ Y \ y)) \wedge \ X \ x\;\Leftrightarrow\; X_{ess}\ x \ & \ &\text{(D2):KOMM(↔):KOMM(∧):[ⱯYA(Y) ├ A(Y)] wegen :13:} \\ \text{23} &\quad \ (Y\ x \;\Rightarrow\; \Box \; \forall y(\ G \ y \Rightarrow \ Y \ y)) \wedge \ G \ x\;\Leftrightarrow\; G_{ess}\ x \ & \ &\text{:22:Instanz(X:=G)} \\ \text{24} & \quad \text{ ├ }\; G_{ess}\ x \ & \ &\text{:21:23:[Modus ponens]:AE: wegen :30:} \\ \text{25} &\quad \ G\ x \;\Rightarrow\; \ G_{ess}\ x \ & \ & \text{:01:24:[├A├B ╞ A→B] :: Theorem 2.1} \\ \text{26} &\quad \forall X(\ P \ X \Rightarrow \ X \ x)\ & \ &\text{(D1):01:[Modus ponens] } \\ \text{27} &\quad \ P \ X \Rightarrow \ X \ x\ & \ &\text{:26:[ⱯXA(X) ├ A(X)]} \\ \text{28} &\quad \ P \ G \Rightarrow \ G \ x\ & \ &\text{:27:Instanz(X:=G)} \\ \text{29} &\quad \text{ ├ }\; G \ x\ & \ &\text{(A3):28:[Modus ponens]} \\ \text{30} &\quad \ G_{ess}\ x \;\Rightarrow \ G \ x\ & \ &\text{:24:29:[├A├B ╞ A→B] :: Theorem 2.2 } \\ \text{31} &\quad \ G\ x \;\Longleftrightarrow\; \ G_{ess}\ x \ & \ & \text{:25:30:[Konjunktion]:BIKONDITIONAL :: [(A→B) ∧ (B→A) ↔ (A↔B)] } \\ \text{(Theorem 2)} &\; \text{„Dasein, GOTT-Sein, ist das Wesen GOTTES“} & \ & \Longleftarrow\; \text{was zu beweisen war ! } \\ \text{32} &\quad \text{ ├ }\; \Box \; \forall y(\ G \ y \Rightarrow \ (x = y))\ & \ & \text{:19:Instanz(Y:=(x=..))} \\ \text{33} &\quad \ G\ x \;\Rightarrow\; \Box \; \forall y(\ G \ y \Rightarrow \ (x = y))\ & \ & \text{:01:32:[├A├B ╞ A→B]} \\ \text{(Korollar 2)} & \;\text{„Es gibt notwendig höchstens einen GOTT“} & \ & \text{„Wenn es GOTT gibt, dann gibt es für jede mögliche Welt nur einen GOTT“} \\ \end{align}</math> </small> |} <span style="color:#00B000"><small>(In den Kalkül-Zeilen 16, 18, 31 mussten zwei-, und in Zeile 22 drei Kalkül-Schritte, d.h. Logik-Operationen in eine Zeile zusammengezogen werden, weil der Parser dieser speziellen Mathematik-Funktion in Wikibooks jedes Mal wegen Puffer-Überlauf abstürzt, wenn zu den bestehenden Zeilen noch eine neue Zeile, oder ein Text-Element, zusätzlich eingefügt wird. Das vermindert etwas die Transparenz des Kalküls.)</small></span> Anmerkung-2 ''':''' <span style="color:#00B000">(Dieser Beweisgang kommt auch ohne das ,unbestimmte‘ Konjunkt <span style="color:#4C58FF"> — ‚'''Xx'''‘ —</span> in der Definition-2 zum gleichen Ergebnis, und wird dadurch um eine Zeile verkürzt ''':''' Zeile 21 entfällt, und <span style="color:#4C58FF">[ KOMM(∧) ]</span> ist dann unnötig. Dieses Konjunkt wird hier ebenfalls schon in der Kalkül-Prämisse :01: <span style="color:#4C58FF"> — ‚'''Gx'''‘ —</span>, als ,Annahme‘ gesetzt, vorentschieden und ,bestimmt‘ mit der <span style="color:#4C58FF">[ Instanz(X:=G) ]</span>. Es war also logisch korrekt, dass GÖDEL, in seiner Notiz vom 10. Feb. 1970 zum ontologischen Beweis, dieses Konjunkt weggelassen hat, was ihm von Kommentatoren als ein Flüchtigkeitsfehler angerechnet worden war. Der gesamte 2. Beweisgang bewegt sich im Geltungsbereich der Prämisse Term :01:, d.h. ist in jeder Zeile von der Annahme abhängig ''':''' die Variable <span style="color:#4C58FF"> — ‚'''x'''‘ —</span> steht für den GOTT der Christen. In der Kalkül-Zeile 33 wird mit Korollar-2 diese Abhängigkeit, für den Term :32:, explizit dargestellt.)</span> Der Beweisgang geht mit der Prämisse :01: prinzipiell, als ,modal‘ freigewählte Voraussetzung, von der Existenz eines GOTTES aus. Im 1. Beweisgang wurde bewiesen, dass die von GÖDEL ,postulierten‘ <span style="color:#FF6000">»''allgemeinen positiven Eigenschaften, Vollkommenheiten, Perfektionen'', <span style="color:#00B000">[ die sog. ,Transzendentalien‘ ]</span> ''konsistent''«</span>, d.i. widerspruchsfrei sind. Hier, in diesem Beweisgang wird nun die Prämisse vom 1. Beweisgang, <span style="color:#4C58FF"> — ‚'''PX'''‘ —</span>, im Bezug auf GOTT hinterfragt ''':''' Gibt es auch in GOTT so Etwas, wie <span style="color:#FF6000">»''Vollkommenheit, Positives, Perfektes''«</span> '''?''' Die ,Annahme‘ jedoch, dass es <span style="color:#FF6000">»''in GOTT keine Vollkommenheit, nichts Positives, nichts Perfektes''«</span> <span style="color:#00B000">(keine Transzendentalien)</span> gibt, <span style="color:#00B000">(Prämisse Term :03:)</span>,<span style="color:#4C58FF"> — ‚'''¬PY'''‘ —</span>, d.h. dass die <span style="color:#00B000">(wesentlichen)</span> Eigenschaften in GOTT keine <span style="color:#FF6000">„Vollkommenheiten“</span> seien, führt aber zu einem unlösbaren Widerspruch, <span style="color:#00B000">(Term :10:)</span>. Mit Term :13:, als 1. Hauptergebnis, ist damit, — als ,neue‘ Prämisse, <span style="color:#00B000">(ersetzt Term :03:)</span> —, definitiv ,bewiesen‘ <span style="color:#00B000">( ╞ , d.h. es ist ,wahr‘ und ,widerspruchsfrei‘)</span>, dass alle Eigenschaften, die hier mit <span style="color:#4C58FF">— ‚'''Y'''‘ —</span> symbolisiert werden, <span style="color:#FF6000">„positive Eigenschaften“</span>, d.h. <span style="color:#FF6000">„Perfektionen“</span> sind, von denen das Kalkül ,annimmt‘, <span style="color:#00B000">(Prämissen Term :01:, Term :02: und speziell Term :16:)</span>, dass der GOTT der Christen sie besitzt. Alle ,Wesenseigenschaften‘ in GOTT ''':''' <span style="color:#4C58FF">— ‚'''Y'''<sub>ess</sub>‘ —</span>, die durch den Term :13:, <span style="color:#4C58FF">— ‚'''PY'''‘ —, </span> dargestellt werden, sind somit <span style="color:#FF6000">„Vollkommenheiten“</span> ''':''' <span style="color:#4C58FF">— ‚'''P'''‘ —</span><span style="color:#00B000">, (,ultimative Transzendentalien‘, aller ,Grade‘)</span>. Damit ist definitiv ‚bestätigt‘, <span style="color:#00B000">( ╞ , es ist ,wahr‘ und ,widerspruchsfrei‘)</span>, was mit Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, schon ‚angenommen‘ worden ist ''':''' <span style="color:#FF6000">»''GOTT ist perfekt; er hat alle positiven Eigenschaften''«</span>; und auch Definition-1 ist damit ,verifiziert‘ ''':''' <span style="color:#FF6000">»''GOTT ist genau deswegen GOTT, weil er, als GOTT, positive Eigenschaften aller Grade in sich schließt''«</span>; entsprechend dem Quelltext bei LEIBNIZ ''':''' <span style="color:#FF6000">»''GOTT ist ein Wesen von äußerster Größe und Vollkommenheit, das alle Grade derselben in sich schließt''«</span>. Immer vorausgesetzt, <span style="color:#00B000">(,angenommen‘)</span>, man glaubt an GOTT ''':''' <span style="color:#00B000">(Term :01:)</span>. <span style="color:#00B000">(Der ,Schlüsselbegriff‘ <span style="color:#4C58FF">— ‚'''P'''‘ —</span> ist der ,Schlüssel‘ zur Erkenntnis, dass GOTT ,notwendig‘, sowohl ,wesentlich‘ für uns, als auch an sich ,grundlos‘, immer schon ,da‘ ist.)</span> Hier, <span style="color:#00B000">(im 2. Beweisgang)</span>, hat Axiom-1, <span style="color:#00B000">(im Term :04:)</span>, sicher gestellt, dass die Eigenschaften in GOTT, <span style="color:#00B000">(Definition-1; Term :06:)</span>, tatsächlich <span style="color:#FF6000">„ultimativ positiv, perfekt und vollkommen“</span> sind ''':''' <span style="color:#4C58FF">— ‚'''PY'''‘ —</span>. Das GÖDEL-Axiom-1 bezieht seine ,Potenz‘ aus dem Prinzip vom ,auszuschließenden‘ Widerspruch ''':''' eine Eigenschaft kann nicht zugleich ,positiv‘ und ,nicht positiv‘ sein '''!''' Formal lässt sich das 2. Hauptergebnis, Theorem-2 ''':''' <span style="color:#4C58FF">— ‚'''Gx'''↔'''G'''<sub>ess</sub>'''x'''‘ — </span> ''':''' schon aus Term :23: in diesem Beweisgang mit der <span style="color:#4C58FF">[ Vereinfachung ] :: [ A∧B ├ B ]</span> ohne Weiteres ,regulär‘ ableiten, — analog zu den Vorgehensweisen bei A. FUHRMANN und G.J. WIRSCHING. <span style="color:#00B000">(Beide Aussagen dieser ,Konjunktion‘ sind ,gleichwertig‘ und wahr, daher partizipiert das Theorem-2 auch am Ergebnis der Widerspruchsfreiheit von Term :13:, <span style="color:#4C58FF">— ‚'''PY'''‘ —</span>, dem 1. Hauptergebnis. Beide Aussagen im Term :23: interpretieren sich gegenseitig.)</span> Der hier gewählte, etwas längere Weg zum Ergebnis, soll die innere Struktur und Abhängigkeit der Ergebnisse von bestimmten Voraussetzungen offen legen, und ihren ,Zweck‘ verdeutlichen. Die beiden Hauptergebnisse im Basisbeweis gehen vom vorgefundenen und traditionell vorgegebenen Begriff von ,GOTT‘ aus, <span style="color:#00B000">(Term :06:, Term :16: und Term :26:)</span>. Das ,bewiesene‘ <span style="color:#00B000">( ╞ )</span> 1. Hauptergebnis, hier im 2. Beweisgang, Term :13: <span style="color:#4C58FF">— ‚'''PY'''‘ —</span> ''':''' <span style="color:#FF6000">»''die Eigenschaften in GOTT sind vollkommen, d.h. sind die ultimativen Transzendentalia''«</span>, rechtfertigt, bzw. verifiziert sowohl Axiom-3 ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>, als auch die Definition-1 ''':''' <span style="color:#4C58FF">— ‚'''Gx↔∀X(PX→Xx)'''‘ —</span>, für die Annahme ''':''' den ,GOTT der Christen‘, der deswegen GOTT ist, weil er alle Grade der Vollkommenheit in sich schließt. Und das ebenfalls ,bewiesene‘ <span style="color:#00B000">( ╞ )</span> 2. Hauptergebnis, hier im selben Beweisgang, Theorem-2 ''':''' <span style="color:#4C58FF">— ‚'''Gx'''↔'''G'''<sub>ess</sub>'''x'''‘ —</span> ''':''' <span style="color:#FF6000">»''das Wesen GOTTES ist sein eigenes Sein''«</span>, rechtfertigt, bzw. verifiziert sowohl Axiom-5 ''':''' <span style="color:#4C58FF"> — ‚'''PE'''<sub>not</sub>‘ —</span>, als auch die Definition-3 ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x ↔ ∀X(X'''<sub>ess</sub>'''x →□∃yXy)'''‘ —</span>, für die Wesenseigenschaft ''':''' ,notwendige Existenz‘, und widerlegt den Einwand KANTS, für den Spezialfall ''':''' <span style="color:#4C58FF">— ‚'''x'''‘ —</span> steht für ,GOTT‘. Zwei Axiome und zwei Definitionen von GOTT und seinen Vollkommenheiten werden durch die Ergebnisse im Basisbeweis des GÖDEL-Kalküls in unserer realen Welt als ,wahr‘, <span style="color:#00B000">(genauer als ,widerspruchsfrei‘)</span>, und, — im Rahmen des christlichen Glaubens —, als ,annehmbar‘ bestätigt. <span style="color:#00B000">(Anmerkung zu Term :24: ''':''' eine Prämisse ist regulär-,modal‘ immer ,frei‘ wählbar.)</span> Zusammengefasst heißt das ''':''' die ,strittige‘ Begründung der ,methodologischen‘ Prämisse des GÖDEL-Kalküls ''':''' <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span> ''':''' <span style="color:#00B000">(Prämisse, Term :01:)</span>, weil <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span> ''':''' <span style="color:#00B000">(Korollar-1)</span> ''':''' <span style="color:#FF6000">»''Das <span style="color:#4C58FF">‚'''x'''‘</span> steht für den GOTT der Christen, für den es ohne Widerspruch denkbar ist, dass es ihn gibt''«</span>, <span style="color:#00B000">(ANSELMS Prinzip, trotz der ,Warnung‘ KANTS)</span>, ist ,wahr‘ und für uns ,annehmbar, denn es ist auch, auf Grund der Ergebnisse des 2. Beweisganges, in unserer realen Welt ,wahr‘ und ,annehmbar‘, weil schon als ,widerspruchsfrei‘ verifiziert ''':''' <span style="color:#FF6000">»''Der GOTT der Christen'' <span style="color:#00B000">(Term :01:)</span> '',existiert‘ für uns ,notwendig‘''«</span> ''':''' <span style="color:#4C58FF"> — ‚'''Gx→E'''<sub>not</sub>'''x'''‘ —</span>, <span style="color:#00B000">(d.i. das ,regulär‘-mögliche Korollar sowohl im 2. als auch im 3. Beweisgang)</span>, denn dieser GOTT ist aus sich ,vollkommen‘ ''':''' <span style="color:#4C58FF"> — ‚'''PG'''‘ —</span>, und zu seiner ,Vollkommenheit‘ <span style="color:#4C58FF">— ‚'''P'''‘ —</span> gehört auch notwendig sein ,Existieren‘ ''':''' <span style="color:#4C58FF"> — ‚'''PE'''<sub>not</sub>‘ —</span>. <span style="color:#00B000">(Jeder dieser Terme ist im-, und durch den 2. Beweisgang, im Geltungsbereich der Prämisse Term :01:, als ,wahr‘ und ,annehmbar‘ bewiesen, bzw. verifiziert.)</span> Das ist der ,Kern‘ des ontologischen Arguments, und somit ist auch diese ,strittige‘ Begründung der Prämisse des GÖDEL-Kalküls mit den Maßstäben der modernen Logik <span style="color:#FF6000">»''durchaus vereinbar''«</span>, d.h. sie ist logisch ,richtig‘ und, im Kontext des christlichen Glaubens, vernünftig. Die Annahme des Gegenteils zu dieser Prämisse ''':''' <span style="color:#4C58FF">— ‚'''¬◇∃xGx'''‘ —</span> ''':''' <span style="color:#FF6000">»''Es ist undenkbar, dass es diesen GOTT gibt''«</span>, führt jedoch, unabhängig von jeder Glaubensüberzeugung, zu einem Widerspruch — ist unlogisch und daher ,falsch‘, <span style="color:#00B000">(siehe Anhang ''':''' Widerlegung)</span>. Die Behauptung einer ,formalen Unentscheidbarkeit‘ zu den Annahmen über die Existenz GOTTES, ob oder nicht, <span style="color:#00B000">(d.h. ein ,methodologischer‘ Agnostizismus)</span>, ist gegen jede ,Logik‘; und ist auch ,falsch‘, d.h. der Agnostizismus ist einfach nur ein ,logischer Irrtum‘. Denn aus dem, im Kalkül abgeleiteten, Widerspruch aus der einen Annahme, und damit ihrer Unrichtigkeit, folgt notwendig die Richtigkeit der gegenteiligen Annahme. Damit ist eine klare Entscheidung getroffen. Das Modale-Prinzip <span style="color:#4C58FF">['''RM''']</span> in Worten ''':''' <span style="color:#FF6000">»''Wenn es wahr ist, dass aus'' <span style="color:#4C58FF"> — ‚'''A'''‘ —</span> ''ein'' <span style="color:#4C58FF"> — ‚'''B'''‘ —</span> ''logisch folgt, dann ist in einem Kalkül regulär'' <span style="color:#00B000">( ├ )</span> ''ableitbar, dass, wenn'' <span style="color:#4C58FF"> — ‚'''A'''‘ —</span> '',modal‘ notwendig'' <span style="color:#00B000">( □ )</span> ''ist, auch'' <span style="color:#4C58FF"> — ‚'''B'''‘ —</span> '',modal‘ notwendig'' <span style="color:#00B000">( □ )</span> ''ist''«</span>. <span style="color:#00B000">(Das <span style="color:#4C58FF"> — ‚'''A'''‘ —</span> in Term :18: ist als ,modal notwendig‘ durch den Term :15: verifiziert '''!''' )</span> Mit dem 2. Hauptergebnis, Theorem-2 ''':''' <span style="color:#FF6000">»'',Dasein‘ ist das ,Wesen‘ GOTTES''«</span>, folgt die GÖDEL-Axiomatik der philosophisch-<span style="color:#4C58FF">,theologischen‘</span> Tradition der ,Rede von GOTT‘ seit ARISTOTELES, und schließt sich damit formal-syntaktisch zugleich auch der religiösen Überzeugung der Christen an, die glauben, dass GOTT, als unser Vater, aus Liebe, in seinem Sohn, JESUS CHRISTUS, für uns immer schon <span style="color:#FF6000">»''da''«</span> ist, <span style="color:#00B000">(der Sohn ist koinzident ,eins‘ mit GOTT, dem Vater und dem GEIST)</span>, wirksam in und durch seine <span style="color:#4C58F0">„Kirche“</span>, im HEILIGEN GEIST, bis ans Ende der Zeit. Das ist das, <span style="color:#FF6000">»''was''«</span> GOTT eigentlich für uns ausmacht, — die Selbstmitteilung seines unergründlichen Wesens in den Sakramenten der <span style="color:#4C58F0">„Kirche“</span> ''':''' <span style="font-family: Times;"><big>‘אֶֽהְיֶ֖ה אֲשֶׁ֣ר אֶֽהְיֶ֑ה‚</big></span> <span style="color:#00B000">| ‚eh'jeh asher eh'jeh‘ |</span> <span style="color:#CC66FF">»''Ich bin da für euch und für immer, als der ich ''<span style="color:#00B000">[ immer schon gewesen ]</span> ''bin''«</span>; <span style="color:#00B000">(d.i. das <span style="color:#4C58FF">,theologisch‘</span>-exegetische ,Axiom‘ der Christen, und eine <span style="color:#4C58FF">,theologisch‘</span> korrekte Explikation der ,regulären‘ Kalkül-Prämisse Term :01: <span style="color:#4C58FF"> — ‚'''Gx'''‘ —</span>, jeweils im 2. und 3. Beweisgang)</span>. Das heißt aber nicht, dass der Autor des Kalküls sich mit diesem Glauben identifiziert hat, <span style="color:#00B000">(,hat‘ er auch nicht)</span>, oder dass der Leser des ontologischen Beweises von Kurt GÖDEL sich damit identifizieren muss, wenn er dessen <span style="color:#FF6000">»''mathematische Evidenz''«</span> anerkennt. Zur erweiterten <span style="color:#4C58FF">„theologischen“</span> Explikation der Kalkül-Prämisse ''':''' Die <span style="color:#4C58F0">„Kirche“</span> ist das ,Meisterwerk‘ GOTTES ''':''' In ihr ist es GOTT gelungen, etwas Göttliches und Unzerstörbares in unsere korrupte Welt einzupflanzen ''':''' <span style="color:#4C58FF"> — ‚'''Gx→E'''<sub>not</sub>'''x'''‘ —</span> ''':''' <span style="color:#FF6000">»''Etwas Göttliches existiert notwendig, d.h. ,unzerstörbar‘ in unserer Welt''«</span>. Sie ist, durch die Menschwerdung des GOTTES Sohnes, JESUS CHRISTUS, dessen <span style="color:#4C58F0">„Leib“</span> die <span style="color:#4C58F0">„Kirche“</span> ist, untrennbar mit Menschen verbunden, die schon, von allem Anfang an, und jetzt immer noch, durch die Sünde korrumpiert sind. Mit ihr will und wird GOTT unsere Welt und die Menschheit, bis ans Ende der Zeit, von der Sünde und von deren Konsequenz, dem <span style="color:#00B000">(ewigen)</span> Tod <span style="color:#4C58FF">„erlösen“</span>, <span style="color:#00B000">(jedoch nicht ohne die Zustimmung des Menschen)</span>. Mit dieser Explikation wird die Tragweite des ontologischen Arguments ANSELMS, und damit auch die <span style="color:#4C58FF">„theologische“</span> Relevanz der GÖDEL-Axiomatik erkennbar. Immer vorausgesetzt, <span style="color:#00B000">(,angenommen‘)</span>, man glaubt an GOTT, <span style="color:#00B000">(Term :01:)</span>. ====<div class="center"><span style="color:#660066">3. Beweisgang</span></div>==== {|class="wikitable" |- ! <div class="center"><span style="color:#660066">GÖDELS ontologischer Beweis für Theorem 3, (ANSELMS Theorem)</span></div> |- ! <span style="color:#00B000">''Terme der erweiterten Prädikatenlogik zweiter Stufe___________________„Benennungen“ und durchgeführte Logik-Operationen''</span> |- | <small> <math>\begin{align} \text{(Axiom 5)} & \quad P\ E_{not}\; \ & \text { } & \text{„Notwendige Existenz ist eine positive Eigenschaft“} \\ \text{ } & \text{( :: Das ist nur dann wahr, wenn ,Dasein‘ und ,Wesen‘ } & \ & \text{( :: dagegen KANT : ,Existenz‘ ist keine ,Eigenschaft‘,} \\ \text{ } & \;\;\text{in eins zusammenfallen ! ARISTOTELES : Theorem-2)}\ & \ & \;\;\text{,Sein‘ ist für alles, was existiert, kein ,reales Prädikat‘ ! )} \\ \text{(Definition 1)} &\quad \ G\ x \;\Longleftrightarrow\; \forall X(\ P \ X \Longrightarrow \ X \ x)\ & \ & \text{„x ist genau dann GOTT, wenn x alle positiven Eigenschaften hat“} \\ \text{(Definition 3)} & \quad \ E_{not}\ x \;\Longleftrightarrow\;\ \forall X \left(\ X_{ess}\ x \Longrightarrow \Box \; \exists y \ X\ y \right) & \ & \text{„Notwendige Existenz ist genau dann eine Eigenschaft von x, wenn} \\ \text{ } & \quad & \ & \;\;\text{alle wesentl. Eigenschaften von x notwendig instanziiert sind“} \\ \text{(Korollar 1)} & \quad \Diamond \; \exists x \ G \ x \ & \ & \text{„Es ist widespruchsfrei möglich, dass es GOTT gibt“} \\ \text{(Theorem 2)} &\quad \ G\ x \;\Longleftrightarrow\; \ G_{ess}\ x \ & \ &\text{„Dasein, GOTT-Sein, Existenz ist das Wesen, die Essenz GOTTES“} \\ \text{(Korollar 2)} &\quad \ G\ x \;\Longrightarrow\; \Box \; \forall y(\ G \ y \Longrightarrow \ (x = y))\ & \ &\text{„Wenn es GOTT gibt, dann gibt es notwendig nur einen GOTT“} \\ \text{(Theorem 3)} & \quad \Diamond \; \exists x \ G \ x \;\Longrightarrow\; \Box \; \exists x \ G \ x \ & \ & \text{( :: ANSELMS Prinzip)} \\ \text{ } & \text{„Weil es widerspruchsfrei möglich ist, dass es GOTT gibt,} & \ & \Longleftarrow\; \text{was zu beweisen ist !} \\ \text{ } & \;\;\text{ist der Glaube, dass es GOTT wirklich gibt, widerspruchsfrei“} \\ \text{01} & \quad \ G \ x\ & \ & \text{ AE: „Angenommen, x steht für den GOTT der Christen“} \\ \text{02} & \quad \forall X(\ P \ X \Rightarrow \ X \ x)\ & \ & \text{(D1):01:[Modus ponens] :: (logische Schlussregel)} \\ \text{03} & \quad \ P \ X \Rightarrow \ X \ x\ & \ & \text{:02:[ⱯXA(X) ├ A(X)] :: (Quantorenregel)} \\ \text{04} & \quad \ P \ E_{not}\;\Rightarrow \ E_{not}\ x\ & \ & \text{:03:Instanz(X:= Enot) :: (Substitution für Eigenschaften)} \\ \text{05} & \quad \ E_{not}\ x\ & \ & \text{(A5):04:[Modus ponens] :: [A, A → B├ B]} \\ \text{06} & \quad \forall X \left(\ X_{ess}\ x \Rightarrow \Box \; \exists y \ X\ y \right) & \ & \text{(D3):05:[Modus ponens]} \\ \text{07} & \quad \ X_{ess}\ x \Rightarrow \Box \; \exists y \ X\ y & \ & \text{:06:[ⱯXA(X) ├ A(X)]} \\ \text{08} & \quad \ G_{ess}\ x \Rightarrow \Box \; \exists y \ G\ y & \ & \text{:07:Instanz(X:= G)} \\ \text{09} & \quad \ G_{ess}\ x \ & \ & \text{(Th2):01:[Modus ponens]} \\ \text{10} & \quad \text{ ├ }\;\Box \; \exists x \ G\ x & \ & \text{:08:09:[Modus ponens]:FUB(y:=x) :: (Freie-Um-Benennung der Var.)} \\ \text{ } & \text{„Es gibt GOTT wirklich, für jede mögliche Welt“} & \ & \Longleftarrow\; \text{1. Hauptergebnis !} \\ \text{11} & \quad \;\Diamond \exists x \ G \ x \;\Longrightarrow \; \Box \; \exists x \ G\ x & \ & \text{(K1):10:[├A├B ╞ A→B] :: ''KONDITIONALER BEWEIS''} \\ \text{(Theorem 3)} & \;\text{„Weil es widerspruchsfrei möglich ist, dass es GOTT gibt,} & \ & \Longleftarrow\; \text{was zu beweisen war ! 2. Hauptergebnis ! } \\ \text{ } & \;\;\text{ist der Glaube, dass es GOTT wirklich gibt, widerspruchsfrei“} \\ \text{12} & \quad \;\Box \; \forall y(\ G \ y \Longrightarrow \ (x = y))\ & \ &\text{(K2):01:[Modus ponens]} \\ \text{13} & \quad \;\Box \; (\exists x \ G\ x \wedge \; \forall y(\ G \ y \Longrightarrow \ (x = y)))\ & \ & \text{:10:12:[Konjunktion]:DIST(□∧)} \\ \text{(Korollar 3)} & \;\text{„Es gibt notwendig genau nur einen GOTT“} & \ & \text{„Es gibt für jede mögliche Welt nur den GOTT der Christen“} \\ \end{align}</math> </small> |} Anmerkung-3 ''':''' <span style="color:#00B000">(Ein Theorem und zwei Korollare, aus den beiden vorhergehenden Beweisgängen, werden hier, im 3. Beweisgang, zu ,Axiomen‘, die das Theorem-ANSELMS und sein Korollar mit-verifizieren und bestätigen.)</span> Dieser Beweisgang ist das Ziel aller Bemühungen. Hier wird der sog. ,ontologische Gottesbeweis‘ nach ANSELM von Canterbury formal-syntaktisch dargestellt und als logisch nachvollziehbar von GÖDEL bestätigt. Damit hat er aber auch klar gestellt, dass der ontologische Beweis ANSELMS kein Beweis für die ,Existenz‘ des GOTTES der Bibel sein kann, bzw. sein ,will‘ ''':''' Denn mit der Prämisse, <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, <span style="color:#00B000">(Term :01:, wie auch schon im ,Basisbeweis‘, und ausformuliert hier in Term :02:, mit der Definition für GOTT)</span>, wird mit dem traditionellen, abendländischen ,GOTT-Glauben‘, der ,glaubt‘, dass der Gott der Christen tatsächlich existiert, — methodologisch als ,Annahme‘ —, der Beweisgang schon regulär und explizit eröffnet, aus dem sich dann, logisch korrekt, mit Hilfe der GÖDEL-Axiome und Definitionen, das ,Theorem ANSELMS‘ ergibt; <span style="color:#00B000">(hier jedoch, mit Günther J. WIRSCHING, ohne den Umweg bei GÖDEL über den <span style="color:#4C58FF">[ Modus Barbara ] :: [ A → B, B → C ├ A → C ] </span>, mit dem modalen Axiom-BECKER ''':''' <span style="color:#4C58FF">— ‚'''◇□A→□A'''‘ —</span>, als <span style="color:#4C58FF">‚B → C‘</span> im kategorischen Syllogismus, das André FUHRMANN recherchiert hat)</span>. GÖDEL verwendet zur Darstellung des sog. ,ontologischen Gottesbeweises‘ nach ANSELM die Struktur eines modal-logischen Kalküls. Ein modal-logisches Kalkül ist ein genau geregeltes Schema, in dem bei bestimmten ,Annahmen‘ <span style="color:#00B000">(Axiome, Definitionen, Prämissen)</span> etwas anderes als das Vorausgesetzte, auf Grund des Vorausgesetzten mit Notwendigkeit folgt. Entsprechend der ,Modalität‘ der sechs ,modal‘ notwendigen, d.h. transzendentalen Voraussetzungen, hier, für den 3. Beweisgang, die in den <span style="color:#00B000">(und durch die)</span> beiden vorhergehenden Beweisgängen schon als <span style="color:#FF6000">„modal wahr“</span>, bzw. als logisch annehmbar, verifiziert und/oder ,bewiesen‘ wurden, sind auch die beiden ,Schlusssätze‘ <span style="color:#00B000">(Theorem-3 und Korollar-3)</span> <span style="color:#FF6000">„modal wahr“</span>, bzw. logisch annehmbar '''!''' Die Wahl der Prämisse :01: dagegen ist nicht ,modal‘ notwendig, sondern beruht auf einer freien Entscheidung, und damit ist auch ihre Interpretation eine freie Entscheidung, mit der Voraussetzung, dass man das Kalkül mit Theoremen aus der <span style="color:#4C58FF">„christlichen Theologie“</span> evaluieren, und damit interpretieren will. Dazu berechtigt die Genese des Kalküls. Der Glaube an den GOTT der Christen ''':''' <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, beruht immer auf einer freien Entscheidung. Das Kalkül, als solches, unabhängig von jeder Interpretation seiner Syntax, ist genau dann ,allgemein‘ <span style="color:#FF6000">»''mathematisch evident''«</span>, d.h. ,ist allgemein gültig‘, wenn es gültigen Logik-Regeln folgt. Die Bestimmung seiner Syntax jedoch, d.h. seine Interpretation, unterliegt hermeneutischen Kriterien, die nicht von Logik-Regeln abhängen, wie hier ''':''' <span style="color:#FF6000">»''(unabhängig von der zufälligen Struktur der Welt). Nur dann sind die Axiome wahr''«</span>, wie GÖDEL selbst hinzufügt. Mit der, — von GÖDEL eingeforderten —, ‚Unabhängigkeit‘ der Kalkül-Axiome von der zufälligen Struktur der Welt, wird implizit für das Kalkül auch festgelegt, dass <span style="color:#FF6000">„GOTT“</span> ‚unabhängig‘ von der zufälligen <span style="color:#00B000">(Raum-Zeit-)</span>Struktur unserer vergänglichen Welt, und daher ,zeitlos-ewig‘ ist, <span style="color:#00B000">(was <span style="color:#4C58FF">„theologisch“</span> korrekt ist)</span>, begründet durch Definition-1 und Axiom-3. Aus der zeitlosen Ewigkeit GOTTES folgt, dass GOTT, <span style="color:#FF6000">„unverursacht“ <span style="color:#00B000">|</span> „grundlos“</span>, für uns immer schon ‚da‘ ist, denn bei Zeitlosigkeit gibt es keinen ,zeitlichen‘ und damit auch keinen ,ontologischen‘ Unterschied zwischen ‚Ursache‘ und ‚Wirkung‘. Beides ist dann koinzident ,eins‘ ''':''' wie ,Wesen‘ und ,Dasein‘ in GOTT, bzw. wie ,Begriff‘ und ,Sein‘, oder ,Möglichkeit‘ und ,Wirklichkeit‘. <span style="color:#00B000">(Man vergleiche damit auch die ,postulierte‘ Einheit von ,Erkenntnisobjekt‘ und ,Erkenntnissubjekt‘ im ,Gott‘ des ARISTOTELES ''':''' im <span style="color:#FF6000">»<span style="color:#00B000">[ selbstbewussten ]</span> ''Erkennen seiner Erkenntnis''<span style="color:#00B000">[-Tätigkeit ]</span>«<span style="color:#00B000"> | </span>„<span style="font-family: Times;"><big>νοήσεως νόησις</big></span>“<span style="color:#00B000"> | </span>„noêseôs noêsis“</span> <small>(‚<span style="font-family: Times;"><big>''Metaphysik''</big></span>‘ XII 9, 1074b34)</small>, im Vollzug seiner Funktion als ,unbewegtes Bewegungsprinzip‘, als <span style="color:#FF6000">„<span style="font-family: Times;"><big>πρῶτον κινοῦν ἀκίνητον</big></span>“<span style="color:#00B000"> | </span>„prôton kinoûn akinêton“</span> der Welt, das alles Übrige <span style="color:#FF6000">»''wie ein Geliebtes''«<span style="color:#00B000"> | <span style="color:#FF6000">„<span style="font-family: Times;"><big>ὡς ἐρώμενον</big></span>“</span> | <span style="color:#FF6000">„hôs erômenon“</span> bewegt; d.h. christlich ''':''' <span style="color:#FF6000">»''aus Liebe''«</span> ,entstehen‘ lässt.)</span> Anmerkung-4 ''':''' Das <span style="color:#00B000">(im 2. Beweisgang)</span> schon bewiesene Theorem-2, d.i. die Koinzidenz von <span style="color:#FF6000">„Sein“</span> und <span style="color:#FF6000">„Wesen“</span> in GOTT, <span style="color:#00B000">(‚Existenz‘</span> und <span style="color:#00B000">‚Essenz‘)</span>, rechtfertigt sowohl Axiom-5 als auch die Definition-3, und widerlegt den Einwand KANTS. Somit ist deren Setzung <span style="color:#00B000">(hier, im 3. Beweisgang)</span> korrekt, und durch das Theorem-2 schon vorbestimmt und bestätigt, d.h. beide sind <span style="color:#FF6000">„modal wahr“</span> und ,logisch‘ annehmbar, da sie durch die Gültigkeit von Theorem-2 ,verifiziert‘ worden sind. Damit wird klar erkennbar, dass das Theorem-2 tatsächlich die Basis des GÖDEL-Kalküls ist. Und wenn damit Axiom-5 im GÖDEL-Kalkül ‚gerechtfertigt‘ ist, dann ist auch, <span style="color:#00B000">(als Voraussetzung dafür)</span>, das Axiom-4 ''':''' <span style="color:#4C58FF">— ‚'''PX → □PX'''‘ — ''':''' </span> <span style="color:#FF6000">»''Positive Eigenschaften'', <span style="color:#00B000">[ ,Transzendentalia‘ ]</span>, ''sind notwendig aus sich'', <span style="color:#00B000">[ von Natur aus ]</span>, ''positiv''«</span>, im 2. Beweisgang erklärbar, in dem die ‚Positivität‘, <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, einer Eigenschaft schon als ‚notwendig‘, <span style="color:#4C58FF">— '''□''' —</span>, charakterisiert worden ist, äquivalent zu Axiom-5 ''':''' <span style="color:#4C58FF"> — ‚'''PE'''<sub>not</sub>‘ —</span>, in dem die ‚Notwendigkeit‘, <span style="color:#4C58FF">— <sub>not</sub> —</span>, <span style="color:#00B000">(der Existenz <span style="color:#4C58FF">— ‚'''E'''‘ —</span>)</span>, dann als ‚positive‘ Eigenschaft, <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, ‚bestimmt‘ wird; <span style="color:#00B000">(unter der speziellen Voraussetzung, dass <span style="color:#FF6000">„Existieren“</span> definitiv als eine <span style="color:#FF6000">„Wesenseigenschaft“</span> in GOTT ,instanziiert‘ ist; vgl. Definition-3. Eine ,bestimmte‘ Eigenschaft ist genau dann ,instanziiert‘, wenn sie an einem Träger real ,existiert‘. Definition-3 ''':''' <span style="color:#4C58FF">— ‚'''E'''<sub>not</sub>'''x ↔ ∀X(X'''<sub>ess</sub>'''x →□∃yXy)'''‘ —</span>, besagt, dass die, von GÖDEL ,postulierte‘, und im Basis-Theorem-2 verifizierte, <span style="color:#FF6000">„notwendige Existenz“</span> zu den ,ultimativen‘ Transzendentalia in GOTT gehört. Genauer ''':''' Sie ist die ,Summe‘ aller Transzendentalia.)</span> Zum Axiom-4, <span style="color:#00B000">(bzw. zum Term :14:, im 2. Beweisgang)</span>, erklärt GÖDEL in seinen Notizen zum Kalkül ''':''' <span style="color:#FF6000">»''da es'' <span style="color:#00B000">[ das Notwendigsein, <span style="color:#4C58FF">— '''□''' —</span> ]</span> ''aus der Natur der'' <span style="color:#00B000">[ positiven ]</span> ''Eigenschaft folgt'', <span style="color:#00B000">[ deren Positivität, im selben Beweisgang, mit Term :13: vorher schon ,bewiesen‘ (╞ ) worden ist ]</span>«</span>. Die GÖDEL-Erklärung zum Axiom-4 entspricht der Modal-Regel zur sog. ,Nezessisierung‘ in der KRIPKE-Logik nach GÖDEL. <span style="color:#4C58FF">[ Nezessisierungsregel ] '''::''' [ ├ A →├ □ A ]</span> ''':''' <span style="color:#FF6000">»''Angenommen'', <span style="color:#4C58FF">‚'''A'''‘</span> ''ist in einem Kalkül eine Prämisse, oder darin regulär'' <span style="color:#4C58FF">(├ )</span> ''abgeleitet, dann folgt in diesem Kalkül regulär'' <span style="color:#4C58FF">(├ )</span>, ''dass dieses'' <span style="color:#4C58FF">‚'''A'''‘</span> ''auch ,modal‘ notwendig'' <span style="color:#4C58FF">— ,□‘ —</span> ''ist''«</span>. GÖDEL hat jedoch diese modale Notwendigkeit nur in der ,Natur‘ der positiven Eigenschaften, alias ,Transzendentalia‘, gesehen, und mit den Aussagen im Axiom-4 expliziert ''':''' <span style="color:#4C58FF">— ‚'''PX → □PX'''‘ —</span> ''':''' <span style="color:#FF6000">»''unabhängig von der zufälligen Struktur der Welt, nur dann sind die Axiome wahr''«</span>. Ob dieselbe modale Notwendigkeit auch auf Aussagen über Eigenschaften, wie ,rot‘ oder ,schwer‘, die weder positiv noch negativ sind, zutrifft, ist nicht erwiesen. Hier kann nur von modaler ,Kontingenz‘ gesprochen werden, die universal, alles Seiende innerhalb der <span style="color:#FF6000">»''zufälligen Struktur der Welt''«</span> betrifft. Somit sind die Aussagen <span style="color:#4C58FF">— ‚'''A'''‘ —</span> in der GÖDEL-Regel, nur auf Aussagen über ,positive‘ Eigenschaften eingeschränkt, und nicht allgemein gültig. Die <span style="color:#4C58FF">[ Nezessisierungsregel ]</span> ist nur für <span style="color:#FF6000">„Transzendentalia“ „modal wahr“</span>, und für ,Nicht-Transzendentalia‘ immer <span style="color:#FF6000">„modal falsch“</span>. Der unbegrenzt Unendliche, GOTT, — im Glauben der Christen —, ist deswegen ,notwendig für uns da‘ ''':''' <span style="color:#4C58FF">— ‚'''Gx→E'''<sub>not</sub>'''x'''‘ —</span>, weil er als GOTT ,vollkommen‘, ,perfekt‘ und absolut ,positiv‘, d.h. absolut ,gut allein‘ ist, ohne jede Negativität ''':''' <span style="color:#4C58FF">— ‚'''PG'''‘ —</span>; <span style="color:#00B000">(was auch schon im 2. Beweisgang mit Term :13: verifiziert wurde)</span>. Und wenn GOTT ,vollkommen‘, ,perfekt‘, ,positiv‘, und absolut ,gut‘ ist, dann ist er das auch ,notwendig aus sich‘ ''':''' <span style="color:#4C58FF">— ‚'''PG → □PG'''‘ — ::</span> <span style="color:#00B000">(als Zusatz-Korollar im 2. Beweisgang mit Axiom-4 und der <span style="color:#4C58FF">[ Instanz(X:=G) ]</span>)</span>, d.h. ,aus seinem Wesen‘. Das ist gerade das, ,was‘ GOTT als GOTT ausmacht ''':''' sein ,Wesen‘, bzw. seine <span style="color:#FF6000">„Natur“</span>. Zusammen mit der Definition-1 für GOTT, <span style="color:#00B000">(und der Definition-2 ''':''' Alle Wesenseigenschaften hängen notwendig gleichwertig aus sich zusammen)</span>, ist dieses, aus der <span style="color:#FF6000">„Natur“</span> GOTTES sich ergebende, ‚Notwendigsein‘, <span style="color:#4C58FF">— '''□''' —</span>, aller ‚positiven‘ Eigenschaften im Axiom-4, und ihr logischer Zusammenhang, d.i. die Koinzidenz aller ,Vollkommenheiten‘ und ,Zuschreibungen‘ im Unendlichen, GOTT, ihr ,Zusammenfallen in eins‘, die entscheidende Voraussetzung, aus der sich dann für GÖDEL <span style="color:#00B000">(im 2. Beweisgang)</span> auch der logische Zusammenhang, bzw. die ontologische Identität, <span style="color:#00B000">(die Koinzidenz)</span>, von <span style="color:#FF6000">„Dasein“</span> und <span style="color:#FF6000">„Wesen“</span> in GOTT, im Basis-Theorem-2 ''':''' <span style="color:#4C58FF"> — ‚'''Gx↔G'''<sub>ess</sub>'''x'''‘ —</span> mit Notwendigkeit ergibt. Damit hat GÖDEL ein altes <span style="color:#4C58FF">„theologisches“</span> Theorem der Vergessenheit entrissen. Das Theorem-2 ist dann, in weiterer Folge, die ,modal‘ notwendige, d.h. die transzendentale Voraussetzung auch für den Konsequenz-Teil im Theorem ANSELMS, <span style="color:#00B000">(Term :09: hier im 3. Beweisgang)</span>. <span style="color:#FF6000">„Positive Eigenschaften“<span style="color:#00B000"> | </span>„Vollkommenheiten“</span> sind ,immer‘ auch <span style="color:#FF6000">„notwendige Eigenschaften“</span>, daher ''':''' <span style="color:#4C58FF"> — ‚'''PE'''<sub>not</sub>‘ —</span>. Das ,Dasein‘, die <span style="color:#FF6000">„Existenz“</span> ist ,immer‘ etwas <span style="color:#FF6000">„Positives“</span>, speziell in GOTT, dem Schöpfer jeder ,Existenz‘, bzw. allen ,Seins‘. Axiom-4 begründet im GÖDEL-Kalkül das Basis-Theorem-2, <span style="color:#00B000">(wie auch das Korollar-3 von der exklusiven Einzigartigkeit GOTTES)</span>, und ,verankert‘ diese Theoreme damit zugleich in der <span style="color:#4C58FF">,theologisch‘</span>-philosophischen Tradition der ,Rede von GOTT‘ bei ARISTOTELES, — AVICENNA, — ANSELM, — DESCARTES, — LEIBNIZ, — HEGEL, — und bei GÖDEL mit äußerster ,logischer‘ Klarheit. Anmerkung-5 ''':''' Der ‚Schlüsselbegriff‘ in diesem Kalkül ''':''' <span style="color:#FF6000">„positive Eigenschaft“</span>, bzw. <span style="color:#FF6000">„Vollkommenheit“<span style="color:#00B000"> | </span>„Perfektion“</span>, <span style="color:#4C58FF">— ‚'''P'''‘ —</span>, dominiert alle Axiome des GÖDEL-Kalküls, jedoch ohne inhaltlich genauer ‚bestimmt‘ worden zu sein. Für <span style="color:#4C58FF">— ‚'''P'''‘ — </span> gibt es keine explizite Definition '''!''' <span style="color:#00B000">(Das Theorem-1 ''':''' <span style="color:#4C58FF">— ‚'''PX→◇∃xXx'''‘ —</span>, besagt nur, dass die ,postulierten‘, positiven Eigenschaften, die <span style="color:#FF6000">„Transzendentalia“</span>, formal miteinander verträglich, d.h. ‚widerspruchsfrei‘ sind, wegen Axiom-2. Axiom-2 ''':''' <span style="color:#4C58FF">— ‚'''PX ∧ □∀x(Xx→Yx)→PY'''‘ —</span>, besagt, dass positive Eigenschaften ,gleichwertig‘ sind, d.h. gleich ,wahr‘ sind, weil sie ,notwendig‘, <span style="color:#4C58FF">— '''□''' —</span>, aus sich, alle paarweise mit- und voneinander ,impliziert‘ sind, sich gegenseitig ,einschließen‘, und damit eine Einheit bilden, d.h. in GOTT ,eins‘ sind. Axiom-2 ist somit zugleich eine ,indirekte‘ Definition für ,positive‘ Eigenschaften ''':''' <span style="color:#4C58FF">— ‚'''P'''‘ —</span>. Definition-2 ''':''' <span style="color:#4C58FF">— ‚'''X'''<sub>ess</sub>'''x ↔ Xx ∧ ∀Y(Yx→ □∀y(Xy→Yy))'''‘ —</span>, besagt ''':''' Weil die ,gleichwertigen‘, positiven Eigenschaften sich gegenseitig implizieren, und damit notwendig von einander abhängen, d.h. koinzident in GOTT ,eins‘ sind, — wenn <span style="color:#4C58FF">‚'''x'''‘</span> für GOTT steht —, dann sind sie somit auch die ,wesentlichen‘ Eigenschaften, die <span style="color:#FF6000">„ultimativen Transzendentalia“</span>, in GOTT, der, wesentlich und exklusiv, notwendig ,Einer‘ ist. Die Definition-2 ist nur dann <span style="color:#FF6000">„modal wahr“</span>, wenn ihre Eigenschafts-Variablen, <span style="color:#4C58FF">— ‚'''X'''‘ —</span> und <span style="color:#4C58FF">— ‚'''Y'''‘ —</span>, mit positive Eigenschaften, d.h. mit <span style="color:#FF6000">„Transzendentalien“</span>, besetzt werden. Diese Definition ist jedoch sofort <span style="color:#FF6000">„modal falsch“</span>, wenn ihre Variablen mit nicht-positive Eigenschaften, wie ,rot‘ oder ,schwer‘ belegt werden, die nicht ,transzendental‘-allgemein gültig sind. Fußnote zu Definition-2 in der GÖDEL-Notiz ''':''' <span style="color:#FF6000">»''any two essences of x are nec. equivalent''«</span>. Die paarweise, notwendige Äquivalenz von zwei beliebigen Wesenseigenschaften der Individuum-Variable <span style="color:#4C58FF">‚'''x'''‘</span>, wird hier, spezifisch für GOTT, d.h. wenn <span style="color:#4C58FF">‚'''x'''‘</span> für GOTT, dem ,Einen‘, steht, zur <span style="color:#FF6000">„Koinzidenz“</span>, — zum paarweise ,Zusammenfallen aller Gegensätze in Einem‘ —, dem inneren Zusammenhang aller seiner <span style="color:#FF6000">„ultimativen“</span> Vollkommenheiten, d.h. aller <span style="color:#FF6000">„Transzendentalia“</span> und Zuschreibungen, in dem unbegrenzt Unendlichen, GOTT, den schon der Philosoph und Kardinal NIKOLAUS von Cues als <span style="font-family: Times;"><big>,coincidentia oppositorum‘</big></span> verstanden hat.)</span> In den entscheidenden ‚Schlusssätzen‘ des Kalküls ist der ‚Schlüsselbegriff‘ verschwunden. Hier ist nur mehr von GOTT, <span style="color:#4C58FF">— ‚'''G'''‘ —</span>, die Rede ''':''' Korollar-1, <span style="color:#FF6000">»''Es ist definitiv denkbar, dass es GOTT gibt''«</span>, Theorem-2, <span style="color:#FF6000">»''Dasein, GOTT-Sein, Göttlichkeit ist das Wesen GOTTES''«</span>, Theorem-3, <span style="color:#FF6000">»''Weil GOTT definitiv denkbar, d.h. widerspruchsfrei möglich ist, darum ist auch der Glaube an GOTT widerspruchsfrei, logisch richtig und mathematisch evident, der annimmt, dass es GOTT, mit Notwendigkeit, wirklich gibt''«</span>, <span style="color:#00B000">(nach ANSELM von Canterbury, und was spezifisch das <span style="color:#FF6000">»</span>''Privilegium der Gottheit allein''<span style="color:#FF6000">«</span> ist, nach LEIBNIZ)</span>, und Korollar-3, <span style="color:#FF6000">»''Es gibt notwendig aus sich, d.i. unverursacht, nur einen GOTT''«</span>. Das GÖDEL-Kalkül ist zu diesen Erkenntnissen gekommen, ohne die Eigenschaften, bzw. die ‚Vollkommenheiten‘ GOTTES, d.h. wer oder was GOTT ‚an sich‘ selbst ist, genauer bestimmen zu müssen, <span style="color:#00B000">(was ,für uns‘ ohnehin ,unmöglich‘ ist)</span>; außer im Theorem-2, in dem das <span style="color:#FF6000">„Dasein“</span> GOTTES als die ‚für uns‘ bestimmende und wichtigste <span style="color:#FF6000">„Wesenseigenschaft“</span> in GOTT erkannt worden ist, — immer vorausgesetzt <span style="color:#00B000">(,angenommen‘)</span>, man ‚glaubt‘ an den zeitlos-ewigen GOTT ''':''' <span style="color:#00B000">(Term :01:)</span>. Der GOTT des GÖDEL-Kalküls ist nicht mehr der an Raum und Zeit gebundene ‚Gott‘ des ARISTOTELES, sondern der von Raum und Zeit <span style="color:#FF6000">»''unabhängige''«</span> GOTT der Bibel bei ANSELM und bei LEIBNIZ. Das GÖDEL-Kalkül, <span style="color:#00B000">(wie ja auch der sog. ‚ontologische Gottesbeweis‘ ANSELMS)</span>, kann jedoch, — bei aller ‚Coolness‘ —, keinen GOTT-Glauben ‚erzeugen‘, sondern setzt vielmehr die Existenz GOTTES notwendig als gegeben schon voraus. Das Kalkül des Logiker GÖDEL beweist aber, dass der traditionelle ‚GOTT-Glaube‘, <span style="color:#FF6000">»''die theologische Weltanschauung''«</span>, mit den Maßstäben der modernen Logik <span style="color:#FF6000">»''durchaus vereinbar''«</span>, d.h. logisch ,richtig‘ und <span style="color:#FF6000">»''mathematisch evident''«</span> ist, weil der ‚Nicht-GOTT-Glaube‘, <span style="color:#FF6000">»''die atheistische Weltanschauung''«</span>, im Möglichkeitsbeweis notwendig zu unlösbaren Widersprüchen führt, und somit logisch ,falsch‘ ist. <span style="color:#00B000">(Die ,Logik‘ hat aber, — bekanntlich —, bei allen wichtigen, persönlichen Entscheidungen immer nur eine untergeordnete Rolle '''!''' )</span> Anmerkung-6 ''':''' Das erste, ,regulär‘ <span style="color:#00B000">(├ )</span> abgeleitete, Hauptergebnis im 3. Beweisgang, Term :10: <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span> ''':''' der Glaube, dass GOTT ,notwendig‘ existiert, ist die logische Konsequenz aus der Prämisse, Term :1: <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>. Dieses erste Hauptergebnis hat also den überlieferten, traditionellen GOTT-Glauben zur Voraussetzung, und ist daher davon ,abhängig‘, d.h. Term :10: ist der Ausdruck einer ,Glaubensüberzeugung‘. Das zweite Hauptergebnis im 3. Beweisgang, das Theorem ANSELMS ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx→□∃xGx'''‘ —</span>, dagegen, ist die Darstellung der Abhängigkeit des ersten Hauptergebnisses von dem, vorher schon bewiesenen, ,Axiom‘ von der ,möglichen‘ Existenz GOTTES ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span>, dem Möglichkeits-Korollar-1 aus dem 1. Beweisgang. Dem geht folgende Beobachtung voraus ''':''' Der Term ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span>, hat in seiner syntaktischen Stellung hier, im Theorem-3, nicht mehr den überlieferten, traditionellen GOTT-Glauben zur Voraussetzung, und ist damit, in seiner Position als Konsequenz-Teil im Theorem ANSELMS, auch nicht mehr davon syntaktisch abhängig, sondern stützt sich formal-syntaktisch nur auf die behauptete Möglichkeit GOTTES; daher muss diese ,angenommene‘ Möglichkeit noch bewiesen <span style="color:#00B000">( ╞ )</span> werden. Dazu die Feststellung LEIBNIZ‘, der diesen Zusammenhang, und seinen Mangel, erkannt hat ''':''' ::Das Theorem ANSELMS ist <span style="color:#FF6000">» ''ein unvollständiger Beweis, der etwas voraussetzt, was man noch hätte beweisen'' <span style="color:#00B000">( ╞ )</span> ''sollen, um ihm mathematische Evidenz zu verleihen — nämlich, dass man dabei stillschweigend voraussetzt, diese Vorstellung des durchaus großen oder durchaus vollkommenen Wesens sei möglich und enthalte keinen Widerspruch'' «</span>. Diesen <span style="color:#FF6000">»''unvollständigen Beweis''«</span> hat GÖDEL im 1. Beweisgang mit dem ,regulär‘ <span style="color:#00B000">(├ )</span> abgeleiteten, und widerspruchfreien Möglichkeits-Korollar-1, vervollständigt, und damit hat er mit <span style="color:#FF6000">»''mathematischer Evidenz''«</span> bewiesen ''':''' <span style="color:#FF6000">»''Diese Vorstellung des durchaus großen oder durchaus vollkommenen Wesens''«</span> enthält <span style="color:#FF6000">»''keinen Widerspruch''«</span> '''!''' Das Korollar-1 ist nur vom logischen Axiom-1 und von der mathematischen Äquivalenz der Perfektionen, <span style="color:#00B000">(der Transzendentalien)</span>, im Axiom-2 ,abhängig‘, und nicht mehr von der ,methodologischen‘ Kalkül-Prämisse, dem traditionellen GOTT-Glauben. Damit hat das Glaubens-Theorem ANSELMS die gesuchte <span style="color:#FF6000">»''mathematische Evidenz''«</span> erreicht, unabhängig von jeder Glaubensüberzeugung. Entscheidend dafür ist der mathematisch-logische Beweis GÖDELS, dass der Nicht-GOTT-Glaube zu einem Widerspruch führt. Zusammenfassung ''':''' Theorem-1 ''':''' <span style="color:#4C58FF">— ‚'''PX→◇∃xXx'''‘ —</span> ''':''' <span style="color:#FF6000">»''Positive Eigenschaften sind konsistent''«</span>, ist die logische Konsequenz aus der Prämisse im 1. Beweisgang, Term :01: <span style="color:#4C58FF">— ‚'''PX'''‘ —</span>, den, — <u>modal-frei</u> — gewählten, ,angenommenen‘ positiven Eigenschaften, bzw. ,Transzendentalia‘. Theorem-2 ''':''' <span style="color:#4C58FF"> — ‚'''Gx↔G'''<sub>ess</sub>'''x'''‘ — </span> ''':''' <span style="color:#FF6000">»''GOTT-Sein ist das Wesen GOTTES''«</span>, ist die logische Konsequenz aus der Prämisse im 2. Beweisgang, Term :01: <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span>, dem, — <u>modal-frei</u> — gewählten, ,angenommenen‘ GOTT-Glauben der Christen. Im Unterschied dazu ist im 3. Beweisgang, das Theorem-3 ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx→□∃xGx'''‘ —</span> ''':''' der Glaube, dass es einen GOTT notwendig gibt ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span>, die logische Konsequenz aus dem, — <u>modal-notwendig</u> — als widerspruchsfrei ,bewiesenen‘, Möglichkeits-Korollar-1 ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span>, im 1. Beweisgang, <span style="color:#00B000">(auch im Beweisgang ,Widerlegung‘ im Anhang)</span>, und damit ist das Glaubens-Theorem-3, als ganzes, ,widerspruchsfrei‘. Das Theorem ANSELMS ist, mit Korollar-1, nur vom logischen Axiom-1 der Widerspruchsfreiheit, und der paarweisen, mathematischen Äquivalenz beliebiger positiver Eigenschaften, <span style="color:#00B000">(aller Transzendentalia)</span>, im Axiom-2, abhängig. Damit ist die Bedingung für die geforderte, spezielle <span style="color:#FF6000">»''mathematische Evidenz''«</span>, und auch für die Widerspruchsfreiheit im Glaubens-Theorem ANSELMS erfüllt; unabhängig von jeder Glaubensüberzeugung. Weil es <span style="color:#FF6000">„modal wahr“</span> ist, dass die Transzendentalien, bzw. die Vollkommenheiten ontologisch, — dem Sein nach —‚ alle <span style="color:#00B000">(zueinander)</span> widerspruchsfrei, und alle <span style="color:#00B000">(miteinander)</span> gleichwertig sind, ist es auch <span style="color:#FF6000">„modal wahr“</span>, dass es möglich ist, dass GOTT, — dem Sein nach —‚ da ist, <span style="color:#00B000">(d.h. existiert)</span>, der die unbegrenzte Summe aller ultimativen Transzendentalia, bzw. der unendlichen Vollkommenheiten allen Grades ist, wie es der ,christliche Glaube‘ des Erzbischofs ANSELM und seiner Anvertrauten ,annimmt‘. ====<div class="center"><span style="color:#660066">Widerlegung</span></div>==== {|class="wikitable" |- ! <div class="center"><span style="color:#660066">GÖDEL-Kalkül : der Möglichkeitsbeweis als Widerlegung des Nicht-GOTT-Glaubens</span></div> |- ! <span style="color:#00B000">''Terme der erweiterten Prädikatenlogik zweiter Stufe_____________ „Benennungen“ und durchgeführte Logik-Operationen''</span> |- | <small> <math>\begin{align} \text{(Axiom 1.1)} & \quad P \neg X \;\Longrightarrow\;\ \neg P\ X\ & \ & \text{„Wenn die Negation von X positiv ist, dann ist X nicht positiv“} \\ \text{(Axiom 2)} & \quad \Box \;\forall x (\ X\ x \Longrightarrow \ Y\ x) \Longrightarrow \ P\ Y & \ & \text{„Die Eigenschaft Y in allen x, die aus der Eigenschaft X in allen x} \\ \text{ } & \quad & \ & \; \; \text{mit modaler Notwendigkeit folgt, ist eine positive Eigenschaft“} \\ \text{[RK]} &\quad \Box\; \forall x A \;\Longrightarrow\;\Box\; \forall x B\; \text{ ├ }\;\Box \; \forall x (A \Longrightarrow\; B)\ & \ & \; \; \text{( :: Modales Prinzip KRIPKE-Γ-Ɐx)} \\ \text{(Korollar-1)} &\quad \Diamond \; \exists x \ G \ x \ & \ & \; \; \text{( „das —,x‘— steht für den GOTT, —,G‘—, der Christen“ )} \\ \text{ } & \text{„Es ist möglich, dass es den GOTT der Christen gibt“} & \ & \Longleftarrow\; \text{was zu beweisen ist !} \\ \text{01} & \quad \; \neg \Diamond \; \exists x \ G \ x \ & \ & \text{ AE: „Es ist unmöglich, dass es diesen GOTT gibt“ (dezidierter Atheismus)} \\ \text{02} & \quad (\neg x = .. )\ & \ & \text{ AE: „Es gibt die Eigenschaft, nicht mit x identisch zu sein“ :: (ungleich)} \\ \text{03} & \quad (\ x = .. )\ & \ & \text{ AE: „Es gibt die Eigenschaft, mit x identisch zu sein“ :: (gleich)} \\ \text{04} & \quad \neg\neg \Box \neg \exists x \ G \ x \ & \ & \text{:01:[ ◇A ↔ ¬□¬A ] :: (Modalregel) } \\ \text{05} & \quad \neg\neg \Box \neg\neg \forall x \neg \ G \ x \ & \ & \text{:04:[ ∃xA ↔ ¬Ɐx¬A ] :: (Quantorenregel) } \\ \text{06} & \quad \text{ ├ }\; \Box \; \forall x \neg G \ x \ & \ & \text{:05:NEG :: [ ¬¬A↔A ] :: (Gesetz der Aussagenlogik) } \\ \text{07} & \quad \Box \; \forall x \neg G \ x \Leftrightarrow\ W & \ & \text{:01:06:[ (:01:↔W) → (├:06:↔W) ] :: (Kalkülregel) } \\ \text{08} & \quad \Box \; \forall x \ G \ x \Leftrightarrow\ F & \ & \text{:07:[ (¬A↔W)↔(A↔F) ] :: (Regel für Wahrheitswerte)} \\ \text{ } & \text{„Jeder GOTT-Glaube ist ganz sicher falsch ! “} & \ & \Longleftarrow\; \text{die logische Konsequenz aus der Prämisse :01: !} \\ \text{09} & \quad \Box \; \forall x (\neg x = x ) \Leftrightarrow \ F \; \ & \text{ } & \text{□ⱯxXx:02:Instanz(X:=(¬x=..)) ⇒ Kontradiktion !} \\ \text{10} & \quad \Box \; \forall x (\ G \ x \Rightarrow\; (\neg x = x)) & \text { } & \text{:08:09:[ (:08:↔F) → (:09:↔F) ] :: „ex falso sequitur quotlibet“ :[RK]} \\ \text{11} & \quad \Box \; \forall x (\ G \ x \Rightarrow \; (\neg x = x)) \Rightarrow \; P (\neg x = .. ) & \ & \text{(A2):Instanz(X:=G):Instanz(Y:=(¬x= ..)) } \\ \text{12} & \quad \ P (\neg x = .. ) & \ & \text{:10:11:[ Modus ponens ] :: [ A→B, A ├ B ]} \\ \text{13} & \quad \ P (\neg x = .. )\;\Rightarrow\ \neg P (\ x = .. )\ & \ & \text{(A1.1):Instanz(X:=(x=..))}\\ \text{14} & \quad \neg P (\ x = .. )\ & \ & \text{:12:13:[ Modus ponens ] :: (log. Schlussregel)}\\ \text{15} & \quad \Box \; \forall x \ (x = x ) \Leftrightarrow \ W \; \ & \ & \text{□ⱯxXx:03:Instanz(X:=(x=..)) ⇒ Tautologie !} \\ \text{16} & \quad \Box \; \forall x (\ G \ x \Rightarrow\; (x = x)) & \ & \text{:08:15:[ (:08:↔F) → (:15:↔W) ] :: „ex falso sequitur etiam verum“ :[RK]} \\ \text{17} & \quad \Box \; \forall x (\ G \ x \Rightarrow\; (x = x)) \Rightarrow \ P (x = .. ) & \ & \text{(A2):Instanz(X:=G):Instanz(Y:=( x= ..))} \\ \text{18} & \quad \ P (\ x = .. )\ & \ & \text{:16:17:[ Modus ponens ]}\\ \text{19} & \quad \text{ ├ }\; (\neg P (\ x = .. )\ \wedge \ P (\ x = .. )) \Leftrightarrow\ F & \ & \text{:14:18:[ Konjunktion ] ⇒ Kontradiktion !}\\ \text{20} & \quad \neg \Diamond \; \exists x \ G \ x \Rightarrow (\neg P (\ x = .. )\ \wedge \ P (\ x = .. )) & \ & \text{:01:19:[ ├A├B╞ A→B ] :: ''KONDITIONALER BEWEIS''}\\ \text{ } & {\color{RedOrange}\text{Der Atheismus führt zu einem logischen Widerspruch ! }} & \ & \Longleftarrow\; \text{was mit Term :20: bewiesen ist !} \\ \text{21} & \quad \neg\neg \Diamond \; \exists x \ G \ x & \ & \text{:20:19:[ Modus tollendo tollens ] :: [ A→B,¬B ├ ¬A ]}\\ \text{22} & \quad \; \Diamond \; \exists x \ G \ x & \ & \text{:21:NEG }\\ \text{(Korollar-1)} & \;\text{„Es ist definitiv möglich, dass es diesen GOTT gibt“} & \ & \Longleftarrow\; \text{was zu beweisen war !} \\ \end{align}</math> </small> |} Anmerkung-7 ''':''' <span style="color:#00B000">( Dieser Beweisgang ist praktisch identisch mit dem 1. Beweisgang, jedoch gestrafft und präzisiert nach G.J.WIRSCHING. Diese Widerlegung des Nicht-GOTT-Glaubens beginnt sofort mit dem Korollar-1 <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span> aus dem 1. Beweisgang, als in Frage gestelltes ,Theorem‘, und beweist, ohne das Axiom-3 <span style="color:#4C58FF">— ,'''PG'''‘ —</span>, und ohne die GÖDEL-Prämisse <span style="color:#4C58FF">— ,'''PX'''‘ —</span>, in einem Zwischenergebnis, die innere Widersprüchlichkeit und damit auch die Unhaltbarkeit der atheistischen Glaubens-Annahme, aus rein logischen ,Gründen‘, bzw. Axiomen. )</span> Dieser Beweisgang geht von der Existenz GOTTES, <span style="color:#4C58FF">— ,'''G'''‘ —</span>, als Glaubens-Annahme, aus, wobei aber die Möglichkeit seiner Existenz, und damit die Sinnhaftigkeit des Glaubens an GOTT, durch die Prämisse :01: in Frage gestellt wird, und daher im Kalkül überprüft werden muss. Denn mit der Behauptung der Existenz GOTTES allein ist es nicht getan. Es muss auch seine ,Möglichkeit‘, d.h. die Sinnhaftigkeit des Glaubens an GOTT aufgewiesen werden. LEIBNIZ hat als erster, <span style="color:#00B000">(nach ANSELM)</span>, dieses Problem gesehen, und GÖDEL hat dafür die Lösung gefunden. Dieser Beweisgang, <span style="color:#00B000">(analog zum Möglichkeitsbeweis von Günther J. WIRSCHING konzipiert)</span>, setzt in den Axiomen, genau wie im 1. Beweisgang, die Existenz von etwas <span style="color:#FF6000">„Positiven“, „Perfekten“, „Vollkommenen“</span>, <span style="color:#4C58FF">— ,'''P'''‘ —</span>, <span style="color:#00B000">(d.h. die Transzendentalien)</span>, allgemein für die Welt voraus, <span style="color:#00B000">(was im Axiom-3 ''':''' <span style="color:#4C58FF">— ,'''PG'''‘ —</span>, auch GOTT ultimativ zugeordnet wird ''':''' <span style="color:#FF6000">»''GOTT ist absolut positiv, perfekt und vollkommen''«</span>)</span>; das dann im 2. Beweisgang mit Term :13: als widerspruchsfrei, <span style="color:#00B000">(als ,wahr‘ und ,annehmbar‘ im Kontext des christlichen Glaubens)</span>, schon ,bewiesen‘ <span style="color:#00B000">( ╞ )</span> worden ist. Die Existenz von ,Transzendentalien‘ in der Welt, ist ein, mit Beispielen belegbares, allgemeines Faktum; ihre Existenz auch in GOTT ist mit dem Term :13: des 2. Beweisganges bewiesen, die jedoch im Unendlichen, GOTT, als Transzendentalia, auch in ,ultimativer‘ Form vorliegen. Axiom-1 ,besagt‘, dass Eigenschaften nicht zugleich, vollkommen und nicht vollkommen, sein können. Axiom-2 ,besagt‘, dass, allgemein, alle Vollkommenheiten, <span style="color:#00B000">(alle Transzendentalien)</span>, gleichwertig, <span style="color:#00B000">(mathematisch äquivalent)</span>, sind. <span style="color:#00B000">(Axiom-2 wird hier um das GÖDEL-Konjunkt <span style="color:#4C58FF">— ,'''PX'''‘ —</span> verkürzt dargestellt. Damit ist auch Axiom-3 für diesen Beweisgang unnötig geworden, ohne dass sich wegen dieser Kürzung am Ergebnis etwas ändert. Axiom-2 wird jedoch sofort <span style="color:#FF6000">„modal falsch“</span>, wenn seine Variablen mit nicht-positive Eigenschaften, wie ,rot‘ oder ,schwer‘ belegt werden, die nicht ,transzendental‘-allgemein gültig sind, die keine ,Transzendentalia‘ sind.)</span> Die Eigenschaft <span style="color:#4C58FF">— (¬x=..) —</span> ,besagt‘, dass GOTT <span style="color:#FF6000">„unvergleichlich“</span> ist, wenn <span style="color:#4C58FF">,'''x'''‘</span> für GOTT steht. <span style="color:#00B000">(Der informelle Term, <span style="color:#4C58FF">— (¬x=..) —</span>, ersetzt hier, wie bei A. FUHRMANN, den formal korrekten Abstraktionsausdruck ''':''' <span style="color:#4C58FF">— λy.(¬x=y) —</span>, aus dem Lambda-Kalkül.)</span> Der Term :16: <span style="color:#4C58FF">— (x=x) ↔ W —</span> steht für die Selbstbezeichnung des GOTTES-JHWH in Exodus 3,14 ''':''' <span style="color:#CC66FF">»''Ich bin der ‚IST‘'' <span style="color:#00B000">(aus mir selbst)</span>«</span>, der Grund für die <span style="color:#FF6000">„Unvergleichlichkeit“</span> GOTTES. Der GOTT der abendländischen, christlichen Tradition wird mit <span style="color:#4C58FF">— ,'''G'''‘ —</span> bezeichnet ''':''' d.i. der <span style="color:#FF6000">„GOTT der Christen“</span>, entsprechend der ,methodologischen‘ Prämisse und der ,Genese‘ des Kalküls, syntaktisch formalisiert in der Definition-1 ''':''' <span style="color:#4C58FF">— ‚'''Gx↔∀X(PX→Xx)'''‘ —</span> ''':''' <span style="color:#FF6000">»''Das Individuum'' <span style="color:#4C58FF">,'''x'''‘</span> ''ist genau dann GOTT'', <span style="color:#4C58FF">,'''G'''‘</span>, ''wenn es alle Vollkommenheiten'', <span style="color:#4C58FF">,'''P'''‘</span>, ''in sich schließt''«</span>, nach der Vorgabe von LEIBNIZ ''':''' <span style="color:#FF6000">»''GOTT ist ein Wesen von äußerster Größe und Vollkommenheit, das alle Grade derselben in sich schließt''«</span>. Mit Korollar-1 hat dieser Beweisgang dasselbe Endergebnis, wie der 1. Beweisgang. Der Beweis, dass der dezidierte Atheismus zu einem logischen Widerspruch führt, und damit falsch ist, ist ein Zwischenergebnis in diesem Beweisgang, und begründet mit <span style="color:#FF6000">»''mathematischer Evidenz''«</span>, und unabhängig von jeder Glaubensüberzeugung, den, von LEIBNIZ gesuchten, Möglichkeitsbeweis für die Existenz GOTTES im Argument des Erzbischofs, und bestätigt damit die Sinnhaftigkeit des GOTT-Glaubens. Einmal Axiom-1 und zweimal Axiom-2 sichern hier das Ergebnis des Kalküls ''':''' das Möglichkeits-Korollar-1 ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span>''':''' <span style="color:#FF6000">»''Es ist definitiv möglich, dass es den GOTT der Christen gibt''«</span>. Diese zwei Axiome sind die einzigen, und modal-notwendigen, d.h. die transzendentalen Voraussetzungen und Bedingungen für das Endergebnis ''':''' der Widerspruchsfreiheit und Sinnhaftigkeit des Glaubens der Christen an GOTT; <span style="color:#00B000">(dasselbe gilt natürlich auch für die <span style="color:#4C58FF">„theologische“</span> Weltanschauung jeder monotheïstischen Religion '''!''' Dem Erzbischof ANSELM ging es damals nur um seinen Glauben an GOTT.)</span>. Die Logik-Regel <span style="color:#FF6000"><span style="font-family: Times;"><big>„ex falso sequitur quotlibet, etiam verum“</big></span></span>, <span style="color:#00B000">(‚Aus Falschem folgt irgendetwas, auch Wahres‘)</span>, ist der scholastische Ausdruck für die ‚Implikation‘ <span style="color:#00B000">(Folgerung)</span> von Aussagen, die nur dann falsch, <span style="color:#4C58FF">— F —</span> ist, wenn das Antezedens wahr, <span style="color:#4C58FF">— W —</span>, und die Konsequenz falsch, <span style="color:#4C58FF">— F —</span> ist. Andernfalls ist sie immer wahr, <span style="color:#4C58FF">— W —</span>, auch wenn die Voraussetzung falsch, <span style="color:#4C58FF">— F —</span> ist ''':''' ‚Modern‘ darstellbar durch die ‚Wahrheitswertetafel‘ für die ‚materiale Implikation‘, <span style="color:#4C58FF">— ,(A → B)‘ —</span> <span style="color:#FF6000">„wenn A, dann B“</span>. Damit ist auch der <span style="color:#4C58FF">[ Modus tollendo tollens ] :: [ A → B, ¬B ├ ¬A ] </span> verstehbar; <span style="color:#00B000">(vgl. die vierte Zeile der ‚materialen Implikation‘)</span>. Der positive hypothetische Syllogismus ''':''' <span style="color:#4C58FF">[ Modus ponendo ponens ] :: [ A → B, A ├ B ] </span> ist aus der ersten Zeile ablesbar. Die folgende Tabelle gibt für jeden ,Wahrheitswert‘ der Aussagen <math>A</math> und <math>B</math> das Resultat einiger zweiwertiger Verknüpfungen an ''':''' {|class="wikitable hintergrundfarbe2" style="text-align:center;" |- !colspan="2"|''Belegung''!!Konjunktion!!Disjunktion!!materiale<br /> Implikation!!Äquivalenz<br /> Bikonditional!!kopulative<br /> Konjunktion |- !<math>A</math> !<math>B</math> !<math>A</math> und <math>B</math> !<math>A</math> oder <math>B</math> !wenn <math>A</math> dann <math>B</math> !sowohl <math>A</math> als auch <math>B</math> !entweder <math>A</math> oder <math>B</math> |- !W!!W |W||W||W||W||F |- !W!!F |F||W||F||F||W |- !F!!W |F||W||W||F||W |- !F!!F |F||F||W||W||F |} <span style="color:#00B000">(Eine ‚Konjunktion‘ ist nur dann ,wahr‘, wenn beide Aussagen einer ‚Konjunktion‘ wahr sind. Eine ‚kopulative Konjunktion‘ ist nur dann ,wahr‘, wenn entweder die eine, oder die andere Aussage der ‚kopulativen Konjunktion‘ wahr ist. Es besteht also eine Wenn-Dann-Verbindung zwischen beiden Aussagen — eine ,Kopplung‘. Das ist die logische Grundlage von Axiom-1 im GÖDEL-Formalismus)</span> Um das Widersprüchliche der ,Annahme‘ nachzuweisen, dass positive Eigenschaften ,nicht konsistent‘ seien, <span style="color:#00B000">(im 1. Beweisgang)</span>, bzw. um das Unlogische und Sinnwidrige der ,Annahme‘ klarzustellen, es sei ,unmöglich‘, dass es einen GOTT gibt, <span style="color:#00B000">(hier, in der Widerlegung)</span>, verwendet das GÖDEL-Kalkül den Gegensatz ''':''' wahr, <span style="color:#4C58FF">— W —</span>, falsch, <span style="color:#4C58FF">— F —</span>, zwischen der dritten und vierten Zeile der Wahrheitswertetafel, für zwei ,wahre‘ <span style="color:#4C58FF">— W —</span> ,materiale Implikationen‘, in denen die Voraussetzung jeweils falsch, <span style="color:#4C58FF">— F —</span>, ist, entsprechend der Regel <span style="color:#FF6000"><span style="font-family: Times;"><big>„ex falso, <span style="color:#4C58FF">— F —</span>, sequitur quotlibet, <span style="color:#4C58FF">— F —</span>, etiam verum, <span style="color:#4C58FF">— W —</span>“</big></span></span>, jeweils mit der Hilfe von Axiom-1 und Axiom-2, in einer <span style="font-family: Times;"><big>,Reductio ad absurdum‘</big></span>; hier unabhängig von jeder Glaubensüberzeugung. Im Gegensatz dazu, wird, <span style="color:#00B000">(im 2. Beweisgang)</span>, aus dem Glauben an GOTT, auch mit einer <span style="font-family: Times;"><big>,Reductio ad absurdum‘</big></span>, speziell mit Axiom-1, das Widersprüchliche in der ,Annahme‘ nachgewiesen, es gäbe in GOTT <span style="color:#FF6000">»''keine Vollkommenheit, nichts Positives, nichts Perfektes''«</span>, d.h. keine ,Transzendentalia‘. In dieser <span style="font-family: Times;"><big>,Reductio ad absurdum‘</big></span>, im 2. Beweisgang, wird vorausgesetzt <span style="color:#00B000">(,angenommen‘)</span> ''':''' es gibt den GOTT der Christen, <span style="color:#00B000">(als Prämisse :01:)</span>, der ,unvergleichlich‘ und ,einzigartig‘ ist, und in dem auch alle ,Transzendentalia‘ <span style="color:#FF6000">„koinzident“</span> ,eins‘ sind, entsprechend Axiom-2. Für KANT entsteht ein Widerspruch in den Prädikaten eines Satzes. ::<span style="color:#FF6000">»</span> ''Wenn ich das Prädicat in einem identischen Urtheile aufhebe'', <span style="color:#00B000">[ durch eine Negation ]</span>, ''und behalte das Subject, so entspringt ein Widerspruch''. <span style="color:#00B000">[ Wenn ich sage ''':''' ,''GOTT ist nicht allmächtig''‘, entsteht ein Widerspruch zur richtigen Aussage ''':''' ,''GOTT ist allmächtig''‘. ]</span> … ''Wenn ihr aber sagt ''':''' ,GOTT ist nicht‘, so ist weder die Allmacht, noch irgendein anderes seiner Prädicate gegeben; denn sie sind alle zusammt dem Subjecte aufgehoben'', <span style="color:#00B000">[ negiert ]</span>, ''und es zeigt sich in diesem Gedanken nicht der mindeste Widerspruch.'' <span style="color:#FF6000">«</span><ref>vgl. ‚''<span style="font-family: Times;"><big>Kritik der reinen Vernunft</big></span>''‘, Seite 398f; https://www.korpora.org/kant/aa03/398.html</ref> Es ist richtig, wie KANT sagt, der Widerspruch entsteht nicht in dem Gedanken ''':''' <span style="color:#FF6000">»</span>''GOTT ist nicht''<span style="color:#FF6000">«</span>. GÖDEL zeigt daher, dass der Widerspruch erst dann entsteht, wenn von der Annahme ausgegangen wird ''':''' ''<span style="color:#FF6000">»</span>Es ist unmöglich, dass GOTT ist''<span style="color:#FF6000">«</span>. Daraus folgt dann ,regulär‘, mit Hilfe von Axiom-1 und Axiom-2, <span style="color:#00B000">(d.h. mit den Theoremen von den Transzendentalien)</span>, die logische ,Möglichkeit‘ GOTTES, unabhängig von jeder Glaubensüberzeugung. Wie LEIBNIZ klar erkannt hat, muss zuerst, aus dem Widerspruch des Gegenteils, die logische ,Möglichkeit‘, <span style="color:#00B000">(die Konsistenz)</span>, der Existenz GOTTES bewiesen werden ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span>, bevor daraus die reale ,Notwendigkeit‘ GOTTES abgeleitet werden kann ''':''' <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span>, dessen ,Existenz‘ jedoch, aus dem ,Glauben‘, im Voraus, schon angenommen worden ist. Dieser Sachverhalt ist das ausschließliche Spezifikum GOTTES, <span style="color:#00B000">(das <span style="color:#FF6000">»''Privilegium der Gottheit allein''«</span>)</span>, und gilt nur bei GOTT, als dem Unvergleichlichen und Einzigartigen. Dieses ,Spezifikum‘ wird im Theorem ANSELMS abgebildet ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx→□∃xGx'''‘ —</span>, auf Grund von Axiom-2, das den inneren Zusammenhang, die Koinzidenz auch von ,Möglichkeit‘ und ,Notwendigkeit‘ im Unendlichen, GOTT, erkennen lässt. Bis Zeile 10, im 3. Beweisgang, reicht der Geltungsbereich der ,modal‘-frei gewählten Kalkül-Prämisse :01:, der ,methodologische‘ GOTT-Glaube. In Zeile 11 liegt der ,Schwerpunkt‘ des ontologischen Beweises dann aber am, — modal als notwendig — ,bewiesenen‘ Widerspruch des Gegenteils zum GOTT-Glauben, <span style="color:#00B000"> (formal-syntaktisch dargestellt als widerspruchfreies Antezedens, <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span>, dem Möglichkeits-Korollar-1 aus dem 1. Beweisgang)</span>, und nicht mehr am ,angenommenen‘ GOTT-Glauben der Kalkül-Voraussetzung, <span style="color:#00B000">(nun dargestellt als Konsequenz <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span> im Theorem ANSELMS)</span>. Das Möglichkeits-Korollar-1 muss jetzt immer, wie folgt, gelesen werden ''':''' <span style="color:#FF6000">»''Es ist <u>widerspruchfrei</u> möglich, dass GOTT ist''«</span>. Damit hat er, — angeregt durch LEIBNIZ, und mit ihm —, die fast einhellig akzeptierte Fehldeutung des ontologisch-<span style="color:#4C58FF">„theologischen“</span> Arguments ANSELMS für GOTT durch gewichtige philosophische, <span style="color:#00B000">(KANT<ref>GOTT ist absolut einzigartig und unvergleichlich. KANT macht GOTT jedoch zu einem ,Ding‘ unter den vielen ,Dingen‘ dieser Welt, indem er die Existenz, bzw. das ,Sein‘ GOTTES mit dem ,Sein der Dinge‘ gleich setzt. Eine solche Gleichsetzung ist bei GOTT unangebracht und daher unzulässig! KANT verkennt damit die Einzigartigkeit und Besonderheit GOTTES. Das ,Sein‘ der Dinge ist, — wie KANT sagt —, kein ,reales Prädikat’, d.h. Existenz ist keine Eigenschaft. Jedoch in GOTT ist ,Sein‘ ein ,reales Prädikat‘, d.h. Existieren ist ,real‘ die Wesenseigenschaft GOTTES, denn GOTT ist der, der für uns, — aus Liebe —, immer schon ,da‘ ist ''':''' in der ,Hypostatischen Union‘, sowohl als GOTT von Ewigkeit zu Ewigkeit, als auch als Mensch in unserer Zeitlichkeit. Das ist das, was GOTT für uns ausmacht —, sein Wesen.</ref>)</span>, und <span style="color:#4C58FF">„theologische“</span>, <span style="color:#00B000">(THOMAS<ref>GOTT ist absolut einzigartig und unvergleichlich. THOMAS unterscheidet die ,Natur GOTTES‘ nicht von der ,Natur der Dinge‘, indem er die ,Natur‘ des GOTTES ANSELMS irrtümlich mit der ,Natur‘ der Dinge gleich setzt. Damit reiht er GOTT unter die vielen Dinge unserer Welt ein, indem er für den GOTT ANSELMS annimmt ''':''' GOTT ,esse in rerum natura‘, d.h. wörtlich, dass der GOTT ANSELMS in der ,Natur‘ der Dinge existiert, <span style="color:#00B000">(was ANSELM nie gesagt hat)</span>. Eine solche Gleichsetzung ist bei GOTT unangebracht und daher unzulässig! Die ,zeitlose-überzeitliche‘ Wirklichkeit, (Natur), GOTTES ist völlig verschieden und unabhängig von der zufälligen Wirklichkeit, (die ,Natur‘), unserer ,raum-zeitlichen‘ Welt. Daher ist sie mit dieser auch nicht vergleichbar. Thomas verkennt damit die Einzigartigkeit und Besonderheit GOTTES.</ref>)</span>, Autoritäten zurechtgerückt, welche die Einzigartigkeit und Unvergleichlichkeit des Unendlichen, GOTT, bei ihrer Beurteilung des Theorem ANSELMS nicht berücksichtigt, sondern den Unendlichen, <span style="color:#00B000">(irrtümlich)</span>, unter die endlichen Dinge unserer Welt eingereiht haben. GÖDEL hat mit dem bewiesenen Widerspruch des Gegenteils zum GOTT-Glauben, den Beweis für die <span style="color:#FF6000">»''mathematische Evidenz''«</span> des Theorem ANSELMS geliefert, was, nach LEIBNIZ, für die Akzeptanz dieses Theorems noch gefehlt hat. Das Theorem ANSELMS besagt universell ''':''' Die <span style="color:#FF6000">»''theologische Weltanschauung''«</span> der Juden, Christen und Muslime, <span style="color:#00B000">(und des ägyptischen Pharaos ECHNATON und seiner Frau NOFRETETE)</span>, die ,annehmen‘, dass es mit ,Notwendigkeit‘ <span style="color:#4C58FF">— ‚'''□'''‘ —</span> <span style="color:#00B000">(nur)</span> einen GOTT gibt, ist logisch richtig und <span style="color:#FF6000">»''mathematisch evident''«</span>, weil es <u>ohne Widerspruch</u> ,denkbar‘ <span style="color:#4C58FF">— ‚'''◇'''‘ —</span> ist, dass es GOTT gibt ''':''' Nicht mehr und nicht weniger, <span style="color:#FF6000">»''rein verstandesmäßig, (ohne sich auf den Glauben an irgendeine Religion zu stützen)''«</span>. Es geht hier bei GÖDEL nicht um Theoriefindung oder ähnliches. GÖDEL ist kein ,spekulierender‘ Theoretiker. GÖDEL ist Logiker und Mathematiker. Was er sagt, ist mathematisch wahr und logisch richtig. Wenn er sagt, dass die Aussage ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ — »''wahr''«</span> ist ''':''' <span style="color:#FF6000">»''es ist möglich, dass es Gott gibt'' ''':''' ''das ist ,wahr‘ wegen Axiom-2 (und Axiom-1)''«</span>, dann spricht er hier von der mathematischen Wahrheit. Logischerweise ist dann die konträre Aussage ''':''' <span style="color:#4C58FF">— ‚'''¬◇∃xGx'''‘ — »''falsch''«</span> ''':''' <span style="color:#FF6000">»''es ist nicht möglich, dass es einen Gott gibt''«</span>, und zwar mathematisch falsch, weil sich aus dieser Aussage ein Widerspruch ergibt. Jeder, der die mathematische Logik GÖDELS lesen kann, kann das sehen und verstehen ''':''' Das Zwischenergebnis, <span style="color:#00B000">(Term :20:)</span>, in dieser Kalkül-Ableitung, die logische Konsequenz aus der Annahme des dezidierten Atheismus, es sei unmöglich, dass es GOTT gibt, ist der faktische, nachprüfbare, und für jeden Menschen sichtbare Beweis dafür, dass diese Annahme in einen Widerspruch mündet, und damit falsch und unlogisch ist. Das bedeutet, es ist eine Tatsache, bzw. es ist Faktum, dass der Atheismus, — mit <span style="color:#FF6000">»''mathematischer Evidenz''«</span> —, wirklich falsch und unlogisch ist, und daher, mit Recht, als ,Unsinn‘ bezeichnet werden darf '''!''' Das ist nicht bloß als eine Theoriefindung, oder als eine Interpretation eines Autors zu verstehen. Das ist vielmehr genau so wahr und <span style="color:#FF6000">»''mathematisch evident''«</span>, wie, dass zwei mal zwei vier ergibt, und wirklich genau so logisch richtig, wie, dass die Erde sich um die Sonne dreht. Das ist gerade das Überraschende und Unerwartete am Gödel-Kalkül. Es geht hier nicht mehr um Theoriefindung oder Interpretationen, denen man zustimmen kann oder nicht. Es geht hier <span style="color:#FF6000">»''rein verstandesmäßig''«</span> um mathematisch-logische Fakten. Damit steht GÖDEL, in seiner Bedeutung, in gewisser Weise, neben KOPERNIKUS, weil seine Kalkül-Ergebnisse, wie die Berechnungs-Ergebnisse dieses Pioniers der damaligen Zeitenwende, heute, in unserem Äon, ebenfalls mit eingefleischte Vorurteile aufräumen, ohne aber, dass GÖDEL für sich selbst, im Glauben, logisch konsequent gewesen wäre. <span style="color:#00B000">(Er ist sich der Tragweite und der Konsequenzen seiner <span style="color:#4C58FF">„axiomatischen Theologie“</span> anscheinend nicht bewusst gewesen, wenn er sagt ''':''' Man sei heute noch <span style="color:#FF6000">»''weit davon entfernt, das theologische Weltbild wissenschaftlich begründen zu können''«</span>, nachdem sein Kalkül das <span style="color:#FF6000">„atheistische Weltbild“</span> fundamental ins Wanken gebracht und als irrationalen ,Unsinn‘ entlarvt hat. Sein Kalkül ,beweist‘ ( ╞ ) indirekt, dass das <span style="color:#FF6000">„theologische Weltbild“</span>, im Beweisgang ,Widerlegung‘, aus dem Widerspruch des Gegenteils, mit <span style="color:#FF6000">»''mathematisch-logischer Evidenz''«</span>, offensichtlich doch, wissenschaftlich begründet werden kann)</span>. ---- Kurt GÖDEL ist auch deswegen ein Ausnahmelogiker. ---- ===<div class="center"><span style="color:#660066">Epilog für Skeptiker</span></div>=== Wenn man das GÖDEL-Argument genau liest, dann ist nur die Annahme ''':''' <span style="color:#FF6000"> „es ist möglich, dass es GOTT gibt“</span> bewiesen, weil aus der Annahme ''':''' <span style="color:#FF6000">„es ist unmöglich, dass es GOTT gibt“</span> ein logischer Widerspruch ableitbar ist. Die Aussage ''':''' <span style="color:#FF6000">„es gibt GOTT“</span> ist dagegen schon eine Glaubensaussage, und damit ist das auch die ,Grundannahme‘ eines gläubigen Menschen, der dann aus der ,bewiesenen Möglichkeit‘, dass es Gott gibt, ableiten kann ''':''' <span style="color:#FF6000">»''es gibt GOTT wirklich''«</span>, wenn er will ''':''' <span style="color:#FF6000">»''Es stimmt also, was ich glaube '''!''''' «</span> Das ist das Argument ANSELMS, der ein christlicher Amtsträger war, und der daher von dieser Grundannahme auch ausgeht. Solange in den Voraussetzungen des Möglichkeitsbeweises im GÖDEL-Kalkül kein Widerspruch nachweisbar ist, und solange in der logischen Durchführung dieses Beweises keine schweren Mängel festgestellt werden können, ist das Ergebnis des Möglichkeitsbeweises, wie GÖDEL ihn durchgeführt hat, korrekt, und die Folgerungen daraus, logisch richtig, dass es sich hier um <span style="color:#FF6000">»''mathematische Evidenz''«</span> handelt, <span style="color:#00B000">(z. B. wie 2 x 2 = 4)</span>. Aber niemand ist gezwungen, aus der Möglichkeit, dass es GOTT gibt, daraus zu schließen, dass es GOTT auch mit Notwendigkeit gibt, wie das im Argument ANSELMS geschieht, außer, er akzeptiert auch die Grundannahme, dass es den Unendlichen und Unvergleichlichen tatsächlich gibt. Dann kann er mit LEIBNIZ, der selbst an GOTT geglaubt hat, mit Bestimmtheit sagen ''':''' <span style="color:#FF6000">»''gesetzt, dass GOTT möglich ist, so ist er, was das Privilegium der Gottheit allein ist''«</span>, weil GÖDEL mit seinem Kalkül den noch ausstehenden Beweis der Widerspruchsfreiheit dafür geliefert hat. Wenn Du den 3. Beweisgang des GÖDEL-Kalküls genauer anschaust, dann siehst Du, dass der Konsequenz-Teil im Argument ANSELMS, der identisch ist mit dem Term in der Zeile 10, <span style="color:#4C58FF">— ‚'''□∃xGx'''‘ —</span>, immer noch formallogisch abhängig ist von der methodologischen Glaubens-Prämisse, Term :01:, <span style="color:#4C58FF">— ‚'''Gx'''‘ —</span> ''':''' <span style="color:#FF6000">»''das'' <span style="color:#4C58FF">‚'''x'''‘</span> ''steht für den Gott der Christen''«</span>. Diese Abhängigkeit ist bis zur Zeile 10 offensichtlich und logisch korrekt. <span style="color:#00B000">(Man könnte nach dieser Zeile, ohne Weiteres, ,regulär‘ die <span style="color:#FF6000">„logische Implikation”</span> :: <span style="color:#4C58FF">[├ A ├ B ╞ A→B ]</span> mit Term :01: und Term :10: als ein mögliches Korollar bilden ''':''' <span style="color:#4C58FF">— ‚'''Gx→□∃xGx'''‘ — </span>)</span>. Das bedeutet, der Konsequenz-Teil im Theorem ANSELMS, der in diesem ,regulär‘-möglichen Korollar an zweiter Stelle steht, ist damit in seiner Formal-Struktur offensichtlich ,regulär‘ von der Glaubens-Prämisse, Term :01:, abhängig, d.h. er ist der Ausdruck einer Glaubensüberzeugung. Im Theorem ANSELMS steht er jetzt, in der Zeile 11, als Konsequenz-Teil auch an zweiter Stelle, hat aber nicht mehr seine Glaubens-Prämisse als notwendige Bedingung an erster Stelle vor sich, wie im ,regulär‘-möglichen Korollar. Jetzt steht eine neue und andere Voraussetzung als Begründung vor ihm. Der Schwerpunkt des Argument ANSELMS liegt damit am Begründungs-Teil des ANSELM-Theorems, der jetzt die erste Stelle im Theorem einnimmt ''':''' <span style="color:#4C58FF">— ‚'''◇∃xGx'''‘ —</span> ''':''' <span style="color:#FF6000">»''es ist möglich, dass es GOTT gibt''«</span>, der erst dadurch entstanden ist, und davon abhängig ist, weil sein Gegenteil ''':''' <span style="color:#4C58FF">— ‚'''¬◇∃xGx'''‘ —</span> ''':''' <span style="color:#FF6000">»''es ist unmöglich, dass es GOTT gibt''«</span>, zu einem Widerspruch geführt hat. Dieser Begründungs-Teil, das Antezedens, im Argument ANSELMS, ist daher nicht mehr von der methodologischen Glaubens-Prämisse, Term :01:, abhängig, sondern nur vom Axiom-1, der Widerspruchsfreiheit, und von der paarweisen, mathematischen Äquivalenz beliebiger positiver Eigenschaften im Axiom-2, die im 1. Beweisgang, bzw. im Beweisgang ,Widerlegung‘, mit dem <span style="color:#4C58FF">[ Modus tollendo tollens ] :: [ A → B, ¬B ├ ¬A ]</span>, die Widerspruchsfreiheit der Möglichkeit des GOTT-Glaubens mit Notwendigkeit herbeigeführt haben. Daraus ergibt sich eine logische Verschiebung in der Argumentationskette, denn dieser Begründungs-Teil, der jetzt die Widerspruchsfreiheit für den Konsequenz-Teil liefert, ist selbst unabhängig und frei von jeder Glaubensüberzeugung. Weil widerspruchsfrei und <span style="color:#FF6000">»''mathematisch evident''«</span>, muss er als logische Begründung für die Widerspruchsfreiheit und als Beweis für die <span style="color:#FF6000">»''mathematische Evidenz''«</span> des Konsequenz-Teils gelesen werden, und damit bestätigt er die Widerspruchsfreiheit und Sinnhaftigkeit der Glaubensüberzeugung eines gläubigen Menschen, <span style="color:#00B000">(was auch das Ziel ANSELMS war)</span>. Das heißt also ''':''' der Glaube dieses Menschen ist widerspruchsfrei und sinnvoll, und enthält keinen Zirkelschluss, weil sein Gegenteil, der Nicht-GOTT-Glaube, zu einem Widerspruch führt; <span style="color:#00B000">(das hat GÖDEL mit seinem Kalkül-System bewiesen, dessen Argumentationskette mit einem Computer-Programm, dem sog. ,Theorembeweiser‘, überprüft worden ist, und als <span style="color:#FF6000">»''nachweisbar korrekt''«</span> befunden wurde)</span>. Das Theorem ANSELMS beweist, nach GÖDEL, dass der Glaube an GOTT, mit <span style="color:#FF6000">»''mathematische Evidenz''«</span> notwendig widerspruchsfrei und sinnvoll ist, weil der Nicht-GOTT-Glaube notwendig zu einem Widerspruch führt. <u>Das Theorem beweist jedoch nicht, dass die Existenz GOTTES notwendig ist</u>, <span style="color:#00B000">(wie es fast immer fälschlich gelesen wurde und wird)</span>, sondern, das Theorem ANSELMS geht davon aus, als nicht hinterfragtes Faktum, dass GOTT notwendig, schon immer existiert, und beweist, mit dem GÖDEL-Kalkül, dass diese Glaubens-Annahme widerspruchsfrei und sinnvoll, und <span style="color:#FF6000">»''mit allen bekannten Tatsachen durchaus vereinbar ist''«</span>, wie GÖDEL abschließend sagt. GOTT hat es ja auch nicht ,nötig‘, bewiesen zu werden. Für den Erzbischof ANSELM war die Existenz GOTTES, überall und jederzeit, die ungefragte und für ihn die selbstverständlichste Voraussetzung aller seiner Bemühungen, in seinem Leben, und in seinem Beruf als christlicher Amtsträger, und auch als Theologe in den philosophischen Überlegungen über seinen Glauben. Mit diesen Überlegungen hat er, mit GÖDEL, bewiesen ''':''' Glaube ist nicht irrational, kein Sprung ins Unbekannte, sondern eine freie, vernünftige Entscheidung. Glaube ist rational und vertrauenswürdig. Zusammengefasst heißt das Ergebnis dieser Bemühungen ANSELMS ''':''' Wenn Du an GOTT glauben willst, dann kannst Du das unbedenklich tun, denn Dein Glaube ist auch logisch in der <u>bewiesenen Möglichkeit</u>, dass es GOTT geben kann, begründet, und damit ist er widerspruchsfrei, sinnvoll und kein Zirkelschluss. Dein Glaube an GOTT beruht jedoch, nach wie vor und in erster Linie, auf Deiner freien Entscheidung für GOTT, und nicht auf dem Zwang einer ,logischen‘ Argumentation. Wenn Du nicht an GOTT glauben willst, dann <u>musst Du, und sollst Du, auch nicht deswegen</u> an GOTT glauben, weil der Nicht-GOTT-Glaube zu einem Widerspruch führt, und damit falsch und unlogisch ist. Denn der Glaube an GOTT muss immer eine freie und Deine ganz persönliche Entscheidung für GOTT sein und bleiben. Niemand darf zum Glauben an GOTT gezwungen werden, auch nicht mit ,logischen‘ Argumenten. Warum '''?''' Weil GOTT die Liebe ist '''!''' Und die Liebe duldet keinen Zwang '''!''' Zum Abschluss, und für eine bessere Verständlichkeit dieser Studie, hat die KI, der ich diese Studie für die Erstellung eines Podcast übergeben habe, eine, — sogar für Kinder —, verständliche Metapher kreiert. Sie sagt, man stelle sich vor ''':''' Es sei irgendwo ein ,Schatz’ vergraben, und es gäbe auch eine ,Schatzkarte’ für diesen ,Schatz’. Kurt GÖDEL ist nun gekommen, und hat mit seinem Kalkül bewiesen, dass diese ,Schatzkarte’ korrekt ist und fehlerfrei. Ob aber jemand, mit Hilfe dieser ,Schatzkarte’ auf ,Schatzsuche’ gehen will oder nicht ''':''' das ist und bleibt jedem selbst überlassen, und ist immer eine freie, und ganz persönliche Entscheidung. Damit hat die KI erstaunlich treffend, sowohl die Bedeutung, als auch die reale Funktion des GOTT-Glaubens in der Lebens-Wirklichkeit unserer Welt und Zeit charakterisiert, in Übereinstimmung mit der Gleichniserzählung JESU vom ,Schatz im Acker’; <small><span style="color:#00B000">( vgl. {{Bibel | Matthäus-Evangelium |13|44|EU}} )</span></small>. Der ,Schatz’ ist die <span style="color:#FF6000">„<span style="font-family: Times;"><big>Βασιλεία του Θεού</big></span>“</span><span style="color:#00B000"> | ,Basileía tou Theoú’</span>, d.h. das <span style="color:#CC66FF">»''Königtum GOTTES''«</span>, oder auch das <span style="color:#CC66FF">»''Himmelreich''«</span>. Die ,Schatzkarte’ ist der Glaube an GOTT. Die ,Schatzsuche’ ist der Weg des Glaubens in der Nachfolge JESU, der uns den Weg zeigt zum Ziel, zur Erfüllung aller unserer Sehnsüchte und Wünsche. ---- ---- ;Fußnoten <references /> mm0uhjqsw1hs73am415ppwmlmdaa51m Programmieren in C/C++: Grundlagen 0 118048 1090553 1090549 2026-09-08T12:43:51Z D. Justen 102048 Formulierung geändert 1090553 wikitext text/x-wiki <noinclude> {{Navigation zurückhochvor buch |zurücklink=Programmieren in C/C++: Toolchain/Entwicklungsumgebung |zurücktext=Toolchain/Entwicklungsumgebung |hochlink=Programmieren in C/C++ |hochtext=Inhaltsverzeichnis |vorlink=Programmieren in C/C++: Datentypen |vortext=Datentypen}} </noinclude> <!-- Falls du ein automatisch erstelltes Inhaltsverzeichnis nicht willst, ersetze das nachfolgende TOC durch NOTOC --> <!-- Einklammerung mit noinclude, damit dieses nicht in der Druckversion erscheint --> <noinclude>__TOC__</noinclude> Die Programmiersprache C/C++ beinhaltet mehrere Sprachen/ Syntaxen: * C-Syntax * Präprozessor-Syntax * Printf/Scanf Formatstring Syntax * Terminal Emulation * Compiler/Linker Anweisungen Letztere beiden werden nur rudimentär in dieser Vorlesung/diesem Skript behandelt. Alle anderen sind Bestandteil dieser Vorlesung. In diesem Kapitel sollen zunächst allgemeine Eigenschaften der Sprache, der grundlegende Syntax und die Kontrollstrukturen erklärt werden. Bei vielen Erklärungen sind Code-Beispiele vorhanden. Da man aus Fehlern am meisten lernt, sind zum Teil auch negative Beispiele enthalten. Für ein besseres Verständnis empfiehlt es sich, Code-Beispiele selbst nachzuvollziehen.<br /> Sofern sich die Eigenschaften auf eine bestimmte C-/C++- oder Compiler-Version beziehen, wird dies gesondert vermerkt. == Zeichensatz == Der Syntax von C nutzt die unteren 128 Zeichen des ASCII Zeichensatzes. Da UTF-8 in den ersten 128 Zeichen deckungsgleich zu ASCII ist, kann auch dieser zur Erstellung des Source Codes genutzt werden. Zeichen außerhalb dieses gültigen Zeichensatzes können folglich nur in Strings oder Kommentaren vorkommen. Werden Zeichen außerhalb der unteren 128 Zeichen in Strings genutzt, so gilt Folgendes zu berücksichtigen: * Die String-Funktionalitäten der Standard-C Library gehen von dem regulären ASCII Zeichensatz aus, so dass z.B. die Suche, der Vergleich oder die Konvertierung fehlschlagen kann * Strings werden oftmals in Verbindung mit printf() genutzt, d.h. auf der Standardausgabe ausgegeben. Der verwendete Zeichensatz sollte hier identisch zum verwendeten Zeichensatz der Terminal-Emulation sein! == Kommentarzeichen == Kommentare dienen dazu, den Source Code mit zusätzlichen Hinweisen zu versehen, so dass die Intension der Anweisungen sichtbar wird. Kommentarzeichen werden durch den Compiler vor dem eigentlichen Übersetzungsdurchlauf entfernt und durch ein Leerzeichen ersetzt [C11 6.4.9]. Innerhalb von Strings wird nicht nach Kommentarzeichen gesucht. <code> Syntax: /* */ </code> Blockkommentar zum Kommentieren eines Bereiches, auch über mehrere Zeilen hinweg. Dieses Kommentarzeichen kann nicht verschachtelt werden, d.h. '*/' beendet die Kommentierung, unabhängig von der Anzahl der zuvor geöffneten Kommentierungen! <code> Syntax: // </code> Zeilenkommentar zum Kommentieren bis zum Zeilenende (wurde in der Programmiersprache BCPL definiert, aber nicht von C, sondern erst von C++ übernommen). Sollen größere Bereiche auskommentiert werden, so empfiehlt sich die Nutzung der Präprozessoranweisung #if 0 ... #endif. Beispiele: <syntaxhighlight lang="C"> /* Blockkommentar mit zwei öffnenden Klammern /* über mehrere Zeilen, nicht verschachtelt */ //Zeilenkommentar /* Kleiner Bereich zum auskommentieren */ #if 0 Großer Bereich zum auskommentieren #endif </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> /* Blockkommentar mit zwei öffnenden Klammern /* über mehrere Zeilen, nicht verschachtelt Compiler-Warning nur aufgrund des Compiler-Schalters -Wall! */ //Zeilenkommentar /* Kleiner Bereich zum auskommentieren */ #if 0 Großer Bereich zum auskommentieren #endif int main(int argc,char *argv[]) { return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Namenskonventionen == Folgende Regeln gelten bzgl. der Benennung von Variablen und Funktionen: * Variablen und Funktionsnamen können aus Buchstaben, Zahlen und dem Unterstrich bestehen. Sie müssen mit einem Buchstaben oder einem Unterstrich beginnen * Seit C95 können weitere Zeichen aus dem Universal Coded Character Set (UCS) genutzt werden [C11 D.1] * C ist Case sensitiv, d.h. es wird zwischen Groß- und Kleinbuchstaben unterschieden * Schlüsselwörter können nicht für Variablen/Funktionsnamen/Datentypen genutzt werden Namenskonventionen von Libraryfunktionen: * In C (und C++) sind Schlüsselwörter und Standardlibraryfunktionen zumeist in Kleinbuchstaben geschrieben. In der C-Standardlibrary werden oftmals verkürzte Ausdrücke (z.B. isalnum() (zum Testen ob ein Zeichen ein Buchstaben oder ein Digit ist) und in C++ der Unterstrich als Worttrenner (z.b. out_of_range) genutzt * Makros (siehe Kap.[[Programmieren in C/C++: Präprozessor | Präprozessor]]) werden per Konvention in GROSSBUCHSTABEN und ggf. mit Unterstrich als Worttrenner geschrieben. * Namen beginnend mit doppelten Unterstrich oder beginnend mit einem Unterstrich gefolgt von einem Großbuchstaben (z.B. __LINE__ _Reserved) sind für den Compiler und der Standard-C-Library vorbehalten und sollten im eigenen Programm nicht benutzt werden. == Zeilenfortsetzung == Mit dem Backslash Operator (gefolgt von einem Zeilenende) kann eine Zeile in der nächsten Zeile fortgesetzt werden. Der Compiler löscht das \-Zeichen mit anschließendem Zeilenende und ersetzt dies durch nichts. Dies ist insbesondere bei Anweisungen notwendig, die am Ende der Zeile abgeschlossen sein müssen (z.B. Strings, Makros). Beispiele: <syntaxhighlight lang="c"> char str1[]="Strings müssen am Ende abgeschlossen sein so dass dies ein Fehler ist"; char str2[]="Dies\ ist ein Test"; //Vorsicht, führende Leerzeichen vor 'ist' //bleiben erhalten! /*mehrzeiliges Makro*/ #define MAX(a,b) (a>b?\ b: \ a) //Dies ist ein Zeilenkommentar \ welcher in dieser Zeile fortgesetzt wird /\ * dies ist ein Blockkommentar*\ / //hinter der Zeilenfortsetzung darf nur ein CR/LF folgen #define MAX2(a,b) \ //so dass hier kein Kommentar folgen darf a>b?a:b </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> char str1[]="Strings müssen am Ende abgeschlossen sein so dass dies ein Fehler ist"; char str2[]="Dies\ ist ein Test"; //Vorsicht, führende Leerzeichen vor 'ist' //bleiben erhalten! /*mehrzeiliges Makro*/ #define MAX(a,b) (a>b?\ b: \ a) //Dies ist ein Zeilenkommentar \ welcher in dieser Zeile fortgesetzt wird /\ * dies ist ein Blockkommentar*\ / //hinter der Zeilenfortsetzung darf nur ein CR/LF folgen #define MAX2(a,b) \ //so dass hier kein Kommentar folgen darf a>b?a:b int main(int argc,char *argv[]) { return 0; } | execCompilerOptions=| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Innerhalb von Char-Literatoren und Strings wird '\' als Escape-Operator genutzt, welche das '\' und ein oder mehrere folgende Zeichen ersetzt (siehe Kap.[[Programmieren in C/C++: Grundlagen#Literale/Konstanten | Grundlagen:Literale/Konstanten]]). Daher darf hinter Backslash als Zeilenfortsetzungszeichen kein weiteres Zeichen folgen. == Gültigkeit/Sichtbarkeit von Variablen == Vorrangig in der objektorientierten Programmierung werden mit Namensräumen Objekte und deren Methoden/Attribute in einer Art Baumstruktur strukturiert. Dies ermöglicht eine eindeutige Ansprache von Variablen/Objekte, aber auch eine doppelte Verwendung von Methoden-/Attributnamen in unterschiedlichen Namensräumen. Ergänzend zu den Namensräumen kann mit public/private/proteced eine Zugriffsbeschränkung von Methoden/Attributen definiert werden. Die Programmiersprache C unterstützt keinen Namensraum. Zugriffsmodifikatoren werden indirekt über Header-Dateien getätigt. Hinsichtlich der Gültigkeit/Sichtbarkeit unterscheidet C folgende Bereiche [C11 6.2.1]: * Funktionen (Function Scope) * Datei (File Scope) * Block (Block Scope) * Funktionsparameter in Prototypen (Function Prototype Scope) Innerhalb eines Gültigkeitsbereiches dürfen Variablen-/Funktions-/Datentypnamen nicht doppelt genutzt werden.<br /> In der Programmiersprache C++ sind weitere Scope wie z.B. Class Scope, Enumationation Scope und ergänzend das Konzept von Namensräumen vorhanden (Beschreibung folgt). === Funktionsweite Sichtbarkeit === Eine Label-Definition (als Sprungmarke für die goto-Anweisungen) erfolgt immer mit funktionsweiter Sichtbarkeit/Gültigkeit. Die genaue Beschreibung dieses Sichtbarkeitstyps erfolgt im Rahmen des Kapitels [[Programmieren in C/C++: Grundlagen #Label + Goto|Grundlagen:Label+Goto]]. === Dateiweite Sichtbarkeit === Erfolgt eine Funktion-/Variablen-/Datentyp-Definition außerhalb eines Block-Scopes oder von Funktionsparameter, so sind diese innerhalb der gesamten Datei und bei Funktionen/Variablen ergänzend Projektweit (für alle Objektdateien) sichtbar/gültig (=&nbsp;global) (In der C-Spec unter dem Stichwort 'Linkage' beschrieben, siehe Kapitel [[Programmieren in C/C++: DatentypeSpecifier#Internal/External Linkage| DatentypeSpecifier:Internal/External Linkage]]). Alle globalen Funktionen/Variablen können von allen Dateien aus genutzt/zugegriffen werden (sofern sie zuvor deklariert wurden).<br /> Beispiel: {| class="wikitable" |- ! Datei1.c !! Datei2.c |- | <syntaxhighlight lang="C"> //Deklaration von func(), //welche in Datei2.c definiert wird extern void func(void); //Definition der Variablen global int global=0; int main(void) { func(); global++; return 0; } </syntaxhighlight> || <syntaxhighlight lang="C"> //Deklaration von global, //welche in Datei1.c definiert wird extern int global; //Definition der Funktion func() void func(void) { global++; } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Deklaration von func(), //welche in Datei2.c definiert wird extern void func(void); //Definition der Variablen global int global=0; int main(void) { func(); global++; printf("global=%d\n",global); return 0; } | datei2_c=#include <stdio.h> //Deklaration von global, //welche in example.c definiert wird extern int global; //Definition der Funktion func() void func(void) { global++; printf("func() called\n"); } | execCompilerOptions=-Wall datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Wird das Schlüsselwort 'static' der Variablen/Funktionsdefinition vorangestellt, so wird die Sichtbarkeit/Gültigkeit auf Dateiweit eingeschränkt. Variablen/Funktionen können nur innerhalb der (Objekt-) Datei genutzt werden und sind für anderen (Objekt-)Dateien unsichtbar. (Siehe Kap. [[Programmieren in C/C++: DatentypeSpecifier#Internal/External Linkage|DatentypeSpecifier:Internal/External Linkage]] Internal/External Linkage) {| class="wikitable" |- ! Datei1.c !! Datei2.c |- | <syntaxhighlight lang="C"> //Dateiweite Sichtbarkeit von var1 static int var1; int main(void) { var1++; return 0; } </syntaxhighlight> || <syntaxhighlight lang="C"> //Dateiweite Sichtbarkeit von var1 static int var1; void func(void) { static int var2; //Vorsicht, static // hat hier eine andere Bedeutung var1++; } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Dateiweite Sichtbarkeit von var1 static int var1; int main(void) { var1++; printf("example.c:var1=%d\n",var1); void func(void); //Prototyp für func() func(); return 0; } | datei2_c=#include <stdio.h> //Dateiweite Sichtbarkeit von var1 static int var1; void func(void) { static int var2; //Vorsicht, static // hat hier eine andere Bedeutung var1++; printf("datei2.c:var1=%d\n",var1); } | execCompilerOptions=datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Projektweite Gültigkeit bedeutet insbesondere, dass keine doppelten Benennung von Variablen/Funktionen/Datentypen innerhalb des gesamten Projektes erlaubt sind, d.h. alle Variablen/Funktionennamen über alle Dateien/Librarys eindeutig sein müssen.<br> Beispiel 1: {| class="wikitable" |- ! Datei1.c !! Datei.2 |- | <syntaxhighlight lang="C"> #include <stdio.h> int a=1; int main(int argc,char *argv[]) { printf("Hello World %d",a); void dummy(void); //Deklaration von Dummy dummy(); return 0; }</syntaxhighlight> || <syntaxhighlight lang="C"> #include <stdio.h> int a=7; void dummy(void) { printf("Hello Again %d\n",a); } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int a=1; int main(int argc,char *argv[]) { printf("Hello World %d",a); void dummy(void); //Deklaration von Dummy dummy(); return 0; } | datei2_c=#include <stdio.h> #include <stdio.h> int a=7; void dummy(void) { printf("Hello Again %d\n",a); } | execCompilerOptions=datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Der Linker meldet beim Zusammenfügen der Objekt-Dateien, dass die Variable a bereits woanders definiert sei (multiple definition of `a';)! Beispiel 2: <syntaxhighlight lang="C"> #include <stdio.h> //fuer printf() size_t stderr int printf=7; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int printf=7; int main(int argc,char *argv[]) { return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hier meldet der Compiler eine Fehlermeldung, da das Symbol printf zu einen als Variable und zum anderen als Funktion (innerhalb der inkludierten Datei stdio.h beschrieben) genutzt wird ('printf' redeclared as different kind of symbol). === Blockweite Sichtbarkeit === Erfolgt eine Funktion-/Variablen-/Datentyp Definition innerhalb einer Funktion, als Funktionsparameter oder eines Blockes, so sind diese nur innerhalb des Blockes sichtbar/gültig (=Lokale Variable). Blöcke können verschachtelt sein, so dass das bei identischer Namensgebung innere Definitionen Vorrang haben. Ebenso haben Blockdefinitionen Vorrang vor Datei-/Projektdefinitionen (überdecken diese): {| class="wikitable" |- ! Datei1.c !! Datei2.c |- | <syntaxhighlight lang="C"> int main(void) { int var2; //var2 ist nur innerhalb //von main() sichtbar struct xyz //Datentyp ist nur innerhalb {int x,y,z;};//von main() //sichtbar/gültig extern void func(void); //Deklaration //ist nur innerhalb von //main() sichtbar/gültig func(); } void foo(void) { struct xyz var_xyz; //Fehler, da //Datentypedefinition hier nicht mehr //gültig ist! func(); //Fehler, da Deklaration //hier nicht mehr gültig ist } </syntaxhighlight> || <syntaxhighlight lang="C"> #include <stdio.h> void func(void) { int var2=1; //var2 ist //nur innerhalb von //func() sichtbar { int var2=2; //var2 ist nur innerhalb //dieses Blockes sichtbar printf("%d\n",var2); } printf("%d\n",var2); } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(void) { int var2; //var2 ist nur innerhalb //von main() sichtbar struct xyz //Datentyp ist nur innerhalb {int x,y,z;};//von main() //sichtbar/gültig extern void func(void); //Deklaration //ist nur innerhalb von //main() sichtbar/gültig func(); } void foo(void) { struct xyz var_xyz; //Fehler, da //Datentypedefinition hier nicht mehr //gültig ist! func(); //Fehler, da Deklaration //hier nicht mehr gültig ist } | datei2_c=#include <stdio.h> void func(void) { int var2=1; //var2 ist //nur innerhalb von //func() sichtbar { int var2=2; //var2 ist nur innerhalb //dieses Blockes sichtbar printf("%d\n",var2); } printf("%d\n",var2); } | execCompilerOptions=-Wall datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Sichtbarkeit von Funktionsparameter in Protypen === Soll eine Funktion aufgerufen werden, die zuvor nicht definiert wurde, so ist ein Prototyp/(Forward)deklaration der Funktion notwendig (siehe nachfolgendes Kapitel). Die Parameterliste dieses Prototyps hat seinen eigenen Gültigkeitsbereich.<br/> Beispiel: <syntaxhighlight lang="C"> int a; //a im File Scope int func(int a, int b); //a und b im Function Prototyp scope </syntaxhighlight> Hinweis: * Bei Prototypen ist die Angabe von Variablenname nicht notwendig. Die alleinige Angabe des Datentyps ist ausreichend === Zuordnung der Gültigkeitsbereiche zu globalen/lokalen Variablen === Zum einfacheren Verständnis wird im Skript von folgenden Begrifflichkeiten gesprochen: * '''Globale''' Variablen-/Funktionen-/Datentypdefinitionen → Projektweite Sichtbarkeit/Gültigkeit * '''Statisch globale''' Variable/Funktionen → Dateiweite Sichtbarkeit/Gültigkeit * '''Lokale''' Variablen/Funktionen/Funktionsparameter/Datentypen → Nur innerhalb des zugehörigen Blockes sichtbare/gültig * '''Statisch lokale''' Variablen → Nur innerhalb der Funktion sichtbar/gültig, mit der Besonderheit, dass die Gültigkeit über der Laufzeit der Funktion gilt (siehe Kap. [[Programmieren in C/C++: DatentypeSpecifier#Static Storage Class Specifier|DatentypeSpecifier:Static Storage Class Specifier]]) === Speicherzuweisung === Für die einzelnen Gültigkeitsbereiche werden im Speicher (und auch in der Objekt-Datei) unterschiedliche Speicherbereiche (Segmente) vorgehalten, d.h. der Compiler teilt den Speicher in unterschiedliche Bereiche auf und weist den Variablen/Funktionen in Abhängigkeit der Gültigkeit/Sichtbarkeit unterschiedliche Speicherbereiche zu! [[File:Zuordnung von Inhalten eines C-Programms zu Speicherbereichen (Segmenten).png|thumb|Zuordnung von Inhalten eines C-Programms zu Speicherbereichen (Segmenten)]] Zur Ermöglichung von Rekursion werden lokale Variable auf dem Stack gehandelt. Mit Aufruf einer Funktion oder öffnen eines neuen Block-Scopes wird Speicher auf dem Stack reserviert, der bei Beenden des Scopes wieder freigegeben wird. Die Speicheradresse von lokalen Variablen ist somit nicht Fix, sondern hängt von der Aufrufhierarchie ab! Globale und statisch globale Variablen werden nicht auf dem Stack gehalten, sondern bekommen einen 'festen' Speicherbereich (hier DATA/BSS/RODATA) während der gesamten Laufzeit des Programms zugewiesen. Die Adresse dieser Variablen sind somit konstant. Das genutzte Speichersegment von globalen Variablen hängen von der Art der Variablen ab. Initialisierte Variablen werden im DATA-Segment gesammelt, welcher mit dem Initialisierungswert der Variablen initialisiert wird. Nicht initialisierte globale Variablen landen im BSS-Segment, so dass diese mit Programmstart durch Füllen dieses Blockes mit 0 auf 0 gesetzt werden. Konstante globale Variablen werden im RODATA-Segment gehalten. Über das Betriebssystem kann dieser Speicherbereich auf nur Lesbar gesetzt werden. Dynamische Speicheranforderungen, resp. Speicher, dessen Gültigkeit über die Laufzeit einer Funktion hinausgeht, wird im Heap gesammelt. Für die Verwaltung dieses Speichers ist der Programmierer zuständig. Entsprechend globalen Variablen wird für Funktionen ebenfalls ein eigener Speicherbereich (TEXT Segment) vorgesehen. Im Gegensatz zu Variablen, wo im Speicher der dazugehörige Inhalt gespeichert ist, ist der Speicherinhalt von Funktionen die Maschinenanweisungen. Die Speicheradresse der Funktionen sind konstant. Hinweis: * Die Speicheradresse von sowohl globalen und statisch globalen Variablen als auch von Funktionen ist konstant und ändert sich während der Laufzeit des Programms nicht. Die Adressvergabe dieser Variablen und Funktionen erfolgt somit nicht zur Laufzeit sondern durch die Toolchain (hier der Linker). * Dieses Konzept ist allgemeingültig, gilt nicht nur für die Programmiersprache C/C++ == Definition/Deklaration(Prototyp) == Der C-Compiler ist ein Single-Pass Compiler (siehe Kap [[Programmieren in C/C++: Einführung/Literatur#Arbeitsweise eines Compilers | Einführung/Literatur:Arbeitsweise eines Compilers ]]), d.h. für den Übersetzungsvorgang wird der Quellcode einmalig eingelesen und von vorne nach hinten abgearbeitet. Dies bedingt, dass keine Vorwärtsbezüge im Quelltext enthalten sein dürfen: * keine Variable genutzt werden kann, die erst später definiert wird (da der Compiler in Abhängigkeit des Datentyps (den er dann noch nicht kennt) keine entsprechende Maschinensprachebefehle erzeugen kann) * keine Funktion aufgerufen werden kann, die erst später definiert wird (da der Compiler nicht weiß, welcher Datentyp die Übergabewerte haben und folglich keine Maschinensprachebefehle zur Konvertierung und Übergabe der Variablen erzeugen kann) * kein Datentyp genutzt werden kann (struct, union, enum, typedef), welcher erst später definiert wird (da der Compiler nicht weiß, wieviel Speicher er für die Variable reservieren muss) Eine Lösungsvariante dieser Problematik ist, im Quellcode alle Variablen/Funktionen/Datentypen/Makros zu definieren, bevor diese erstmalig genutzt werden (Funktion main() steht dann folglich am Ende des Quellcodes): <syntaxhighlight lang="C"> void foo(void) { //foo() wird vor dem ersten Aufruf definiert //Hier kein Zugriff auf var möglich! //Hier kein Zugriff auf Datentyp uchar möglich! } int var; //var wird vor dem ersten Aufruf definiert typedef unsigned char uchar; //Definition des Datentyps uchar int main(void) { foo(); //da zuvor definiert kann diese Funktion hier aufgerufen werden var++; //dito } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void foo(void) { //foo() wird vor dem ersten Aufruf definiert var++; //Hier kein Zugriff auf var möglich! uchar xyz;//Hier kein Zugriff auf Datentyp uchar möglich! } int var; //var wird vor dem ersten Aufruf definiert typedef unsigned char uchar; //Definition des Datentyps uchar int main(int argc, char *argv[]) { foo(); //da zuvor definiert kann diese Funktion hier aufgerufen werden var++; //dito } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Sollen globale Funktionen/Variablen in Datei1.c genutzt werden, die in Datei2.c definiert sind, so schlägt diese Vorgehensweise fehl. Um auch dieses zu ermöglichen, bietet C die Möglichkeiten von Prototypen/Deklarationen an. Diese teilt dem Compiler mit, wie im späteren Ablauf die Variable, die Funktion definiert wird, bzw. dass es diesen Datentyp geben wird: {| class="wikitable" |- ! Datei1.c !! Datei2.c |- | <syntaxhighlight lang="C"> //Prototyp für Variable var extern int var; //Prototyp für Funktion foo void foo(void); int main(int argc, char *argv[]) { foo(); //Compiler kann aufgrund var++; //der Prototypen diese //Aufruf in Maschinen- //sprachebefehle umsetzen } </syntaxhighlight> || <syntaxhighlight lang="C"> //Definition der Variablen var int var; //Definition der Funktion foo void foo(void) { } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Prototyp für Variable var extern int var; //Prototyp für Funktion foo void foo(void); int main(int argc, char *argv[]) { foo(); //Compiler kann aufgrund var++; //der Prototypen diese //Aufruf in Maschinen- //sprachebefehle umsetzen } | datei2_c=#include <stdio.h> //Definition der Variablen var int var; //Definition der Funktion foo void foo(void) { } | execCompilerOptions=-Wall datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Innerhalb der C-Spezifikation werden für den Umgang mit dieser Problematik die Begriffe 'Declaration' und 'Definition' genutzt. Da diese Begriffe jedoch nicht klar abgegrenzt werden und auch für viele weitere Aspekte genutzt werden, sollen in diesem Skript in Anlehnung an den Wikipedia Artikel {{w|Deklaration (Programmierung)|Deklaration (Programmierung)}} (im Absatz zur Programmiersprache C/C++) die Begriffe Definition/Deklaration wie folgt genutzt werden: ;Definition: entspricht der Belegung/Reservierung von Speicherplatz :* Bei der Definition einer Variablen wird hiermit Speicherplatz entsprechend dem Datentyp der Variable belegt: :<syntaxhighlight lang="C"> int var1; //entsprechend der Größe des Datentyps int wird //Speicherplatz für die Variable var1 reserviert int var2=4711; //Dito, ergänzend wird dieser Speicherplatz mit dem //Wert 4711 initialisiert </syntaxhighlight> :* Bei einer Funktion wird Speicherplatz zur Aufnahme der Maschinenbefehle belegt: :<syntaxhighlight lang="C"> void foo(void) { //Die Anweisungen in den geschweiften Klammern //werden in Maschinenbefehle übersetzt. D.h. die //Funktion foo() belegt Speicher, dessen Inhalt //die Maschinensprachebefehle sind } </syntaxhighlight> :* Ergänzend wird der Begriff Definition auch in Verbindung mit der Definition von neuen Datentypen genutzt! ;Deklaration/Prototyp: ist die Mitteilung an den Compiler, wie diese Variable/Funktion an einer späteren Stelle im Source-Code oder in einer anderen Source-Datei definiert wird. Auf Grundlage dieser 'vorab' Information kann der Compiler die passenden Maschinensprachebefehle für den Zugriff/Aufruf auf die Variablen/Funktion einsetzen: :<syntaxhighlight lang="C"> extern int var1; //Deklaration von var1 extern void foo(void); //Deklaration von foo() void foo(void); //Deklaration von foo() </syntaxhighlight><br /> Insbesondere bei dem Umgang mit der Deklaration gilt es Folgendes zu berücksichtigen: * Deklarationen werden entweder: :* am Anfang einer C-Datei geschrieben, so dass Funktionen/Variablen im Zugriff stehen, die erst später in der C-Datei definiert werden (entspricht dann der Private Anweisung in anderen Sprachen) :* in Header-Dateien geschrieben, so dass diese Variable/Funktionen für alle sichtbar sind, welche diese Header-Datei einbinden (entspricht der Public Anweisung in anderen Sprachen) * Deklarationen von Funktionen werden in der C-Spec als (function) Prototyp bezeichnet und sind dadurch gekennzeichnet, dass diese mit einem Semikolon abgeschlossen sind. Der Specifier 'extern' ist hier optional und sagt eigentlich aus, dass diese Funktion external Linkage besitzt (siehe [[Programmieren in C/C++:_DatentypeSpecifier#Internal/External Linkage | DatentypeSpecifier:Internal/External Linkage]]). Die Benennung der Parametervariablen sind gleichermaßen optional: :<syntaxhighlight lang="C"> extern int foo(int var1, float var2); //Deklaration extern int foo(int , float ); //Deklaration int foo(int var1, float var2); //Deklaration + external Linkage int foo(int , float ); //Deklaration + external Linkage </syntaxhighlight> * Für globale Variablen gibt es keine (Variablen) Prototype. Stattdessen muss zur Bekanntgabe des Datentyps der Specifier 'extern' vorangestellt werden, mit welchen ergänzend zum Ausdruck gebracht wird, das diese Variable external Linkage und damit globale Gültigkeit hat (siehe Kap [[Programmieren in C/C++: DatentypeSpecifier# Extern - Storage Class Specifier| DatentypeSpecifier:Extern - Storage Class Specifier]]). Da die Deklaration einzig zur Bestimmung der Zugriffsmethoden auf Maschinenspracheebene genutzt wird, können diese keine Initialisierungswerte enthalten: :<syntaxhighlight lang="C"> extern int var1; extern int var2=7; //KO Deklarationen können keine //Initialisierungswerte haben </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> extern int foo; extern int foo=7; int main(int argc, char *argv[]) { return foo; } int foo=7;| execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Deklarationen von statisch globalen, lokalen und statisch lokalen Variablen nicht möglich sind: :<syntaxhighlight lang="C"> extern static int glob; //keine Deklaration von statisch globalen //Variablen möglich int main(int argc, char *argv[]) { extern int var; //Deklaration bezieht sich auf eine globale //Variable, die nicht definiert ist extern static int lok; printf("%d %d\n",var,lok); int var; static int lok; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> extern static int glob; //keine Deklaration von statisch globalen //Variablen möglich int main(int argc, char *argv[]) { extern int var; //Deklaration bezieht sicht auf eine globale //Variable, die nicht definiert ist extern static int lok; printf("%d %d\n",var,lok); int var; static int lok; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Deklarationen für identische Variablen/Funktionen können beliebig oft erfolgen, sofern der Datentyp identisch ist: :<syntaxhighlight lang="C"> extern int var; extern int var; //OK, doppelt Deklaration mit identischen Datentyp extern unsigned int var; //KO, Doppelte Deklaration mit unterschiedlichen // Datentyp </syntaxhighlight> * Sofern eine Deklaration und eine Definition in der identischen Datei erfolgen überprüft der Compiler, ob Deklaration und Definition identisch sind. Es empfiehlt sich, die eigene Header-Datei (in welcher die Deklaration normalerweise enthalten ist) zu inkludieren: :{| class="wikitable" |- ! Datei1.c !! Datei1.h |- | <syntaxhighlight lang="C"> //Include der eigenen Header-Datei #include "datei1.h" int var1; //Definition von var1 short var2; //Definition von var2 int var3; //Private Variable //da kein Prototyp //im Header vorhanden void func(void) { } </syntaxhighlight> || <syntaxhighlight lang="C"> extern int var1; //Deklaration extern char var2; //KO, da Deklaration //von Definition //abweicht void func(int); //KO, da Deklaration //von Definition //abweicht </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Include der eigenen Header-Datei #include "example.h" int var1; //Definition von var1 short var2; //Definition von var2 int var3; //Private Variable //da kein Prototyp //im Header vorhanden void func(void) { } int main(int argc, char *argv[]) { return 0; } | example_h= extern int var1; //Deklaration extern char var2; //KO, da Deklaration //von Definition //abweicht void func(int); //KO, da Deklaration //von Definition //abweicht | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Innerhalb einer Datei kann eine Variable identischen Datentyps mehrmals definiert werden (bei identischen Initialisierungswert). Diese Definitionen werden vom Compiler als eine Definition angesehen. Wenn jedoch eine identische Variable in unterschiedlichen Dateien definiert wird, so legt jede Datei eine eigene unabhängige Variable an, welche dann beim Zusammenführen der Objektdateien durch den Linker zu Fehler führt. Da Header-Datei zumeist in mehrere C-Dateien inkludiert werden, sind Definitionen in Header-Dateien 'verboten'. * Deklarationen innerhalb eines Block-Scopes oder eines Function Prototyp Scopes sind nur in diesen Bereich gültig. == Grundlegende Datentypen und Typsicherheit == Die Programmiersprache C kennt folgende grundlegende Datentypen (siehe Kap. [[Programmieren in C/C++: Datentypen | Datentypen]]). Von jedem Datentyp kann ein Zeiger angelegt werden: {| class="wikitable" |- ! Datentyp !! Bsp. für Datentyp !! Bsp. für Zeiger auf Datentyp |- | Ganzzahl || <syntaxhighlight lang="C"> char var; int var; short int var; long int var; long long int var; </syntaxhighlight> || <syntaxhighlight lang="C"> char *ptr; int *ptr; short int *ptr; long int *ptr; long long int *ptr; </syntaxhighlight> |- | Gleitkommazahl || <syntaxhighlight lang="C"> double var; float var; long double var; </syntaxhighlight> || <syntaxhighlight lang="C"> double *ptr; float *ptr; long double *ptr; </syntaxhighlight> |- | Funktionen || <syntaxhighlight lang="C"> void func(void) {} </syntaxhighlight> || <syntaxhighlight lang="C"> void (*pfunc)(void); </syntaxhighlight> |- | Arrays || <syntaxhighlight lang="C"> int arr[10]; float arr[3][3]; </syntaxhighlight> || <syntaxhighlight lang="C"> int (*parr); float (*parr)[3]; void (*pfunc[5])(void); </syntaxhighlight> |- | Strukturen/Unions || <syntaxhighlight lang="C"> struct xyz {int x,y,z}; union abc {int a,b,c}; </syntaxhighlight> || <syntaxhighlight lang="C"> struct xyz *ptr; union abc *ptr; </syntaxhighlight> |- | Aufzählungstyp || <syntaxhighlight lang="C"> enum abc {A,B,C}; </syntaxhighlight> || <syntaxhighlight lang="C"> enum abc *ptr; </syntaxhighlight> |- | Boolescher Datentyp || <syntaxhighlight lang="C"> _Bool var; </syntaxhighlight> || <syntaxhighlight lang="C"> _Bool *ptr; </syntaxhighlight> |- | Komplexe Zahlen || <syntaxhighlight lang="C"> _Complex var; </syntaxhighlight> || <syntaxhighlight lang="C"> _Complex *ptr; </syntaxhighlight> |} C/C++ unterscheidet zwischen vorzeichenbehafteten <code>signed</code> und vorzeichenlosen <code>unsigned</code> ganzzahligen Datentypen. Vorzeichenlose Datentypen können nur positive Zahlen incl. der 0 aufnehmen (Anwendungsbereich bspw. Speicheradressen/Arrayindexe, welche nicht negativ sein können). Deren max. Zahlenwert ergibt sich aus der Datenbreite N des Datentyps 2<sup>N</sup>-1. Ein Vergleich eines vorzeichenlosen Datentyps mit ≥ 0 ist somit immer TRUE: <syntaxhighlight lang="C"> unsigned char var=0; if(var >= 0) //Bedingung ist immer erfüllt, so dass printf("Bedingung erfüllt"); //dieser ggf. vom Compiler wegoptimiert wird! for(var=10; var>=0; var--); //Endlosschleife! 0 dekrementiert ergibt 255 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> int main(int argc,char *argv[]) { unsigned char var=0; if(var >= 0) //Bedingung ist immer erfüllt, so dass printf("Bedingung erfüllt\n"); //dieser ggf. vom Compiler wegoptimiert wird! //Beim Öfffnen des Compiler-Fensters ist die IF-Anweisung nicht farblich //hervorgehoben. Dies bedeutet, dass diese Zeile wegoptimiert wurde und folglich //kein Maschinencode für diese Anweisung erzeugt wurde for(var=10; var>=0; var--) //Endlosschleife! 0 dekrementiert ergibt 255 printf("%u ",var),fflush(stdout); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Vorzeichenlose Datentypen halbieren den verfügbaren Zahlenbereich und 'weisen' dem oberen Wertebereich den negativen Zahlen zu.<br> Wird ein ganzzahliger Datentyp ohne Angabe des Vorzeichentyps (signedness) definiert, so ist diese vorzeichenbehaftet. Bei vorzeichenlosen Variablen muss explizit <code>unsigned</code> vorangestellt werden. Die Voranstellung von <code>signed</code> ist optional. Einzige Ausnahme stellt der Datentyp char dar. Hier gibt die Spezifikation keine default signedness vor, so dass bei Nutzung dieses Datentyps zur Aufnahme von Zahlen immer signed oder unsigned vorangestellt werden sollte!<br> Innerhalb des Formatstrings bei den printf()/scanf() Anweisungen '''muss''' die signedness vom Programmierer händisch berücksichtigt werden. Die Formatanweisung %d und %i interpretieren die übergebenen Zahl als vorzeichenbehaftete Zahl. Soll eine vorzeichenlose Zahl ausgegeben werden, so muss %u verwendet werden: <syntaxhighlight lang="C"> signed int vari=-10; unsigned int varu=3000000000; printf("vari=%d varu=%u",vari,varu); //Korrekt printf("vari=%u varu=%i",vari,varu); //Falsche Werteausgaben! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> int main(int argc,char *argv[]) { signed int vari=-10; unsigned int varu=3000000000; printf("vari=%12d varu=%12u\n",vari,varu); //Korrekt printf("vari=%12u varu=%12i\n",vari,varu); //Falsche Werteausgaben! return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Mit der Definition (dem Anlegen) einer Variablen eines Datentyps wird Speicher entsprechend der Größe des Datentyps reserviert. Optional kann dieser Speicher initialisiert werden. Über den Datentyp wird ausgesagt, wie der Inhalt des Speichers zu interpretieren ist: <syntaxhighlight lang="C"> char var1; //Speicherplatzreservierung von 1 Byte //Inhalt der Speicherstelle wird als Zahl interpretiert //(Hinweis: ASCII-Zeichen sind Zahlen) double var2=47.11; //Speicherplatzreservierung von 8 Byte //Inhalt der Speicherstellen wird als Gleitkommazahl //interpretiert (bestehend aus je einer Ganzzahl für //Mantisse und Exponent) short arr[10]; //Speicherplatzreservierung von 10*2 Byte //Inhalt der 10 Speicherstellen werden als Ganzzahl //interpretiert </syntaxhighlight> Die Funktionalität der Operatoren hängt vom Datentyp der Operanden ab. Der Plus-Operator angewendet auf ganzzahlige Operanden führt eine Ganzzahl Addition aus, angewendet auf gleitkomma Operanden eine Gleitkomma Addition. Ist einer der Operanden ein Zeiger, so wird eine Zeigeraddition angewendet. Für andere Datentypen ist der Plus-Operator nicht definiert, so dass der Compiler einen Fehler wirft. '''Bei der Betrachtung eines Ausdruckes sollte dem genutzten Datentypen folglich eine besondere Aufmerksamkeit zuteil werden''': <syntaxhighlight lang="C"> int vari=47; vari+12; //(int) + (int) → Ganzzahladdition float varf=12.3; 3.1415F+varf; //(float) + (float) → Gleitkommaaddition int *ptr=&vari; ptr+3; //(int *) + (int) → Zeigeraddition int arr[3]; arr+3; //(int (*)) + (int) → Zeigeraddition </syntaxhighlight> Das Ergebnis einer Operation hat ebenfalls einen Datentyp. Eine Ganzzahl Addition gibt bspw. als Ergebnis einen Ganzahl Datentyp zurück, eine Gleitkomma Addtition einen Gleitkomma Datentyp und ein Vergleichsoperator den Datentyp _Bool: <syntaxhighlight lang="C"> int vari1=47; int vari2=11; vari1 + 12 + vari2; //((int)+(int)+(int))→((int)+(int))→(int) 40 < vari1 < 50; //((int)<(int)<(int))→((_Bool=int)<(int))→(_Bool=int) </syntaxhighlight> Wie Operatoren haben auch Funktionen Operanden (in Form von Übergabeparameter). Das Ergebnis eines Funktionsaufrufes wird ebenfalls in Form eines Datentyps zurückgegeben: <syntaxhighlight lang="C"> float add(int par1,par2) {return par1+par2;} int vari1=47; int vari2=11; vari1 + add(var2,12); //(int)+((int),(int)→(float))→(int)+(float)→(float) </syntaxhighlight> Wird auf einen Operator gleichermaßen ein vorzeichenbehafteter und ein vorzeichenloser Operand angewendet, so kann es zu unerwarteten Konvertierungsproblemen führen: <syntaxhighlight lang="C"> unsigned char varu=12; signed char vars=-12; float varf; varf = varu + vars; if(vars < varu) </syntaxhighlight> Sind die Datentypen der Operanden nicht 'kompatibel', so 'passt' der Compiler die Datentypen im Falle von Ganzahl und Gleitkomadatentypen per impliziter Regel an (siehe Kap. [[Programmieren in C/C++: Datentypen#Implizite Typumwandlung | Datentypen:Implizite Typumwandlung]]). Über explizite Typumwandlung (siehe Kap.[[Programmieren in C/C++: Datentypen# Explizite Typumwandlung|Datentypen:Explizite Typumwandlung]]) kann ein Datentyp z.T. in einen anderen Datentyp gewandelt werden. In allen anderen Fällen ist C Typsicher, d.h. der Compiler gibt zumindest eine Warning aus, wenn die Datentypen nicht identisch sind und der Compiler keine implizite Regel anwenden kann. Tipp: * Compiler gibt bei Fehlermeldung oftmals die erwarteten und die vorhandenen Datentyp an. Wenn solch eine Fehlermeldung kommt, sollten sie sich a) überlegen, was wollten sie syntaktisch geschrieben haben und b) was haben sie in der Tat geschrieben. Ein Google nach einer Lösung des Compilerproblems löst zumeist nicht das Problem, sondern umgeht es! Hinweis: * Ein guter Programmierer sollte die Datentypen so wählen, dass: :* die Datentypen zum Inhalt und zum Wertebereiches passen :* keine Datentypkonvertierungen notwendig sind : andernfalls besteht die Gefahr, dass hiermit Laufzeitfehler einprogrammiert werden. * Wenn Datentypkonvertierungen notwendig sind, sollte die explizite Konvertierung genutzt werden == Abhängigkeiten bzgl. Rechnerarchitektur == Kenngrößen von Prozessoren sind unter anderem die Anzahl der Bits für den Datentransport und für Arithmetisch-/Logische-Operationen (→ Datenbreite) und die Anzahl der Bits für die Adressierung des Speichers (→ Adressierungsbreite). Die Datenbreite sagt dabei aus, welche max. Datenbreite ein Maschinenbefehl (zumeist in einem Taktzyklus) transportieren/berechnen kann. Werden programmtechnisch größere Datenbreiten benötigt, bedingt dies, dass hierzu mehrere Maschinenbefehle notwendig sind. Wenn kleinere Datenbreiten notwendig sind, so wird oftmals das Ergebnis abgeschnitten (sofern der Prozessor keine Befehle für den Umgang mit kleineren Datentyp beherrscht): {| class="wikitable" |- ! 32-Bit Datentransport/Operation<br /> bei 32-Bit Datenbreite ! 64-Bit Datentransport/Operation<br /> bei 32-Bit Datenbreite ! 16-Bit Datentransport/Operation<br /> bei 32-Bit Datenbreite |- | <syntaxhighlight lang="C"> int32_t a32,b32; </syntaxhighlight> || <syntaxhighlight lang="C"> int64_t a64,b64; </syntaxhighlight> || <syntaxhighlight lang="C"> int16_t a16,b16; </syntaxhighlight> |- | <syntaxhighlight lang="asm"> // a32=b32; mov eax,b32 mov a32,eax </syntaxhighlight> || <syntaxhighlight lang="asm"> // a64=b64; mov eax ,b64 mov edx ,b64+4 mov a64 ,eax mov a64+4,edx </syntaxhighlight> || <syntaxhighlight lang="asm"> //a16=b16; movz eax,b16 mov a16,ax </syntaxhighlight> |- | <syntaxhighlight lang="asm"> // a32=a32+b32; mov edx, a32 mov eax, b32 add eax, edx mov a32, eax </syntaxhighlight> || <syntaxhighlight lang="asm"> // a64=a64+b64; mov ecx , a64 mov ebx , a64+4 mov eax , b64 mov edx , b64+4 add eax , ecx adc edx , ebx mov a64 , eax mov a64+4, edx </syntaxhighlight> || <syntaxhighlight lang="asm"> // a16=16+b16; movzx eax, a16 mov edx, eax movzx eax, b16 add eax, edx mov a16, ax </syntaxhighlight> |} Die Adressierungsbreite gibt an, mit welcher Bitbreite der Speicher adressiert werden kann: * Bei einem 32-Bit System können 2<sup>32</sup>=4.294.967.295=4Gi&nbsp;Bytes/Speicherstellen adressiert werden * Bei einem 16-Bit System können 2<sup>16</sup>=65.536=64Ki&nbsp;Bytes/Speicherstellen adressiert werden * Bei einem 64-Bit System können 2<sup>64</sup>=18.446.744.073.709.551.616 =16Ei ~18Exa&nbsp;Bytes/Speicherstellen adressiert werden Waren die Datenbreite und die Adressierungsbreite bei den ersten Prozessoren noch unterschiedlich, so sind diese heutzutage zumeist identisch. Bei einem 32-Bit Prozessor bedeutet dies, dass dieser max. 4Gi&nbsp;Bytes Speicherstellenstellen adressieren kann und Maschinenbefehle für den Datentransport und die Berechnung von 32-Bit Datenworten beinhaltet. Die Datenbreite und auch die Adressierungsbereite haben direkten Einfluss auf die Programmiersprache: * Wird defaultmäßig mit größerer Datenbreite gerechnet, als der Prozessor 'von Hause' aus unterstützt, so werden die erzeugten Maschinenprogramme größer und langsamer (Umgedreht bedeutet dies jedoch nicht, dass die Maschinenprogramme kleiner und schneller werden) * Die max. Größe von Verbunddatentypen und Arrays ergibt sich aus der Adressierungsbreite des Prozessors Die Intention der Programmiersprache C/C++ ist, die Prozessorarchitektur optimal zu nutzen. Dementsprechend sind diverse Eigenschaften der Sprache nicht fest spezifiziert, sondern von der Rechnerarchitektur abhängig. === Integer Datentyp === Intention von C/C++ ist, dass der Umgang mit dem Grunddatentyp 'int' möglichst direkt in einen Maschinensprachebefehl umgesetzt werden kann.<br /> Bei einem 16-Bit Prozessor hat der Datentyp int daher eine Breite von 16-Bit und bei einem 32-Bit Prozessor eine Breite von 32-Bit (siehe Kap [[Programmieren in C/C++: Datentypen # Ganzzahlige Datentypen|Datentypen:Ganzahl Datentypen]]). Über vorangestellte Qualifier kann dieser Grunddatentyp verkleinert/vergrößert werden. === Integer Arithmetik === Ganzzahlen haben nur einen begrenzten Wertebereich. Wird dieser bspw. durch eine Addition überschritten (d.h. das Rechenergebnis benötigt zur Darstellung mehr Stellen, als der Datentyp 'hergibt'), so gibt es zwei Vorgehensweisen: * Arithmetischer Überlauf (siehe {{w|arithmetischer Überlauf}}): Die nicht speicherfähigen Stellen werden verworfen, so dass i.d.R. ein falsches Ergebnis erzeugt wird! :Beispiel: :<syntaxhighlight lang="C"> unsigned char a=254,b=3,c; c=a+b; //c ist (254+3)%256=1 c=a*b; //c ist (254*3)%256=250 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { unsigned char a=254,b=3,c1,c2; c1=a+b; //c ist (254+3)%256=1 c2=a*b; //c ist (254*3)%256=250 printf("c1=%hhu c2=%hhu\n",c1,c2); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Sättigungsarithmetik (siehe {{w|Sättigungsarithmetik}}): Alle Operationen laufen innerhalb eines festen Intervalls ab, so dass Überläufe und Unterläufe auf dieses Intervall begrenzt werden: :Beispiel: :<syntaxhighlight lang="C"> unsigned char a=254,b=3,c; c=a+b; //c ist MAX((254+3),255)=255 c=a*b; //c ist MAX((254*3),255)=255 </syntaxhighlight> Die Spezifikation von C macht bezüglich der zu nutzenden Methodik keine Vorgaben, so dass das Handling von der ALU des Prozessors abhängt. Aus Komplexitäts- und Geschwindigkeitsgründen ist dies zumeist der arithmetische Überlauf. Nur bei Spezialprozessoren (z.B. DSP Digital Signal Processor) kommt z.T. die Sättigungsarithmetik zum Einsatz. === Gleitkomma Datentyp und Arithmetik === Für den Umgang mit Gleitkommazahlen bieten einige Prozessoren spezielle Recheneinheiten ({{w|Gleitkommaeinheit}} Floating Point Units FPU) an. Sowohl die Darstellung von Gleitkommazahlen als auch das Verhalten bei Überlauf/Unterlauf ist damit Herstellerabhängig. Um auch diese Einheiten effektiv nutzen zu können, ist die C/C++ Spezifikation in diesem Bereich ebenfalls sehr offen. === Max. Speicherbedarf von Variablen === Die maximale Größe von Arrays/Strukturen/Unions ist in C/C++ von der zugrundeliegenden Rechnerarchitektur abhängig: <syntaxhighlight lang="C"> char a[100000]; //Speicherbedarf=100.000*1Byte=100.000 Bytes //Bei 16-Bit Architektur KO //Ab 32-Bit Architektur OK struct size_16 { char a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_256 { struct size_16 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_4096 { struct size_256 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_65536 { struct size_4096 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_65536 var65536; //Speicherbedarf=65536 Bytes //Bei 16-Architektur KO //Ab 32-Architektur OK </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Zur Darstellung bitte Compiler-Fenster öffnen //und dort den CC65-Compiler für den 6502 Prozessor auswählen char a[100000]; //Speicherbedarf=100.000*1Byte=100.000 Bytes //Bei 16-Bit Architektur KO //Ab 32-Bit Architektur OK struct size_16 { char a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_256 { struct size_16 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_4096 { struct size_256 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_65536 { struct size_4096 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_65536 var65536; //Speicherbedarf=65536 Bytes //Bei 16-Architektur KO //Ab 32-Architektur OK int main(int argc,char *argv[]) { return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Im Falle von globalen Variablen erzeugt der Compiler/Linker eine Fehlermeldung. Werden von diesen Datentypen Variablen als lokale Variablen angelegt, so erzeugt dies zur Laufzeit einen Stackoverflow. === Zeigervariable === Eine Zeigervariable ist eine Variable, die eine Speicheradresse speichert. Die Größe dieses Datentyps hängt von der Adressierungsbreite des Prozessors ab. Unabhängig von dem Datentyp, auf den die Zeigervariable zeigt, ergibt sich folgende Breite: * 4-Byte bei einer 32-Bit Rechnerarchitektur * 8-Byte bei einer 64-Bit Rechnerarchitektur * 2-Byte bei einer 16-Bit Rechnerarchitektur === Datentyp size_t === Die maximale Größe von Arrays/Strukturen/Unions ist in C von der zugrundeliegenden Rechnerarchitektur abhängig. Sie ergibt sich aus der Adressierungsbreite. Da die Datenbreite des Datentyps int zumeist kleiner als die Adressierungsbreite ist, existiert in C/C++ der vorzeichenlose Datentyp size_t.<br /> Alle Funktionen, welche den Speicherbedarf übergeben bekommen, bzw. zurückgeben (bspw. strlen(), memcpy(), sizeof()) , nutzen den Datentyp size_t: <syntaxhighlight lang="C"> //Prototypen size_t strlen(char *str); //Die max. Stringlänge ist durch den //adressierbaren Speicher vorgegeben void *malloc(size_t size); void *memcpy(void *dest, const void *src, size_t n); </syntaxhighlight> Der Datentyp size_t ist in der Header-Datei stddef.h der Standard-C-Library per typedef gesetzt. Im Normalfall muss diese Header-Datei nicht explizit inkludiert werden, da bei Nutzung von z.B. strlen() diese bereits durch die Header-Datei string.h inkludiert wird: <syntaxhighlight lang="C"> typedef unsigned long long size_t; //Bei einer 64-Bit Rechnerarchitektur </syntaxhighlight> Hinweis: * Der Datentyp size_t ist immer ein vorzeichenloser Datentyp (es gibt keine negativen Speicheradressen). * Mit dem Datentype ssize_t wird eine vorzeichenbehaftete Variante zur Verfügung gestellt, welche hilfreich ist, wenn Speicheradresse subtrahiert werden sollen. * Soll der Wert vom Datentyp size_t mittels printf() ausgegeben werden, so ist der 'Length Modifier' z und der 'Conversion Specifier' u zu nutzen: :<syntaxhighlight lang="C"> size_t var=strlen("String"); printf("%zu",var); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc,char *argv[]) { size_t var=strlen("String"); printf("%zu",var); printf("%d",var); //Hier sollte es eine Compiler-Warning geben! return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Boolescher-Datentype/Operatoren == Ursprünglich gab es den booleschen Datentyp in der Programmiersprache C nicht. Mit C99 wurde zwar der Datentyp <code>_Bool</code> eingeführt, dies änderte jedoch nicht den Umgang mit Anweisungen und Operatoren, die einen booleschen Datentyp erwarten/zurückgeben! An allen Stellen, an denen ein boolescher Datentyp erwartet wird (z.B. IF-Abfrage, bei booleschen Operationen) wird der Datentyp Ganzzahl, Gleitkommazahl oder Zeiger erwartet (= Scalar-Type) und ausgewertet. Der hierin gespeicherte Zahlenwert sagt aus, ob diese Zahl als True oder False zu interpretieren ist: * False, wenn Ganzzahl gleich 0 oder Gleitkommazahl gleich 0.0 oder Zeiger gleich NULL * True, wenn Ganzzahl ungleich 0 oder Gleitkommazahl ungleich 0.0 oder Zeiger ungleich NULL Beispiel: <syntaxhighlight lang="C"> int a=3; double b=0.0; int *ptr=&a; while(1); if(a) {} for( ; b && ptr ; ); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=3; double b=0.0; int *ptr=&a; while(0); if(a) {} for( ; b && ptr ; ) {} return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Operatoren, welchen einen booleschen Wert zurückliefern (Vergleichs-Operatoren und Boolesche-Operatoren), liefern ein Integer-Datentyp zurück: * (int)0 für False * (int)1 für True Beispiel: <syntaxhighlight lang="C"> int a=3; int b= (a==3); //b=1 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=3; int b= (a==3); //b=1 printf("%d",b); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} In den if()/for()/while() Anweisungen ist folglich kein explizites Konvertieren eines Ganzzahl-/Gleitkomma-/Zeigerwertes mittels des Vergleichs-Operators in einen Booleschen Wert notwendig: <syntaxhighlight lang="C"> int a; double b; if(a) //entspricht if(a!=0) if(!b) //entspricht if(b==0.0) while(1) //entspricht while(True) for(int lauf=1; lauf ; lauf--); </syntaxhighlight> Umgedreht kann ein boolescher Wert oder auch das Ergebnis einer booleschen Operation direkt mit einer Ganzzahl- oder Gleitkommazahl verknüpft werden: <syntaxhighlight lang="C"> int a=3,b=2; a=a+1 && 7 << 3 & a==3; if( a==1 & b==2) if(3 < a < 9) //Vorsicht, die Schreibweise lässt ein //anderes Verhalten erwarten! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=3,b=2; a=a+1 && 7 << 3 & a==3; printf("%d\n",a); if(a==1 & b==2) printf("true\n"); else printf("false\n"); if(3 < a < 9) if( (a==1) & (b==2)) printf("true\n"); else printf("false\n"); return 0; } | execCompilerOptions=| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Mit C99 wurde der Datentyp <code>_Bool</code> eingeführt. Dieser entspricht weiterhin einem Integerdatentyp mit der Besonderheit, dass beim Zuweisen eines Wertes dieses auf true oder false geprüft wird und Variablen dieses Datentyps nur die Werte 0 oder 1 annehmen können: <syntaxhighlight lang="C"> _Bool var1=12; printf("var1=%d\n",var1); //→ 1 float var2=13.2; var1=var2; printf("var1=%d\n",var1); //→ 1 var1--; //Post/Pre Inkrement/Dekrement in C++ nicht auf Datentyp bool! möglich printf("var1=%s\n",var1?"true(1)":"false(0)"); //→ false </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { _Bool var1=12; printf("var1=%d\n",var1); //→ 1 float var2=13.2; var1=var2; printf("var1=%d\n",var1); //→ 1 var1--; //Post/Pre Inkrement/Dekrement in C++ nicht auf Datentyp bool! printf("var1=%s\n",var1?"true(1)":"false(0)"); //→ false return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Für den einfacheren Umgang mit dem 'neuen' Datentyp wurde in der Header-Datei <code>stdbool.h</code> die Makros <code>true</code> (als Austauschwert für die Ganzzahl 1) und <code>false</code> (als Austauschwert für die Ganzahl 0) definiert. Ergänzend wird hier der Datentyp <code>bool</code> als Alias auf <code>_Bool</code> gesetzt. <syntaxhighlight lang="C"> #include <stdbool.h> bool foo(int par,int min,int max) { if((par >= min) && (par <= max)) return true; else return false; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdbool.h> bool foo(int par,int min,int max) { if((par >= min) && (par <= max)) return true; else return false; } int main(int argc,char *argv[]) { foo(4,3,6); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * In C++ gibt es anstatt des Datentypes <code>_Bool</code> den Datentyp <code>bool</code>. Auch sind die beiden Konstanten <code>true</code> und <code>false</code> ohne zusätzliches Einbinden der Header-Datei vorhanden. Der weitere Umgang ist jedoch identisch zu C. == Literale/Konstanten == Zahlenwerte und Strings im Source-Code werden vom Compiler in binäre Zahlen umgerechnet. Über der Schreibweise/Syntax der Literale/Konstanten wird dem Compiler gesagt, in welchem Zahlenformat die Zahl auf Source-Code Ebene beschrieben ist und welchem Datentyp sie entspricht. Unabhängig wie die Konstanten im Source-Code beschrieben sind, werden die Zahlen intern als binäre Zahlen gespeichert. Beispiele, wie die Zahlen intern gespeichert werden: <syntaxhighlight lang="C"> int var=17; //0000 0000 0000 0000 0000 0000 0001 0001 short var=0x307;// 0000 0011 0000 0111 char var=017; // 0000 1111 int var=-1; //1111 1111 1111 1111 1111 1111 1111 1111 float var=0.0; //0000 0000 0000 0000 0000 0000 0000 0000 float var=1.0; //0011 1111 1000 0000 0000 0000 0000 0000 </syntaxhighlight> === Ganzzahl-Konstanten === Im Allgemeinen ordnet der Compiler einer numerischen, ganzzahligen Konstanten den kleinstmöglichen Datentyp beginnend vom Datentyp integer zu. Sobald der Wert der Konstanten den Wertebereich von integer übersteigt, wird der nächst größere passende Datentyp gewählt. Ergänzend gilt, dass alle Ganzzahl-Konstanten als vorzeichenbehaftete Ganzzahl-Konstanten angesehen werden!<br /> Beispiele für integer Konstanten: <pre> 123 +123 -123 → Formal wird das Minus als Operator angesehen und die positive Zahl 123 negiert 0x123 → Konstante ist in hexadezimaler Schreibweise notiert 0123 → Konstante ist in oktaler Schreibweise notiert 0b011 → Konstante ist in binärer Schreibweise notiert nicht offizieller C-Syntax, wird aber von vielen Compiler unterstützt ab C23-Spezifikation offiziell im C-Syntax enthalten! 6'432'108 → Tausendertrenner Nur in C++ Spezifikation enthalten ab C23-Spezifikation auch im C-Syntax enthalten. 5123123123 → Wertebereich größer als 2^31 so dass automatisch zum nächst größeren Datentyp konvertiert wird </pre> Mit den Suffixen L/l und LL/ll kann der Datentyp long und long long erzwungen werden: <pre> 12L → Konstante wird in eine long Integer Konstante konvertiert 4711LL → Konstante wird in eine Long Long Konstante konvertiert </pre> Mit dem Suffix U/u kann die Konstante explizit auf unsigned gesetzt werden: <pre> 12U → Konstante wird als vorzeichenlose Zahl gesepeichert 4711ULL → Konstante wird in eine vorzeichenlose Long Long Konstante konvertiert </pre> === Char-Konstanten === In einfachen Anführungsstrichen geschriebene ASCII Zeichen werden entsprechend der {{w|American Standard Code for Information Interchange | ASCII-Tabelle}} als Zahlenwert (Datentyp int) dargestellt: <pre> 'A' → Integerkonstante 65 'a' → Integerkonstante 97 … </pre> Über den {{w|Escape-Sequenz|Escape-Operator}} (Zeichen Backslash '\') wird das/die dem ESCAPE Operator folgende Zeichen gesondert interpretiert. Die im Source-Code erhaltene Zeichenfolge wird im Computerprogramm als ein Zahlenwert (Datentyp int) gespeichert. Dies ist u.A. zur Darstellung von ' und " aber auch zur Darstellung der unteren 32 Zeichen der ASCII Tabelle notwendig (Siehe auch {{w|Steuerzeichen}}) <pre> ESCAPE Integer- → Bedeutung / (Terminal)funktionalität Sequence konstante '\0' = 0 → 0 Character = Stringendezeichen '\a' = 7 → Bell (erzeugt auf dem Terminal einen Ton) '\b' = 8 → Backspace (Bewegt den Cursor um eine Position nach links) '\t' = 9 → Horizontal Tab (Bewegt den Curso auf die nächste horizontale Tabulatorposition, Abstand ist Terminalspezifisch) '\n' = 10 → NewLine (Zeilenvorschub) '\v' = 11 → Vertial Tab '\r' = 13 → Carriage Return (Wagenrücklauf, Bewegt den Cursor an den Zeilenanfang) '\"' = 34 → Double Quote '\'' = 39 → Single Quote '\?' = 63 → Question mark '\\' = 92 → Backslash '\f' = 12 → FormFeed (Erzeugt auf dem Terminal/Drucker einen Seitenvorschub) '\ooo' = 0ooo → Oktal, wobei o Digits von 0..7 sein müssen '\xdd' = 0xdd → Hexadezimal, wobei d Digits von 0..9 A..F sein müssen '\udddd' Unicode mit 4 Digits '\Udddddddd' Unicode mit 8 Digits </pre> Beispiel <syntaxhighlight lang="C"> 'A' == 65 == '\101' == '\x41' == '\u0041' == '\U00000041' </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { //Programmiersprache wurde auf C++ gesetzt if('A' == 65) printf("'A' == 65\n"); if('A' == '\101') printf("'A' == '\\101'\n"); if('A' == '\x41') printf("'A' == '\\x41'\n"); if('A' == '\u0041') printf("'A' == '\\u0041'\n"); if('A' == '\U00000041') printf("'A' == '\\U00000041'\n"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true| lang=c++ }} Öffnen im Compiler Explorer] }} Über Prefixe können alternative Zieldatentypen/Konvertierungen erzwungen werden: <pre> u'b' → unicode 16 (nur C++) U'b' → unicode 32 (nur C++) L'b' → wchar_t </pre> Hinweis * Die ASCII-Tabelle basiert auf einer 7-Bit Zeichenkodierung, so dass bspw. die Umlaute 'ä', 'ö' und 'ü' dort nicht kodiert sind. Sollen auch diese Zeichen genutzt werden, so empfiehlt sich der Datentyp wchar_t === Gleitkommakonstanten === Alle Gleitkommakonstanten sind ohne weitere Angaben vom Datentyp double! <pre> 555.12 555. → 555.0 .1 → 0.1 4e2 → 400.0 0x22.11p13 → Konstante in Hexadezimalen Schreibweise (ab C99) </pre> Über Suffixe kann ein alternativer Datentyp erzwungen werden: <pre> 3.0F → Datentyp float 3.0l → Datentyp long double </pre> Hinweis: * Aufgrund der unterschiedlichen Basis zwischen dem menschlichen Zehner-System und dem computerinternen Binär-System entstehen insbesondere bei den Nachkommastellen Rundungsfehler. Die Konstante 0.1f wird durch die Wandlung intern als 1.00000001490116119384765625e-1 dargestellt * Die C-Spec verlangt, dass die binäre Repräsentation von Gleitkommazahlen zur Laufzeit (z.B. durch die Funktion atof() strtod() scanf("%f")) identisch zur der zur Compilezeit ist. Beispiel: :<syntaxhighlight lang="C"> if(3.14==atof("3.14")) printf("muss erfüllt sein"); //3.14 wird vom Compiler in ein Binärwert gewandelt //Der String "3.14" wird zur Laufzeit mittels atof in ein Binärwert gewandelt //Beide Wandlungsergebnisse müssen identisch sein </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { if(3.14==atof("3.14")) printf("muss erfüllt sein\n"); //3.14 wird vom Compiler in ein Binärwert gewandelt //Der String "3.14" wird zur Laufzeit mittels atof in ein Binärwert gewandelt //Beide Wandlungsergebnisse müssen identisch sein printf("Intern wird 3.14 wie folgt dargestellt %14.20f",3.14); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Konstanten Ausdrücke === Ergänzend zu den Zahlenwerten werden auch Ausdrücke durch den Compiler ausgewertet. Als Voraussetzung für die Ausdrücke gilt, dass alle Operatoren Literale/Konstante sein müssen, so dass der Compiler die Berechnung durchführen kann. Als Operatoren können alle im normalem Syntax erlaubten Operatoren (z.B.: +,-,*,/,&,&&,|,||,>>,<<,==,!=) genutzt werden.<br /> Beispiel: <syntaxhighlight lang="C"> int var1=7*3+5; → wird vom Compiler durch 26 ersetzt int var2=(4710+(8-1))&-8; → wird vom Compiler durch 4712 ersetzt var1=4*4*var1+77*(77%3); → wird vom Compiler durch 16 * var1 + 154 ersetzt </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { int var1=7*3+5; //→ wird vom Compiler durch 26 ersetzt int var2; var2=(4710+(8-1))&-8; //→ wird vom Compiler durch 4712 ersetzt var1=4*4*var1+77*(77%3); //→ wird vom Compiler durch var1 * 16 + 154 ersetzt return 0; } | execCompilerOptions=-Wall| h=g| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Konform zur C-Spezifikation bieten einige Compiler weitere Operatoren aus der math.h Library an (z.B. sin(), cos(), ...). Bestehen die Aufrufparameter aus Konstanten, so ersetzt der Compiler den Ausdruck durch die 'Ergebnis'-Konstante: :<syntaxhighlight lang="C"> int var3=sin(1.0)*10; →wird vom Compiler durch 8 ersetzt </syntaxhighlight> * Konstanten Ausdrücke werden durch den Präprozessor ausgewertet, so dass dieser die Ergebnisse ebenfalls nutzen kann: :<syntaxhighlight lang="C"> #define BUF_SIZE 512 #if (BUF_SIZE & (BUF_SIZE -1)) != 0 #endif </syntaxhighlight> === String Konstanten === Stringkonstanten erzeugen ein Array von Characters. Mit dem abschließenden Hochkommata wird das Array um ein Stringendezeichen ergänzt: <pre> "abc" → (char []) {'a','b','c','\0'} </pre> Adjacent Strings Konstanten werden vom Compiler zu einer String-Kontante zusammengefasst, so dass nur ein Stringendezeichen vorhanden ist: <pre> "xxx" "yyy" → (char []) {'x','x','x','y','y','y','\0'} </pre> Über Prefixe können alternative Zieldatentypen/Konvertierungen erzwungen werden: <pre> L"string" → (wchar_t[7]){L's',L't',L'r' …) </pre> Über Postfixes können in C++ Objekte erzeugt werden: <pre> "string"s → erzeugt einen String vom Datentyp std::string "string"sw → Erzeugt einen String vom Datentyp std::string_view </pre> String Konstanten werden Compilerintern über unnamed Variablen realisiert, welche als globale Variable angelegt werden und per default const sind: <syntaxhighlight lang="C"> printf("Wert=%d",4); //entspricht const char unnamed1[]="Wert=%d"; printf(unnamed1,4); //String Konstanten sind per Default Konstant char *str="hallo"; //Typkonflikt!, da "hallo" vom Datentyp const char[] ist str[0]='H'; //Laufzeitfehler, da nun schreibender Zugriff auf im //Readonly Speicher angelegt Variable. </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { printf("Wert=%d\n",4); //entspricht const char unnamed1[]="Wert=%d\n"; printf(unnamed1,4); fflush(stdout); //Zur Darstellung der Ausgabe, da nachfolgend //das Programm abstürzt und die gepufferte Ausgabe //nicht zur Anzeige gebracht wird //String Konstanten sind per Default Konstant char *str="hallo"; //Typkonflikt!, da "hallo" vom Datentyp const char[] ist str[0]='H'; //Laufzeitfehler, da nun schreibender Zugriff auf im //Readonly Speicher angelegt Variable. return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Für doppelte String Konstanten wird nur einmal Speicher reserviert: <syntaxhighlight lang="C"> const char *str1="hallo"; const char *str2="hallo"; if(str1==str2) printf("Identische Startadressen"); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { const char *str1="hallo"; const char *str2="hallo"; if(str1==str2) printf("Identische Startadressen"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Initialisierungsliste / Compound Literal == Arrays, Strukturen und Unions bestehen zumeist aus mehreren Elementen. Zur Initialisierung solcher Variablen werden die Initialisierungswerte in geschweiften Klammern als Initialisierungsliste zusammengefasst. <code> Syntax: {Initialisierungsliste} </code> Für eine Initialisierungsliste wird kein Speicher vorgehalten. Vielmehr wird bei der Variablendefinition die Variable direkt mit dem Inhalt der Liste initialisiert. Der Datentyp der Initialisierungsliste ergibt sich aus dem Datentyp der zu initialisierenden Variable: <syntaxhighlight lang="C"> int arr[5] = { 1,2,3,4,5 }; struct xyz { int x,y,z;}; //Definition einer Struktur struct xyz var = { 1,2,3 }; </syntaxhighlight> Wird der Initialisierungsliste ein Datentyp in runden Klammern vorangestellt, so wird hiermit eine 'unnamend' Variable/Objekt, ein Compound Literal erstellt: <code> Syntax: (type) {Initialisierungsliste} </code> Ein Compound Literal entspricht einer anonymen Variablen des angegebenen Datentyps. Wie bei einer normalen Variablendefinition wird hier ebenfalls eine Variable angelegt und diese mit den Initialisierungswerten initialisiert. Im Unterschied zu einer normalen Variable kann auf solch eine Variable im Nachgang nicht mehr zugegriffen werden. Der Rückgabewert eines Compound Literals entspricht somit dem einer Variablen.</br> Compound Literale bieten sich überall dort an, wo Variablen nur für einen einmaligen Zweck angelegt werden (bspw. bei der Parameterübergabe von Funktionen): <syntaxhighlight lang="C"> struct point {int x; int y;}; drawline((struct point){1,2},(struct point){2,3}); printarray((int []){1,2,3,4}); //entsprechen struct point unnamed1={1,2},unnamed2={2,3}; drawline(unnamed1,unnamed2); int unnamed3[]={1,2,3,4}; printarray(unnamed3); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct point {int x,y;}; void drawline(struct point start,struct point end) { printf("Linie von (%d,%d) nach (%d,%d)\n",start.x,start.y,end.x,end.y); } void printarray(int arr[4]) { printf("[ "); for(size_t idx=0;idx<4;idx++) printf("%d ",arr[idx]); printf("]\n"); } #include <stdlib.h> int main(int argc,char *argv[]) { struct point {int x; int y;}; drawline((struct point){1,2},(struct point){2,3}); printarray((int []){1,2,3,4}); //entsprechen struct point unnamed1={1,2},unnamed2={2,3}; drawline(unnamed1,unnamed2); int unnamed3[]={1,2,3,4}; printarray(unnamed3); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Über den Adressoperator kann auch die Adresse der anonymen Variablen ermittelt werden. In diesem Falle ist dann der Gültigkeitsbereich/-dauer des Compound Literals zu berücksichtigen. Wird eine Compound Literals außerhalb eines Block-Scopes angelegt, so entspricht sie einer globalen Variable, andernfalls einer lokalen Variablen. Außerhalb des Gültigkeitsbereiches verliert die Adresse auf solch eine Variable ihre Gültigkeit: <syntaxhighlight lang="C"> drawlinep( &(struct point){1,2},&(struct point){2,3}); //entspricht struct point unnamed1={1,2},unnamed2={2,3}; drawlinep( &unnamed1, &unnamed2); struct point1, *point2; { //Block-Scope, zwecks Darstellung von lokalen Variablen point1= (struct point){1,2}; //Compound Literal entspricht hier //Initialisierungswert für point1 point2=&(struct point){3,4}; //Compound Literal ist nur in diesem //Block gültig drawlinep(&point1 /*OK*/, point2 /*OK*/); } drawlinep(&point1 /*OK*/, point2 /*KO*/); //Zeiger zeigt auf nicht mehr //gültigen Speicherbereich </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct point {int x,y;}; void drawlinep(struct point *start,struct point *end) { printf("Linie von (%d,%d) nach (%d,%d)\n",start->x,start->y,end->x,end->y); } #include <stdlib.h> int main(int argc,char *argv[]) { drawlinep( &(struct point){1,2},&(struct point){2,3}); //entspricht struct point unnamed1={1,2},unnamed2={2,3}; drawlinep( &unnamed1, &unnamed2); struct point point1, *point2; { //Block-Scope, zwecks Darstellung von lokalen Variablen point1= (struct point){1,2}; //Compound Literal entspricht hier //Initialisierungswert für point1 point2=&(struct point){3,4}; //Compound Literal ist nur in diesem //Block gültig drawlinep(&point1 /*OK*/, point2 /*OK*/); } drawlinep(&point1 /*OK*/, point2 /*KO*/); //Zeiger zeigt auf nicht mehr //gültigen Speicherbereich } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * Compound-Literal sind per Default keine Konstanten, können also zur Laufzeit geändert werden (siehe Kap. [[Programmieren in C/C++: DatentypeSpecifier#Const Type Qualifier|DatentypeSpecifier:Const Type Qualifier]]): :<syntaxhighlight lang="C"> float *arr=(float []){1.1,2.2,3.3}; //Kein Typkonflikt arr[0]=47.11; //Änderung des 'Konstanten' arr[0] ist möglich </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { float *arr=(float []){1.1,2.2,3.3}; //Kein Typkonflikt arr[0]=47.11; //Änderung des 'Konstanten' arr[0] ist möglich return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Die geschweiften Klammern <code>{ }</code> sind nicht mit dem Block-Operator (siehe [[Programmieren in C/C++: Grundlagen#Block / Compound-Statement | Block / Compound-Statement]]) zu verwechseln. Werden die geschweiften Klammern bei der Initialisierung von Variablen genutzt, dann beschreibt der Inhalt der geschweiften Klammern eine Initialisierungsliste. Wird diesen ein Datentyp vorangestellt, dann wird hiermit eine Compound Literal definiert. == Variableninitialisierung == Mit der Definition einer Variable kann diese optional initialisiert werden. Der tatsächliche Zeitpunkt der Variableninitialisierung (zur Laufzeit oder zur Compilezeit) und damit die Ausführung der Initialisierung (Maschinensprachebefehle oder Speichervorbelegung) hängt von der Gültigkeit/Sichtbarkeit der Variablen ab (siehe [[Programmieren in C/C++: Grundlagen#Gültigkeit/Sichtbarkeit von Variablen| Gültigkeit/Sichtbarkeit von Variablen]]). === Globale + Static lokale Variablen === Globale und statisch globale Variablen werden in einem während der Laufzeit des Programms festen Speicherbereich gehalten. Zum Startzeitpunkt des Programms ist der Speicherplatz solch einer Variable mit dem Initialisierungswert gefüllt, so das bei erstmaliger Nutzung dieser Variablen diese ihre Initialisierungswerte enthalten. Die Belegung des Speicherplatzes erfolgt durch den Compiler, so dass als Initialisierungswerte /Inhalt der Initialisierungsliste nur Konstanten oder Konstanten-Ausdrücke (siehe [[Programmieren in C/C++: Grundlagen#Literale/Konstanten | Literale/Konstanten]]) erlaubt sind: <syntaxhighlight lang="C"> int g=1; //Speicherstelle der Variable g wird //mit 1 belegt short array[3]={1,1+1, sin(0.0)}; //Speicherstellen des Arrays wird //mit 1, 2 und 0 belegt werden </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> double sin(double); //DJ: Include-Anweisung in wikibooks schlägt fehlt int g=1; //Speicherstelle der Variable g wird //mit 1 belegt short array[3]={1,1+1, sin(0.0)}; //Speicherstellen des Arrays wird //mit 1, 2 und 0 belegt werden int main(int argc,char *argv[]) { printf("%hd %hd %hd\n",array[0],array[1],array[2]); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Nicht initialisierte globale und static lokale Variablen werden mit 0 initialisiert! D.h. die Speicherstellen dieser Variablen werden mit dem Wert 0 vorbelegt: <syntaxhighlight lang="C"> int f; //f hat den Wert 0 double arr[10]; //Alle Elemente von arr werden mit 0.0 initialisiert! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int f; //f hat den Wert 0 double arr[10]; //Alle Elemente von arr werden mit 0.0 initialisiert! int main(int argc,char *argv[]) { printf("f=%d\n",f); printf("%f %f %f\n",arr[0],arr[1],arr[2]); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Lokale Variable === Der Speicherplatz für lokale Variable wird auf dem Stack zur Verfügung gestellt. Bei jeder Ausführung der Definition wird Speicher vom Stack nach dem {{w|Last In – First Out|LIFO Prinzip}} reserviert und im Anschluss Maschinencode zur Initialisierung der Speicherstellen ausgeführt (sofern Variable einen Initialisierungswert hat). Zum besseren Verständnis kann man sich die Variableninitialisierung als zwei Anweisungen vorstellen: a) der Definition der Variablen und b) der Zuweisung des Initialisierungswerter zur Variablen: <syntaxhighlight lang="C"> int var=sin(b); //entspricht int var; //a)Variablendefinition/Speicherplatzreservierung var=sin(b); //b) Initialisierung über separate Zuweisungs-Operation //d.h. es werden Maschinensprachebefehle erzeugt, welche //den Inhalt der Variablen b holt, anschließend die sin() //Funktion aufruft und dessen Rückgabewert der Variablen //var zuweist. </syntaxhighlight> Folglich können die Initialisierungswerte/Inhalte der Initialisierungsliste aus beliebigen Ausdrücken stehen und müssen keine Konstanten oder Konstanten Ausdrücke sein: <syntaxhighlight lang="C"> void foo(float f,float g) { float summe=f+g; float arr[3] = {f+f,g-f,sin(f)}; //Initialisierungswerte //werden zur Laufzeit berechnet } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> float sinf(float); //DJ Include von math.h in Wikibooks schlägt fehlt void foo(float f,float g) { float summe=f+g; float arr[3] = {f+f,g-f,sinf(f)}; //Initialisierungswerte //wwerden ird zur Laufzeit berechnet printf("%f\n",summe); printf("%f %f %f\n",arr[0],arr[1],arr[2]); } int main(int argc,char *argv[]) { foo(3,4); return 0; } | execCompilerOptions=-Wall -lm| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Aufgrund der Ausführung von Maschinencode bedingt die Initialisierung Rechenzeit.<br /> Wird eine Variableninitialisierung mit einer switch oder goto Anweisung übersprungen, so wird zwar die Variable angelegt (Speicherplatz reserviert), jedoch die Maschinenbefehle zur Initialisierung dieser Variablen nicht ausgeführt (siehe auch [[Programmieren in C/C++: Grundlagen# Switch-Anweisung|Switch-Anweisung]] und [[Programmieren in C/C++: Grundlagen# Label + Goto|Label + Goto]]). Die Variable enthält dann einen Zufallswert: <syntaxhighlight lang="C"> switch(value) { case 0: int lok=7; printf("%d",lok); //OK, lok beinhaltet den Wert 7 break; default: printf("%d",lok); //KO, Variable lok vorhanden, //aber nicht initialisiert. D.h. Ausgabe einer break; //Zufallszahl } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void foo(int value) { switch(value) { case 0: int lok=7; printf("%d\n",lok); //OK, lok beinhaltet den Wert 7 break; default: printf("%d\n",lok); //KO, Variable lok vorhanden, //aber nicht initialisiert. D.h. Ausgabe einer break; //Zufallszahl } } void far(void) { int var1=4711; int var2=1799; printf("Marke: %d, Erscheinungsjahr: %d\n",var1,var2); } int main(int argc,char *argv[]) { foo(2); //Zufallswert (0, da Stack mit 0 initialisiert ist) foo(0); //Initialisierungswert far(); //Stack belegen foo(2); //Zufallswert return 0; } | execCompilerOptions=| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Nicht initialisierte lokale Variablen werden nicht initialisiert, d.h. keine zusätzlichen Maschinenbefehle zum Initialisieren erzeugt. Der Variablenwert entspricht dann einem 'Zufallswert' oder korrekter gesagt dem Inhalt der Variablen, welcher zuvor der Speicherstelle zugewiesen war: <syntaxhighlight lang="C"> int foo(void) { int var_foo; //Variable var_foo bekommt den identischen return var_foo; //Speicherbereich wie var_far zugwiesen } int far(void) { int var_far=7; return var_far; } printf("%d\n",foo()); //Zufallswert (0, da Stack mit 0 initialisiert ist) printf("%d\n",far()); //Stack belegen printf("%d\n",foo()); //Zufallswert (7, da Speicherstelle zuvor mit 7 belegt wurde </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int foo(void) { int var_foo; //Variable var_foo bekommt den identischen return var_foo; //Speicherbereich wie var_far zugwiesen } int far(void) { int var_far=7; return var_far; } int main(int argc, char *argv[]) { printf("%d\n",foo()); //Zufallswert (0, da Stack mit 0 initialisiert ist) printf("%d\n",far()); //Stack belegen printf("%d\n",foo()); //Zufallswert (7, da Speicherstelle zuvor mit 7 return 0; //belegt wurde } | execCompilerOptions=| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Bei erstmaligem Funktionsaufruf kann eine nicht initialisierten Variablen den Wert 0 beinhalten (Stackframe wird mit Programmstart auf 0 gesetzt). Beim nächsten Aufruf der Funktion ist zumeist die Speicherstelle der lokalen Variablen mit anderen Werten gefüllt worden, so dass nun ein anderer 'Zufallswert' als 'Initialisierungswert' enthalten ist. === C++ === In C++ ist ergänzend die Initialisierung einer Variablen über () möglich. Bei Objekten wird hierüber der zugehörige Konstruktor aufgerufen. Bei primitiven Datentypen entspricht der Wert in den Klammern dem Initialisierungswert: <syntaxhighlight lang="C++"> int variable(10); //Bei primitiven Datentype entspricht dies //int variable=10; struct test { int a; test(int par) {a=par;} //Konstruktor der Struktur test }; struct test test(4); //Konstruktor test(int par) wird aufgerufen struct test test(4,5); //KO, kein passender Konstruktor vorhanden </syntaxhighlight> === Sonstiges === Folgende weitere Sachverhalten gilt es bzgl. Variableninitialisierung zu berücksichtigen: * Nach C-Spezifikation ist eine Initialisierung von Variablen nicht notwendig. Es liegt folglich kein Fehler vor, wenn auf eine nicht initialisierte Variable lesend zugegriffen wird. Ungeachtet der C-Spezifikation überprüft der Compiler mit dem Schalter '-Wall' diesen Sachverhalt und gibt eine Warning aus. * Deklarationen/Prototypen können keinen Initialisierungswert enthalten <syntaxhighlight lang="C++"> extern int var=7; //Fehlerhaft </syntaxhighlight> * Const und lokale Static Variablen sollten initialisiert werden, auch wenn C in diesem Fall keinen Fehler meldet! <syntaxhighlight lang="C++"> const int konstante; //Syntaktisch OK, Initialisierungswert fraglich! static int statisch; </syntaxhighlight> == Anweisung (Statement) & Expression == Eine Anweisung (Statement) stellt entsprechend dem Wikipedia Artikel {{w|Anweisung_(Programmierung) | Anweisung}} ''"ein in der Syntax einer Programmiersprache formulierte einzelne Vorschrift dar, die im Rahmen der Abarbeitung des Programms auszuführen ist"''. Entsprechend der C-Spezifikation [C11 6.8] kann eine Anweisung aus: : labled-statement: Eine Sprungmarke für die Switch- und die Goto-Anweisung : compound-statement: siehe nachfolgendes Kapitel : expression-statement: siehe nachfolgendes Kapitel : selection-statement: Eine if() oder switch() Anweisung : iteration-statement: Eine while(), do while() oder eine for() Anweisung : jump-statement: Eine goto, break, continue oder return Anweisung Die einzelnen Statements können dabei aus weiteren Statements bestehen. === Ausdruck (Expression) === Entsprechend der C-Spezifikation [C11 6.5] ist ein Ausdruck eine Folge von Operatoren und Operanden, die die Berechnung eines Werts angibt, ein Objekt oder eine Funktion bezeichnet, Nebenwirkungen erzeugt oder eine Kombination davon ausführt. Die Wertberechnungen der Operanden eines Operators werden vor der Wertberechnung des Ergebnisses des Operators sequenziert (siehe auch {{w|lang=en|Expression_(computer_science)|Expression}}). Beispiele: <syntaxhighlight lang="C"> a=sqrt(a*a+b*b); //Ausdruck mit Nebenwirkungen int func(int par) { a++; return par*2;} b=func(1)*func(2); //Ausdruck mit undefinierten Verhalten a=++a + 1; a=for(lauf=10;lauf>0;lauf--); //for-Anweisung ist kein Ausdruck //d.h. liefert keinen Wert zurück </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> double sqrt(double); //DJ: Include-Anweisung in wikibooks schlägt fehlt int a=0; int func(int par) { a++; return par*2; } int main(int argc,char *argv[]) { int a=4,b=7; a=sqrt(a*a+b*b); //Ausdruck mit Nebenwirkungen b=func(1)*func(2); //Globale Variable a wird geändert! //Ausdruck mit undefinierten Verhalten a=++a + 1; //Kein Ausdruck a=for(lauf=10;lauf>0;lauf--); //for-Anweisung ist kein Ausdruck //d.h. liefert keinen Wert zurück return 0; } | execCompilerOptions=-Wall -lm| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Discarded Value === Discarded Value sind Ausdrücke, dessen Ergebnisse nicht verwendet werden (also keiner Variablen zugewiesen werden). Ergebnisse von Ausdrücken, die nicht verwendet werden, führen nicht zu einer Fehlermeldung: <syntaxhighlight lang="C"> int a=7; a; //Variable a wird gelesen, der Wert jedoch verworfen 7; //Konstante wird verworfen a+7; //Ergebnis wird Berechnet und verworfen printf("hallo"); //Printf hat einen Rückgabewert, dessen Wert verworfen wird </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=7; a; //Variable a wird gelesen, der Wert jedoch verworfen 7; //Konstante wird verworfen a+7; //Ergebnis wird Berechnet und verworfen printf("hallo"); //Printf hat einen Rückgabewert, dessen Wert verworfen wird return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * Soll bewusst der Rückgabewert verworfen werden, so kann/sollte mit dem explizten Cast auf (void) der Rückgabewert explizit 'verworfen' werden. Dies ist u.A. hilfreich bei Variablen, die (noch) nicht benutzt werden und der Compiler die Warning "unused Variable" ausgibt: :<syntaxhighlight lang="C"> (void)a; //Zur Vermeidung von Compiler-Warnings "Unused Variable" (void)(a+7); //hier eine explizte 'Ansage' der Verwerfung des Wertes (void)func(); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int func(void) { return 4711; } int main(int argc,char *argv[]) { int a; (void)a; //Zur Vermeidung von Compiler-Warnings "Unsued Variable" (void)(a+7); //hier eine explizte 'Ansage' der Verwerfung des Wertes (void)func(); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Mit der Anweisung <nowiki>[[nodiscard]]</nowiki> (ab C++17, ab C23) wird der Compiler angewiesen, dass der Aufrufer einer Funktion mit Rückgabewert der Rückgabewert entgegenzunehmen ist. Wird der Rückgabewert verworfen, so gibt der Compiler eine Fehlermeldung aus: :<syntaxhighlight lang="C"> [[nodiscard]] int Client(int socket); Client(5); ////Fehlermeldung, da Rückgabewert nicht verwendet wird </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> [[nodiscard]] int Client(int socket) { return socket+1; } int Server(int socket) { return socket+1; } int main(int argc,char *argv[]) { Server(5); //keine Fehlermeldung Client(5); //Fehlermeldung, da Rückgabewert nicht verwendet wird return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Java kennt Dicarded Values nicht. Ausnahme, es handelt sich um einen Funktionsaufruf, dessen Rückgabewert nicht genutzt wird. === Sequence Point === Ein Sequenzpunkt (u.A. das abschließende Semikolon am Ende der Anweisung) ist nach dem Wikipedia Artikel {{w|lang=en|Sequence_point|Sequence Point}} definiert als der Punkt in der Ausführung eines Computerprogramms, an dem garantiert ist, dass alle Nebenwirkungen früherer Bewertungen durchgeführt wurden und noch keine Nebenwirkungen von nachfolgenden Bewertungen durchgeführt wurden.<br /> Sequenzpunkte sind beispielsweise dann von Interesse, wenn dieselbe Variable innerhalb eines einzelnen Ausdrucks mehr als einmal geändert wird und die Ausführungsreihenfolge der Operationen nicht sauber spezifiziert ist.<br /> Ein oft zitiertes Beispiel ist der C-Ausdruck 'i=i++;'. Der Sequence Point garantiert, dass alle Operationen (hier Zuweisung und Postinkrement) ausgeführt sind. Jedoch ist die Ausführungsreihenfolge dieser beiden Operationen nicht spezifiziert. In Abhängigkeit des Zeitpunktes der Ausführung des Postinkrementes (vor oder nach der Zuweisung) kann i unterschiedliche Werte annehmen. In C und C++ führt die Auswertung eines solchen Ausdrucks zu undefiniertem Verhalten. Andere Sprachen, wie z. B. C#, definieren den Vorrang des Zuweisungs- und des Inkrementoperators so, dass das Ergebnis des Ausdrucks i=i++ garantiert ist.<br/> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int i=5; i=i++; printf("%d",i); //Gerne anderen Compiler auswählen, z.B. x86-64 icc... return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Weitere Sequence Points: * Beim ?-Operator stellt sowohl das ? als auch der : ein Sequenz Point dar. Zunächst muss der linke Ausdruck vollständig bearbeitet werden, bevor einer der beiden Bedingungen bearbeitet wird * Bei der logischen UND / ODER Funktion stellen der Operator ein Sequenz Point dar. Erst wird der linke Operand vollständig ausgeführt und ausgewertet, bevor (ggf.) der rechte Operand ausgewertet wird (siehe [[Programmieren in C/C++: Grundlagen#Logische Verknüpfungen | Logische Verknüpfungen]]) * Beim Komma-Operator stellen der Komma ein Sequence-Point dar (siehe [[Programmieren in C/C++: Grundlagen#Komma-Operator | Komma-Operator]]) • und weitere (siehe Appendix der C-Spec) Operationen, bei denen die Ausführungsreihenfolge nicht spezifiziert ist: * Bei Funktionsaufrufen ist die Abarbeitungsreihenfolge der Parameter nicht spezifiziert, so dass bspw.: :<syntaxhighlight lang="C"> //Aufrufruf einer Funktion, deren Parameter sich aus Funktionsaufrufen //ergeben (*pf[f1()]) (f2(), f3() + f4()); //pf -> Array von Funktionszeigern //Die Funktionen f1,f2,f3 und f4 können in einer beliebigen Reihenfolge //aufgerufen werden </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int f1(void) { printf("f1 called\n"); return 1; } int f2(void) { printf("f2 called\n"); return 2; } int f3(void) { printf("f3 called\n"); return 3; } int f4(void) { printf("f4 called\n"); return 4; } void func1(int par1,int par2) { printf("func1(%d,%d) called\n",par1,par2); } void func2(int par1,int par2) { printf("func2(%d,%d) called\n",par1,par2); } int main(int argc,char *argv[]) { void (*pf[2])(int,int)={func1,func2}; //Aufrufruf einer Funktion, deren Parameter sich aus Funktionsaufrufen //ergeben (*pf[f1()]) (f2(), f3() + f4()); //pf -> Array von Funktionszeigern //Die Funktionen f1,f2,f3 und f4 können in einer beliebigen Reihenfolge //aufgerufen werden //Gerne anderen Compiler auswählen, z.B. x86-64 icc... return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Per Postinkrement/-dekrement Operator sagt aus, dass für die eigentliche Operation der Wert der Variablen genutzt wird und im Anschluss die Variable erhöht / erniedrigt werden soll. Nach C-Spezifikation [C11 6.5.2.4] muss dies spätestens vor dem nächsten Sequence Point erfolgt sein. Der genaue Zeitpunkt innerhalb des Sequence Points ist jedoch nicht vorgegeben: :<syntaxhighlight lang="C"> int a=7; int b=a++ + a; //Ergebnis Abhängig, ob das Postinkrement vor der Addition //oder als letztes ausgeführt wird. a=a++ + 1; //dito </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=7; int b=a++ + a; //Ergebnis Abhängig, ob das Postinkrement vor der Addition //oder als letztes ausgeführt wird. a=a++ + 1; //dito printf("a=%d b=%d\n",a,b); //Gerne anderen Compiler auswählen, z.B. x86-64 icc... return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Block / Compound-Statement === Ein Block oder Compound-Statement fasst Vereinbarungen und Anweisungen zu 'einer' Anweisung/Statement zusammen. Es kann überall dort eingesetzt werden, wo nur eine Anweisung erlaubt ist. <code> Syntax: {Declaration-or-statement-list/textsuperscript<sub>OPT</sub>} </code> Ein Block wird nicht wie bei einer Anweisung mit einem Semikolon abgeschlossen (Das angehängte Semikolon wäre dann eine separate leere Anweisung!). <br /> Ein Block hat blockweite Sichtbarkeit (siehe [[Programmieren in C/C++: Grundlagen#Blockweite Sichtbarkeit | Blockweite Sichtbarkeit]]), so dass hier definierte Variablen nur hier gültig sind. Deklarationen sind ebenfalls nur in dem Block gültig. <syntaxhighlight lang="C"> for(..) Anweisung; //For-Schleife führt nur diese eine Anweisung aus for(…) {Block} //For-Schleife führt Block (als eine Anweisung) aus if(..) Anweisung; else Anweisung; //IF-Anweisung führt nur 'eine' //Anweisung aus if(..) {Block} else {Block} //IF-Anweisung führt Block aus if( ) {Block}; else {Block}; //Semikolon ist eine separate //Leer-Anweisung, so dass else //nicht zur IF-Anweisung zugeordnet //werden kann (2 Anweisungen vor Else) void foo(void) { int var1; { //Block innerhalb von Block als Strukturierungswerkzeug int var2; struct xyz{int x,y,z}; //Defintion eines Datentyps im Block struct xyz var3; } struct xyz var4; //KO, Datentyp hier nicht mehr bekannt } </syntaxhighlight> Die GNU-C Reference (nicht C++) erlaubt es, Funktionen innerhalb von Blöcken (und damit auch innerhalb von Funktionen) zu definieren. Diese innere Funktion steht dann nur in diesem Block zur Verfügung und kann ergänzend auf Variablen des umgebenden Blockes zugreifen: <syntaxhighlight lang="C"> void foo(void) { { int label=1; //Funktion innerhalb einer Funktion void dummy(void){ label++; //Zugriff auf Variablen des umschließenden Blockes } dummy(); //Aufruf der nur in diesem Block gültigen Funktion } dummy(); //KO, Funktion hier nicht mehr gültig } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void foo(void) { { int label=1; //Funktion innerhalb einer Funktion void dummy(void){ label++; //Zugriff auf Variablen des umschließenden Blockes } dummy(); //Aufruf der nur in diesem Block gültigen Funktion } dummy(); //KO, Funktion hier nicht mehr gültig } int main(int argc,char *argv[]) { foo(); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * '''Blöcke können/sollten als Strukturierungswerk genutzt werden. Dem Leser von Source Code kann auf dieser Weise vermittelt werden, dass diese Anweisungen 'zusammen' zu lesen sind.''' * Im Gegensatz zu Java, in welchem innerhalb eines Blockes kein Variablenname genutzt werden darf, die außerhalb des Blockes existiert, ist dies in C erlaubt. Die äußere Variable steht damit innerhalb des Blockes nicht mehr im Zugriff. :<syntaxhighlight lang="C"> int a=3; int main(void){ int a=7; //Globale Variable ist ab hier nicht mehr sichtbar/zugreifbar { int a=9; //Innere Variable überdeckt äußere Variable } } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int a=3; int main(int argc,char *argv[]) { printf("a=%d\n",a); int a=7; //Globale Variable ist ab hier nicht mehr sichtbar/zugreifbar printf("a=%d\n",a); { int a=9; //Innere Variable überdeckt äußere Variable printf("a=%d\n",a); } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Embedded Statement === Embedded Statements sind eine GNU-C Erweiterung (siehe [https://www.gnu.org/software/gnu-c-manual/gnu-c-manual.html GNU-C-Manual 3.18]). Da sie vom Autor als sehr nützlich angesehen wird und auch von diversen Compilern und auch in C++ unterstützt wird, wird diese hier beschrieben. Ein Block fasst mehrere Anweisungen zu einer Anweisung zusammen, hat jedoch kein Rückgabewert. Ein Embedded-Statement entspricht einem Block mit der Ergänzung, dass dieser einen Rückgabewert hat, so dass ein Embedded-Statement überall dort eingesetzt werden kann, wo eine Expression erwartet wird. <code> Syntax: ({Declaration-or-statement-list<sub>OPT</sub>}) </code> Der Rückgabewert wird nicht über eine return-Anweisung angegeben, sondern entstammt aus der letzten Anweisung innerhalb der Liste: <syntaxhighlight lang="C"> int var; var={int par=7;} //KO Block hat keine Rückgabewert. var=({int par=7; par++; par;}); //OK Embedded-Statement hat einen //Rückgabewert, der sich aus der //letzten Anweisung 'Par;' ergibt //Hier 8. </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int var; var={int par=7;} //KO Block hat keine Rückgabewert. var=({int par=7; par++; par;}); //OK Embedded-Statement hat einen //Rückgabewert, der sich aus der //letzten Anweisung 'Par;' ergibt //Hier 8. printf("var=%d\n",var); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Ein Embedded-Statement ähnelt folglich einem Funktionsaufruf mit dem Unterschied, dass a) in der Tat kein Funktionsaufruf stattfindet und b) der Rückgabewert nicht mit return, sondern über die letzte Anweisung zurückgegeben wird. Der Anwendungsfall ist dort zu finden, wo eine Expression erwartet wird und mehrere Anweisungen zum Ermitteln der Expression notwendig sind: <syntaxhighlight lang="C"> int var1=8; int b=({int d=var1++;d>10?10:d;}); if( ({int d=b;b=var1;b=d;}) > 1) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int var1=8; int b=({int d=var1++;d>10?10:d;}); if( ({int d=b;b=var1;b=d;}) > 1) printf("Bedingung erfüllt"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * Ein Embedded-Statement ist insbesondere bei Nutzung von Makros (siehe Kap [[Programmieren in C/C++: Präprozessor | Präprozessor]]) hilfreich * Mittels eines Embedded-Statement kann eine anonyme Funktion/Lambdafunktion dargestellt werden: <syntaxhighlight lang="C"> void test(int (*fptr)(int),int arr[10]) { for(int lauf=0;lauf<10;lauf++) arr[lauf]=fptr(arr[lauf]); } int main(int argc, char *argv[]) { int arr[]={1,2,3,4,5,6,7,8,9,10}; //Aufruf mit einer anonymen Funktion test( ({int func(int a) {return a%2?a:0;} ; func;}) ,arr); } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void test(int (*fptr)(int),int arr[10]) { for(int lauf=0;lauf<10;lauf++) arr[lauf]=fptr(arr[lauf]); } int main(int argc, char *argv[]) { int arr[]={1,2,3,4,5,6,7,8,9,10}; //Aufruf mit einer anonymen Funktion test( ({int func(int a) {printf("Called:%d\n",a);return a%2?a:0;} ; func;}) ,arr); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Funktionen / Prozeduren == Funktionen/Prozeduren sind ein Strukturierungsmerkmal, so dass Teile der Funktionalität des Programmes wiederverwendbar sind. C/C++ unterscheidet nicht zwischen Funktionen (haben einen Rückgabewert, können damit in Ausdrücken verwendet werden) und Prozeduren (haben keine Rückgabewert, resp. Rückgabetyp void).<br/> Mit jedem Aufruf einer Funktion wird für den zugehörigen Block ein eigener Stack-Kontext angelegt, so dass Funktionen sich selbst aufrufen können (Rekursion). Jeder Funktionsinstanz hat somit seinen eigenen lokalen Variablenbereich, teilen sich jedoch die globalen und die statisch lokalen Variablen.<br /> Mit dem Aufruf einer Funktion können Parameter übergeben werden, wobei die Übergabeparameter vom Aufrufer (Caller) durch den Aufruf in die lokalen Variablen des Aufgerufenen (Callee) kopiert/zugewiesen werden (Call by Value). Wird ein Zeiger übergeben, hat der Callee über die Dereferenzierung des Zeigers die Möglichkeit, die Variablen des Caller zu verändern (Call by Reference) (siehe Kap. [[Programmieren in C/C++: Zeiger #Zeiger bei Funktionsaufrufen | Zeiger:Zeiger bei Funktionsaufrufen).]]). Hinweise: * Die Klammerung hinter dem Funktionsnamen (<code>foo()</code>) zeigt an, dass es sich um einen Funktionsaufruf (Verzweigung der Programmausführung zu der Startadresse der Funktion) handelt :<syntaxhighlight lang="C"> void foo(void) {printf("foo called");}; foo(); //Klammern hinter dem Funktionsnamen bedeuten Aufruf der Funktion </syntaxhighlight> * Die Nutzung des Funktionsnamens ohne Klammerung (<code>foo</code>) gibt die Startadresse der Funktion zurück. Die Startadresse kann in einem Zeiger auf Funktionen gespeichert werden (siehe Kap. [[Programmieren in C/C++: Zeiger#Zeiger auf Funktionen | Zeiger:Zeiger auf Funktionen]]). :<syntaxhighlight lang="C"> void foo(void) {printf("foo called");}; void (*fptr)(void)=foo; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void foo(void) { printf("foo called"); }; int main(int argc, char *argv[]) { void (*fptr)(void)=foo; fptr(); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Deklaration/Definition vor dem ersten Aufruf der Funktion 'notwendig', damit Compiler die Übergabeparameter entsprechend bereitstellt und ggf. eine implizite Typkonvertierung durchführt (dito Rückgabewert). Die Angabe der Variablennamen können bei der Deklaration entfallen * Die fehlende Angabe der Übergabeparameter bedeutet in C (nicht C++), dass diese Funktion mit beliebigen Übergabeparametern aufgerufen werden kann und der Compiler keine Typprüfung durchführt: :<syntaxhighlight lang="C"> int func() {...} //kann wie folgt aufgerufen werden func(); func(4); func("hallo Welt",4.7); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void func() { printf("foo called\n"); }; int main(int argc, char *argv[]) { func(); func(4); func("hallo Welt",4.7); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} :→ unbedingt vermeiden<br /> :Hat die Funktion keinen Übergabewert, so wird dies in C mit void gekennzeichnet * In C++ bedeutet die Schreibweise ohne Datentypbeschreibung, dass keine Parameter erwartet werden * In der Parameterliste von Funktionen dient in der GNU-C Spezifikation das Semikolon zum Trennen zwischen Deklaration von Übergabeparameter und den Übergabeparametern. Alle Übergabewerte links vom Semikolon sind (Forward)deklarationen: :<syntaxhighlight lang="C"> void test1(int a; int b,int a) { // Forward; Parameter printf("a=%d b=%d\n",a,b); } //Aufruf test1(3,7); //a=7 b=3 //Sinnvoll im Umgang mit Variable Length Arrays void test2(int dim; const char str[dim], int dim); //Aufruf test2("hallo",6); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void test1(int a; int b,int a) { // Forward; Parameter printf("a=%d b=%d\n",a,b); } //Sinnvoll im Umgang mit Variable Length Arrays void test2(int dim; const char str[dim], int dim) { printf("dim=%d\n",dim); } int main(int argc, char *argv[]) { //Aufrufe test1(3,7); //a=7 b=3 test2("hallo",6); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Return-Anweisung === Mit der Return-Anweisung wird eine Funktion (vorzeitig) beendet. Der optionale Parameter dient der Angabe des Rückgabewertes der Funktion an den Aufrufer. Der Datentyp des Parameters ergibt sich aus dem Rückgabedatentyp der Funktion. <code> Syntax: return expression<sub>OPT</sub> </code> Der Rückgabewert expresion sagt aus, dass hier nicht nur Konstanten oder Variablen stehen können, sondern beliebige Ausdrücke erlaubt sind. Der resultierende Datentyp des Ausdruckes muss letztendlich dem Rückgabedatentyp der Funktion entsprechen: <syntaxhighlight lang="C"> int foo(double a, double b) { return (int)(a*a+b*b); } </syntaxhighlight> Hinweise: * Bei nicht void-Funktionen ist eine return-Anweisung mit einer Expression entsprechend dem Datentyp der Funktion zwingend notwendig: :<syntaxhighlight lang="C"> int func(void) { return 5.1; //Datentyp wird zuvor int konvertiert } double a=func(); //int wird in double konvertiert </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int func(void) { return 5.1; //Datentyp wird zuvor int konvertiert } int main(int argc, char *argv[]) { double a=func(); //int wird in double konvertiert printf("a=%f\n",a); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Bei einer void-Funktion ist die return-Anweisung ohne Expression optional. Hier entspricht der schließende Block der Return-Anweisung :<syntaxhighlight lang="C"> void func(char *str) { if(str==NULL) return; printf("%s",str); } </syntaxhighlight> Sollen mehr als ein Rückgabewert an den Aufrufer zurückgegeben werden so empfiehlt sich: * die Rückgabewerte in einer Struktur zu packen (siehe [[Programmieren in C/C++: Datentypen#Verbundtyp Struktur/Klasse (nur C++) |Datentypen:Verbundtyp Struktur/Klasse (nur C++)]]) * die Rückgabewerte über die Aufrufparameter als Call-by-Reference zu übergeben (siehe [[Programmieren in C/C++: Zeiger#Zeiger bei Funktionsaufrufen | Zeiger:Zeiger bei Funktionsaufrufen]]) ==== Rückgabewert aus Datentypsicht ==== Aus Datentypsicht kann der Funktionsname inkl. den Parameter(n) in einem Ausdruck mit dem Datentyp des Rückgabewertes der Funktion ausgetauscht werden: <syntaxhighlight lang="C"> int foo(void) {return 4711;} int var; var=1+foo(); //Aus Datentypsicht (int)=(int)+(int) </syntaxhighlight> Daraus ergibt sich, dass bei Arrays/Strukturen/Unions direkt auf einzelne Komponenten zugegriffen werden kann, ohne diese zuvor einer Variablen zuzuweisen: <syntaxhighlight lang="C"> struct xyz{int x,y,z;}; struct xyz foo(int par) { struct xyz var; var.x=var.y=var.z=par; return var; } if(foo(12).x == 12) printf("Identisch\n"); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct xyz{int x,y,z;}; struct xyz foo(int par) { struct xyz var; var.x=var.y=var.z=par; return var; } int main(int argc, char *argv[]) { if(foo(12).x == 12) printf("Identisch\n"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} ==== Fehlerrückgabe ==== Viele Funktionen können unter gewissen Umständen nicht korrekt ausgeführt werden. Z.B. aufgrund dessen, dass: * der benötigter Speicher vom Heap nicht bereitgestellt werden kann * Übergabeparameter außerhalb des zulässigen Bereiches liegen * angeforderte Ressource (Datei, Geräte, …) nicht vorhanden/verfügbar sind Solche Fälle gilt es dem Aufrufer mitzuteilen, da in diesen Fällen die vom Aufrufer geforderte Funktionalität nicht erfüllt ist und der Aufrufer ggf. nicht weiterarbeiten kann. Zur Mitteilung des Fehlers sollte vorrangig der Rückgabewerte genutzt werden. (auch wenn in C++ mit Exception eine Alternative hierzu bereitsteht) <syntaxhighlight lang="C"> char *strdup(char *src) { char *dst; if((dst=malloc(strlen(src)+1))==NULL) return NULL; strcpy(dst,src); return dst; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> #include <string.h> char *strdup1(char *src) { char *dst; if((dst=malloc(strlen(src)+1))==NULL) return NULL; strcpy(dst,src); return dst; } int main(int argc, char *argv[]) { char *dup=strdup1("hallo"); if(dup == NULL) printf("Fehler\n"); else printf("dup='%s'\n",dup); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Die Standard-C Library-Funktionen geben in diesem Fall zumeist ein -1 (Rückgabewert Ganzzahl) oder einen NULL-Zeiger (Rückgabewert Zeiger) zurück. Der genaue Fehlergrund ist dann ergänzend in der globalen Variablen errno gespeichert. Mittels der Standard-C Funktion strerror() kann die Zahl in einen für den Anwender/Programmierer lesbaren String umgewandelt werden (die GNU-C Library Funktion printf() bietet ergänzend den Conversion Spezifier %m als alternative Ausgabemöglichkeit an): <syntaxhighlight lang="C"> #include <errno.h> int var; if(-1==scanf("%d",&var) ) printf("Es wurde keine Zahl erkannt\n"); int ret=open("/etc/ptmp",O_WRONLY|O_CREAT|O_EXCL, S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH); if(-1==ret) printf("open failed() with %s\n",strerror(errno)); if(-1==ret) printf("open failed() with %m (nur glibc)\n"); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <fcntl.h> #include <string.h> #include <errno.h> int main(int argc, char *argv[]) { int var; if(-1==scanf("%d",&var) ) printf("Es wurde keine Zahl erkannt\n"); int ret=open("/etc/ptmp",O_WRONLY{{!}}O_CREAT{{!}}O_EXCL, S_IRUSR{{!}}S_IWUSR{{!}}S_IRGRP{{!}}S_IROTH); if(-1==ret) printf("open failed() with %s\n",strerror(errno)); if(-1==ret) printf("open failed() with %m (nur glibc)\n"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} '''Für eine sauber Programmierung sollte diese Methodik generell angewendet werden.''' Jede Funktion, welche Fehlschlagen kann, teilt dies per Rückgabewert dem Aufrufer mit. Der Rückgabewert einer jeden Funktion wird vom Aufrufer kontrolliert. === Main-Funktion === Mit Start der Anwendung übergibt das Betriebssystem die Kontrolle an die Anwendung und führt dort die Funktion main aus. Als Übergabe- und Rückgabeparameter sind folgende Varianten erlaubt: <syntaxhighlight lang="C"> int main(void) { } int main(int argc, char *argv[]) { } </syntaxhighlight> Mit dem Start der Anwendung kann, wie bei jedem Funktionsaufruf, Parameter an den startenden Prozess übergeben werden. Als Parameter können Strings übergeben werden, welche in Form eines Arrays von Strings übergeben werden. Im Parameter argc sind die Anzahl der Strings enthalten. Im Parameter argv[x] sind die einzelnen Strings enthalten. Sofern vorhanden ist im ersten String der Programmname/Aufrufname der Anwendung enthalten: <syntaxhighlight lang="C"> int main(int argc, char *argv[]) { //Variante 1: Darstellung des Inhaltes des Arrays von Strings for(int lauf=0;lauf < argc; lauf++) printf("%d.Parameter: '%s'\n",lauf,argv[lauf]); //Variante 2: Darstellung des Inhaltes des Arrays von Strings (void)argv; //Wird hier nicht benötigt for(char **str=argv;*str!=NULL;str++) printf("Parameter: '%s'\n",*str); return EXIT_SUCCESS; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int max_width=0; int ret; //Variante 1: Darstellung des Inhaltes des Arrays von Strings for(int lauf=0;lauf < argc; lauf++) { ret=printf("%d.Parameter: '%s'\n",lauf,argv[lauf]); max_width=ret>max_width ? ret : max_width; } //Trennzeichen drucken char term[max_width]; memset(term,'-',max_width); printf("%.*s\n",max_width-1,term); //Variante 2: Darstellung des Inhaltes des Arrays von Strings (void)argv; //Wird hier nicht benötigt for(char **str=argv;*str!=NULL;str++) printf("Parameter: '%s'\n",*str); return EXIT_SUCCESS; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Im Compiler-Explorer können die Parameter im Executor unter 'Execution Arguments', getrennt mit Leerzeichen eingegeben werden. Wird die Funktion main beendet, entweder über die return Anweisung oder den Aufruf der exit() Funktion, wird die Kontrolle zurück an den startenden Prozess (zumeist Shell) gegeben. Über den Rückgabewert wird im Allgemeinen dem Aufrufer der Fehlerstatus mitgeteilt (EXIT_SUCCESS oder 0 bedeutet fehlerfreie , EXIT_FAILURE oder ungleich 0 fehlerhafte Ausführung). Der Start der Anwendung kann als Funktionsaufruf angesehen werden, welchen einen Wert an den Aufrufer zurückliefert. Hinweise: * Der Return-Wert der main-Funktion kann mit >>echo $? in der Bash abgefragt werden * Mittels <code>exit(int status)</code> kann das Programm an jeder Stelle innerhalb des Programms beendet werden. <code>status</code> entspricht dann der expression der return Anweisung von main === Inline Funktion === Wie der Name inline andeutet, ist die Intention von Inline, dass die aufgerufen Funktion Bestandteil der aufrufenden Funktion ist. Die aufgerufene Funktion soll somit im Kontext des Aufrufers ausgeführt werden, so dass kein eigener Stack bereitgestellt werden muss. Der Start der Funktion kann somit schneller erfolgen: <code> inline int foo(void) { } </code> Das Inline erfolgt durch den Compiler (und nicht durch den Linker). Damit das inline funktioniert, muss die zu inlinende Funktion vor dem Aufruf definiert sein, d.h. sie muss in derselben C-Datei enthalten sein [C11 6.7.4]. Hinweis: * Das 'inlinen' von Funktionen über die eigene Objektdatei hinweg erfolgt in C/C++ über Link Time Optimization (LTO). Hierzu fügt der Compiler den Zwischencode mit in die Objektdatei, so dass der Linker das 'inlinen' vollziehen kann (siehe {{w|lang=en|Interprocedural_optimization| Interprocedural Optimization}}) === Variadic Function / Ellipsis Punctuator === Mit dem Ellipsis Puncturator '…' kann in Funktionsdefinitionen angegebenen werden, dass anstatt der … Anweisung, beliebig viele Parameter/Argumente übergeben werden können. Dies wird unter anderen in der printf() Anweisung genutzt: <syntaxhighlight lang="C"> int printf(const char *fmt, ... ); </syntaxhighlight> Die wie folgt aufgerufen werden kann: <syntaxhighlight lang="C"> printf("Hello World"); //es folgt kein Parameter printf("%d",100); //es folgt ein Parameter vom Datentyp int printf("%f",1.1); //es folgt ein Parameter vom Datentyp double printf(conststr,1,2,3,"xyz") //Ohne Worte </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { printf("Hello World\n"); //es folgt kein Parameter printf("%d\n",100); //es folgt ein Parameter vom Datentyp int printf("%f\n",1.1); //es folgt ein Parameter vom Datentyp double const char *conststr="%d %x %c '%s'\n"; printf(conststr,1,2,33,"xyz"); //Ohne Worte return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Der übergebenen Datentype der Parameter wird der aufgerufenen Funktion nicht mitgeteilt! Einzig werden bei Aufruf der variadischen Funktion so viel Bytes auf den Stack gelegt, wie der Datentyp der einzelnen Übergabeparameter groß ist: :<code>int --> 4 Byte</code> :<code>double --> 8 Bytes</code> :<code>Zeiger --> 4/8 Byte</code> Damit die aufgerufene Funktion die fehlende Datentypinformation dennoch mitgeteilt bekommt, muss dies am Beispiel der <code>printf</code> Funktion über den Format-String erfolgen: <syntaxhighlight lang="C"> int vari; printf("%d",vari); //%d erwartet einen Integer Übergabeparameter (4-Byte) size_t vars; printf(" %zu %d ", vars, vari); // %zu zur Mitteilung, dass anstatt //integer nun size_t als Datentyp übergeben wird //und somit anstatt 4 Bytes 8 Bytes vom Stack genommen werden </syntaxhighlight> <code>printf()</code> entnimmt entsprechend der Datentypbeschreibung im Formatstring die passende Anzahl an Bytes vom Stack. Da der Compiler für die optionalen Parameter nicht den Zieldatentyp kennt, erlaubt die C-Spezifikation als Übergabedatentypen hier nur die Grunddatentypen <code>signed int, unsigned int, long, long long, double</code> und <code>Zeiger</code>. Entspricht der übergebene Parameter nicht einen dieser Datentypen, so wird er mittels implizit Cast entsprechend nachfolgender Tabelle gewandelt [C11 6.5.2.2 Default Argument Promotions]: {| class="wikitable" |- ! Ausgangstyp !! Umwandlungstyp |- | char, signed char, short || int |- | unsigned char, unsigned short || unsigned int |- | float || double |- | Alle anderen Datentypen || bleiben erhalten |} Bspw.: <syntaxhighlight lang="C"> signed char varc=-1; float varf =0.1; printf("%d %f",varc, varf); //varc wird beim Aufruf nach int konvertiert! //varf wird beim Aufruf nach double konvertiert! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { signed char varc=-1; float varf =0.1; printf("%d %f",varc, varf); //varc wird beim Aufruf nach int konvertiert! //varf wird beim Aufruf nach double konvertiert! //Zur Darstellung der besagten Konvertierung siehe rechtes Fenster return 0; } | execCompilerOptions=-Wall| h=g }} Öffnen im Compiler Explorer] }} Zum Umgang mit dem variadischen Parameter stellt C die Funktionen <code>va_start(), va_arg(), va_copy()</code> und <code>va_end()</code> bereit. Auf Grundlage des dazugehörigen Datentyps <code>va_list</code> können variadische Parameter auch an Unterfunktionen weitergereicht werden (bspw vprintf()). Dieses Thema bedingt jedoch genaue Kenntnisse vom Umgang mit dem Stack und ist nicht Bestandteil dieser Vorlesung. == Variable Length Array (VLA) == Im Normalfall ergibt sich die Anzahl der Elemente eines Arrays aus einer Konstanten, so dass der Compiler zur Compilezeit passend Speicher reserviert (siehe Kap. [[Programmieren in C/C++: Array | Array]]): <syntaxhighlight lang="C"> int arr[4]; //Compiler reserviert für Variable arr //4*sizeof(int) Speicherplatz </syntaxhighlight> Bei Variable Lenght Array wird die Arraydimension nicht über eine Konstante, sondern über eine Variable oder einen Ausdruck angegeben. D.h. die tatsächliche Dimension des Arrays ergibt sich erst zum Ausführungszeitpunkt der Definition: <syntaxhighlight lang="C"> void foo(size_t n) { int arr[n*2+1]; //Arraydimension ergibt sich zum Ausführungszeitpunkt n++; //Nachträgliches Ändern von n ändert nicht //die Größe des Arrays! } </syntaxhighlight> Ein Variable Length Array kann nur als lokale Variable oder als Übergabeparameter definiert werden (wobei im letzteren Fall kein Speicher hiermit reserviert wird). Eine Initialisierung eines VLA's mit der Definition ist nicht möglich, d.h. nach der Definition beinhaltet das Array 'zufällige' Werte. Es empfiehlt sich daher, diese bspw. mit memset händisch zu initialisieren (siehe auch Kap [[Programmieren in C/C++: Array#Initialisierung | Array:Initialisierung]]): <syntaxhighlight lang="C"> void foo(size_t n) { char str[n]; memset(str,0,n*sizeof(char)); //Array mit 0 füllen </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> void foo(size_t n) { char str[n]; memset(str,0,n*sizeof(char)); //Array mit 0 füllen for(size_t lauf=0;lauf<n;lauf++) printf("str[%zu]=%d\n",lauf,str[lauf]); } int main(int argc, char *argv[]) { foo(4); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Mittels sizeof kann weiterhin der Speicherbedarf ermittelt werden, wobei sizeof mit einem VLA als Argument kein Konstantenausdruck ist. Stattdessen wird die Größe zur Laufzeit ermittelt: <syntaxhighlight lang="C"> void foo(size_t n) { int arr[n*2+1]; //VLA size_t size; size=sizeof(arr); //sizeof(arr) entspricht einem Funktionsaufruf //welcher die Speichergröße des VLA's ermittelt </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void foo(size_t n) { int arr[n*2+1]; //VLA size_t size; size=sizeof(arr); //sizeof(arr) entspricht einem Funktionsaufruf //welcher die Speichergröße des VLA's ermittelt printf("size=%zu\n",size); } int main(int argc, char *argv[]) { foo(5); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} VLA wurden erstmals in C mit C99 eingeführt. In C11 wurden VLA's als optional eingestuft und mit C23 zurück auf notwendig gesetzt. In C++ sind VLA's nicht definiert, werden jedoch vom GCC Compiler unterstützt. Als alternativen Datentyp wird hier std::array empfohlen. Hinweis: * VLA sind nicht direkt in einem Switch-Case Block definierbar. Wird hier ein VLA benötigt, so muss hierzu ein Block erzeugt werden: :<syntaxhighlight lang="C"> switch(value) { case 1: char arr1[value]; //Compilerfehler, da bei value!=1 kein Speicherplatz //für das VLA reserviert wird break; case 2: { char arr2[value]; //OK } break; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int value=argc; switch(value) { case 1: char arr1[value]; //Compilerfehler, da bei value!=1 kein Speicherplatz //für das VLA reserviert wird break; case 2: { char arr2[value]; //OK } break; } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Operatoren == In der Programmiersprache C sind folgende Punctuators [C11 6.4.6] definiert: <syntaxhighlight> [ ] ( ) { } . -> ++ -- & * + - ~ ! / % << >> < > <= >= == != ^ | && || ? : ; ... = *= /= %= += -= <<= >>= &= ^= |= , # ## <: :> <% %> %: %:%: </syntaxhighlight> Die Funktionalitäten sind identisch zu Java. Aufgrund des Datentyps Zeiger gibt es in C ergänzend den Punctuator <code>-></code> (siehe Kap [[Programmieren in C/C++: Datentypen#Verbundtyp Struktur/Klasse (nur C++)|Datentypen:Verbundtyp Struktur/Klasse (nur C++)]]). Der Präprozessor bedingt die beiden Punctuatoren <code>#</code> und <code>##</code> (siehe Kap [[Programmieren in C/C++: Präprozessor | Präprozessor]]). Die letzten 6 Punctuators <code><: :> <% %> %: %:%:</code> werden zu <code>[ ] { } # ##</code> ersetzt. Sie sind für Computersysteme gedacht, welche keine ALTGR-Taste besitzen.<br /> Java kennt ergänzend den <code>>>></code> Operatoren, welcher in C über den normalen Schiebebefehl und den zugrundeliegenden Datentyp gesteuert wird. Wie in Java sind einige Punctuators vom Kontext abhängig und haben damit unterschiedliche Funktionalitäten: <syntaxhighlight> ++ → (Postfix) ++ vs. ++(Präfix) -- → (Postfix) -- vs. --(Präfix) +/- → Vorzeichen vs. Addition/Subtraktion () → Funktionsaufruf() vs. Befehlsbestandteil if() vs. Priorisierung </syntaxhighlight> Für den Umgang mit dem Datentyp Zeiger besitzen einige Punctuatoren ergänzende Funktionalitäten (siehe Kap [[Programmieren in C/C++: Zeiger| Zeiger]]): <syntaxhighlight> & → Bitweises UND: Anwendung: Ganzahlausdruck & Ganzahlausdruck & → Adressoperator: Anwendung: &Variable * → Multiplikation Anwendung: Ganzahl-/Gleitkommaausdruck * Ganzahl-/Gleitkommaausdruck * → Datentyp Zeiger Anwendung: Datentyp * Variablenname; * → Dereferenzierung: Anwendung: * Zeiger </syntaxhighlight> Punctuatoren, welche von Java abweichende / ergänzende Funktionalitäten haben, werden nachfolgend gesondert beschrieben. Sind in einer Anweisung mehrere Operatoren enthalten, so hängt die Abarbeitungsreihenfolge von der Rangfolge/Priorität der Operatoren ab (siehe [[C-Programmierung: _Liste_der_Operatoren_nach_Priorität| C-Programmierung:Liste der Operatoren nach Priorität]]).<br /> Die Rangfolge ist identisch zu Java, wobei C mehr Operatoren kennt. Generell empfiehlt sich, lieber eine Klammer zu viel als zu wenig zusetzen. Klammern haben die höchste Priorität. === Zuweisungs-Operator === Die Zuweisung (<code>=</code>-Operator, assignment expression) weist dem L-Value den R-Value zu. Ergänzend dient der L-Value als Rückgabewert des Operators, so dass das Ergebnis der Zuweisung weiter genutzt werden kann. Die Abarbeitungsreihenfolge ist von rechts nach links (R-L Assoziativität). Wird der 'letzte' Rückgabewert nicht verwendet, so wird dieser verworfen (siehe Kap. [[Programmieren in C/C++: Grundlagen#Discarded Value | Discarded Value]]).<br /> Beispiel: <syntaxhighlight lang="C"> a=7; //Zuweisung a=b=7; //Erste Zuweisung (b=7) hat einen Rückgabewert, welcher im //Anschluss a zugewiesen wird if(a=7) //Variablen a wird der Wert 7 zugewiesen. Der Rückgabewert //der Zuweisung wird im Anschluss auf True oder False geprüft if(7=a) //Besser, da aufgrund der fehlerhafter Zuweisung ein //Compilerfehler geworfen wird x*=y=z //entspricht x=x*(y=z) a=b=d+7; //entspricht a=(b=(d+7)) a=b==c; //a bekommt das boolesche Ergebnis der Vergleichsoperation //zugewiesen </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a,b,c=3,d=4; int x,y,z; a=7; //Zuweisung a=b=7; //Erste Zuweisung (b=7) hat einen Rückgabewert, welcher im //Anschluss a zugewiesen wird if(a=7) //Variablen a wird der Wert 7 zugewiesen. Der Rückgabewert ; //der Zuweisung wird im Anschluss auf True oder False geprüft if(7=a) //Besser, da aufgrund der fehlerhafter Zuweisung ein ; //Compilerfehler geworfen wird x*=y=z; //entspricht x=x*(y=z) a=b=d+7; //entspricht a=(b=(d+7)) a=b==c; //a bekommt das boolesche Ergebnis der Vergleichsoperation //zugewiesen return 0; return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * Auf beiden Seiten der Zuweisung muss der identische Datentyp stehen. Wenn andernfalls eine implizite Typkonvertierung nicht möglich ist, gibt der Compiler einen Fehler aus: :<syntaxhighlight lang="C"> int a = 7.3; //implizite Typkonvertierung double b=a+3; //Implizite Typkonvertierung der Intergeraddition nach double float c=(float)a+(float)3; //Explizite Typkonvertierung char *d=a; //Compilerfehler, da Integerwert nicht implizit in einen //Zeiger konvertiert werden kann </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a = 7.3; //implizite Typkonvertierung double b=a+3; //Implizite Typkonvertierung der Intergeraddition nach double float c=(float)a+(float)3; //Explizite Typkonvertierung char *d=a; //Compilerfehler, da Integerwert nicht implizit in einen //Zeiger konvertiert werden kann //Zur Darstellung der besagten Konvertierung siehe rechtes Fenster (void)b; (void)c; (void)d; return 0; } | execCompilerOptions=-Wall| h=g }} Öffnen im Compiler Explorer] }} * Bei der Parameterübergabe beim Funktionsaufruf wird ebenfalls indirekt der Zuweisungsoperator angewendet. Die Parameter des Aufrufers werden per Zuweisung den lokalen Variablen der aufgerufenen Funktion zugewiesen :<syntaxhighlight lang="C"> void func(int a, float b) { printf("a=%d b=%f",a,b); } int x=4; float y=5.0; func(x,y); //der Inhalt der Variablen x wird der lokalen Variable a //(a=x) und der Inhalt der Variablen y der lokalen Variablen b //(b=y) zugewiesen. func(y,x); //Dito, mit der Ergänzung, dass eine implizite Typkonvertierung //stattfindet (a=(int)y) und (b=(float)x). </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void func(int a, float b) { printf("a=%d b=%f",a,b); } int main(int argc, char *argv[]) { int x=4; float y=5.0; func(x,y); //der Inhalt der Variablen x wird der lokalen Variable a //(a=x) und der Inhalt der Variablen y der lokalen Variablen b //(b=y) zugewiesen. func(y,x); //Dito, mit der Ergänzung, dass eine implizite Typkonvertierung //stattfindet (a=(int)y) und (b=(float)x). //Zur Darstellung der besagten Konvertierung siehe rechtes Fenster return 0; } | execCompilerOptions=-Wall| h=g }} Öffnen im Compiler Explorer] }} === Komma-Operator === Der Komma-Operator erlaubt es, zwei Ausdrücke auszuführen, wo nur einer erlaubt wäre. Die Ergebnisse aller durch diesen Operator verknüpften Ausdrücke, außer dem letzten werden verworfen. Der letzte Ausdruck dient als Rückgabewert. Folgendes gilt es bei der Nutzung des Komma-Operators zu beachten: * Der Komma-Operator wird von links nach rechts ausgewertet * Das Komma selbst stellt eine Sequence Point dar (siehe Kap [[Programmieren in C/C++: Grundlagen#Sequence Point|Sequence Point]]) * An Stellen, wo das Komma zum Syntax gehört (z.B. Trennung der Übergabeparameter bei der Funktionsdefinition und beim Funktionsaufruf, Trennung von Variablen bei der Variablendefinition/-deklaration, Trennung der enum Konstanten) muss der Ausdruck ergänzend geklammert werden, wenn der Komma-Operator gefordert ist * Der Komma-Operator hat von allen Operatoren die niedrigste Priorität/Rangfolge, so dass dieser Operator als letztes 'ausgewertet' wird Beispiel: <syntaxhighlight lang="C"> int a=(5,3); //5 wird verworfen, 3 dient als Rückgabewert, so dass //a den Wert 3 erhält. int b=5,3; //KO, da Komma Bestandteil der Definition ist int c=1,d=2,e=3; int f=(c+=2,a+a); //c um zwei erhöht, a+a in f int g= c+=2,a+a; //KO, da Komma Bestandteil der Defintion ist void func(int value){} func(1); //Funktion wird mit dem Wert 1 aufgerufen func(1,2); //KO, da Komma Bestandteil des Funktionsaufrufes ist func((1,2)); //Funktion wird mit dem Wert 2 aufgerufen int arr[12]; arr[3,4]=1; //3 wird verworfen, 4 dient als Index für das Array </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void func(int value){ printf("func called with %d\n",value); } int main(int argc, char *argv[]) { int a=(5,3); //5 wird verworfen, 3 dient als Rückgabewert, so dass //a den Wert 3 erhält. int b=5,3; //KO, da Komma Bestandteil der Definition ist printf("a=%d\n",a); int c=1,d=2,e=3; printf("c=%d,d=%d,e=%d\n",c,d,e); int f=(c+=2,a+a); //c um zwei erhöht, a+a in f printf("c=%d,f=%d\n",c,f); int g= c+=2,a+a; //KO, da Komma Bestandteil der Defintion ist func(1); //Funktion wird mit dem Wert 1 aufgerufen func(1,2); //KO, da Komma Bestandteil des Funktionsaufrufes ist func((1,2)); //Funktion wird mit dem Wert 2 aufgerufen int arr[12]; arr[3,4]=1; //3 wird verworfen, 4 dient als Index für das Array return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} 'Sinnvolle' Anwendungsbeispiele: * Bei For-Schleifen, so dass mehrere Variablen initialisiert und mehrere Variablen mit jedem Schleifendurchlauf geändert werden können: :<syntaxhighlight lang="C"> int sum,lauf; int arr[]={5,4,3,2,1}; for(sum=100,lauf=5 ; lauf ; lauf--,sum+=arr[lauf]); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int sum,lauf; int arr[]={5,4,3,2,1}; for(sum=100,lauf=5 ; lauf ; lauf--,sum+=arr[lauf]) printf("sum=%d lauf=%d\n",sum,lauf); printf("sum=%d\n",sum); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Bei der Return-Anweisung, bei welcher zur Darstellung der Zusammengehörigkeit mehrere Aktionen ausgeführt werden sollen: :<syntaxhighlight lang="C"> return errno=EINVAL,-1; return printf("Fehler"),-1; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <errno.h> int foo(void) { return errno=EINVAL,-1; } int far(void) { return printf("Fehler\n"),-1; } int main(int argc, char *argv[]) { printf("foo()=%d\n",foo()); printf("far()=%d\n",far()); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * An Stellen, wo nur eine Anweisung erlaubt ist (und man zu faul ist, einen Block zu öffnen) :<syntaxhighlight lang="C"> if(…) y=2,z=3; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int y=0,z=0; if(1) y=2,z=3; printf("y=%d z=%d\n",y,z); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * In vielen Ländern wird das Komma zur Darstellung von Gleitkommazahlen genutzt. Wird versehentlicher Weise dies in C/C++ übernommen, so führt dies zu einem unerwarteten Verhalten: :<syntaxhighlight lang="C"> double var; var=5.3; //Variable wird mit 5.3 initialisiert var=5,3; //KO, da Komma Bestandteil der Defintion ist var=(5,3); //Variable wird mit 3 initialisiert </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { double var; var=5.3; //Variable wird mit 5.3 initialisiert printf("var=%f\n",var); var=5,3; //KO, da Komma Bestandteil der Defintion ist var=(5,3); //Variable wird mit 3 initialisiert printf("var=%f\n",var); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === ?-Operator / Conditional-Operator === Operator mit 3 Operanden, welcher in Abhängigkeit des ersten Operanden den zweiten oder dritten Operanden zurückgibt. <code> Syntax: Logical-OR-expression ? expression : condition-expression </code> Entspricht der if()-Anweisung, wobei der ? Operator als solches einen Wert zurückgibt! Expression wird nur ausgewertet, wenn der erste Operand true ist. Andernfalls wird nur condition-expression ausgeführt. Der zurückgegebene Datentyp ergibt sich aus der Expression resp. Condition-expression. Beide sollten somit vom identischen Datentyp sein. Folgendes gilt es bei der Nutzung des ?-Operators zu beachten * Der Datentyp Expression und condition-Expression muss identisch sein <syntaxhighlight lang="C"> int a=5; a=a > 10 ? "String" : 4; //KO, "String" ist vom Datentyp (char*) und // 4 ist vom Datentyp (int). </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a=5; a=a > 10 ? "String" : 4; //KO, "String" ist vom Datentyp (char*) und // 4 ist vom Datentyp (int). return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Nach der GNU-C Reference kann der mittlere Operand fehlen, in diesem Fall wird stattdessen das Ergebnis des linken Operanden dort eingesetzt (siehe https://gcc.gnu.org/onlinedocs/gcc/Conditionals.html#Conditionals) <syntaxhighlight lang="C"> int a=13; int b=a>10 ? : 0; //wenn a > 10 wird true, andernfalls false zurückgegeben </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a=13; int b=a>10 ? : 0; //wenn a > 10 wird true, andernfalls false zurückgegeben printf("b=%d\n",b); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Sollen innerhalb von condition-expression mehrere (durch Komma getrennte) Anweisungen enthalten sein, so sind diese zu Klammern! Andernfalls bedingt die niedrige Priorität des Komma-Operators ein anders Verhalten, als erwartet. <syntaxhighlight lang="C"> int a=7,max=5; max=a>max ? a : max; //Alles bestens int var0,var1,var2; var0=a>5 ? a++,5:6,a=1; //das zweite Komma wird als separate Anweisung //ausgeführt und kommt somit immer zur //Ausführung var1=(a>5 ? a++,5:6),a=1; //durch Klammerung klare Abgrenzung var2= a>5 ? a++,5 : (6,a=1); //durch Klammerung klare Abgrenzung </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a=7; int max=5; max=a>max ? a : max; //Alles bestens printf("max=%d\n",max); int var0,var1,var2; var0=a>5 ? a++,5:6,a=1; //das zweite Komma wird als separate Anweisung //ausgeführt und kommt somit immer zur //Ausführung printf("var0=%d a=%d\n",var0,a); var1=(a>5 ? a++,5:6),a=1; //durch Klammerung klare Abgrenzung printf("var1=%d a=%d\n",var1,a); var2= a>5 ? a++,5 : (6,a=1); //durch Klammerung klare Abgrenzung printf("var2=%d a=%d\n",var2,a); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Die Nutzung des ?-Operators empfiehlt sich an diversen Stellen: * Bei Makros :<syntaxhighlight lang="C"> #define MAX(a,b) (a>b?a:b) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #define MAX(a,b) (a>b?a:b) int main(int argc, char *argv[]) { printf("MAX(4,5)=%d\n",MAX(4,5)); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Beim Fehlerhandling :<syntaxhighlight lang="C"> char *str=strstr("hallo123","lox"); //Ausgabe von str nur, wenn Suche erfolgreich (str!=NULL) war printf("%s",str!=NULL?str : "(not found)" ); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char *str=strstr("hallo123","lox"); //Ausgabe von str nur, wenn Suche erfolgreich (str!=NULL) war printf("%s",str!=NULL?str : "(not found)" ); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Prüfen, ob eine Funktion erfolgreich ausgeführt wurde, bevor eine weitere Funktion ausgeführt wird <syntaxhighlight lang="C"> int ret; ret=init1(); //im Fehlerfreien gibt init1() 0 zurück ret=ret?:init2(); //Aufruf von init2() nur wenn ret==0 ist //andernfalls wird ret zurückgegeben </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int init1(void) { printf("init1() called\n"); return 0; } int init2(void) { printf("init2() called\n"); return 0; } int main(int argc, char *argv[]) { int ret; ret=init1(); //im Fehlerfreien gibt init1() 0 zurück ret=ret?:init2(); //Aufruf von init2() nur wenn Ret==0 ist //andernfalls wird Ret zurückgegeben return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Logische Verknüpfungen === Alle logischen Operationen nutzen als Operanden Ganzzahlen ,Gleitkommazahlen oder Zeiger. Der Operand wird als false angesehen, wenn der Operand 0, 0.0 oder NULL ist. Andernfalls als true. Das Ergebnis ist immer vom Datentyp int und hat den Wert von 0 oder 1. <code>Syntax: Expression && Expression</code><br /> <code>Syntax: Expression || Expression</code><br /> <code>Syntax: ! Expression</code><br/> Bei der logischen UND und ODER Verknüpfung wird zuerst der linke Ausdruck ausgewertet (Operator ist ein Sequence Point). Der rechte Ausdruck wird nur ausgeführt, wenn: * bei der logischen UND Verknüpfung der linke Ausdruck TRUE ergab * bei der logische OR Verknüpfung der linke Ausdruck FALSE ergab Andernfalls steht das Ergebnis schon mit der Auswertung des linken Operanden fest.<br /> In der theoretischen Informatik wird dies 'Non-strict-evaluation' genannt, bei welcher der Rückgabewert feststeht, bevor alle Ausdrücke bearbeitet worden sind. Beispiel für das Verhalten des Ausbleibens der Auswertung des zweiten Operators: <syntaxhighlight lang="C"> int a=0,b=0; //a=-1; //Als alternativer Startwert if(++a || ++a) b=1; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=0,b=0; //a=-1; //Als alternativer Startwert if(++a {{!}}{{!}} ++a) b=1; printf("a=%d b=%d\n",a,b); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Diese Funktionalität ist insbesondere beim Umgang mit Fehlern vorteilhaft: * Prüfen, ob eine Variable einen gültigen Wert hat, bevor sie weiterverwendet wird <syntaxhighlight lang="C"> char *str = strstr("hallo123","la"); if(str!=NULL && strlen(str) ) printf("Len = %ld",strlen(str)); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char *str = strstr("hallo123","la"); if(str!=NULL && strlen(str) ) printf("Len = %ld",strlen(str)); else printf("Kein Substring im String gefunden\n"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Prüfen, ob eine Funktion erfolgreich ausgeführt wurde, bevor eine weitere Funktion aufgerufen wird: <syntaxhighlight lang="C"> int ret; ret=init1(); //Bei erfolgreicher Initialisierung wird 1 zurückgegeben ret=ret && init2(); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int init1(void) { printf("init1() called\n"); return 1; } int init2(void) { printf("init1() called\n"); return 1; } int main(int argc, char *argv[]) { int ret; ret=init1(); //Bei erfolgreicher Initialisierung wird 1 zurückgegeben ret=ret && init2(); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Bitweise Verknüpfungen === Alle bitweisen Operationen nutzen als Operanden Ganzzahlen. Bei vorzeichenbehafteten Zahlen ist das Ergebnis nach [C11 6.5] Implementierungsabhängig, wobei das Vorzeichenbit zumeist als eigenständiges Bit angesehen wird und bei UND/ODER/EXOR als normales BIT betrachtet wird. <code>Syntax: Ganzzahl & Ganzzahl → Bitweise UND Operation</code><br /> <code>Syntax: Ganzzahl | Ganzzahl → Bitweise ODER Operation</code><br /> <code>Syntax: Ganzzahl ^ Ganzzahl → Bitweise EXOR Operation</code><br /> <code>Syntax: ~ Ganzzahl → Bitweise Negierung</code><br /> <code>Syntax: Ganzzahl >> additive-expression</code><br /> <code>Syntax: Ganzzahl << additive-expression</code><br /> Mittels des Schiebeoperators können Ganzzahlen um additive-expression bitweise nach Links <code><<</code> oder Rechts <code>>></code> verschoben werden. Der resultierende Datentyp ergibt sich aus dem linken Operanden. Der rechte Operand muss positiv und kleiner gleich der Bitbreite des linken Operanden sein. Andernfalls ist das Ergebnis implementierungsspezifisch. Nach [C11 6.5.7] ist das Ergebnis der Schiebeoperation implementierungsspezifisch, wenn der linke Operand eine negative vorzeichenbehaftete Zahl ist. In der Regel wendet der Compiler jedoch folgende Schiebeoperation an: * Logisches Schieben (zu füllende Bit-Stellen werden mit 0 aufgefüllt), wenn der linke Operand eine vorzeichenlose Zahl ist * Arithmetisches Schieben (zu füllende Bit-Stelle beim Rechtsschieben wird mit dem Vorzeichenbit aufgefüllt), wenn der linke Operand eine vorzeichenbehaftete Zahl ist. Hiermit wird das Vorzeichen beibehalten, so dass eine negative Zahl nach dem Schieben weiterhin negativ ist (In Java erfolgt dies durch den >>> - Operator) Hinweis: * Ein Schieben um eine Stelle nach rechts entspricht einer Division durch 2 * Ein Schieben um eine Stelle nach links entspricht einer Multiplikation mit 2 === sizeof-Operator === Der sizeof-Operator dient zur Ermittlung des Speicherbedarfs (in Bytes) einer Variablen/eines Datentyps. <code>Syntax: sizeof (type-name)</code><br /> <code>Syntax: sizeof unary-expression</code><br /> Als Argument für den Sizeof-Operator kann wahlweise ein Datentyp, eine Variable oder ein Ausdruck genutzt werden. Sizeof gilt als Konstantenausdruck, d.h. seine Berechnung erfolgt durch den Compiler, sodass: * sizeof zur Initialisierung von globalen Variablen genutzt werden :<syntaxhighlight lang="C"> struct xyz{int x,y,z;}; size_t size=sizeof(struct xyz); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct xyz{int x,y,z;}; size_t size=sizeof(struct xyz); //3*sizeof(int)=12 int main(int argc, char *argv[]) { printf("size=%zu\n",size); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * bei einem Ausdruck dieser nicht ausgeführt wird, sondern nur der resultierende Datentyp bestimmt wird und dessen Größe zurückgegeben :<syntaxhighlight lang="C"> short var=4711; size_t size=sizeof var++; //var=4711, size=2 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { short var=4711; size_t size=sizeof var++; //var=4711, size=2 printf("size=%zu var=%d\n",size,var); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Der resultierende Datentyp des Rückgabewertes ist size_t. Es empfiehlt sich, den sizeof-Operator mit Klammern zu nutzen, andernfalls wird im Falle eines Ausdruckes der Speicherbedarf des linken Operanden angegeben: <syntaxhighlight lang="C"> size_t size; short var; size=sizeof var+0; //size=2, da sizeof auf var angewendet wird size=sizeof(var+0); //size=4, da sizoeof auf den resultierenden datentyp //angewendet wird </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { size_t size; short var=0; size=sizeof var+0; //size=2, da sizeof auf var angewendet wird printf("size=%zu var=%d\n",size,var); size=sizeof(var+0); //size=4, da sizoeof auf den resultierenden datentyp //angewendet wird printf("size=%zu var=%d\n",size,var); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * sizeof angewendet auf char gibt immer den Wert 1 zurück. * sizeof ist nicht auf Operanden vom Typ Funktion, void, Felder ohne Größenangabe und Bitfelder anwendbar * wird sizeof auf ein VLA angewendet, so entspricht sizeof nicht mehr einen Konstantenausdruck, sondern einem Funktionsaufruf :<syntaxhighlight lang="C"> void foo(int n) { int arr[n]; size_t size=sizeof(arr); //Speicherbedarf ist kein Konstantenausdruck //sondern wird zur Laufzeit berechnet </syntaxhighlight> * Sizeof entspricht nicht strlen(), da sizeof den für die Variable reservierten Speicherbereich zurückgibt und nicht wie strlen() den Inhalt des Speicher hinsichtlich des Stringendezeichens auswertet. :<syntaxhighlight lang="C"> char string[100]="Test"; printf("%zu\n",sizeof(string)); //100 printf("%zu\n",strlen(string)); //4 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char string[100]="Test"; printf("%zu\n",sizeof(string)); //100 printf("%zu\n",strlen(string)); //4 return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Anweisungen == === If-Anweisung === <code>Syntax: if (expression) statement</code><br /> <code>Syntax: if (expression) statement else statement</code><br /> Das Ergebnis des Ausdruckes (Ganzzahl, Gleitkommazahl oder Zeiger) wird auf ungleich 0, 0.0 oder NULL getestet. Trifft dies zu, so wird statement ausgeführt. Andernfalls wird das else statement ausgeführt, sofern vorhanden. Sollen mehrere Anweisungen ausgeführt werden, so sind diese mittels Block zusammenzufassen (diesen dann bitte nicht mit ; abschließen). Beispiel: <syntaxhighlight lang="C"> if(a==1) if(a=1) //Erst Zuweisung, dann prüfen der Rückgabe der Zuweisung if(a) //entspricht a!=0 if(printf("hallo")<0) //prüfen, ob printf() fehlschlägt if( ({int dummy=a;a=b;b=dummy;})==6) if(a=7) //Zuweisung! if(7=a) //KO, Eine Konstante kann kein L-Value sein if(7==a) {printf("a ist 7");}; //Semikolon hinter Blocksope ist eine zweite else //Anweisung, so dass die ELSE Anweisung nicht {printf("Compilerfehler");};//zur IF-Anwesigung zugeordnet werden kann. </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=1,b=2; if(a==1) printf("a==1\n"); if(a=1) //Erst Zuweisung, dann prüfen der Rückgabe der Zuweisung printf("a=1\n"); if(a) //entspricht a!=0 printf("a\n"); if(printf("hallo\n")<0) //prüfen, ob printf() fehlschlägt printf("printf()\n"); if( ({int dummy=a;a=b;b=dummy;})==6) printf("({...})\n"); if(a=7) //Zuweisung! printf("a=7\n"); if(7=a) //KO, Eine Konstante kann kein L-Value sein ; if(7==a) {printf("a ist 7");}; //Semikolon hinter Blocksope ist eine zweite else //Anweisung, so dass die ELSE Anweisung nicht {printf("Compilerfehler");};//zur IF-Anwesigung zugeordnet werden kann. return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Bei der Anweisung <code>if(a==7)</code> finden aus syntaktischer Sicht zwei Aktionen statt. Zunächst wird geprüft, ob a gleich 7 ist. Dieser Vergleich liefert true(=1) oder false(=0) zurück. Die If-Anweisung prüft im Anschluss, ob das Argument true oder false ist. === For-Anweisung === <code>Syntax: for(Initialisierungsteil<sub>OPT</sub> ; Test<sub>OPT</sub> ; Fortsetzung<sub>OPT</sub>) Statement</code> Die For-Anweisung wird vom Compiler wie folgt umgesetzt: <poem> '''Initialisierungsteil'''<sub>OPT</sub> Goto Next Goon: //Continue-Anweisung entspricht goto Continue //Break-Anweisung entspricht goto Break; '''Statement''' Continue: '''Fortsetzung'''<sub>OPT</sub> Next: if('''Test'''<sub>OPT</sub>) goto Goon Break: </poem> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> int main(int argc, char *argv[]) { int lauf; int summe; for(summe=lauf=0;lauf<20;lauf++) summe+=lauf; printf("summe=%d\n",summe); //Initialisierungsteil summe=lauf=0; goto Next; Goon: //Continue-Anweisung entspricht goto Continue //Break-Anweisung entspricht goto Break; //Statement summe+=lauf; Continue: __attribute__((unused)) //Fortsetzung lauf++; Next: //if(TestOPT) goto Goon if(lauf<20) goto Goon; Break: __attribute__((unused)) printf("summe=%d\n",summe); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Die einzelne Elemente haben folgende Bedeutung/Besonderheiten: ;Initialisierungsteil: Zum Initialisieren von Schleifenvariablen, wird einmalig mit Beginn der FOR-Anweisung ausgeführt. :* kann Leer sein, dann erfolgt keine Initialisierung :* Ab C99: Hier kann eine lokale Variable definiert werden, welche nur innerhalb dieser For-Anweisung gültig ist ;Testteil: Hierin wird vor jedem Schleifendurchlauf geprüft, ob die Schleifenbedingung erfüllt ist. Wenn Bedingung nicht erfüllt ist (Ganzzahl, Gleitkommazahl oder Zeiger gleich 0,0.0 oder NULL), wird die For-Schleife beendet. :* Kann leer sein, dann wird dieser Teil als true angesehen ;Fortsetzungsteil: Wird nach jeden Schleifendurchlauf ausgeführt. In der Regel sollte hier die Schleifenvariable aktualisiert werden :* Kann leer sein ;Statement: In der Schleife auszuführender Ausdruck :* Sollen mehrere Ausdrücke ausgeführt werden, so sind diese in einem Block zusammen zu fassen. :Ergänzende Anweisungen innerhalb des Statements/Block :* 'continue' zum Fortsetzen des Schleifendurchlaufes, d.h. Sprung zum Fortsetzungs-Teil :* 'break', zum Beenden des Schleifendurchlaufes Beispiele: * For-Schleife mit lokaler Schleifenvariable :<syntaxhighlight lang="C"> char string[]="hallo"; for(size_t lauf=0; lauf < strlen(string); lauf++) //Schleife ist Suboptimal, da in jedem Durchlauf die Funktion //strlen() aufgerufen wird! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <time.h> struct timespec diff_timespec(const struct timespec *minuend, const struct timespec *subtrahend ) { struct timespec diff = { .tv_sec = minuend->tv_sec - subtrahend->tv_sec, .tv_nsec = minuend->tv_nsec - subtrahend->tv_nsec}; //Sekundenüberlauf? if (diff.tv_nsec < 0) { diff.tv_nsec += 1000000000; diff.tv_sec--; } return diff; } int main(int argc, char *argv[]) { char string1[10000]; char string2[10000]; memset(string1,'a',sizeof(string1)); memset(string2,'a',sizeof(string2)); string1[sizeof(string1)-1]=0; string2[sizeof(string2)-1]=0; struct timespec start1,stop1; struct timespec start2,stop2; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start1); size_t sum1=0; for(size_t lauf=0; lauf < strlen(string1); lauf++) sum1++; //Schleife ist Suboptimal, da in jedem Durchlauf die Funktion //strlen() aufgerufen wird! clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop1); clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start2); size_t sum2=0; size_t count2=strlen(string2); for(size_t lauf=0; lauf < count2; lauf++) sum2++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop2); stop1=diff_timespec(&stop1,&start1); stop2=diff_timespec(&stop2,&start2); printf("Slow: Sum1=%zu Time=%lds %ldns\n",sum1,stop1.tv_sec,stop1.tv_nsec); printf("Fast: Sum2=%zu Time=%lds %ldns\n",sum2,stop2.tv_sec,stop2.tv_nsec); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Schleife mit Break-Anweisung :<syntaxhighlight lang="C"> char dest[5]; char src[10]="HalloWelt"; for(size_t lauf=0; src[lauf]!=0; lauf++) { if(lauf >= sizeof(dest)) break; dest[lauf]=src[lauf]; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char dest[5]; char src[10]="HalloWelt"; for(size_t lauf=0; src[lauf]!=0; lauf++) { printf("lauf=%zu\n",lauf); if(lauf >= sizeof(dest)) break; dest[lauf]=src[lauf]; } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Schleife, bei welcher die gesamte Aktion innerhalb der For-Anweisung ausgeführt wird :<syntaxhighlight lang="C"> char dest[5]; char src[10]="HalloWelt"; for(size_t l=0; src[l]!=0 && l <sizeof(dest); printf("l=%zu\n",l),dest[l]=src[l],l++); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char dest[5]; char src[10]="HalloWelt"; for(size_t l=0;src[l]!=0 && l <sizeof(dest); printf("l=%zu\n",l),dest[l]=src[l],l++); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Schleifenvariable muss keine Zählvariable sein :<syntaxhighlight lang="C"> int zahl=0b100010; int bits=0; for(int mask=0b10000000; mask!=0; mask>>=1 ) bits+= zahl & mask ? 1 : 0; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int zahl=0b100010; int bits=0; for(int mask=0b10000000; mask!=0; mask>>=1 ) bits+= zahl & mask ? 1 : 0; printf("Anzahl Einsen in %b = %d\n",zahl,bits); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Zeiger als Schleifenvariable :<syntaxhighlight lang="C"> char src[]="hallo"; char dst[strlen(src)+1]; char *s,*d; for(s=src,d=dst; *s; ) *d++=*s++; *d=0; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char src[]="hallo"; char dst[strlen(src)+1]; char *s,*d; for(s=src,d=dst; *s; ) *d++=*s++; *d=0; printf("src='%s' dst='%s'\n",src,dst); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Zur Geschwindigkeitsoptimierung sollten im Test- und Fortsetzungsteil keine Funktionsaufrufe mit Werten enthalten sein, die sich innerhalb der Schleife nicht ändern: :<syntaxhighlight lang="C"> for(size_t lauf=0;lauf<strlen("hallo");lauf++) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <time.h> struct timespec diff_timespec(const struct timespec *minuend, const struct timespec *subtrahend ) { struct timespec diff = { .tv_sec = minuend->tv_sec - subtrahend->tv_sec, .tv_nsec = minuend->tv_nsec - subtrahend->tv_nsec}; //Sekundenüberlauf? if (diff.tv_nsec < 0) { diff.tv_nsec += 1000000000; diff.tv_sec--; } return diff; } int main(int argc, char *argv[]) { char string1[10000]; char string2[10000]; memset(string1,'a',sizeof(string1)); memset(string2,'a',sizeof(string2)); string1[sizeof(string1)-1]=0; string2[sizeof(string2)-1]=0; struct timespec start1,stop1; struct timespec start2,stop2; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start1); size_t sum1=0; for(size_t lauf=0; lauf < strlen(string1); lauf++) sum1++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop1); clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start2); size_t sum2=0; size_t count2=strlen(string2); for(size_t lauf=0; lauf < count2; lauf++) sum2++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop2); stop1=diff_timespec(&stop1,&start1); stop2=diff_timespec(&stop2,&start2); printf("Slow: Sum1=%zu Time=%lds %ldns\n",sum1,stop1.tv_sec,stop1.tv_nsec); printf("Fast: Sum2=%zu Time=%lds %ldns\n",sum2,stop2.tv_sec,stop2.tv_nsec); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Zur Geschwindigkeitssteigerung sollte im Testteil auf 0 abgefragt werden, d.h. die Schleifenvariable dekrementiert werden :<syntaxhighlight lang="C"> for(int lauf=700000;lauf;lauf--) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <time.h> struct timespec diff_timespec(const struct timespec *minuend, const struct timespec *subtrahend ) { struct timespec diff = { .tv_sec = minuend->tv_sec - subtrahend->tv_sec, .tv_nsec = minuend->tv_nsec - subtrahend->tv_nsec}; //Sekundenüberlauf? if (diff.tv_nsec < 0) { diff.tv_nsec += 1000000000; diff.tv_sec--; } return diff; } int main(int argc, char *argv[]) { char string1[10000]; char string2[10000]; memset(string1,'a',sizeof(string1)); memset(string2,'a',sizeof(string2)); string1[sizeof(string1)-1]=0; string2[sizeof(string2)-1]=0; struct timespec start1,stop1; struct timespec start2,stop2; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start1); size_t sum1=0; for(ssize_t lauf=700000000;lauf;lauf--) sum1++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop1); clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start2); size_t sum2=0; for(ssize_t lauf=0;lauf<700000000;lauf++) sum2++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop2); stop1=diff_timespec(&stop1,&start1); stop2=diff_timespec(&stop2,&start2); printf("Slow: Sum1=%zu Time=%lds %ldns\n",sum1,stop1.tv_sec,stop1.tv_nsec); printf("Fast: Sum2=%zu Time=%lds %ldns\n",sum2,stop2.tv_sec,stop2.tv_nsec); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Alternativ zu einer Laufvariablen empfiehlt sich die Nutzung von Pointer als Schleifenvariable; :<syntaxhighlight lang="C"> for(char *ptr=str; *ptr; ptr++); </syntaxhighlight> === While-Anweisung === <code>Syntax: while(expression) Statement </code><br /> <code>Syntax: do Statement while(expression);</code><br /> Die While-Anweisungen werden vom Compiler wie folgt umgesetzt: {| class="wikitable" ! while()-Anweisung !! do while()-Anweisung |- | <poem> Continue: if(!'''expression''') goto Break //Break-Anweisung entspricht // goto Break; //Continue-Anweisung entspr. // goto Continue; '''Statement''' goto Continue Break: </poem> || <poem> GoOn: //Break-Anweisung entspr. // goto Break //Continue-Anweisung ent. // goto Continue '''Statement''' Continue: if('''expression''') goto GoOn Break: </poem> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> int main(int argc, char *argv[]) { int lauf; int summe; lauf=summe=0; while(lauf<10) { if(lauf>=5) break; lauf++; if(lauf<3) continue; summe+=lauf; } printf("summe=%d\n",summe); lauf=summe=0; Continue1: if(!(lauf<10)) goto Break1; //Break-Anweisung entspricht // goto Break; //Continue-Anweisung entspr. // goto Continue; //Statement if(lauf>=5) { goto Break1; } lauf++; if(lauf<3) goto Continue1; summe+=lauf; goto Continue1; Break1: printf("summe=%d\n",summe); lauf=summe=0; do { lauf++; if(lauf>5) break; if(lauf<3) continue; summe+=lauf; } while(lauf<10); printf("summe=%d\n",summe); lauf=summe=0; GoOn2: //Break-Anweisung entspr. // goto Break //Continue-Anweisung ent. // goto Continue //Statement lauf++; if(lauf>5) goto Break2; if(lauf<3) goto Continue2; summe+=lauf; Continue2: if(lauf<10) goto GoOn2; Break2: __attribute__((unused)); printf("summe=%d\n",summe); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Folgendes gilt es bei der Nutzung der While-Anweisung zu beachten: * Soll mehr als ein Statement innerhalb der While-Schleife ausgeführt werden, so sind diese in einem Block zu schreiben * Statement kann eine Leeranweisung (gekennzeichnet durch ein Semikolon) sein :<syntaxhighlight lang="C"> while(1); do ; while(1); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int lauf1=1000; while(lauf1--); int lauf2=1000; do ; while(lauf2--); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Bei der do-While-Schleife ist das abschließende Semikolon Bestandteil des Befehls * expression muss eine Ganzzahl, Gleitkommazahl oder Zeiger zurückgeben, der bei False (0, 0.0 oder NULL) die Schleife beendet. Beispiele: * Endlosschleife :<syntaxhighlight lang="C"> while(1) {} </syntaxhighlight> * Schleife zum Durchlaufen eines String :<syntaxhighlight lang="C"> char str[]="string"; char *ptr=str; while(*ptr++); size_t len=ptr-str-1; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char str[]="string"; char *ptr=str; while(*ptr++); size_t len=ptr-str-1; printf("Stringlänge=%zu\n",len); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Switch-Anweisung === <code>Syntax: switch(expression) statement</code><br /> <code>Syntax: statement:= case constant-expression: statement<sub>opt</sub> default: statement<sub>opt</sub></code><br /> Die Switch-Anweisung entspricht einer verschachtelten If-Anweisung, mit der Besonderheit, dass der auszuführende Code nicht im If-Zweig stattfindet, sondern dort ein goto zum eigentlichen Code enthalten ist: {| class="wikitable" ! Switch-Anweisung !! Compilerumsetzung |- |<syntaxhighlight lang="C"> switch(a) { case 1: int a=7; //Code break; case 2: printf("%d",a); case 3: { int a; //Code } case 4 ... 8: default: //Code } </syntaxhighlight> ||<poem> if(a==1) goto label1; else if(a==2) goto label2; else goto label_default; //------------------- label1: //Code goto label_break; label2: //Code label_default: goto label_break; label_break: </poem> |} Folgendes gilt es bei der Nutzung der Switch-Anweisung zu beachten: * <code>Expression</code> muss zu einer Ganzzahl (int, short, char, long, long long) oder enum (entspricht einer Ganzzahl) ausgewertet werden * <code>constant-expression</code> muss eine Ganzzahl-Konstante oder ein Enumelement sein. Sie darf nicht doppelt im Block vorkommen. Der genaue Datentyp ergibt sich aus dem Datentyp der <code>expression</code> * Lt. Spezifikation ist ein nur <code>statement</code> hinter der switch-Anweisung erlaubt, so dass nur ein <code>case</code> Fall oder der <code>default</code> Fall bedient werden kann::<syntaxhighlight lang="C"> int var=1; switch(var) case 1: printf("hallo"); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int var=1; switch(var) case 1: printf("hallo"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Die geschweifte Klammer der <code>switch</code>-Anweisung erzeugt einen Block, so dass a) hier mehrere <code>case</code>-Fälle und b) hierin definierte Variablen innerhalb des gesamten Blocks zur Verfügung stehen (sind somit nicht <code>case</code> abhängig). Die <code>case</code> Anweisung ist nichts anderes als eine Sprungmarken (welche durch die switch-Anweisung angesprungen wird) so dass der Initialisierungsteil der lokalen Variablen übersprungen / nicht ausgeführt werden kann: :<syntaxhighlight lang="C"> switch(a) { int a=3; //Variable in gesamten Block gültig case 1: int b=3; //Variabe in gesamten Block gültig printf("%d %d",a,b); //a undefiniert, b=3 break; case 2: printf("%d %d",a,b); //a und b undefiniert break; case 3: { //Block, so dass Variable int a=4711; //nur in diesem CASE gültig ist break; } } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=1; switch(a) { int a=3; //Variable in gesamten Block gültig case 1: int b=3; //Variabe in gesamten Block gültig printf("a=%d b=%d",a,b); //a undefiniert, b=3 break; case 2: printf("%d %d",a,b); //a und b undefiniert break; case 3: { //Block, so dass Variable int a=4711; //nur in diesem CASE gültig ist (void)a; break; } } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * GNU-C (siehe [https://www.gnu.org/software/c-intro-and-ref/manual/html_node/switch-Statement.html Switch-Statement]) erlaubt ergänzend zur Angabe einer Konstante die Angabe eines Wertebereiches: :<syntaxhighlight lang="C"> switch(a) { case 1 ... 8: //Leerzeichen zwischen den Konstanten zwingend notwendig //andernfalls wird der Punkt zur Konstante zugehörig //interpretiert (erzeugt dann eine Gleitpunktkonstante) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=2; switch(a) { case 1 ... 8: //Leerzeichen zwischen den Konstanten zwingend notwendig //andernfalls wird der Punkt zur Konstante zugehörig //interpretiert (erzeugt dann eine Gleitpunktkonstante) printf("a im Bereich von 1 bis 8\n"); break; } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * <code>break</code> ist optional. Mittels <code>break</code> wird an das Ende der Switch-Anweisung gesprungen. Wenn <code>break</code> weggelassen wird, wird die nachfolgende Anweisungen ausgeführt. Ggf. gibt der Compiler eine Warning aus. Mittels der GCC-Compiler-Anweisung __attribute__((fallthrough)); kann diese Warning unterdrückt werden: :<syntaxhighlight lang="C"> switch(a) { case 0: //ggf. Compiler-Warning __attribute__((fallthrough)); case 1: case 2: break; } </syntaxhighlight> * Ein Variable Length Array ist als Variable im Switch-Block direkt nicht erlaubt. Ist dies notwendig, so ist das VLA in einem inneren Block zu kapseln: :<syntaxhighlight lang="C"> switch(var) { case 1: int arr[var]; //KO break; case 2: { int arr[var]; //OK } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int var=1; switch(var) { case 1: int arr[var]; //KO break; case 2: { int arr[var]; //OK } } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Case - Anweisungen sind nichts anderes als Sprungmarken (Labels), so dass CASE-Anweisungen überall innerhalb des Switch-Blockes stehen können: :<syntaxhighlight lang="C"> int prime(int value) {return value+1;} void hallo(int var) { switch(var) { default: if(prime(var)) case 2: case 4: printf("%d",var); else { case 3: case 6: printf("%x",var); } case 7: printf("xyz"); } } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int prime(int value) { return value+1; } int main(int argc, char *argv[]) { int var=1; switch(var) { default: if(prime(var)) case 2: case 4: printf("%d",var); else { case 3: case 6: printf("%x",var); } case 7: printf("xyz"); } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} :oder anderen Anweisungen innerhalb des Switch-Blockes enthalten sein können: :<syntaxhighlight lang="C"> void send(register char *dst, register char *src, register size_t count) { register char unsigned n=(count+7)/8; switch(count%8) { case 0: do{ *dst = *src++; case 7: *dst = *src++; case 6: *dst = *src++; case 5: *dst = *src++; case 4: *dst = *src++; case 3: *dst = *src++; case 2: *dst = *src++; case 1: *dst = *src++; }while(--n>0); } } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <stdint.h> //fuer uintptr_t void send(register char *dst, register char *src, register size_t count) { register char unsigned n=(count+7)/8; switch(count%8) { case 0: do{ *dst = *src++; printf("%02hhx ",*dst); case 7: *dst = *src++; printf("%02hhx ",*dst); case 6: *dst = *src++; printf("%02hhx ",*dst); case 5: *dst = *src++; printf("%02hhx ",*dst); case 4: *dst = *src++; printf("%02hhx ",*dst); case 3: *dst = *src++; printf("%02hhx ",*dst); case 2: *dst = *src++; printf("%02hhx ",*dst); case 1: *dst = *src++; printf("%02hhx ",*dst); }while(--n>0); } } int main(int argc, char *argv[]) { char src[20]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}; char dst; send(&dst,src,20); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Eine Switch-Case Anweisung über Strings sind in C/C++ nicht möglich: :<syntaxhighlight lang="C"> switch(str) { case "hallo": return 1; case "du da": return 2; case "xyz": return 3; default: rReturn -1; } </syntaxhighlight> :Ein direkte Lösungsansatz ist die Nutzung von strcmp() zum Vergleichen von String. Da strcmp zeichenweise den String vergleicht, ist dieser Ansatz langsam. Alternativ bietet sich an, von allen String einen Hash-Wert zu berechnen und zunächst diesen Hash-Wert zu kontrollieren. Da der Hash-Wert nicht eindeutig ist, muss ergänzend ein strcmp() erfolgen: :<syntaxhighlight lang="C"> char *str="hallo"; switch(HASH_LAUFZEIT(str)) { case HASH_COMPILEZEIT('d','u'): if(!strcmp(str,"du")) printf("Case \"du\":\n"); break; case HASH_COMPILEZEIT('h','a','l','l','o'): if(!strcmp(str,"hallo")) printf("Case \"hallo\"\n"); else if(!strcmp(str,"xyz")) printf("String='xyz'\n"); break; default: return -1; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <stdint.h> //Lösungsansatz von: https://stackoverflow.com/questions/2826559/compile-time-preprocessor-hashing-of-string #define H1(s,i,x) (x*65599u+(uint8_t)s[(i)<strlen(s)?strlen(s)-1-(i):strlen(s)]) #define H4(s,i,x) H1(s,i,H1(s,i+1,H1(s,i+2,H1(s,i+3,x)))) #define H16(s,i,x) H4(s,i,H4(s,i+4,H4(s,i+8,H4(s,i+12,x)))) #define H64(s,i,x) H16(s,i,H16(s,i+16,H16(s,i+32,H16(s,i+48,x)))) #define H256(s,i,x) H64(s,i,H64(s,i+64,H64(s,i+128,H64(s,i+192,x)))) #define HASH(s) ((uint32_t)(H256(s,0,0)^(H256(s,0,0)>>16))) #define HASH_LAUFZEIT(s) (H256(s,0,0)) //Eigener Lösungsatz zur Umsetzung des vorherigen HASH-Algorithmus //so dass dieser zur Compilezeit berechnet werden kann //Was fehlt ist die abschließende EXOR berechnung! //Problem war, dass die Array-Dereferenzierung nicht zur Compilezeit //aufelöst werden kann #define HH0(a,x) (x*65599u+a) #define HH1(a) HH0(a,HH0(0,HH0(0,HH0(0,0)))) #define HH2(a,b) HH0(b,HH0(a,HH0(0,HH0(0,0)))) #define HH3(a,b,c) HH0(c,HH0(b,HH0(a,HH0(0,0)))) #define HH4(a,b,c,d) HH0(d,HH0(c,HH0(b,HH0(a,0)))) #define HH4x(a,b,c,d,x) HH0(d,HH0(c,HH0(b,HH0(a,x)))) #define HH5(a,b,c,d,e) HH4x(b,c,d,e,HH4x(0,0,0,a,0)) #define HH6(a,b,c,d,e,f) HH4x(c,d,e,f,HH4x(0,0,a,b,0)) #define HH7(a,b,c,d,e,f,g) HH4x(d,e,f,g,HH4x(0,a,b,c,0)) #define HH8(a,b,c,d,e,f,g,h) HH4x(e,f,g,h,HH4x(a,b,c,d,0)) #define HH9(a,b,c,d,e,f,g,h,i) HH4x(f,g,h,i,HH4x(b,c,d,e,HH4x(0,0,0,a,0))) #define HH10(a,b,c,d,e,f,g,h,i,j) HH4x(g,h,i,j,HH4x(c,d,e,f,HH4x(0,0,a,b,0))) #define HH11(a,b,c,d,e,f,g,h,i,j,k) HH4x(h,i,j,k,HH4x(d,e,f,g,HH4x(0,a,b,c,0))) #define HH12(a,b,c,d,e,f,g,h,i,j,k,l) HH4x(i,j,k,l,HH4x(e,f,g,h,HH4x(a,b,c,d,0))) #define HH13(a,b,c,d,e,f,g,h,i,j,k,l,m) HH4x(j,k,l,m,HH4x(f,g,h,i,HH4x(b,c,d,e,HH4x(0,0,0,a,0)))) #define HH14(a,b,c,d,e,f,g,h,i,j,k,l,m,n) HH4x(k,l,m,n,HH4x(g,h,i,j,HH4x(c,d,e,f,HH4x(0,0,a,b,0)))) #define HH15(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) HH4x(l,m,n,o,HH4x(h,i,j,k,HH4x(d,e,f,g,HH4x(0,a,b,c,0)))) #define HH16(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) HH4x(m,n,o,p,HH4x(i,j,k,l,HH4x(e,f,g,h,HH4x(a,b,c,d,0)))) #define EIGHTEENTH_ARGUMENT(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, \ a11,a12,a13,a14,a15,a16,a17,a18, ...) a18 #define CONCAT(c,d) c ## d #define CONCATI(a,b) CONCAT(a,b) #define HASH_COMPILEZEIT(...) CONCATI(HH , EIGHTEENTH_ARGUMENT(dummy, ## __VA_ARGS__, \ 16,15,14,13,12,11,10,9, 8, 7, 6, 5, 4, 3, 2, 1, 0))(__VA_ARGS__) //Lösungsansatz basierend auf: https://renenyffenegger.ch/notes/development/languages/C-C-plus-plus/preprocessor/macros/__VA_ARGS__/count-arguments #define COUNT_ARGUMENTS(...) EIGHTEENTH_ARGUMENT(dummy, ## __VA_ARGS__, \ 16,15,14,13,12,11,10,9, 8, 7, 6, 5, 4, 3, 2, 1, 0) int main(int argc, char *argv[]) { char *str="hallo"; switch(HASH_LAUFZEIT(str)) { case HASH_COMPILEZEIT('d','u'): if(!strcmp(str,"du")) printf("Case \"du\":\n"); break; case HASH_COMPILEZEIT('h','a','l','l','o'): if(!strcmp(str,"hallo")) printf("Case \"hallo\"\n"); else if(!strcmp(str,"xyz")) printf("String='xyz'\n"); break; default: return -1; } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} :Siehe:[https://benhoyt.com/writings/hash-table-in-c/ Hash Table in C] == Label + Goto == === Label === <code>Syntax: name:</code><br /> Labels dienen zur Kennzeichnung einer Anweisung, so dass die Programmausführung an dieser Stelle fortgesetzt, resp. mit einer GOTO-Anweisung angesprungen werden kann. Ein Label ist durch den folgenden Doppelpunkt gekennzeichnet. Dem Label muss eine Anweisung folgen, welches auch eine Leeranweisung (Semikolon) sein kann. Folgendes gilt es bei der Nutzung von Labels zu beachten: * Ein Label entspricht der Speicheradresse des der Label-Anweisung folgenden Anweisung * Bei nicht genutzten Labels (mit goto nicht angesprungene Labels) gibt der Compiler eine Warning aus. Diese kann beim GCC-Compiler mit __attribute__((unused)) unterdrückt werden * die Case- und die Default-Anweisung aus der Switch-Anweisung entspricht einem Label <br /> Labels hat eine funktionsweite Sichtbarkeit (siehe Kap [[#Gültigkeit/Sichtbarkeit von Variablen| Gültigkeit/Sichtbarkeit von Variablen]]). Dies bedeutet, dass das: * Labels nur innerhalb einer Funktion gültig ist * Labels einen von Variablen/Funktionen/Datentypen unabhängigen Namensraum haben * Kein Prototyp für ein Label notwendig ist, wenn es bei Nutzung über goto noch nicht gesetzt worden ist, also nach vorne gesprungen wird === goto === <code>Syntax: goto label;</code><br /> Mit der Goto-Anweisung wird die Programmausführung an der mit <code>label</code> gekennzeichneten Stelle fortgesetzt. Folgendes gilt es bei der Nutzung von goto zu beachten: * Mit einer <code>goto</code> Anweisung kann an eine beliebige Steller innerhalb der '''identischen''' Funktion gesprungen werden. Es kann nicht zu einem Label in einer anderen Funktion gesprungen werden (hierzu ist <code>setjmp()</code> und <code>longjmp()</code> zu nutzen) * Mit der Goto Anweisung kann gleichermaßen in einen Block hinein, als auch herausgesprungen werden: :<syntaxhighlight lang="C"> goto first_time; for(;;) { if(a>10) goto last_time: first_time: a++; } last_time: ; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=0; goto first_time; for(;;) { printf("a=%d\n",a); if(a>10) goto last_time; first_time: a++; } last_time: ; //Leeranweisung wäre hier nicht nötig return 0; //da dem Label ein return folgt! } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Wird mit der <code>goto</code> Anweisung der Initialisierungsteil einer Variablen übersprungen, so ist zwar die Variable existent, beinhaltet aber nicht ihren Initialisierungswert Beispiel: <syntaxhighlight lang="C"> goto label1; if(a==3) { label2: printf("True\n"); } else label1: { printf("False\n"); } if(a==3) goto label2; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=3; goto label1; if(a==3) { label2: printf("True\n"); a++; } else label1: { printf("False\n"); } if(a==3) goto label2; return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * In Java gibt es das Schlüsselwort goto, welches aber ohne Funktion ist. Es gibt jedoch Labels, die mit "break label" angesprungen werden können === Anwendungsbeispiele === Prinzipiell sind Goto-Anweisungen zu vermeiden. In einigen Anwendungsfällen erweist sich goto als nützlich: * Nutzung nur einer <code>return</code> Anweisung in einer Funktionen :<syntaxhighlight lang="C"> #include <unistd.h> int input(int hdl,size_t buflen) { int rc=-1; unsigned char packettype; if(read(hdl,&packettype,1) != 1) goto exit; unsigned short packetlen; if(read(hdl,&packetlen,2) != 2) goto exit; if((1+packetlen) > buflen) { rc=-2; goto exit; } rc=packetlen; exit: return rc; } </syntaxhighlight> * Konstruktor mit mehreren Initialisierungsteilen :<syntaxhighlight lang="C"> int main(int argc,char *argv[]) { enum {INIT_2,INIT_1,INIT_START} fortschritt=INIT_START; int *ptr1; int *ptr2; if(!(ptr1=malloc(10))) goto end; fortschritt=INIT_1; if(!(ptr2=malloc(20))) goto end; fortschritt=INIT_2; // ... end: switch(fortschritt) { case INIT_2: free(ptr2); __attribute__((fallthrough)); case INIT_1: free(ptr1); __attribute__((fallthrough)); case INIT_START: } return (int)fortschritt; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { enum {INIT_2,INIT_1,INIT_START} fortschritt=INIT_START; int *ptr1; int *ptr2; if(!(ptr1=malloc(10))) goto end; fortschritt=INIT_1; if(!(ptr2=malloc(20))) goto end; fortschritt=INIT_2; // ... end: switch(fortschritt) { case INIT_2: free(ptr2); __attribute__((fallthrough)); case INIT_1: free(ptr1); __attribute__((fallthrough)); case INIT_START: } return (int)fortschritt; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Abbruch einer verschachtelten Schleife :<syntaxhighlight lang="C"> int arr[10][10]; size_t zeile; size_t spalte; for(zeile=0;zeile<10;zeile++) for(spalte=0;spalte<0;spalte++) if(arr[zeile][spalte]==0) goto label_end; label_end: if((zeile==0) && (spalte==0)) printf("Nichts gefunden"); else printf("Gefunden an %zu %zu",zeile,spalte); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int arr[10][10]; size_t zeile; size_t spalte; for(zeile=0;zeile<10;zeile++) for(spalte=0;spalte<0;spalte++) if(arr[zeile][spalte]==0) goto label_end; label_end: if((zeile==0) && (spalte==0)) printf("Nichts gefunden"); else printf("Gefunden an %zu %zu",zeile,spalte); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Sonstiges == === ??-Trigraphs === Zeichenfolge bestehend aus 3 Zeichen beginnend mit 2 Fragezeichen. Die beiden Fragezeichen entsprechen einem ESCAPE-Operator (siehe Kap [[#Char-Konstanten|Char-Konstanten]]), welcher das nachfolgende Zeichen durch ein anderes ASCII Zeichen ersetzt. Die Ersetzung findet auch innerhalb von Strings statt.<br /> Trigraphs wurden früher genutzt, als die ALTGR Taste noch nicht üblich war. <syntaxhighlight> ??< → { ??> → } ??( → [ ??) → ] ??/ → \ ??! → | ??' → ^ ??- → ~ ??= → # </syntaxhighlight> Bei neuer C Varianten muss zur Nutzung von Trigraphs der Compiler mittels -trigraphs aktiviert werden. <noinclude> {{Navigation zurückhochvor buch |zurücklink=Programmieren in C/C++: Toolchain/Entwicklungsumgebung |zurücktext=Toolchain/Entwicklungsumgebung |hochlink=Programmieren in C/C++ |hochtext=Inhaltsverzeichnis |vorlink=Programmieren in C/C++: Datentypen |vortext=Datentypen}} </noinclude> 0059dt3k2b42g4n0ike5w1daiqasf36 1090554 1090553 2026-09-08T12:45:57Z D. Justen 102048 Leerzeichen eingefügt 1090554 wikitext text/x-wiki <noinclude> {{Navigation zurückhochvor buch |zurücklink=Programmieren in C/C++: Toolchain/Entwicklungsumgebung |zurücktext=Toolchain/Entwicklungsumgebung |hochlink=Programmieren in C/C++ |hochtext=Inhaltsverzeichnis |vorlink=Programmieren in C/C++: Datentypen |vortext=Datentypen}} </noinclude> <!-- Falls du ein automatisch erstelltes Inhaltsverzeichnis nicht willst, ersetze das nachfolgende TOC durch NOTOC --> <!-- Einklammerung mit noinclude, damit dieses nicht in der Druckversion erscheint --> <noinclude>__TOC__</noinclude> Die Programmiersprache C/C++ beinhaltet mehrere Sprachen/ Syntaxen: * C-Syntax * Präprozessor-Syntax * Printf/Scanf Formatstring Syntax * Terminal Emulation * Compiler/Linker Anweisungen Letztere beiden werden nur rudimentär in dieser Vorlesung/diesem Skript behandelt. Alle anderen sind Bestandteil dieser Vorlesung. In diesem Kapitel sollen zunächst allgemeine Eigenschaften der Sprache, der grundlegende Syntax und die Kontrollstrukturen erklärt werden. Bei vielen Erklärungen sind Code-Beispiele vorhanden. Da man aus Fehlern am meisten lernt, sind zum Teil auch negative Beispiele enthalten. Für ein besseres Verständnis empfiehlt es sich, Code-Beispiele selbst nachzuvollziehen.<br /> Sofern sich die Eigenschaften auf eine bestimmte C-/C++- oder Compiler-Version beziehen, wird dies gesondert vermerkt. == Zeichensatz == Der Syntax von C nutzt die unteren 128 Zeichen des ASCII Zeichensatzes. Da UTF-8 in den ersten 128 Zeichen deckungsgleich zu ASCII ist, kann auch dieser zur Erstellung des Source Codes genutzt werden. Zeichen außerhalb dieses gültigen Zeichensatzes können folglich nur in Strings oder Kommentaren vorkommen. Werden Zeichen außerhalb der unteren 128 Zeichen in Strings genutzt, so gilt Folgendes zu berücksichtigen: * Die String-Funktionalitäten der Standard-C Library gehen von dem regulären ASCII Zeichensatz aus, so dass z.B. die Suche, der Vergleich oder die Konvertierung fehlschlagen kann * Strings werden oftmals in Verbindung mit printf() genutzt, d.h. auf der Standardausgabe ausgegeben. Der verwendete Zeichensatz sollte hier identisch zum verwendeten Zeichensatz der Terminal-Emulation sein! == Kommentarzeichen == Kommentare dienen dazu, den Source Code mit zusätzlichen Hinweisen zu versehen, so dass die Intension der Anweisungen sichtbar wird. Kommentarzeichen werden durch den Compiler vor dem eigentlichen Übersetzungsdurchlauf entfernt und durch ein Leerzeichen ersetzt [C11 6.4.9]. Innerhalb von Strings wird nicht nach Kommentarzeichen gesucht. <code> Syntax: /* */ </code> Blockkommentar zum Kommentieren eines Bereiches, auch über mehrere Zeilen hinweg. Dieses Kommentarzeichen kann nicht verschachtelt werden, d.h. '*/' beendet die Kommentierung, unabhängig von der Anzahl der zuvor geöffneten Kommentierungen! <code> Syntax: // </code> Zeilenkommentar zum Kommentieren bis zum Zeilenende (wurde in der Programmiersprache BCPL definiert, aber nicht von C, sondern erst von C++ übernommen). Sollen größere Bereiche auskommentiert werden, so empfiehlt sich die Nutzung der Präprozessoranweisung #if 0 ... #endif. Beispiele: <syntaxhighlight lang="C"> /* Blockkommentar mit zwei öffnenden Klammern /* über mehrere Zeilen, nicht verschachtelt */ //Zeilenkommentar /* Kleiner Bereich zum auskommentieren */ #if 0 Großer Bereich zum auskommentieren #endif </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> /* Blockkommentar mit zwei öffnenden Klammern /* über mehrere Zeilen, nicht verschachtelt Compiler-Warning nur aufgrund des Compiler-Schalters -Wall! */ //Zeilenkommentar /* Kleiner Bereich zum auskommentieren */ #if 0 Großer Bereich zum auskommentieren #endif int main(int argc,char *argv[]) { return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Namenskonventionen == Folgende Regeln gelten bzgl. der Benennung von Variablen und Funktionen: * Variablen und Funktionsnamen können aus Buchstaben, Zahlen und dem Unterstrich bestehen. Sie müssen mit einem Buchstaben oder einem Unterstrich beginnen * Seit C95 können weitere Zeichen aus dem Universal Coded Character Set (UCS) genutzt werden [C11 D.1] * C ist Case sensitiv, d.h. es wird zwischen Groß- und Kleinbuchstaben unterschieden * Schlüsselwörter können nicht für Variablen/Funktionsnamen/Datentypen genutzt werden Namenskonventionen von Libraryfunktionen: * In C (und C++) sind Schlüsselwörter und Standardlibraryfunktionen zumeist in Kleinbuchstaben geschrieben. In der C-Standardlibrary werden oftmals verkürzte Ausdrücke (z.B. isalnum() (zum Testen ob ein Zeichen ein Buchstaben oder ein Digit ist) und in C++ der Unterstrich als Worttrenner (z.b. out_of_range) genutzt * Makros (siehe Kap.[[Programmieren in C/C++: Präprozessor | Präprozessor]]) werden per Konvention in GROSSBUCHSTABEN und ggf. mit Unterstrich als Worttrenner geschrieben. * Namen beginnend mit doppelten Unterstrich oder beginnend mit einem Unterstrich gefolgt von einem Großbuchstaben (z.B. __LINE__ _Reserved) sind für den Compiler und der Standard-C-Library vorbehalten und sollten im eigenen Programm nicht benutzt werden. == Zeilenfortsetzung == Mit dem Backslash Operator (gefolgt von einem Zeilenende) kann eine Zeile in der nächsten Zeile fortgesetzt werden. Der Compiler löscht das \-Zeichen mit anschließendem Zeilenende und ersetzt dies durch nichts. Dies ist insbesondere bei Anweisungen notwendig, die am Ende der Zeile abgeschlossen sein müssen (z.B. Strings, Makros). Beispiele: <syntaxhighlight lang="c"> char str1[]="Strings müssen am Ende abgeschlossen sein so dass dies ein Fehler ist"; char str2[]="Dies\ ist ein Test"; //Vorsicht, führende Leerzeichen vor 'ist' //bleiben erhalten! /*mehrzeiliges Makro*/ #define MAX(a,b) (a>b?\ b: \ a) //Dies ist ein Zeilenkommentar \ welcher in dieser Zeile fortgesetzt wird /\ * dies ist ein Blockkommentar*\ / //hinter der Zeilenfortsetzung darf nur ein CR/LF folgen #define MAX2(a,b) \ //so dass hier kein Kommentar folgen darf a>b?a:b </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> char str1[]="Strings müssen am Ende abgeschlossen sein so dass dies ein Fehler ist"; char str2[]="Dies\ ist ein Test"; //Vorsicht, führende Leerzeichen vor 'ist' //bleiben erhalten! /*mehrzeiliges Makro*/ #define MAX(a,b) (a>b?\ b: \ a) //Dies ist ein Zeilenkommentar \ welcher in dieser Zeile fortgesetzt wird /\ * dies ist ein Blockkommentar*\ / //hinter der Zeilenfortsetzung darf nur ein CR/LF folgen #define MAX2(a,b) \ //so dass hier kein Kommentar folgen darf a>b?a:b int main(int argc,char *argv[]) { return 0; } | execCompilerOptions=| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Innerhalb von Char-Literatoren und Strings wird '\' als Escape-Operator genutzt, welche das '\' und ein oder mehrere folgende Zeichen ersetzt (siehe Kap.[[Programmieren in C/C++: Grundlagen#Literale/Konstanten | Grundlagen:Literale/Konstanten]]). Daher darf hinter Backslash als Zeilenfortsetzungszeichen kein weiteres Zeichen folgen. == Gültigkeit/Sichtbarkeit von Variablen == Vorrangig in der objektorientierten Programmierung werden mit Namensräumen Objekte und deren Methoden/Attribute in einer Art Baumstruktur strukturiert. Dies ermöglicht eine eindeutige Ansprache von Variablen/Objekte, aber auch eine doppelte Verwendung von Methoden-/Attributnamen in unterschiedlichen Namensräumen. Ergänzend zu den Namensräumen kann mit public/private/proteced eine Zugriffsbeschränkung von Methoden/Attributen definiert werden. Die Programmiersprache C unterstützt keinen Namensraum. Zugriffsmodifikatoren werden indirekt über Header-Dateien getätigt. Hinsichtlich der Gültigkeit/Sichtbarkeit unterscheidet C folgende Bereiche [C11 6.2.1]: * Funktionen (Function Scope) * Datei (File Scope) * Block (Block Scope) * Funktionsparameter in Prototypen (Function Prototype Scope) Innerhalb eines Gültigkeitsbereiches dürfen Variablen-/Funktions-/Datentypnamen nicht doppelt genutzt werden.<br /> In der Programmiersprache C++ sind weitere Scope wie z.B. Class Scope, Enumationation Scope und ergänzend das Konzept von Namensräumen vorhanden (Beschreibung folgt). === Funktionsweite Sichtbarkeit === Eine Label-Definition (als Sprungmarke für die goto-Anweisungen) erfolgt immer mit funktionsweiter Sichtbarkeit/Gültigkeit. Die genaue Beschreibung dieses Sichtbarkeitstyps erfolgt im Rahmen des Kapitels [[Programmieren in C/C++: Grundlagen #Label + Goto|Grundlagen:Label+Goto]]. === Dateiweite Sichtbarkeit === Erfolgt eine Funktion-/Variablen-/Datentyp-Definition außerhalb eines Block-Scopes oder von Funktionsparameter, so sind diese innerhalb der gesamten Datei und bei Funktionen/Variablen ergänzend Projektweit (für alle Objektdateien) sichtbar/gültig (=&nbsp;global) (In der C-Spec unter dem Stichwort 'Linkage' beschrieben, siehe Kapitel [[Programmieren in C/C++: DatentypeSpecifier#Internal/External Linkage| DatentypeSpecifier:Internal/External Linkage]]). Alle globalen Funktionen/Variablen können von allen Dateien aus genutzt/zugegriffen werden (sofern sie zuvor deklariert wurden).<br /> Beispiel: {| class="wikitable" |- ! Datei1.c !! Datei2.c |- | <syntaxhighlight lang="C"> //Deklaration von func(), //welche in Datei2.c definiert wird extern void func(void); //Definition der Variablen global int global=0; int main(void) { func(); global++; return 0; } </syntaxhighlight> || <syntaxhighlight lang="C"> //Deklaration von global, //welche in Datei1.c definiert wird extern int global; //Definition der Funktion func() void func(void) { global++; } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Deklaration von func(), //welche in Datei2.c definiert wird extern void func(void); //Definition der Variablen global int global=0; int main(void) { func(); global++; printf("global=%d\n",global); return 0; } | datei2_c=#include <stdio.h> //Deklaration von global, //welche in example.c definiert wird extern int global; //Definition der Funktion func() void func(void) { global++; printf("func() called\n"); } | execCompilerOptions=-Wall datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Wird das Schlüsselwort 'static' der Variablen/Funktionsdefinition vorangestellt, so wird die Sichtbarkeit/Gültigkeit auf Dateiweit eingeschränkt. Variablen/Funktionen können nur innerhalb der (Objekt-) Datei genutzt werden und sind für anderen (Objekt-)Dateien unsichtbar. (Siehe Kap. [[Programmieren in C/C++: DatentypeSpecifier#Internal/External Linkage|DatentypeSpecifier:Internal/External Linkage]] Internal/External Linkage) {| class="wikitable" |- ! Datei1.c !! Datei2.c |- | <syntaxhighlight lang="C"> //Dateiweite Sichtbarkeit von var1 static int var1; int main(void) { var1++; return 0; } </syntaxhighlight> || <syntaxhighlight lang="C"> //Dateiweite Sichtbarkeit von var1 static int var1; void func(void) { static int var2; //Vorsicht, static // hat hier eine andere Bedeutung var1++; } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Dateiweite Sichtbarkeit von var1 static int var1; int main(void) { var1++; printf("example.c:var1=%d\n",var1); void func(void); //Prototyp für func() func(); return 0; } | datei2_c=#include <stdio.h> //Dateiweite Sichtbarkeit von var1 static int var1; void func(void) { static int var2; //Vorsicht, static // hat hier eine andere Bedeutung var1++; printf("datei2.c:var1=%d\n",var1); } | execCompilerOptions=datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Projektweite Gültigkeit bedeutet insbesondere, dass keine doppelten Benennung von Variablen/Funktionen/Datentypen innerhalb des gesamten Projektes erlaubt sind, d.h. alle Variablen/Funktionennamen über alle Dateien/Librarys eindeutig sein müssen.<br> Beispiel 1: {| class="wikitable" |- ! Datei1.c !! Datei.2 |- | <syntaxhighlight lang="C"> #include <stdio.h> int a=1; int main(int argc,char *argv[]) { printf("Hello World %d",a); void dummy(void); //Deklaration von Dummy dummy(); return 0; }</syntaxhighlight> || <syntaxhighlight lang="C"> #include <stdio.h> int a=7; void dummy(void) { printf("Hello Again %d\n",a); } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int a=1; int main(int argc,char *argv[]) { printf("Hello World %d",a); void dummy(void); //Deklaration von Dummy dummy(); return 0; } | datei2_c=#include <stdio.h> #include <stdio.h> int a=7; void dummy(void) { printf("Hello Again %d\n",a); } | execCompilerOptions=datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Der Linker meldet beim Zusammenfügen der Objekt-Dateien, dass die Variable a bereits woanders definiert sei (multiple definition of `a';)! Beispiel 2: <syntaxhighlight lang="C"> #include <stdio.h> //fuer printf() size_t stderr int printf=7; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int printf=7; int main(int argc,char *argv[]) { return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hier meldet der Compiler eine Fehlermeldung, da das Symbol printf zu einen als Variable und zum anderen als Funktion (innerhalb der inkludierten Datei stdio.h beschrieben) genutzt wird ('printf' redeclared as different kind of symbol). === Blockweite Sichtbarkeit === Erfolgt eine Funktion-/Variablen-/Datentyp Definition innerhalb einer Funktion, als Funktionsparameter oder eines Blockes, so sind diese nur innerhalb des Blockes sichtbar/gültig (=Lokale Variable). Blöcke können verschachtelt sein, so dass das bei identischer Namensgebung innere Definitionen Vorrang haben. Ebenso haben Blockdefinitionen Vorrang vor Datei-/Projektdefinitionen (überdecken diese): {| class="wikitable" |- ! Datei1.c !! Datei2.c |- | <syntaxhighlight lang="C"> int main(void) { int var2; //var2 ist nur innerhalb //von main() sichtbar struct xyz //Datentyp ist nur innerhalb {int x,y,z;};//von main() //sichtbar/gültig extern void func(void); //Deklaration //ist nur innerhalb von //main() sichtbar/gültig func(); } void foo(void) { struct xyz var_xyz; //Fehler, da //Datentypedefinition hier nicht mehr //gültig ist! func(); //Fehler, da Deklaration //hier nicht mehr gültig ist } </syntaxhighlight> || <syntaxhighlight lang="C"> #include <stdio.h> void func(void) { int var2=1; //var2 ist //nur innerhalb von //func() sichtbar { int var2=2; //var2 ist nur innerhalb //dieses Blockes sichtbar printf("%d\n",var2); } printf("%d\n",var2); } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(void) { int var2; //var2 ist nur innerhalb //von main() sichtbar struct xyz //Datentyp ist nur innerhalb {int x,y,z;};//von main() //sichtbar/gültig extern void func(void); //Deklaration //ist nur innerhalb von //main() sichtbar/gültig func(); } void foo(void) { struct xyz var_xyz; //Fehler, da //Datentypedefinition hier nicht mehr //gültig ist! func(); //Fehler, da Deklaration //hier nicht mehr gültig ist } | datei2_c=#include <stdio.h> void func(void) { int var2=1; //var2 ist //nur innerhalb von //func() sichtbar { int var2=2; //var2 ist nur innerhalb //dieses Blockes sichtbar printf("%d\n",var2); } printf("%d\n",var2); } | execCompilerOptions=-Wall datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Sichtbarkeit von Funktionsparameter in Protypen === Soll eine Funktion aufgerufen werden, die zuvor nicht definiert wurde, so ist ein Prototyp/(Forward)deklaration der Funktion notwendig (siehe nachfolgendes Kapitel). Die Parameterliste dieses Prototyps hat seinen eigenen Gültigkeitsbereich.<br/> Beispiel: <syntaxhighlight lang="C"> int a; //a im File Scope int func(int a, int b); //a und b im Function Prototyp scope </syntaxhighlight> Hinweis: * Bei Prototypen ist die Angabe von Variablenname nicht notwendig. Die alleinige Angabe des Datentyps ist ausreichend === Zuordnung der Gültigkeitsbereiche zu globalen/lokalen Variablen === Zum einfacheren Verständnis wird im Skript von folgenden Begrifflichkeiten gesprochen: * '''Globale''' Variablen-/Funktionen-/Datentypdefinitionen → Projektweite Sichtbarkeit/Gültigkeit * '''Statisch globale''' Variable/Funktionen → Dateiweite Sichtbarkeit/Gültigkeit * '''Lokale''' Variablen/Funktionen/Funktionsparameter/Datentypen → Nur innerhalb des zugehörigen Blockes sichtbare/gültig * '''Statisch lokale''' Variablen → Nur innerhalb der Funktion sichtbar/gültig, mit der Besonderheit, dass die Gültigkeit über der Laufzeit der Funktion gilt (siehe Kap. [[Programmieren in C/C++: DatentypeSpecifier#Static Storage Class Specifier|DatentypeSpecifier:Static Storage Class Specifier]]) === Speicherzuweisung === Für die einzelnen Gültigkeitsbereiche werden im Speicher (und auch in der Objekt-Datei) unterschiedliche Speicherbereiche (Segmente) vorgehalten, d.h. der Compiler teilt den Speicher in unterschiedliche Bereiche auf und weist den Variablen/Funktionen in Abhängigkeit der Gültigkeit/Sichtbarkeit unterschiedliche Speicherbereiche zu! [[File:Zuordnung von Inhalten eines C-Programms zu Speicherbereichen (Segmenten).png|thumb|Zuordnung von Inhalten eines C-Programms zu Speicherbereichen (Segmenten)]] Zur Ermöglichung von Rekursion werden lokale Variable auf dem Stack gehandelt. Mit Aufruf einer Funktion oder öffnen eines neuen Block-Scopes wird Speicher auf dem Stack reserviert, der bei Beenden des Scopes wieder freigegeben wird. Die Speicheradresse von lokalen Variablen ist somit nicht Fix, sondern hängt von der Aufrufhierarchie ab! Globale und statisch globale Variablen werden nicht auf dem Stack gehalten, sondern bekommen einen 'festen' Speicherbereich (hier DATA/BSS/RODATA) während der gesamten Laufzeit des Programms zugewiesen. Die Adresse dieser Variablen sind somit konstant. Das genutzte Speichersegment von globalen Variablen hängen von der Art der Variablen ab. Initialisierte Variablen werden im DATA-Segment gesammelt, welcher mit dem Initialisierungswert der Variablen initialisiert wird. Nicht initialisierte globale Variablen landen im BSS-Segment, so dass diese mit Programmstart durch Füllen dieses Blockes mit 0 auf 0 gesetzt werden. Konstante globale Variablen werden im RODATA-Segment gehalten. Über das Betriebssystem kann dieser Speicherbereich auf nur Lesbar gesetzt werden. Dynamische Speicheranforderungen, resp. Speicher, dessen Gültigkeit über die Laufzeit einer Funktion hinausgeht, wird im Heap gesammelt. Für die Verwaltung dieses Speichers ist der Programmierer zuständig. Entsprechend globalen Variablen wird für Funktionen ebenfalls ein eigener Speicherbereich (TEXT Segment) vorgesehen. Im Gegensatz zu Variablen, wo im Speicher der dazugehörige Inhalt gespeichert ist, ist der Speicherinhalt von Funktionen die Maschinenanweisungen. Die Speicheradresse der Funktionen sind konstant. Hinweis: * Die Speicheradresse von sowohl globalen und statisch globalen Variablen als auch von Funktionen ist konstant und ändert sich während der Laufzeit des Programms nicht. Die Adressvergabe dieser Variablen und Funktionen erfolgt somit nicht zur Laufzeit sondern durch die Toolchain (hier der Linker). * Dieses Konzept ist allgemeingültig, gilt nicht nur für die Programmiersprache C/C++ == Definition/Deklaration(Prototyp) == Der C-Compiler ist ein Single-Pass Compiler (siehe Kap [[Programmieren in C/C++: Einführung/Literatur#Arbeitsweise eines Compilers | Einführung/Literatur:Arbeitsweise eines Compilers ]]), d.h. für den Übersetzungsvorgang wird der Quellcode einmalig eingelesen und von vorne nach hinten abgearbeitet. Dies bedingt, dass keine Vorwärtsbezüge im Quelltext enthalten sein dürfen: * keine Variable genutzt werden kann, die erst später definiert wird (da der Compiler in Abhängigkeit des Datentyps (den er dann noch nicht kennt) keine entsprechende Maschinensprachebefehle erzeugen kann) * keine Funktion aufgerufen werden kann, die erst später definiert wird (da der Compiler nicht weiß, welcher Datentyp die Übergabewerte haben und folglich keine Maschinensprachebefehle zur Konvertierung und Übergabe der Variablen erzeugen kann) * kein Datentyp genutzt werden kann (struct, union, enum, typedef), welcher erst später definiert wird (da der Compiler nicht weiß, wieviel Speicher er für die Variable reservieren muss) Eine Lösungsvariante dieser Problematik ist, im Quellcode alle Variablen/Funktionen/Datentypen/Makros zu definieren, bevor diese erstmalig genutzt werden (Funktion main() steht dann folglich am Ende des Quellcodes): <syntaxhighlight lang="C"> void foo(void) { //foo() wird vor dem ersten Aufruf definiert //Hier kein Zugriff auf var möglich! //Hier kein Zugriff auf Datentyp uchar möglich! } int var; //var wird vor dem ersten Aufruf definiert typedef unsigned char uchar; //Definition des Datentyps uchar int main(void) { foo(); //da zuvor definiert kann diese Funktion hier aufgerufen werden var++; //dito } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void foo(void) { //foo() wird vor dem ersten Aufruf definiert var++; //Hier kein Zugriff auf var möglich! uchar xyz;//Hier kein Zugriff auf Datentyp uchar möglich! } int var; //var wird vor dem ersten Aufruf definiert typedef unsigned char uchar; //Definition des Datentyps uchar int main(int argc, char *argv[]) { foo(); //da zuvor definiert kann diese Funktion hier aufgerufen werden var++; //dito } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Sollen globale Funktionen/Variablen in Datei1.c genutzt werden, die in Datei2.c definiert sind, so schlägt diese Vorgehensweise fehl. Um auch dieses zu ermöglichen, bietet C die Möglichkeiten von Prototypen/Deklarationen an. Diese teilt dem Compiler mit, wie im späteren Ablauf die Variable, die Funktion definiert wird, bzw. dass es diesen Datentyp geben wird: {| class="wikitable" |- ! Datei1.c !! Datei2.c |- | <syntaxhighlight lang="C"> //Prototyp für Variable var extern int var; //Prototyp für Funktion foo void foo(void); int main(int argc, char *argv[]) { foo(); //Compiler kann aufgrund var++; //der Prototypen diese //Aufruf in Maschinen- //sprachebefehle umsetzen } </syntaxhighlight> || <syntaxhighlight lang="C"> //Definition der Variablen var int var; //Definition der Funktion foo void foo(void) { } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Prototyp für Variable var extern int var; //Prototyp für Funktion foo void foo(void); int main(int argc, char *argv[]) { foo(); //Compiler kann aufgrund var++; //der Prototypen diese //Aufruf in Maschinen- //sprachebefehle umsetzen } | datei2_c=#include <stdio.h> //Definition der Variablen var int var; //Definition der Funktion foo void foo(void) { } | execCompilerOptions=-Wall datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Innerhalb der C-Spezifikation werden für den Umgang mit dieser Problematik die Begriffe 'Declaration' und 'Definition' genutzt. Da diese Begriffe jedoch nicht klar abgegrenzt werden und auch für viele weitere Aspekte genutzt werden, sollen in diesem Skript in Anlehnung an den Wikipedia Artikel {{w|Deklaration (Programmierung)|Deklaration (Programmierung)}} (im Absatz zur Programmiersprache C/C++) die Begriffe Definition/Deklaration wie folgt genutzt werden: ;Definition: entspricht der Belegung/Reservierung von Speicherplatz :* Bei der Definition einer Variablen wird hiermit Speicherplatz entsprechend dem Datentyp der Variable belegt: :<syntaxhighlight lang="C"> int var1; //entsprechend der Größe des Datentyps int wird //Speicherplatz für die Variable var1 reserviert int var2=4711; //Dito, ergänzend wird dieser Speicherplatz mit dem //Wert 4711 initialisiert </syntaxhighlight> :* Bei einer Funktion wird Speicherplatz zur Aufnahme der Maschinenbefehle belegt: :<syntaxhighlight lang="C"> void foo(void) { //Die Anweisungen in den geschweiften Klammern //werden in Maschinenbefehle übersetzt. D.h. die //Funktion foo() belegt Speicher, dessen Inhalt //die Maschinensprachebefehle sind } </syntaxhighlight> :* Ergänzend wird der Begriff Definition auch in Verbindung mit der Definition von neuen Datentypen genutzt! ;Deklaration/Prototyp: ist die Mitteilung an den Compiler, wie diese Variable/Funktion an einer späteren Stelle im Source-Code oder in einer anderen Source-Datei definiert wird. Auf Grundlage dieser 'vorab' Information kann der Compiler die passenden Maschinensprachebefehle für den Zugriff/Aufruf auf die Variablen/Funktion einsetzen: :<syntaxhighlight lang="C"> extern int var1; //Deklaration von var1 extern void foo(void); //Deklaration von foo() void foo(void); //Deklaration von foo() </syntaxhighlight><br /> Insbesondere bei dem Umgang mit der Deklaration gilt es Folgendes zu berücksichtigen: * Deklarationen werden entweder: :* am Anfang einer C-Datei geschrieben, so dass Funktionen/Variablen im Zugriff stehen, die erst später in der C-Datei definiert werden (entspricht dann der Private Anweisung in anderen Sprachen) :* in Header-Dateien geschrieben, so dass diese Variable/Funktionen für alle sichtbar sind, welche diese Header-Datei einbinden (entspricht der Public Anweisung in anderen Sprachen) * Deklarationen von Funktionen werden in der C-Spec als (function) Prototyp bezeichnet und sind dadurch gekennzeichnet, dass diese mit einem Semikolon abgeschlossen sind. Der Specifier 'extern' ist hier optional und sagt eigentlich aus, dass diese Funktion external Linkage besitzt (siehe [[Programmieren in C/C++:_DatentypeSpecifier#Internal/External Linkage | DatentypeSpecifier:Internal/External Linkage]]). Die Benennung der Parametervariablen sind gleichermaßen optional: :<syntaxhighlight lang="C"> extern int foo(int var1, float var2); //Deklaration extern int foo(int , float ); //Deklaration int foo(int var1, float var2); //Deklaration + external Linkage int foo(int , float ); //Deklaration + external Linkage </syntaxhighlight> * Für globale Variablen gibt es keine (Variablen) Prototype. Stattdessen muss zur Bekanntgabe des Datentyps der Specifier 'extern' vorangestellt werden, mit welchen ergänzend zum Ausdruck gebracht wird, das diese Variable external Linkage und damit globale Gültigkeit hat (siehe Kap [[Programmieren in C/C++: DatentypeSpecifier# Extern - Storage Class Specifier| DatentypeSpecifier:Extern - Storage Class Specifier]]). Da die Deklaration einzig zur Bestimmung der Zugriffsmethoden auf Maschinenspracheebene genutzt wird, können diese keine Initialisierungswerte enthalten: :<syntaxhighlight lang="C"> extern int var1; extern int var2=7; //KO Deklarationen können keine //Initialisierungswerte haben </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> extern int foo; extern int foo=7; int main(int argc, char *argv[]) { return foo; } int foo=7;| execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Deklarationen von statisch globalen, lokalen und statisch lokalen Variablen nicht möglich sind: :<syntaxhighlight lang="C"> extern static int glob; //keine Deklaration von statisch globalen //Variablen möglich int main(int argc, char *argv[]) { extern int var; //Deklaration bezieht sich auf eine globale //Variable, die nicht definiert ist extern static int lok; printf("%d %d\n",var,lok); int var; static int lok; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> extern static int glob; //keine Deklaration von statisch globalen //Variablen möglich int main(int argc, char *argv[]) { extern int var; //Deklaration bezieht sicht auf eine globale //Variable, die nicht definiert ist extern static int lok; printf("%d %d\n",var,lok); int var; static int lok; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Deklarationen für identische Variablen/Funktionen können beliebig oft erfolgen, sofern der Datentyp identisch ist: :<syntaxhighlight lang="C"> extern int var; extern int var; //OK, doppelt Deklaration mit identischen Datentyp extern unsigned int var; //KO, Doppelte Deklaration mit unterschiedlichen // Datentyp </syntaxhighlight> * Sofern eine Deklaration und eine Definition in der identischen Datei erfolgen überprüft der Compiler, ob Deklaration und Definition identisch sind. Es empfiehlt sich, die eigene Header-Datei (in welcher die Deklaration normalerweise enthalten ist) zu inkludieren: :{| class="wikitable" |- ! Datei1.c !! Datei1.h |- | <syntaxhighlight lang="C"> //Include der eigenen Header-Datei #include "datei1.h" int var1; //Definition von var1 short var2; //Definition von var2 int var3; //Private Variable //da kein Prototyp //im Header vorhanden void func(void) { } </syntaxhighlight> || <syntaxhighlight lang="C"> extern int var1; //Deklaration extern char var2; //KO, da Deklaration //von Definition //abweicht void func(int); //KO, da Deklaration //von Definition //abweicht </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Include der eigenen Header-Datei #include "example.h" int var1; //Definition von var1 short var2; //Definition von var2 int var3; //Private Variable //da kein Prototyp //im Header vorhanden void func(void) { } int main(int argc, char *argv[]) { return 0; } | example_h= extern int var1; //Deklaration extern char var2; //KO, da Deklaration //von Definition //abweicht void func(int); //KO, da Deklaration //von Definition //abweicht | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Innerhalb einer Datei kann eine Variable identischen Datentyps mehrmals definiert werden (bei identischen Initialisierungswert). Diese Definitionen werden vom Compiler als eine Definition angesehen. Wenn jedoch eine identische Variable in unterschiedlichen Dateien definiert wird, so legt jede Datei eine eigene unabhängige Variable an, welche dann beim Zusammenführen der Objektdateien durch den Linker zu Fehler führt. Da Header-Datei zumeist in mehrere C-Dateien inkludiert werden, sind Definitionen in Header-Dateien 'verboten'. * Deklarationen innerhalb eines Block-Scopes oder eines Function Prototyp Scopes sind nur in diesen Bereich gültig. == Grundlegende Datentypen und Typsicherheit == Die Programmiersprache C kennt folgende grundlegende Datentypen (siehe Kap. [[Programmieren in C/C++: Datentypen | Datentypen]]). Von jedem Datentyp kann ein Zeiger angelegt werden: {| class="wikitable" |- ! Datentyp !! Bsp. für Datentyp !! Bsp. für Zeiger auf Datentyp |- | Ganzzahl || <syntaxhighlight lang="C"> char var; int var; short int var; long int var; long long int var; </syntaxhighlight> || <syntaxhighlight lang="C"> char *ptr; int *ptr; short int *ptr; long int *ptr; long long int *ptr; </syntaxhighlight> |- | Gleitkommazahl || <syntaxhighlight lang="C"> double var; float var; long double var; </syntaxhighlight> || <syntaxhighlight lang="C"> double *ptr; float *ptr; long double *ptr; </syntaxhighlight> |- | Funktionen || <syntaxhighlight lang="C"> void func(void) {} </syntaxhighlight> || <syntaxhighlight lang="C"> void (*pfunc)(void); </syntaxhighlight> |- | Arrays || <syntaxhighlight lang="C"> int arr[10]; float arr[3][3]; </syntaxhighlight> || <syntaxhighlight lang="C"> int (*parr); float (*parr)[3]; void (*pfunc[5])(void); </syntaxhighlight> |- | Strukturen/Unions || <syntaxhighlight lang="C"> struct xyz {int x,y,z}; union abc {int a,b,c}; </syntaxhighlight> || <syntaxhighlight lang="C"> struct xyz *ptr; union abc *ptr; </syntaxhighlight> |- | Aufzählungstyp || <syntaxhighlight lang="C"> enum abc {A,B,C}; </syntaxhighlight> || <syntaxhighlight lang="C"> enum abc *ptr; </syntaxhighlight> |- | Boolescher Datentyp || <syntaxhighlight lang="C"> _Bool var; </syntaxhighlight> || <syntaxhighlight lang="C"> _Bool *ptr; </syntaxhighlight> |- | Komplexe Zahlen || <syntaxhighlight lang="C"> _Complex var; </syntaxhighlight> || <syntaxhighlight lang="C"> _Complex *ptr; </syntaxhighlight> |} C/C++ unterscheidet zwischen vorzeichenbehafteten <code>signed</code> und vorzeichenlosen <code>unsigned</code> ganzzahligen Datentypen. Vorzeichenlose Datentypen können nur positive Zahlen incl. der 0 aufnehmen (Anwendungsbereich bspw. Speicheradressen/Arrayindexe, welche nicht negativ sein können). Deren max. Zahlenwert ergibt sich aus der Datenbreite N des Datentyps 2<sup>N</sup>-1. Ein Vergleich eines vorzeichenlosen Datentyps mit ≥ 0 ist somit immer TRUE: <syntaxhighlight lang="C"> unsigned char var=0; if(var >= 0) //Bedingung ist immer erfüllt, so dass printf("Bedingung erfüllt"); //dieser ggf. vom Compiler wegoptimiert wird! for(var=10; var>=0; var--); //Endlosschleife! 0 dekrementiert ergibt 255 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> int main(int argc,char *argv[]) { unsigned char var=0; if(var >= 0) //Bedingung ist immer erfüllt, so dass printf("Bedingung erfüllt\n"); //dieser ggf. vom Compiler wegoptimiert wird! //Beim Öfffnen des Compiler-Fensters ist die IF-Anweisung nicht farblich //hervorgehoben. Dies bedeutet, dass diese Zeile wegoptimiert wurde und folglich //kein Maschinencode für diese Anweisung erzeugt wurde for(var=10; var>=0; var--) //Endlosschleife! 0 dekrementiert ergibt 255 printf("%u ",var),fflush(stdout); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Vorzeichenlose Datentypen halbieren den verfügbaren Zahlenbereich und 'weisen' dem oberen Wertebereich den negativen Zahlen zu.<br> Wird ein ganzzahliger Datentyp ohne Angabe des Vorzeichentyps (signedness) definiert, so ist diese vorzeichenbehaftet. Bei vorzeichenlosen Variablen muss explizit <code>unsigned</code> vorangestellt werden. Die Voranstellung von <code>signed</code> ist optional. Einzige Ausnahme stellt der Datentyp char dar. Hier gibt die Spezifikation keine default signedness vor, so dass bei Nutzung dieses Datentyps zur Aufnahme von Zahlen immer signed oder unsigned vorangestellt werden sollte!<br> Innerhalb des Formatstrings bei den printf()/scanf() Anweisungen '''muss''' die signedness vom Programmierer händisch berücksichtigt werden. Die Formatanweisung %d und %i interpretieren die übergebenen Zahl als vorzeichenbehaftete Zahl. Soll eine vorzeichenlose Zahl ausgegeben werden, so muss %u verwendet werden: <syntaxhighlight lang="C"> signed int vari=-10; unsigned int varu=3000000000; printf("vari=%d varu=%u",vari,varu); //Korrekt printf("vari=%u varu=%i",vari,varu); //Falsche Werteausgaben! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> int main(int argc,char *argv[]) { signed int vari=-10; unsigned int varu=3000000000; printf("vari=%12d varu=%12u\n",vari,varu); //Korrekt printf("vari=%12u varu=%12i\n",vari,varu); //Falsche Werteausgaben! return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Mit der Definition (dem Anlegen) einer Variablen eines Datentyps wird Speicher entsprechend der Größe des Datentyps reserviert. Optional kann dieser Speicher initialisiert werden. Über den Datentyp wird ausgesagt, wie der Inhalt des Speichers zu interpretieren ist: <syntaxhighlight lang="C"> char var1; //Speicherplatzreservierung von 1 Byte //Inhalt der Speicherstelle wird als Zahl interpretiert //(Hinweis: ASCII-Zeichen sind Zahlen) double var2=47.11; //Speicherplatzreservierung von 8 Byte //Inhalt der Speicherstellen wird als Gleitkommazahl //interpretiert (bestehend aus je einer Ganzzahl für //Mantisse und Exponent) short arr[10]; //Speicherplatzreservierung von 10*2 Byte //Inhalt der 10 Speicherstellen werden als Ganzzahl //interpretiert </syntaxhighlight> Die Funktionalität der Operatoren hängt vom Datentyp der Operanden ab. Der Plus-Operator angewendet auf ganzzahlige Operanden führt eine Ganzzahl Addition aus, angewendet auf gleitkomma Operanden eine Gleitkomma Addition. Ist einer der Operanden ein Zeiger, so wird eine Zeigeraddition angewendet. Für andere Datentypen ist der Plus-Operator nicht definiert, so dass der Compiler einen Fehler wirft. '''Bei der Betrachtung eines Ausdruckes sollte dem genutzten Datentypen folglich eine besondere Aufmerksamkeit zuteil werden''': <syntaxhighlight lang="C"> int vari=47; vari+12; //(int) + (int) → Ganzzahladdition float varf=12.3; 3.1415F+varf; //(float) + (float) → Gleitkommaaddition int *ptr=&vari; ptr+3; //(int *) + (int) → Zeigeraddition int arr[3]; arr+3; //(int (*)) + (int) → Zeigeraddition </syntaxhighlight> Das Ergebnis einer Operation hat ebenfalls einen Datentyp. Eine Ganzzahl Addition gibt bspw. als Ergebnis einen Ganzahl Datentyp zurück, eine Gleitkomma Addtition einen Gleitkomma Datentyp und ein Vergleichsoperator den Datentyp _Bool: <syntaxhighlight lang="C"> int vari1=47; int vari2=11; vari1 + 12 + vari2; //((int)+(int)+(int))→((int)+(int))→(int) 40 < vari1 < 50; //((int)<(int)<(int))→((_Bool=int)<(int))→(_Bool=int) </syntaxhighlight> Wie Operatoren haben auch Funktionen Operanden (in Form von Übergabeparameter). Das Ergebnis eines Funktionsaufrufes wird ebenfalls in Form eines Datentyps zurückgegeben: <syntaxhighlight lang="C"> float add(int par1,par2) {return par1+par2;} int vari1=47; int vari2=11; vari1 + add(var2,12); //(int)+((int),(int)→(float))→(int)+(float)→(float) </syntaxhighlight> Wird auf einen Operator gleichermaßen ein vorzeichenbehafteter und ein vorzeichenloser Operand angewendet, so kann es zu unerwarteten Konvertierungsproblemen führen: <syntaxhighlight lang="C"> unsigned char varu=12; signed char vars=-12; float varf; varf = varu + vars; if(vars < varu) </syntaxhighlight> Sind die Datentypen der Operanden nicht 'kompatibel', so 'passt' der Compiler die Datentypen im Falle von Ganzahl und Gleitkomadatentypen per impliziter Regel an (siehe Kap. [[Programmieren in C/C++: Datentypen#Implizite Typumwandlung | Datentypen:Implizite Typumwandlung]]). Über explizite Typumwandlung (siehe Kap.[[Programmieren in C/C++: Datentypen# Explizite Typumwandlung|Datentypen:Explizite Typumwandlung]]) kann ein Datentyp z.T. in einen anderen Datentyp gewandelt werden. In allen anderen Fällen ist C Typsicher, d.h. der Compiler gibt zumindest eine Warning aus, wenn die Datentypen nicht identisch sind und der Compiler keine implizite Regel anwenden kann. Tipp: * Compiler gibt bei Fehlermeldung oftmals die erwarteten und die vorhandenen Datentyp an. Wenn solch eine Fehlermeldung kommt, sollten sie sich a) überlegen, was wollten sie syntaktisch geschrieben haben und b) was haben sie in der Tat geschrieben. Ein Google nach einer Lösung des Compilerproblems löst zumeist nicht das Problem, sondern umgeht es! Hinweis: * Ein guter Programmierer sollte die Datentypen so wählen, dass: :* die Datentypen zum Inhalt und zum Wertebereiches passen :* keine Datentypkonvertierungen notwendig sind : andernfalls besteht die Gefahr, dass hiermit Laufzeitfehler einprogrammiert werden. * Wenn Datentypkonvertierungen notwendig sind, sollte die explizite Konvertierung genutzt werden == Abhängigkeiten bzgl. Rechnerarchitektur == Kenngrößen von Prozessoren sind unter anderem die Anzahl der Bits für den Datentransport und für Arithmetisch-/Logische-Operationen (→ Datenbreite) und die Anzahl der Bits für die Adressierung des Speichers (→ Adressierungsbreite). Die Datenbreite sagt dabei aus, welche max. Datenbreite ein Maschinenbefehl (zumeist in einem Taktzyklus) transportieren/berechnen kann. Werden programmtechnisch größere Datenbreiten benötigt, bedingt dies, dass hierzu mehrere Maschinenbefehle notwendig sind. Wenn kleinere Datenbreiten notwendig sind, so wird oftmals das Ergebnis abgeschnitten (sofern der Prozessor keine Befehle für den Umgang mit kleineren Datentyp beherrscht): {| class="wikitable" |- ! 32-Bit Datentransport/Operation<br /> bei 32-Bit Datenbreite ! 64-Bit Datentransport/Operation<br /> bei 32-Bit Datenbreite ! 16-Bit Datentransport/Operation<br /> bei 32-Bit Datenbreite |- | <syntaxhighlight lang="C"> int32_t a32,b32; </syntaxhighlight> || <syntaxhighlight lang="C"> int64_t a64,b64; </syntaxhighlight> || <syntaxhighlight lang="C"> int16_t a16,b16; </syntaxhighlight> |- | <syntaxhighlight lang="asm"> // a32=b32; mov eax,b32 mov a32,eax </syntaxhighlight> || <syntaxhighlight lang="asm"> // a64=b64; mov eax ,b64 mov edx ,b64+4 mov a64 ,eax mov a64+4,edx </syntaxhighlight> || <syntaxhighlight lang="asm"> //a16=b16; movz eax,b16 mov a16,ax </syntaxhighlight> |- | <syntaxhighlight lang="asm"> // a32=a32+b32; mov edx, a32 mov eax, b32 add eax, edx mov a32, eax </syntaxhighlight> || <syntaxhighlight lang="asm"> // a64=a64+b64; mov ecx , a64 mov ebx , a64+4 mov eax , b64 mov edx , b64+4 add eax , ecx adc edx , ebx mov a64 , eax mov a64+4, edx </syntaxhighlight> || <syntaxhighlight lang="asm"> // a16=16+b16; movzx eax, a16 mov edx, eax movzx eax, b16 add eax, edx mov a16, ax </syntaxhighlight> |} Die Adressierungsbreite gibt an, mit welcher Bitbreite der Speicher adressiert werden kann: * Bei einem 32-Bit System können 2<sup>32</sup>=4.294.967.295=4Gi&nbsp;Bytes/Speicherstellen adressiert werden * Bei einem 16-Bit System können 2<sup>16</sup>=65.536=64Ki&nbsp;Bytes/Speicherstellen adressiert werden * Bei einem 64-Bit System können 2<sup>64</sup>=18.446.744.073.709.551.616 =16Ei ~18Exa&nbsp;Bytes/Speicherstellen adressiert werden Waren die Datenbreite und die Adressierungsbreite bei den ersten Prozessoren noch unterschiedlich, so sind diese heutzutage zumeist identisch. Bei einem 32-Bit Prozessor bedeutet dies, dass dieser max. 4Gi&nbsp;Bytes Speicherstellenstellen adressieren kann und Maschinenbefehle für den Datentransport und die Berechnung von 32-Bit Datenworten beinhaltet. Die Datenbreite und auch die Adressierungsbereite haben direkten Einfluss auf die Programmiersprache: * Wird defaultmäßig mit größerer Datenbreite gerechnet, als der Prozessor 'von Hause' aus unterstützt, so werden die erzeugten Maschinenprogramme größer und langsamer (Umgedreht bedeutet dies jedoch nicht, dass die Maschinenprogramme kleiner und schneller werden) * Die max. Größe von Verbunddatentypen und Arrays ergibt sich aus der Adressierungsbreite des Prozessors Die Intention der Programmiersprache C/C++ ist, die Prozessorarchitektur optimal zu nutzen. Dementsprechend sind diverse Eigenschaften der Sprache nicht fest spezifiziert, sondern von der Rechnerarchitektur abhängig. === Integer Datentyp === Intention von C/C++ ist, dass der Umgang mit dem Grunddatentyp 'int' möglichst direkt in einen Maschinensprachebefehl umgesetzt werden kann.<br /> Bei einem 16-Bit Prozessor hat der Datentyp int daher eine Breite von 16-Bit und bei einem 32-Bit Prozessor eine Breite von 32-Bit (siehe Kap [[Programmieren in C/C++: Datentypen # Ganzzahlige Datentypen|Datentypen:Ganzahl Datentypen]]). Über vorangestellte Qualifier kann dieser Grunddatentyp verkleinert/vergrößert werden. === Integer Arithmetik === Ganzzahlen haben nur einen begrenzten Wertebereich. Wird dieser bspw. durch eine Addition überschritten (d.h. das Rechenergebnis benötigt zur Darstellung mehr Stellen, als der Datentyp 'hergibt'), so gibt es zwei Vorgehensweisen: * Arithmetischer Überlauf (siehe {{w|arithmetischer Überlauf}}): Die nicht speicherfähigen Stellen werden verworfen, so dass i.d.R. ein falsches Ergebnis erzeugt wird! :Beispiel: :<syntaxhighlight lang="C"> unsigned char a=254,b=3,c; c=a+b; //c ist (254+3)%256=1 c=a*b; //c ist (254*3)%256=250 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { unsigned char a=254,b=3,c1,c2; c1=a+b; //c ist (254+3)%256=1 c2=a*b; //c ist (254*3)%256=250 printf("c1=%hhu c2=%hhu\n",c1,c2); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Sättigungsarithmetik (siehe {{w|Sättigungsarithmetik}}): Alle Operationen laufen innerhalb eines festen Intervalls ab, so dass Überläufe und Unterläufe auf dieses Intervall begrenzt werden: :Beispiel: :<syntaxhighlight lang="C"> unsigned char a=254,b=3,c; c=a+b; //c ist MAX((254+3),255)=255 c=a*b; //c ist MAX((254*3),255)=255 </syntaxhighlight> Die Spezifikation von C macht bezüglich der zu nutzenden Methodik keine Vorgaben, so dass das Handling von der ALU des Prozessors abhängt. Aus Komplexitäts- und Geschwindigkeitsgründen ist dies zumeist der arithmetische Überlauf. Nur bei Spezialprozessoren (z.B. DSP Digital Signal Processor) kommt z.T. die Sättigungsarithmetik zum Einsatz. === Gleitkomma Datentyp und Arithmetik === Für den Umgang mit Gleitkommazahlen bieten einige Prozessoren spezielle Recheneinheiten ({{w|Gleitkommaeinheit}} Floating Point Units FPU) an. Sowohl die Darstellung von Gleitkommazahlen als auch das Verhalten bei Überlauf/Unterlauf ist damit Herstellerabhängig. Um auch diese Einheiten effektiv nutzen zu können, ist die C/C++ Spezifikation in diesem Bereich ebenfalls sehr offen. === Max. Speicherbedarf von Variablen === Die maximale Größe von Arrays/Strukturen/Unions ist in C/C++ von der zugrundeliegenden Rechnerarchitektur abhängig: <syntaxhighlight lang="C"> char a[100000]; //Speicherbedarf=100.000*1Byte=100.000 Bytes //Bei 16-Bit Architektur KO //Ab 32-Bit Architektur OK struct size_16 { char a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_256 { struct size_16 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_4096 { struct size_256 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_65536 { struct size_4096 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_65536 var65536; //Speicherbedarf=65536 Bytes //Bei 16-Architektur KO //Ab 32-Architektur OK </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Zur Darstellung bitte Compiler-Fenster öffnen //und dort den CC65-Compiler für den 6502 Prozessor auswählen char a[100000]; //Speicherbedarf=100.000*1Byte=100.000 Bytes //Bei 16-Bit Architektur KO //Ab 32-Bit Architektur OK struct size_16 { char a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_256 { struct size_16 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_4096 { struct size_256 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_65536 { struct size_4096 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_65536 var65536; //Speicherbedarf=65536 Bytes //Bei 16-Architektur KO //Ab 32-Architektur OK int main(int argc,char *argv[]) { return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Im Falle von globalen Variablen erzeugt der Compiler/Linker eine Fehlermeldung. Werden von diesen Datentypen Variablen als lokale Variablen angelegt, so erzeugt dies zur Laufzeit einen Stackoverflow. === Zeigervariable === Eine Zeigervariable ist eine Variable, die eine Speicheradresse speichert. Die Größe dieses Datentyps hängt von der Adressierungsbreite des Prozessors ab. Unabhängig von dem Datentyp, auf den die Zeigervariable zeigt, ergibt sich folgende Breite: * 4-Byte bei einer 32-Bit Rechnerarchitektur * 8-Byte bei einer 64-Bit Rechnerarchitektur * 2-Byte bei einer 16-Bit Rechnerarchitektur === Datentyp size_t === Die maximale Größe von Arrays/Strukturen/Unions ist in C von der zugrundeliegenden Rechnerarchitektur abhängig. Sie ergibt sich aus der Adressierungsbreite. Da die Datenbreite des Datentyps int zumeist kleiner als die Adressierungsbreite ist, existiert in C/C++ der vorzeichenlose Datentyp size_t.<br /> Alle Funktionen, welche den Speicherbedarf übergeben bekommen, bzw. zurückgeben (bspw. strlen(), memcpy(), sizeof()) , nutzen den Datentyp size_t: <syntaxhighlight lang="C"> //Prototypen size_t strlen(char *str); //Die max. Stringlänge ist durch den //adressierbaren Speicher vorgegeben void *malloc(size_t size); void *memcpy(void *dest, const void *src, size_t n); </syntaxhighlight> Der Datentyp size_t ist in der Header-Datei stddef.h der Standard-C-Library per typedef gesetzt. Im Normalfall muss diese Header-Datei nicht explizit inkludiert werden, da bei Nutzung von z.B. strlen() diese bereits durch die Header-Datei string.h inkludiert wird: <syntaxhighlight lang="C"> typedef unsigned long long size_t; //Bei einer 64-Bit Rechnerarchitektur </syntaxhighlight> Hinweis: * Der Datentyp size_t ist immer ein vorzeichenloser Datentyp (es gibt keine negativen Speicheradressen). * Mit dem Datentype ssize_t wird eine vorzeichenbehaftete Variante zur Verfügung gestellt, welche hilfreich ist, wenn Speicheradresse subtrahiert werden sollen. * Soll der Wert vom Datentyp size_t mittels printf() ausgegeben werden, so ist der 'Length Modifier' z und der 'Conversion Specifier' u zu nutzen: :<syntaxhighlight lang="C"> size_t var=strlen("String"); printf("%zu",var); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc,char *argv[]) { size_t var=strlen("String"); printf("%zu",var); printf("%d",var); //Hier sollte es eine Compiler-Warning geben! return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Boolescher-Datentype/Operatoren == Ursprünglich gab es den booleschen Datentyp in der Programmiersprache C nicht. Mit C99 wurde zwar der Datentyp <code>_Bool</code> eingeführt, dies änderte jedoch nicht den Umgang mit Anweisungen und Operatoren, die einen booleschen Datentyp erwarten/zurückgeben! An allen Stellen, an denen ein boolescher Datentyp erwartet wird (z.B. IF-Abfrage, bei booleschen Operationen) wird der Datentyp Ganzzahl, Gleitkommazahl oder Zeiger erwartet (= Scalar-Type) und ausgewertet. Der hierin gespeicherte Zahlenwert sagt aus, ob diese Zahl als True oder False zu interpretieren ist: * False, wenn Ganzzahl gleich 0 oder Gleitkommazahl gleich 0.0 oder Zeiger gleich NULL * True, wenn Ganzzahl ungleich 0 oder Gleitkommazahl ungleich 0.0 oder Zeiger ungleich NULL Beispiel: <syntaxhighlight lang="C"> int a=3; double b=0.0; int *ptr=&a; while(1); if(a) {} for( ; b && ptr ; ); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=3; double b=0.0; int *ptr=&a; while(0); if(a) {} for( ; b && ptr ; ) {} return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Operatoren, welchen einen booleschen Wert zurückliefern (Vergleichs-Operatoren und Boolesche-Operatoren), liefern ein Integer-Datentyp zurück: * (int)0 für False * (int)1 für True Beispiel: <syntaxhighlight lang="C"> int a=3; int b= (a==3); //b=1 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=3; int b= (a==3); //b=1 printf("%d",b); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} In den if()/for()/while() Anweisungen ist folglich kein explizites Konvertieren eines Ganzzahl-/Gleitkomma-/Zeigerwertes mittels des Vergleichs-Operators in einen Booleschen Wert notwendig: <syntaxhighlight lang="C"> int a; double b; if(a) //entspricht if(a!=0) if(!b) //entspricht if(b==0.0) while(1) //entspricht while(True) for(int lauf=1; lauf ; lauf--); </syntaxhighlight> Umgedreht kann ein boolescher Wert oder auch das Ergebnis einer booleschen Operation direkt mit einer Ganzzahl- oder Gleitkommazahl verknüpft werden: <syntaxhighlight lang="C"> int a=3,b=2; a=a+1 && 7 << 3 & a==3; if( a==1 & b==2) if(3 < a < 9) //Vorsicht, die Schreibweise lässt ein //anderes Verhalten erwarten! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=3,b=2; a=a+1 && 7 << 3 & a==3; printf("%d\n",a); if(a==1 & b==2) printf("true\n"); else printf("false\n"); if(3 < a < 9) if( (a==1) & (b==2)) printf("true\n"); else printf("false\n"); return 0; } | execCompilerOptions=| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Mit C99 wurde der Datentyp <code>_Bool</code> eingeführt. Dieser entspricht weiterhin einem Integerdatentyp mit der Besonderheit, dass beim Zuweisen eines Wertes dieses auf true oder false geprüft wird und Variablen dieses Datentyps nur die Werte 0 oder 1 annehmen können: <syntaxhighlight lang="C"> _Bool var1=12; printf("var1=%d\n",var1); //→ 1 float var2=13.2; var1=var2; printf("var1=%d\n",var1); //→ 1 var1--; //Post/Pre Inkrement/Dekrement in C++ nicht auf Datentyp bool! möglich printf("var1=%s\n",var1?"true(1)":"false(0)"); //→ false </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { _Bool var1=12; printf("var1=%d\n",var1); //→ 1 float var2=13.2; var1=var2; printf("var1=%d\n",var1); //→ 1 var1--; //Post/Pre Inkrement/Dekrement in C++ nicht auf Datentyp bool! printf("var1=%s\n",var1?"true(1)":"false(0)"); //→ false return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Für den einfacheren Umgang mit dem 'neuen' Datentyp wurde in der Header-Datei <code>stdbool.h</code> die Makros <code>true</code> (als Austauschwert für die Ganzzahl 1) und <code>false</code> (als Austauschwert für die Ganzahl 0) definiert. Ergänzend wird hier der Datentyp <code>bool</code> als Alias auf <code>_Bool</code> gesetzt. <syntaxhighlight lang="C"> #include <stdbool.h> bool foo(int par,int min,int max) { if((par >= min) && (par <= max)) return true; else return false; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdbool.h> bool foo(int par,int min,int max) { if((par >= min) && (par <= max)) return true; else return false; } int main(int argc,char *argv[]) { foo(4,3,6); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * In C++ gibt es anstatt des Datentypes <code>_Bool</code> den Datentyp <code>bool</code>. Auch sind die beiden Konstanten <code>true</code> und <code>false</code> ohne zusätzliches Einbinden der Header-Datei vorhanden. Der weitere Umgang ist jedoch identisch zu C. == Literale/Konstanten == Zahlenwerte und Strings im Source-Code werden vom Compiler in binäre Zahlen umgerechnet. Über der Schreibweise/Syntax der Literale/Konstanten wird dem Compiler gesagt, in welchem Zahlenformat die Zahl auf Source-Code Ebene beschrieben ist und welchem Datentyp sie entspricht. Unabhängig wie die Konstanten im Source-Code beschrieben sind, werden die Zahlen intern als binäre Zahlen gespeichert. Beispiele, wie die Zahlen intern gespeichert werden: <syntaxhighlight lang="C"> int var=17; //0000 0000 0000 0000 0000 0000 0001 0001 short var=0x307;// 0000 0011 0000 0111 char var=017; // 0000 1111 int var=-1; //1111 1111 1111 1111 1111 1111 1111 1111 float var=0.0; //0000 0000 0000 0000 0000 0000 0000 0000 float var=1.0; //0011 1111 1000 0000 0000 0000 0000 0000 </syntaxhighlight> === Ganzzahl-Konstanten === Im Allgemeinen ordnet der Compiler einer numerischen, ganzzahligen Konstanten den kleinstmöglichen Datentyp beginnend vom Datentyp integer zu. Sobald der Wert der Konstanten den Wertebereich von integer übersteigt, wird der nächst größere passende Datentyp gewählt. Ergänzend gilt, dass alle Ganzzahl-Konstanten als vorzeichenbehaftete Ganzzahl-Konstanten angesehen werden!<br /> Beispiele für integer Konstanten: <pre> 123 +123 -123 → Formal wird das Minus als Operator angesehen und die positive Zahl 123 negiert 0x123 → Konstante ist in hexadezimaler Schreibweise notiert 0123 → Konstante ist in oktaler Schreibweise notiert 0b011 → Konstante ist in binärer Schreibweise notiert nicht offizieller C-Syntax, wird aber von vielen Compiler unterstützt ab C23-Spezifikation offiziell im C-Syntax enthalten! 6'432'108 → Tausendertrenner Nur in C++ Spezifikation enthalten ab C23-Spezifikation auch im C-Syntax enthalten. 5123123123 → Wertebereich größer als 2^31 so dass automatisch zum nächst größeren Datentyp konvertiert wird </pre> Mit den Suffixen L/l und LL/ll kann der Datentyp long und long long erzwungen werden: <pre> 12L → Konstante wird in eine long Integer Konstante konvertiert 4711LL → Konstante wird in eine Long Long Konstante konvertiert </pre> Mit dem Suffix U/u kann die Konstante explizit auf unsigned gesetzt werden: <pre> 12U → Konstante wird als vorzeichenlose Zahl gesepeichert 4711ULL → Konstante wird in eine vorzeichenlose Long Long Konstante konvertiert </pre> === Char-Konstanten === In einfachen Anführungsstrichen geschriebene ASCII Zeichen werden entsprechend der {{w|American Standard Code for Information Interchange | ASCII-Tabelle}} als Zahlenwert (Datentyp int) dargestellt: <pre> 'A' → Integerkonstante 65 'a' → Integerkonstante 97 … </pre> Über den {{w|Escape-Sequenz|Escape-Operator}} (Zeichen Backslash '\') wird das/die dem ESCAPE Operator folgende Zeichen gesondert interpretiert. Die im Source-Code erhaltene Zeichenfolge wird im Computerprogramm als ein Zahlenwert (Datentyp int) gespeichert. Dies ist u.A. zur Darstellung von ' und " aber auch zur Darstellung der unteren 32 Zeichen der ASCII Tabelle notwendig (Siehe auch {{w|Steuerzeichen}}) <pre> ESCAPE Integer- → Bedeutung / (Terminal)funktionalität Sequence konstante '\0' = 0 → 0 Character = Stringendezeichen '\a' = 7 → Bell (erzeugt auf dem Terminal einen Ton) '\b' = 8 → Backspace (Bewegt den Cursor um eine Position nach links) '\t' = 9 → Horizontal Tab (Bewegt den Curso auf die nächste horizontale Tabulatorposition, Abstand ist Terminalspezifisch) '\n' = 10 → NewLine (Zeilenvorschub) '\v' = 11 → Vertial Tab '\r' = 13 → Carriage Return (Wagenrücklauf, Bewegt den Cursor an den Zeilenanfang) '\"' = 34 → Double Quote '\'' = 39 → Single Quote '\?' = 63 → Question mark '\\' = 92 → Backslash '\f' = 12 → FormFeed (Erzeugt auf dem Terminal/Drucker einen Seitenvorschub) '\ooo' = 0ooo → Oktal, wobei o Digits von 0..7 sein müssen '\xdd' = 0xdd → Hexadezimal, wobei d Digits von 0..9 A..F sein müssen '\udddd' Unicode mit 4 Digits '\Udddddddd' Unicode mit 8 Digits </pre> Beispiel <syntaxhighlight lang="C"> 'A' == 65 == '\101' == '\x41' == '\u0041' == '\U00000041' </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { //Programmiersprache wurde auf C++ gesetzt if('A' == 65) printf("'A' == 65\n"); if('A' == '\101') printf("'A' == '\\101'\n"); if('A' == '\x41') printf("'A' == '\\x41'\n"); if('A' == '\u0041') printf("'A' == '\\u0041'\n"); if('A' == '\U00000041') printf("'A' == '\\U00000041'\n"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true| lang=c++ }} Öffnen im Compiler Explorer] }} Über Prefixe können alternative Zieldatentypen/Konvertierungen erzwungen werden: <pre> u'b' → unicode 16 (nur C++) U'b' → unicode 32 (nur C++) L'b' → wchar_t </pre> Hinweis * Die ASCII-Tabelle basiert auf einer 7-Bit Zeichenkodierung, so dass bspw. die Umlaute 'ä', 'ö' und 'ü' dort nicht kodiert sind. Sollen auch diese Zeichen genutzt werden, so empfiehlt sich der Datentyp wchar_t === Gleitkommakonstanten === Alle Gleitkommakonstanten sind ohne weitere Angaben vom Datentyp double! <pre> 555.12 555. → 555.0 .1 → 0.1 4e2 → 400.0 0x22.11p13 → Konstante in Hexadezimalen Schreibweise (ab C99) </pre> Über Suffixe kann ein alternativer Datentyp erzwungen werden: <pre> 3.0F → Datentyp float 3.0l → Datentyp long double </pre> Hinweis: * Aufgrund der unterschiedlichen Basis zwischen dem menschlichen Zehner-System und dem computerinternen Binär-System entstehen insbesondere bei den Nachkommastellen Rundungsfehler. Die Konstante 0.1f wird durch die Wandlung intern als 1.00000001490116119384765625e-1 dargestellt * Die C-Spec verlangt, dass die binäre Repräsentation von Gleitkommazahlen zur Laufzeit (z.B. durch die Funktion atof() strtod() scanf("%f")) identisch zur der zur Compilezeit ist. Beispiel: :<syntaxhighlight lang="C"> if(3.14==atof("3.14")) printf("muss erfüllt sein"); //3.14 wird vom Compiler in ein Binärwert gewandelt //Der String "3.14" wird zur Laufzeit mittels atof in ein Binärwert gewandelt //Beide Wandlungsergebnisse müssen identisch sein </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { if(3.14==atof("3.14")) printf("muss erfüllt sein\n"); //3.14 wird vom Compiler in ein Binärwert gewandelt //Der String "3.14" wird zur Laufzeit mittels atof in ein Binärwert gewandelt //Beide Wandlungsergebnisse müssen identisch sein printf("Intern wird 3.14 wie folgt dargestellt %14.20f",3.14); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Konstanten Ausdrücke === Ergänzend zu den Zahlenwerten werden auch Ausdrücke durch den Compiler ausgewertet. Als Voraussetzung für die Ausdrücke gilt, dass alle Operatoren Literale/Konstante sein müssen, so dass der Compiler die Berechnung durchführen kann. Als Operatoren können alle im normalem Syntax erlaubten Operatoren (z.B.: +,-,*,/,&,&&,|,||,>>,<<,==,!=) genutzt werden.<br /> Beispiel: <syntaxhighlight lang="C"> int var1=7*3+5; → wird vom Compiler durch 26 ersetzt int var2=(4710+(8-1))&-8; → wird vom Compiler durch 4712 ersetzt var1=4*4*var1+77*(77%3); → wird vom Compiler durch 16 * var1 + 154 ersetzt </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { int var1=7*3+5; //→ wird vom Compiler durch 26 ersetzt int var2; var2=(4710+(8-1))&-8; //→ wird vom Compiler durch 4712 ersetzt var1=4*4*var1+77*(77%3); //→ wird vom Compiler durch var1 * 16 + 154 ersetzt return 0; } | execCompilerOptions=-Wall| h=g| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Konform zur C-Spezifikation bieten einige Compiler weitere Operatoren aus der math.h Library an (z.B. sin(), cos(), ...). Bestehen die Aufrufparameter aus Konstanten, so ersetzt der Compiler den Ausdruck durch die 'Ergebnis'-Konstante: :<syntaxhighlight lang="C"> int var3=sin(1.0)*10; →wird vom Compiler durch 8 ersetzt </syntaxhighlight> * Konstanten Ausdrücke werden durch den Präprozessor ausgewertet, so dass dieser die Ergebnisse ebenfalls nutzen kann: :<syntaxhighlight lang="C"> #define BUF_SIZE 512 #if (BUF_SIZE & (BUF_SIZE -1)) != 0 #endif </syntaxhighlight> === String Konstanten === Stringkonstanten erzeugen ein Array von Characters. Mit dem abschließenden Hochkommata wird das Array um ein Stringendezeichen ergänzt: <pre> "abc" → (char []) {'a','b','c','\0'} </pre> Adjacent Strings Konstanten werden vom Compiler zu einer String-Kontante zusammengefasst, so dass nur ein Stringendezeichen vorhanden ist: <pre> "xxx" "yyy" → (char []) {'x','x','x','y','y','y','\0'} </pre> Über Prefixe können alternative Zieldatentypen/Konvertierungen erzwungen werden: <pre> L"string" → (wchar_t[7]){L's',L't',L'r' …) </pre> Über Postfixes können in C++ Objekte erzeugt werden: <pre> "string"s → erzeugt einen String vom Datentyp std::string "string"sw → Erzeugt einen String vom Datentyp std::string_view </pre> String Konstanten werden Compilerintern über unnamed Variablen realisiert, welche als globale Variable angelegt werden und per default const sind: <syntaxhighlight lang="C"> printf("Wert=%d",4); //entspricht const char unnamed1[]="Wert=%d"; printf(unnamed1,4); //String Konstanten sind per Default Konstant char *str="hallo"; //Typkonflikt!, da "hallo" vom Datentyp const char[] ist str[0]='H'; //Laufzeitfehler, da nun schreibender Zugriff auf im //Readonly Speicher angelegt Variable. </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { printf("Wert=%d\n",4); //entspricht const char unnamed1[]="Wert=%d\n"; printf(unnamed1,4); fflush(stdout); //Zur Darstellung der Ausgabe, da nachfolgend //das Programm abstürzt und die gepufferte Ausgabe //nicht zur Anzeige gebracht wird //String Konstanten sind per Default Konstant char *str="hallo"; //Typkonflikt!, da "hallo" vom Datentyp const char[] ist str[0]='H'; //Laufzeitfehler, da nun schreibender Zugriff auf im //Readonly Speicher angelegt Variable. return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Für doppelte String Konstanten wird nur einmal Speicher reserviert: <syntaxhighlight lang="C"> const char *str1="hallo"; const char *str2="hallo"; if(str1==str2) printf("Identische Startadressen"); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { const char *str1="hallo"; const char *str2="hallo"; if(str1==str2) printf("Identische Startadressen"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Initialisierungsliste / Compound Literal == Arrays, Strukturen und Unions bestehen zumeist aus mehreren Elementen. Zur Initialisierung solcher Variablen werden die Initialisierungswerte in geschweiften Klammern als Initialisierungsliste zusammengefasst. <code> Syntax: {Initialisierungsliste} </code> Für eine Initialisierungsliste wird kein Speicher vorgehalten. Vielmehr wird bei der Variablendefinition die Variable direkt mit dem Inhalt der Liste initialisiert. Der Datentyp der Initialisierungsliste ergibt sich aus dem Datentyp der zu initialisierenden Variable: <syntaxhighlight lang="C"> int arr[5] = { 1,2,3,4,5 }; struct xyz { int x,y,z;}; //Definition einer Struktur struct xyz var = { 1,2,3 }; </syntaxhighlight> Wird der Initialisierungsliste ein Datentyp in runden Klammern vorangestellt, so wird hiermit eine 'unnamend' Variable/Objekt, ein Compound Literal erstellt: <code> Syntax: (type) {Initialisierungsliste} </code> Ein Compound Literal entspricht einer anonymen Variablen des angegebenen Datentyps. Wie bei einer normalen Variablendefinition wird hier ebenfalls eine Variable angelegt und diese mit den Initialisierungswerten initialisiert. Im Unterschied zu einer normalen Variable kann auf solch eine Variable im Nachgang nicht mehr zugegriffen werden. Der Rückgabewert eines Compound Literals entspricht somit dem einer Variablen.</br> Compound Literale bieten sich überall dort an, wo Variablen nur für einen einmaligen Zweck angelegt werden (bspw. bei der Parameterübergabe von Funktionen): <syntaxhighlight lang="C"> struct point {int x; int y;}; drawline((struct point){1,2},(struct point){2,3}); printarray((int []){1,2,3,4}); //entsprechen struct point unnamed1={1,2},unnamed2={2,3}; drawline(unnamed1,unnamed2); int unnamed3[]={1,2,3,4}; printarray(unnamed3); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct point {int x,y;}; void drawline(struct point start,struct point end) { printf("Linie von (%d,%d) nach (%d,%d)\n",start.x,start.y,end.x,end.y); } void printarray(int arr[4]) { printf("[ "); for(size_t idx=0;idx<4;idx++) printf("%d ",arr[idx]); printf("]\n"); } #include <stdlib.h> int main(int argc,char *argv[]) { struct point {int x; int y;}; drawline((struct point){1,2},(struct point){2,3}); printarray((int []){1,2,3,4}); //entsprechen struct point unnamed1={1,2},unnamed2={2,3}; drawline(unnamed1,unnamed2); int unnamed3[]={1,2,3,4}; printarray(unnamed3); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Über den Adressoperator kann auch die Adresse der anonymen Variablen ermittelt werden. In diesem Falle ist dann der Gültigkeitsbereich/-dauer des Compound Literals zu berücksichtigen. Wird eine Compound Literals außerhalb eines Block-Scopes angelegt, so entspricht sie einer globalen Variable, andernfalls einer lokalen Variablen. Außerhalb des Gültigkeitsbereiches verliert die Adresse auf solch eine Variable ihre Gültigkeit: <syntaxhighlight lang="C"> drawlinep( &(struct point){1,2},&(struct point){2,3}); //entspricht struct point unnamed1={1,2},unnamed2={2,3}; drawlinep( &unnamed1, &unnamed2); struct point1, *point2; { //Block-Scope, zwecks Darstellung von lokalen Variablen point1= (struct point){1,2}; //Compound Literal entspricht hier //Initialisierungswert für point1 point2=&(struct point){3,4}; //Compound Literal ist nur in diesem //Block gültig drawlinep(&point1 /*OK*/, point2 /*OK*/); } drawlinep(&point1 /*OK*/, point2 /*KO*/); //Zeiger zeigt auf nicht mehr //gültigen Speicherbereich </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct point {int x,y;}; void drawlinep(struct point *start,struct point *end) { printf("Linie von (%d,%d) nach (%d,%d)\n",start->x,start->y,end->x,end->y); } #include <stdlib.h> int main(int argc,char *argv[]) { drawlinep( &(struct point){1,2},&(struct point){2,3}); //entspricht struct point unnamed1={1,2},unnamed2={2,3}; drawlinep( &unnamed1, &unnamed2); struct point point1, *point2; { //Block-Scope, zwecks Darstellung von lokalen Variablen point1= (struct point){1,2}; //Compound Literal entspricht hier //Initialisierungswert für point1 point2=&(struct point){3,4}; //Compound Literal ist nur in diesem //Block gültig drawlinep(&point1 /*OK*/, point2 /*OK*/); } drawlinep(&point1 /*OK*/, point2 /*KO*/); //Zeiger zeigt auf nicht mehr //gültigen Speicherbereich } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * Compound-Literal sind per Default keine Konstanten, können also zur Laufzeit geändert werden (siehe Kap. [[Programmieren in C/C++: DatentypeSpecifier#Const Type Qualifier|DatentypeSpecifier:Const Type Qualifier]]): :<syntaxhighlight lang="C"> float *arr=(float []){1.1,2.2,3.3}; //Kein Typkonflikt arr[0]=47.11; //Änderung des 'Konstanten' arr[0] ist möglich </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { float *arr=(float []){1.1,2.2,3.3}; //Kein Typkonflikt arr[0]=47.11; //Änderung des 'Konstanten' arr[0] ist möglich return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Die geschweiften Klammern <code>{ }</code> sind nicht mit dem Block-Operator (siehe [[Programmieren in C/C++: Grundlagen#Block / Compound-Statement | Block / Compound-Statement]]) zu verwechseln. Werden die geschweiften Klammern bei der Initialisierung von Variablen genutzt, dann beschreibt der Inhalt der geschweiften Klammern eine Initialisierungsliste. Wird diesen ein Datentyp vorangestellt, dann wird hiermit eine Compound Literal definiert. == Variableninitialisierung == Mit der Definition einer Variable kann diese optional initialisiert werden. Der tatsächliche Zeitpunkt der Variableninitialisierung (zur Laufzeit oder zur Compilezeit) und damit die Ausführung der Initialisierung (Maschinensprachebefehle oder Speichervorbelegung) hängt von der Gültigkeit/Sichtbarkeit der Variablen ab (siehe [[Programmieren in C/C++: Grundlagen#Gültigkeit/Sichtbarkeit von Variablen| Gültigkeit/Sichtbarkeit von Variablen]]). === Globale + Static lokale Variablen === Globale und statisch globale Variablen werden in einem während der Laufzeit des Programms festen Speicherbereich gehalten. Zum Startzeitpunkt des Programms ist der Speicherplatz solch einer Variable mit dem Initialisierungswert gefüllt, so das bei erstmaliger Nutzung dieser Variablen diese ihre Initialisierungswerte enthalten. Die Belegung des Speicherplatzes erfolgt durch den Compiler, so dass als Initialisierungswerte / Inhalt der Initialisierungsliste nur Konstanten oder Konstanten-Ausdrücke (siehe [[Programmieren in C/C++: Grundlagen#Literale/Konstanten | Literale/Konstanten]]) erlaubt sind: <syntaxhighlight lang="C"> int g=1; //Speicherstelle der Variable g wird //mit 1 belegt short array[3]={1,1+1, sin(0.0)}; //Speicherstellen des Arrays wird //mit 1, 2 und 0 belegt werden </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> double sin(double); //DJ: Include-Anweisung in wikibooks schlägt fehlt int g=1; //Speicherstelle der Variable g wird //mit 1 belegt short array[3]={1,1+1, sin(0.0)}; //Speicherstellen des Arrays wird //mit 1, 2 und 0 belegt werden int main(int argc,char *argv[]) { printf("%hd %hd %hd\n",array[0],array[1],array[2]); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Nicht initialisierte globale und static lokale Variablen werden mit 0 initialisiert! D.h. die Speicherstellen dieser Variablen werden mit dem Wert 0 vorbelegt: <syntaxhighlight lang="C"> int f; //f hat den Wert 0 double arr[10]; //Alle Elemente von arr werden mit 0.0 initialisiert! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int f; //f hat den Wert 0 double arr[10]; //Alle Elemente von arr werden mit 0.0 initialisiert! int main(int argc,char *argv[]) { printf("f=%d\n",f); printf("%f %f %f\n",arr[0],arr[1],arr[2]); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Lokale Variable === Der Speicherplatz für lokale Variable wird auf dem Stack zur Verfügung gestellt. Bei jeder Ausführung der Definition wird Speicher vom Stack nach dem {{w|Last In – First Out|LIFO Prinzip}} reserviert und im Anschluss Maschinencode zur Initialisierung der Speicherstellen ausgeführt (sofern Variable einen Initialisierungswert hat). Zum besseren Verständnis kann man sich die Variableninitialisierung als zwei Anweisungen vorstellen: a) der Definition der Variablen und b) der Zuweisung des Initialisierungswerter zur Variablen: <syntaxhighlight lang="C"> int var=sin(b); //entspricht int var; //a)Variablendefinition/Speicherplatzreservierung var=sin(b); //b) Initialisierung über separate Zuweisungs-Operation //d.h. es werden Maschinensprachebefehle erzeugt, welche //den Inhalt der Variablen b holt, anschließend die sin() //Funktion aufruft und dessen Rückgabewert der Variablen //var zuweist. </syntaxhighlight> Folglich können die Initialisierungswerte/Inhalte der Initialisierungsliste aus beliebigen Ausdrücken stehen und müssen keine Konstanten oder Konstanten Ausdrücke sein: <syntaxhighlight lang="C"> void foo(float f,float g) { float summe=f+g; float arr[3] = {f+f,g-f,sin(f)}; //Initialisierungswerte //werden zur Laufzeit berechnet } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> float sinf(float); //DJ Include von math.h in Wikibooks schlägt fehlt void foo(float f,float g) { float summe=f+g; float arr[3] = {f+f,g-f,sinf(f)}; //Initialisierungswerte //wwerden ird zur Laufzeit berechnet printf("%f\n",summe); printf("%f %f %f\n",arr[0],arr[1],arr[2]); } int main(int argc,char *argv[]) { foo(3,4); return 0; } | execCompilerOptions=-Wall -lm| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Aufgrund der Ausführung von Maschinencode bedingt die Initialisierung Rechenzeit.<br /> Wird eine Variableninitialisierung mit einer switch oder goto Anweisung übersprungen, so wird zwar die Variable angelegt (Speicherplatz reserviert), jedoch die Maschinenbefehle zur Initialisierung dieser Variablen nicht ausgeführt (siehe auch [[Programmieren in C/C++: Grundlagen# Switch-Anweisung|Switch-Anweisung]] und [[Programmieren in C/C++: Grundlagen# Label + Goto|Label + Goto]]). Die Variable enthält dann einen Zufallswert: <syntaxhighlight lang="C"> switch(value) { case 0: int lok=7; printf("%d",lok); //OK, lok beinhaltet den Wert 7 break; default: printf("%d",lok); //KO, Variable lok vorhanden, //aber nicht initialisiert. D.h. Ausgabe einer break; //Zufallszahl } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void foo(int value) { switch(value) { case 0: int lok=7; printf("%d\n",lok); //OK, lok beinhaltet den Wert 7 break; default: printf("%d\n",lok); //KO, Variable lok vorhanden, //aber nicht initialisiert. D.h. Ausgabe einer break; //Zufallszahl } } void far(void) { int var1=4711; int var2=1799; printf("Marke: %d, Erscheinungsjahr: %d\n",var1,var2); } int main(int argc,char *argv[]) { foo(2); //Zufallswert (0, da Stack mit 0 initialisiert ist) foo(0); //Initialisierungswert far(); //Stack belegen foo(2); //Zufallswert return 0; } | execCompilerOptions=| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Nicht initialisierte lokale Variablen werden nicht initialisiert, d.h. keine zusätzlichen Maschinenbefehle zum Initialisieren erzeugt. Der Variablenwert entspricht dann einem 'Zufallswert' oder korrekter gesagt dem Inhalt der Variablen, welcher zuvor der Speicherstelle zugewiesen war: <syntaxhighlight lang="C"> int foo(void) { int var_foo; //Variable var_foo bekommt den identischen return var_foo; //Speicherbereich wie var_far zugwiesen } int far(void) { int var_far=7; return var_far; } printf("%d\n",foo()); //Zufallswert (0, da Stack mit 0 initialisiert ist) printf("%d\n",far()); //Stack belegen printf("%d\n",foo()); //Zufallswert (7, da Speicherstelle zuvor mit 7 belegt wurde </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int foo(void) { int var_foo; //Variable var_foo bekommt den identischen return var_foo; //Speicherbereich wie var_far zugwiesen } int far(void) { int var_far=7; return var_far; } int main(int argc, char *argv[]) { printf("%d\n",foo()); //Zufallswert (0, da Stack mit 0 initialisiert ist) printf("%d\n",far()); //Stack belegen printf("%d\n",foo()); //Zufallswert (7, da Speicherstelle zuvor mit 7 return 0; //belegt wurde } | execCompilerOptions=| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Bei erstmaligem Funktionsaufruf kann eine nicht initialisierten Variablen den Wert 0 beinhalten (Stackframe wird mit Programmstart auf 0 gesetzt). Beim nächsten Aufruf der Funktion ist zumeist die Speicherstelle der lokalen Variablen mit anderen Werten gefüllt worden, so dass nun ein anderer 'Zufallswert' als 'Initialisierungswert' enthalten ist. === C++ === In C++ ist ergänzend die Initialisierung einer Variablen über () möglich. Bei Objekten wird hierüber der zugehörige Konstruktor aufgerufen. Bei primitiven Datentypen entspricht der Wert in den Klammern dem Initialisierungswert: <syntaxhighlight lang="C++"> int variable(10); //Bei primitiven Datentype entspricht dies //int variable=10; struct test { int a; test(int par) {a=par;} //Konstruktor der Struktur test }; struct test test(4); //Konstruktor test(int par) wird aufgerufen struct test test(4,5); //KO, kein passender Konstruktor vorhanden </syntaxhighlight> === Sonstiges === Folgende weitere Sachverhalten gilt es bzgl. Variableninitialisierung zu berücksichtigen: * Nach C-Spezifikation ist eine Initialisierung von Variablen nicht notwendig. Es liegt folglich kein Fehler vor, wenn auf eine nicht initialisierte Variable lesend zugegriffen wird. Ungeachtet der C-Spezifikation überprüft der Compiler mit dem Schalter '-Wall' diesen Sachverhalt und gibt eine Warning aus. * Deklarationen/Prototypen können keinen Initialisierungswert enthalten <syntaxhighlight lang="C++"> extern int var=7; //Fehlerhaft </syntaxhighlight> * Const und lokale Static Variablen sollten initialisiert werden, auch wenn C in diesem Fall keinen Fehler meldet! <syntaxhighlight lang="C++"> const int konstante; //Syntaktisch OK, Initialisierungswert fraglich! static int statisch; </syntaxhighlight> == Anweisung (Statement) & Expression == Eine Anweisung (Statement) stellt entsprechend dem Wikipedia Artikel {{w|Anweisung_(Programmierung) | Anweisung}} ''"ein in der Syntax einer Programmiersprache formulierte einzelne Vorschrift dar, die im Rahmen der Abarbeitung des Programms auszuführen ist"''. Entsprechend der C-Spezifikation [C11 6.8] kann eine Anweisung aus: : labled-statement: Eine Sprungmarke für die Switch- und die Goto-Anweisung : compound-statement: siehe nachfolgendes Kapitel : expression-statement: siehe nachfolgendes Kapitel : selection-statement: Eine if() oder switch() Anweisung : iteration-statement: Eine while(), do while() oder eine for() Anweisung : jump-statement: Eine goto, break, continue oder return Anweisung Die einzelnen Statements können dabei aus weiteren Statements bestehen. === Ausdruck (Expression) === Entsprechend der C-Spezifikation [C11 6.5] ist ein Ausdruck eine Folge von Operatoren und Operanden, die die Berechnung eines Werts angibt, ein Objekt oder eine Funktion bezeichnet, Nebenwirkungen erzeugt oder eine Kombination davon ausführt. Die Wertberechnungen der Operanden eines Operators werden vor der Wertberechnung des Ergebnisses des Operators sequenziert (siehe auch {{w|lang=en|Expression_(computer_science)|Expression}}). Beispiele: <syntaxhighlight lang="C"> a=sqrt(a*a+b*b); //Ausdruck mit Nebenwirkungen int func(int par) { a++; return par*2;} b=func(1)*func(2); //Ausdruck mit undefinierten Verhalten a=++a + 1; a=for(lauf=10;lauf>0;lauf--); //for-Anweisung ist kein Ausdruck //d.h. liefert keinen Wert zurück </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> double sqrt(double); //DJ: Include-Anweisung in wikibooks schlägt fehlt int a=0; int func(int par) { a++; return par*2; } int main(int argc,char *argv[]) { int a=4,b=7; a=sqrt(a*a+b*b); //Ausdruck mit Nebenwirkungen b=func(1)*func(2); //Globale Variable a wird geändert! //Ausdruck mit undefinierten Verhalten a=++a + 1; //Kein Ausdruck a=for(lauf=10;lauf>0;lauf--); //for-Anweisung ist kein Ausdruck //d.h. liefert keinen Wert zurück return 0; } | execCompilerOptions=-Wall -lm| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Discarded Value === Discarded Value sind Ausdrücke, dessen Ergebnisse nicht verwendet werden (also keiner Variablen zugewiesen werden). Ergebnisse von Ausdrücken, die nicht verwendet werden, führen nicht zu einer Fehlermeldung: <syntaxhighlight lang="C"> int a=7; a; //Variable a wird gelesen, der Wert jedoch verworfen 7; //Konstante wird verworfen a+7; //Ergebnis wird Berechnet und verworfen printf("hallo"); //Printf hat einen Rückgabewert, dessen Wert verworfen wird </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=7; a; //Variable a wird gelesen, der Wert jedoch verworfen 7; //Konstante wird verworfen a+7; //Ergebnis wird Berechnet und verworfen printf("hallo"); //Printf hat einen Rückgabewert, dessen Wert verworfen wird return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * Soll bewusst der Rückgabewert verworfen werden, so kann/sollte mit dem explizten Cast auf (void) der Rückgabewert explizit 'verworfen' werden. Dies ist u.A. hilfreich bei Variablen, die (noch) nicht benutzt werden und der Compiler die Warning "unused Variable" ausgibt: :<syntaxhighlight lang="C"> (void)a; //Zur Vermeidung von Compiler-Warnings "Unused Variable" (void)(a+7); //hier eine explizte 'Ansage' der Verwerfung des Wertes (void)func(); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int func(void) { return 4711; } int main(int argc,char *argv[]) { int a; (void)a; //Zur Vermeidung von Compiler-Warnings "Unsued Variable" (void)(a+7); //hier eine explizte 'Ansage' der Verwerfung des Wertes (void)func(); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Mit der Anweisung <nowiki>[[nodiscard]]</nowiki> (ab C++17, ab C23) wird der Compiler angewiesen, dass der Aufrufer einer Funktion mit Rückgabewert der Rückgabewert entgegenzunehmen ist. Wird der Rückgabewert verworfen, so gibt der Compiler eine Fehlermeldung aus: :<syntaxhighlight lang="C"> [[nodiscard]] int Client(int socket); Client(5); ////Fehlermeldung, da Rückgabewert nicht verwendet wird </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> [[nodiscard]] int Client(int socket) { return socket+1; } int Server(int socket) { return socket+1; } int main(int argc,char *argv[]) { Server(5); //keine Fehlermeldung Client(5); //Fehlermeldung, da Rückgabewert nicht verwendet wird return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Java kennt Dicarded Values nicht. Ausnahme, es handelt sich um einen Funktionsaufruf, dessen Rückgabewert nicht genutzt wird. === Sequence Point === Ein Sequenzpunkt (u.A. das abschließende Semikolon am Ende der Anweisung) ist nach dem Wikipedia Artikel {{w|lang=en|Sequence_point|Sequence Point}} definiert als der Punkt in der Ausführung eines Computerprogramms, an dem garantiert ist, dass alle Nebenwirkungen früherer Bewertungen durchgeführt wurden und noch keine Nebenwirkungen von nachfolgenden Bewertungen durchgeführt wurden.<br /> Sequenzpunkte sind beispielsweise dann von Interesse, wenn dieselbe Variable innerhalb eines einzelnen Ausdrucks mehr als einmal geändert wird und die Ausführungsreihenfolge der Operationen nicht sauber spezifiziert ist.<br /> Ein oft zitiertes Beispiel ist der C-Ausdruck 'i=i++;'. Der Sequence Point garantiert, dass alle Operationen (hier Zuweisung und Postinkrement) ausgeführt sind. Jedoch ist die Ausführungsreihenfolge dieser beiden Operationen nicht spezifiziert. In Abhängigkeit des Zeitpunktes der Ausführung des Postinkrementes (vor oder nach der Zuweisung) kann i unterschiedliche Werte annehmen. In C und C++ führt die Auswertung eines solchen Ausdrucks zu undefiniertem Verhalten. Andere Sprachen, wie z. B. C#, definieren den Vorrang des Zuweisungs- und des Inkrementoperators so, dass das Ergebnis des Ausdrucks i=i++ garantiert ist.<br/> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int i=5; i=i++; printf("%d",i); //Gerne anderen Compiler auswählen, z.B. x86-64 icc... return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Weitere Sequence Points: * Beim ?-Operator stellt sowohl das ? als auch der : ein Sequenz Point dar. Zunächst muss der linke Ausdruck vollständig bearbeitet werden, bevor einer der beiden Bedingungen bearbeitet wird * Bei der logischen UND / ODER Funktion stellen der Operator ein Sequenz Point dar. Erst wird der linke Operand vollständig ausgeführt und ausgewertet, bevor (ggf.) der rechte Operand ausgewertet wird (siehe [[Programmieren in C/C++: Grundlagen#Logische Verknüpfungen | Logische Verknüpfungen]]) * Beim Komma-Operator stellen der Komma ein Sequence-Point dar (siehe [[Programmieren in C/C++: Grundlagen#Komma-Operator | Komma-Operator]]) • und weitere (siehe Appendix der C-Spec) Operationen, bei denen die Ausführungsreihenfolge nicht spezifiziert ist: * Bei Funktionsaufrufen ist die Abarbeitungsreihenfolge der Parameter nicht spezifiziert, so dass bspw.: :<syntaxhighlight lang="C"> //Aufrufruf einer Funktion, deren Parameter sich aus Funktionsaufrufen //ergeben (*pf[f1()]) (f2(), f3() + f4()); //pf -> Array von Funktionszeigern //Die Funktionen f1,f2,f3 und f4 können in einer beliebigen Reihenfolge //aufgerufen werden </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int f1(void) { printf("f1 called\n"); return 1; } int f2(void) { printf("f2 called\n"); return 2; } int f3(void) { printf("f3 called\n"); return 3; } int f4(void) { printf("f4 called\n"); return 4; } void func1(int par1,int par2) { printf("func1(%d,%d) called\n",par1,par2); } void func2(int par1,int par2) { printf("func2(%d,%d) called\n",par1,par2); } int main(int argc,char *argv[]) { void (*pf[2])(int,int)={func1,func2}; //Aufrufruf einer Funktion, deren Parameter sich aus Funktionsaufrufen //ergeben (*pf[f1()]) (f2(), f3() + f4()); //pf -> Array von Funktionszeigern //Die Funktionen f1,f2,f3 und f4 können in einer beliebigen Reihenfolge //aufgerufen werden //Gerne anderen Compiler auswählen, z.B. x86-64 icc... return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Per Postinkrement/-dekrement Operator sagt aus, dass für die eigentliche Operation der Wert der Variablen genutzt wird und im Anschluss die Variable erhöht / erniedrigt werden soll. Nach C-Spezifikation [C11 6.5.2.4] muss dies spätestens vor dem nächsten Sequence Point erfolgt sein. Der genaue Zeitpunkt innerhalb des Sequence Points ist jedoch nicht vorgegeben: :<syntaxhighlight lang="C"> int a=7; int b=a++ + a; //Ergebnis Abhängig, ob das Postinkrement vor der Addition //oder als letztes ausgeführt wird. a=a++ + 1; //dito </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=7; int b=a++ + a; //Ergebnis Abhängig, ob das Postinkrement vor der Addition //oder als letztes ausgeführt wird. a=a++ + 1; //dito printf("a=%d b=%d\n",a,b); //Gerne anderen Compiler auswählen, z.B. x86-64 icc... return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Block / Compound-Statement === Ein Block oder Compound-Statement fasst Vereinbarungen und Anweisungen zu 'einer' Anweisung/Statement zusammen. Es kann überall dort eingesetzt werden, wo nur eine Anweisung erlaubt ist. <code> Syntax: {Declaration-or-statement-list/textsuperscript<sub>OPT</sub>} </code> Ein Block wird nicht wie bei einer Anweisung mit einem Semikolon abgeschlossen (Das angehängte Semikolon wäre dann eine separate leere Anweisung!). <br /> Ein Block hat blockweite Sichtbarkeit (siehe [[Programmieren in C/C++: Grundlagen#Blockweite Sichtbarkeit | Blockweite Sichtbarkeit]]), so dass hier definierte Variablen nur hier gültig sind. Deklarationen sind ebenfalls nur in dem Block gültig. <syntaxhighlight lang="C"> for(..) Anweisung; //For-Schleife führt nur diese eine Anweisung aus for(…) {Block} //For-Schleife führt Block (als eine Anweisung) aus if(..) Anweisung; else Anweisung; //IF-Anweisung führt nur 'eine' //Anweisung aus if(..) {Block} else {Block} //IF-Anweisung führt Block aus if( ) {Block}; else {Block}; //Semikolon ist eine separate //Leer-Anweisung, so dass else //nicht zur IF-Anweisung zugeordnet //werden kann (2 Anweisungen vor Else) void foo(void) { int var1; { //Block innerhalb von Block als Strukturierungswerkzeug int var2; struct xyz{int x,y,z}; //Defintion eines Datentyps im Block struct xyz var3; } struct xyz var4; //KO, Datentyp hier nicht mehr bekannt } </syntaxhighlight> Die GNU-C Reference (nicht C++) erlaubt es, Funktionen innerhalb von Blöcken (und damit auch innerhalb von Funktionen) zu definieren. Diese innere Funktion steht dann nur in diesem Block zur Verfügung und kann ergänzend auf Variablen des umgebenden Blockes zugreifen: <syntaxhighlight lang="C"> void foo(void) { { int label=1; //Funktion innerhalb einer Funktion void dummy(void){ label++; //Zugriff auf Variablen des umschließenden Blockes } dummy(); //Aufruf der nur in diesem Block gültigen Funktion } dummy(); //KO, Funktion hier nicht mehr gültig } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void foo(void) { { int label=1; //Funktion innerhalb einer Funktion void dummy(void){ label++; //Zugriff auf Variablen des umschließenden Blockes } dummy(); //Aufruf der nur in diesem Block gültigen Funktion } dummy(); //KO, Funktion hier nicht mehr gültig } int main(int argc,char *argv[]) { foo(); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * '''Blöcke können/sollten als Strukturierungswerk genutzt werden. Dem Leser von Source Code kann auf dieser Weise vermittelt werden, dass diese Anweisungen 'zusammen' zu lesen sind.''' * Im Gegensatz zu Java, in welchem innerhalb eines Blockes kein Variablenname genutzt werden darf, die außerhalb des Blockes existiert, ist dies in C erlaubt. Die äußere Variable steht damit innerhalb des Blockes nicht mehr im Zugriff. :<syntaxhighlight lang="C"> int a=3; int main(void){ int a=7; //Globale Variable ist ab hier nicht mehr sichtbar/zugreifbar { int a=9; //Innere Variable überdeckt äußere Variable } } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int a=3; int main(int argc,char *argv[]) { printf("a=%d\n",a); int a=7; //Globale Variable ist ab hier nicht mehr sichtbar/zugreifbar printf("a=%d\n",a); { int a=9; //Innere Variable überdeckt äußere Variable printf("a=%d\n",a); } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Embedded Statement === Embedded Statements sind eine GNU-C Erweiterung (siehe [https://www.gnu.org/software/gnu-c-manual/gnu-c-manual.html GNU-C-Manual 3.18]). Da sie vom Autor als sehr nützlich angesehen wird und auch von diversen Compilern und auch in C++ unterstützt wird, wird diese hier beschrieben. Ein Block fasst mehrere Anweisungen zu einer Anweisung zusammen, hat jedoch kein Rückgabewert. Ein Embedded-Statement entspricht einem Block mit der Ergänzung, dass dieser einen Rückgabewert hat, so dass ein Embedded-Statement überall dort eingesetzt werden kann, wo eine Expression erwartet wird. <code> Syntax: ({Declaration-or-statement-list<sub>OPT</sub>}) </code> Der Rückgabewert wird nicht über eine return-Anweisung angegeben, sondern entstammt aus der letzten Anweisung innerhalb der Liste: <syntaxhighlight lang="C"> int var; var={int par=7;} //KO Block hat keine Rückgabewert. var=({int par=7; par++; par;}); //OK Embedded-Statement hat einen //Rückgabewert, der sich aus der //letzten Anweisung 'Par;' ergibt //Hier 8. </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int var; var={int par=7;} //KO Block hat keine Rückgabewert. var=({int par=7; par++; par;}); //OK Embedded-Statement hat einen //Rückgabewert, der sich aus der //letzten Anweisung 'Par;' ergibt //Hier 8. printf("var=%d\n",var); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Ein Embedded-Statement ähnelt folglich einem Funktionsaufruf mit dem Unterschied, dass a) in der Tat kein Funktionsaufruf stattfindet und b) der Rückgabewert nicht mit return, sondern über die letzte Anweisung zurückgegeben wird. Der Anwendungsfall ist dort zu finden, wo eine Expression erwartet wird und mehrere Anweisungen zum Ermitteln der Expression notwendig sind: <syntaxhighlight lang="C"> int var1=8; int b=({int d=var1++;d>10?10:d;}); if( ({int d=b;b=var1;b=d;}) > 1) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int var1=8; int b=({int d=var1++;d>10?10:d;}); if( ({int d=b;b=var1;b=d;}) > 1) printf("Bedingung erfüllt"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * Ein Embedded-Statement ist insbesondere bei Nutzung von Makros (siehe Kap [[Programmieren in C/C++: Präprozessor | Präprozessor]]) hilfreich * Mittels eines Embedded-Statement kann eine anonyme Funktion/Lambdafunktion dargestellt werden: <syntaxhighlight lang="C"> void test(int (*fptr)(int),int arr[10]) { for(int lauf=0;lauf<10;lauf++) arr[lauf]=fptr(arr[lauf]); } int main(int argc, char *argv[]) { int arr[]={1,2,3,4,5,6,7,8,9,10}; //Aufruf mit einer anonymen Funktion test( ({int func(int a) {return a%2?a:0;} ; func;}) ,arr); } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void test(int (*fptr)(int),int arr[10]) { for(int lauf=0;lauf<10;lauf++) arr[lauf]=fptr(arr[lauf]); } int main(int argc, char *argv[]) { int arr[]={1,2,3,4,5,6,7,8,9,10}; //Aufruf mit einer anonymen Funktion test( ({int func(int a) {printf("Called:%d\n",a);return a%2?a:0;} ; func;}) ,arr); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Funktionen / Prozeduren == Funktionen/Prozeduren sind ein Strukturierungsmerkmal, so dass Teile der Funktionalität des Programmes wiederverwendbar sind. C/C++ unterscheidet nicht zwischen Funktionen (haben einen Rückgabewert, können damit in Ausdrücken verwendet werden) und Prozeduren (haben keine Rückgabewert, resp. Rückgabetyp void).<br/> Mit jedem Aufruf einer Funktion wird für den zugehörigen Block ein eigener Stack-Kontext angelegt, so dass Funktionen sich selbst aufrufen können (Rekursion). Jeder Funktionsinstanz hat somit seinen eigenen lokalen Variablenbereich, teilen sich jedoch die globalen und die statisch lokalen Variablen.<br /> Mit dem Aufruf einer Funktion können Parameter übergeben werden, wobei die Übergabeparameter vom Aufrufer (Caller) durch den Aufruf in die lokalen Variablen des Aufgerufenen (Callee) kopiert/zugewiesen werden (Call by Value). Wird ein Zeiger übergeben, hat der Callee über die Dereferenzierung des Zeigers die Möglichkeit, die Variablen des Caller zu verändern (Call by Reference) (siehe Kap. [[Programmieren in C/C++: Zeiger #Zeiger bei Funktionsaufrufen | Zeiger:Zeiger bei Funktionsaufrufen).]]). Hinweise: * Die Klammerung hinter dem Funktionsnamen (<code>foo()</code>) zeigt an, dass es sich um einen Funktionsaufruf (Verzweigung der Programmausführung zu der Startadresse der Funktion) handelt :<syntaxhighlight lang="C"> void foo(void) {printf("foo called");}; foo(); //Klammern hinter dem Funktionsnamen bedeuten Aufruf der Funktion </syntaxhighlight> * Die Nutzung des Funktionsnamens ohne Klammerung (<code>foo</code>) gibt die Startadresse der Funktion zurück. Die Startadresse kann in einem Zeiger auf Funktionen gespeichert werden (siehe Kap. [[Programmieren in C/C++: Zeiger#Zeiger auf Funktionen | Zeiger:Zeiger auf Funktionen]]). :<syntaxhighlight lang="C"> void foo(void) {printf("foo called");}; void (*fptr)(void)=foo; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void foo(void) { printf("foo called"); }; int main(int argc, char *argv[]) { void (*fptr)(void)=foo; fptr(); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Deklaration/Definition vor dem ersten Aufruf der Funktion 'notwendig', damit Compiler die Übergabeparameter entsprechend bereitstellt und ggf. eine implizite Typkonvertierung durchführt (dito Rückgabewert). Die Angabe der Variablennamen können bei der Deklaration entfallen * Die fehlende Angabe der Übergabeparameter bedeutet in C (nicht C++), dass diese Funktion mit beliebigen Übergabeparametern aufgerufen werden kann und der Compiler keine Typprüfung durchführt: :<syntaxhighlight lang="C"> int func() {...} //kann wie folgt aufgerufen werden func(); func(4); func("hallo Welt",4.7); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void func() { printf("foo called\n"); }; int main(int argc, char *argv[]) { func(); func(4); func("hallo Welt",4.7); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} :→ unbedingt vermeiden<br /> :Hat die Funktion keinen Übergabewert, so wird dies in C mit void gekennzeichnet * In C++ bedeutet die Schreibweise ohne Datentypbeschreibung, dass keine Parameter erwartet werden * In der Parameterliste von Funktionen dient in der GNU-C Spezifikation das Semikolon zum Trennen zwischen Deklaration von Übergabeparameter und den Übergabeparametern. Alle Übergabewerte links vom Semikolon sind (Forward)deklarationen: :<syntaxhighlight lang="C"> void test1(int a; int b,int a) { // Forward; Parameter printf("a=%d b=%d\n",a,b); } //Aufruf test1(3,7); //a=7 b=3 //Sinnvoll im Umgang mit Variable Length Arrays void test2(int dim; const char str[dim], int dim); //Aufruf test2("hallo",6); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void test1(int a; int b,int a) { // Forward; Parameter printf("a=%d b=%d\n",a,b); } //Sinnvoll im Umgang mit Variable Length Arrays void test2(int dim; const char str[dim], int dim) { printf("dim=%d\n",dim); } int main(int argc, char *argv[]) { //Aufrufe test1(3,7); //a=7 b=3 test2("hallo",6); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Return-Anweisung === Mit der Return-Anweisung wird eine Funktion (vorzeitig) beendet. Der optionale Parameter dient der Angabe des Rückgabewertes der Funktion an den Aufrufer. Der Datentyp des Parameters ergibt sich aus dem Rückgabedatentyp der Funktion. <code> Syntax: return expression<sub>OPT</sub> </code> Der Rückgabewert expresion sagt aus, dass hier nicht nur Konstanten oder Variablen stehen können, sondern beliebige Ausdrücke erlaubt sind. Der resultierende Datentyp des Ausdruckes muss letztendlich dem Rückgabedatentyp der Funktion entsprechen: <syntaxhighlight lang="C"> int foo(double a, double b) { return (int)(a*a+b*b); } </syntaxhighlight> Hinweise: * Bei nicht void-Funktionen ist eine return-Anweisung mit einer Expression entsprechend dem Datentyp der Funktion zwingend notwendig: :<syntaxhighlight lang="C"> int func(void) { return 5.1; //Datentyp wird zuvor int konvertiert } double a=func(); //int wird in double konvertiert </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int func(void) { return 5.1; //Datentyp wird zuvor int konvertiert } int main(int argc, char *argv[]) { double a=func(); //int wird in double konvertiert printf("a=%f\n",a); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Bei einer void-Funktion ist die return-Anweisung ohne Expression optional. Hier entspricht der schließende Block der Return-Anweisung :<syntaxhighlight lang="C"> void func(char *str) { if(str==NULL) return; printf("%s",str); } </syntaxhighlight> Sollen mehr als ein Rückgabewert an den Aufrufer zurückgegeben werden so empfiehlt sich: * die Rückgabewerte in einer Struktur zu packen (siehe [[Programmieren in C/C++: Datentypen#Verbundtyp Struktur/Klasse (nur C++) |Datentypen:Verbundtyp Struktur/Klasse (nur C++)]]) * die Rückgabewerte über die Aufrufparameter als Call-by-Reference zu übergeben (siehe [[Programmieren in C/C++: Zeiger#Zeiger bei Funktionsaufrufen | Zeiger:Zeiger bei Funktionsaufrufen]]) ==== Rückgabewert aus Datentypsicht ==== Aus Datentypsicht kann der Funktionsname inkl. den Parameter(n) in einem Ausdruck mit dem Datentyp des Rückgabewertes der Funktion ausgetauscht werden: <syntaxhighlight lang="C"> int foo(void) {return 4711;} int var; var=1+foo(); //Aus Datentypsicht (int)=(int)+(int) </syntaxhighlight> Daraus ergibt sich, dass bei Arrays/Strukturen/Unions direkt auf einzelne Komponenten zugegriffen werden kann, ohne diese zuvor einer Variablen zuzuweisen: <syntaxhighlight lang="C"> struct xyz{int x,y,z;}; struct xyz foo(int par) { struct xyz var; var.x=var.y=var.z=par; return var; } if(foo(12).x == 12) printf("Identisch\n"); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct xyz{int x,y,z;}; struct xyz foo(int par) { struct xyz var; var.x=var.y=var.z=par; return var; } int main(int argc, char *argv[]) { if(foo(12).x == 12) printf("Identisch\n"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} ==== Fehlerrückgabe ==== Viele Funktionen können unter gewissen Umständen nicht korrekt ausgeführt werden. Z.B. aufgrund dessen, dass: * der benötigter Speicher vom Heap nicht bereitgestellt werden kann * Übergabeparameter außerhalb des zulässigen Bereiches liegen * angeforderte Ressource (Datei, Geräte, …) nicht vorhanden/verfügbar sind Solche Fälle gilt es dem Aufrufer mitzuteilen, da in diesen Fällen die vom Aufrufer geforderte Funktionalität nicht erfüllt ist und der Aufrufer ggf. nicht weiterarbeiten kann. Zur Mitteilung des Fehlers sollte vorrangig der Rückgabewerte genutzt werden. (auch wenn in C++ mit Exception eine Alternative hierzu bereitsteht) <syntaxhighlight lang="C"> char *strdup(char *src) { char *dst; if((dst=malloc(strlen(src)+1))==NULL) return NULL; strcpy(dst,src); return dst; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> #include <string.h> char *strdup1(char *src) { char *dst; if((dst=malloc(strlen(src)+1))==NULL) return NULL; strcpy(dst,src); return dst; } int main(int argc, char *argv[]) { char *dup=strdup1("hallo"); if(dup == NULL) printf("Fehler\n"); else printf("dup='%s'\n",dup); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Die Standard-C Library-Funktionen geben in diesem Fall zumeist ein -1 (Rückgabewert Ganzzahl) oder einen NULL-Zeiger (Rückgabewert Zeiger) zurück. Der genaue Fehlergrund ist dann ergänzend in der globalen Variablen errno gespeichert. Mittels der Standard-C Funktion strerror() kann die Zahl in einen für den Anwender/Programmierer lesbaren String umgewandelt werden (die GNU-C Library Funktion printf() bietet ergänzend den Conversion Spezifier %m als alternative Ausgabemöglichkeit an): <syntaxhighlight lang="C"> #include <errno.h> int var; if(-1==scanf("%d",&var) ) printf("Es wurde keine Zahl erkannt\n"); int ret=open("/etc/ptmp",O_WRONLY|O_CREAT|O_EXCL, S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH); if(-1==ret) printf("open failed() with %s\n",strerror(errno)); if(-1==ret) printf("open failed() with %m (nur glibc)\n"); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <fcntl.h> #include <string.h> #include <errno.h> int main(int argc, char *argv[]) { int var; if(-1==scanf("%d",&var) ) printf("Es wurde keine Zahl erkannt\n"); int ret=open("/etc/ptmp",O_WRONLY{{!}}O_CREAT{{!}}O_EXCL, S_IRUSR{{!}}S_IWUSR{{!}}S_IRGRP{{!}}S_IROTH); if(-1==ret) printf("open failed() with %s\n",strerror(errno)); if(-1==ret) printf("open failed() with %m (nur glibc)\n"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} '''Für eine sauber Programmierung sollte diese Methodik generell angewendet werden.''' Jede Funktion, welche Fehlschlagen kann, teilt dies per Rückgabewert dem Aufrufer mit. Der Rückgabewert einer jeden Funktion wird vom Aufrufer kontrolliert. === Main-Funktion === Mit Start der Anwendung übergibt das Betriebssystem die Kontrolle an die Anwendung und führt dort die Funktion main aus. Als Übergabe- und Rückgabeparameter sind folgende Varianten erlaubt: <syntaxhighlight lang="C"> int main(void) { } int main(int argc, char *argv[]) { } </syntaxhighlight> Mit dem Start der Anwendung kann, wie bei jedem Funktionsaufruf, Parameter an den startenden Prozess übergeben werden. Als Parameter können Strings übergeben werden, welche in Form eines Arrays von Strings übergeben werden. Im Parameter argc sind die Anzahl der Strings enthalten. Im Parameter argv[x] sind die einzelnen Strings enthalten. Sofern vorhanden ist im ersten String der Programmname/Aufrufname der Anwendung enthalten: <syntaxhighlight lang="C"> int main(int argc, char *argv[]) { //Variante 1: Darstellung des Inhaltes des Arrays von Strings for(int lauf=0;lauf < argc; lauf++) printf("%d.Parameter: '%s'\n",lauf,argv[lauf]); //Variante 2: Darstellung des Inhaltes des Arrays von Strings (void)argv; //Wird hier nicht benötigt for(char **str=argv;*str!=NULL;str++) printf("Parameter: '%s'\n",*str); return EXIT_SUCCESS; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int max_width=0; int ret; //Variante 1: Darstellung des Inhaltes des Arrays von Strings for(int lauf=0;lauf < argc; lauf++) { ret=printf("%d.Parameter: '%s'\n",lauf,argv[lauf]); max_width=ret>max_width ? ret : max_width; } //Trennzeichen drucken char term[max_width]; memset(term,'-',max_width); printf("%.*s\n",max_width-1,term); //Variante 2: Darstellung des Inhaltes des Arrays von Strings (void)argv; //Wird hier nicht benötigt for(char **str=argv;*str!=NULL;str++) printf("Parameter: '%s'\n",*str); return EXIT_SUCCESS; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Im Compiler-Explorer können die Parameter im Executor unter 'Execution Arguments', getrennt mit Leerzeichen eingegeben werden. Wird die Funktion main beendet, entweder über die return Anweisung oder den Aufruf der exit() Funktion, wird die Kontrolle zurück an den startenden Prozess (zumeist Shell) gegeben. Über den Rückgabewert wird im Allgemeinen dem Aufrufer der Fehlerstatus mitgeteilt (EXIT_SUCCESS oder 0 bedeutet fehlerfreie , EXIT_FAILURE oder ungleich 0 fehlerhafte Ausführung). Der Start der Anwendung kann als Funktionsaufruf angesehen werden, welchen einen Wert an den Aufrufer zurückliefert. Hinweise: * Der Return-Wert der main-Funktion kann mit >>echo $? in der Bash abgefragt werden * Mittels <code>exit(int status)</code> kann das Programm an jeder Stelle innerhalb des Programms beendet werden. <code>status</code> entspricht dann der expression der return Anweisung von main === Inline Funktion === Wie der Name inline andeutet, ist die Intention von Inline, dass die aufgerufen Funktion Bestandteil der aufrufenden Funktion ist. Die aufgerufene Funktion soll somit im Kontext des Aufrufers ausgeführt werden, so dass kein eigener Stack bereitgestellt werden muss. Der Start der Funktion kann somit schneller erfolgen: <code> inline int foo(void) { } </code> Das Inline erfolgt durch den Compiler (und nicht durch den Linker). Damit das inline funktioniert, muss die zu inlinende Funktion vor dem Aufruf definiert sein, d.h. sie muss in derselben C-Datei enthalten sein [C11 6.7.4]. Hinweis: * Das 'inlinen' von Funktionen über die eigene Objektdatei hinweg erfolgt in C/C++ über Link Time Optimization (LTO). Hierzu fügt der Compiler den Zwischencode mit in die Objektdatei, so dass der Linker das 'inlinen' vollziehen kann (siehe {{w|lang=en|Interprocedural_optimization| Interprocedural Optimization}}) === Variadic Function / Ellipsis Punctuator === Mit dem Ellipsis Puncturator '…' kann in Funktionsdefinitionen angegebenen werden, dass anstatt der … Anweisung, beliebig viele Parameter/Argumente übergeben werden können. Dies wird unter anderen in der printf() Anweisung genutzt: <syntaxhighlight lang="C"> int printf(const char *fmt, ... ); </syntaxhighlight> Die wie folgt aufgerufen werden kann: <syntaxhighlight lang="C"> printf("Hello World"); //es folgt kein Parameter printf("%d",100); //es folgt ein Parameter vom Datentyp int printf("%f",1.1); //es folgt ein Parameter vom Datentyp double printf(conststr,1,2,3,"xyz") //Ohne Worte </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { printf("Hello World\n"); //es folgt kein Parameter printf("%d\n",100); //es folgt ein Parameter vom Datentyp int printf("%f\n",1.1); //es folgt ein Parameter vom Datentyp double const char *conststr="%d %x %c '%s'\n"; printf(conststr,1,2,33,"xyz"); //Ohne Worte return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Der übergebenen Datentype der Parameter wird der aufgerufenen Funktion nicht mitgeteilt! Einzig werden bei Aufruf der variadischen Funktion so viel Bytes auf den Stack gelegt, wie der Datentyp der einzelnen Übergabeparameter groß ist: :<code>int --> 4 Byte</code> :<code>double --> 8 Bytes</code> :<code>Zeiger --> 4/8 Byte</code> Damit die aufgerufene Funktion die fehlende Datentypinformation dennoch mitgeteilt bekommt, muss dies am Beispiel der <code>printf</code> Funktion über den Format-String erfolgen: <syntaxhighlight lang="C"> int vari; printf("%d",vari); //%d erwartet einen Integer Übergabeparameter (4-Byte) size_t vars; printf(" %zu %d ", vars, vari); // %zu zur Mitteilung, dass anstatt //integer nun size_t als Datentyp übergeben wird //und somit anstatt 4 Bytes 8 Bytes vom Stack genommen werden </syntaxhighlight> <code>printf()</code> entnimmt entsprechend der Datentypbeschreibung im Formatstring die passende Anzahl an Bytes vom Stack. Da der Compiler für die optionalen Parameter nicht den Zieldatentyp kennt, erlaubt die C-Spezifikation als Übergabedatentypen hier nur die Grunddatentypen <code>signed int, unsigned int, long, long long, double</code> und <code>Zeiger</code>. Entspricht der übergebene Parameter nicht einen dieser Datentypen, so wird er mittels implizit Cast entsprechend nachfolgender Tabelle gewandelt [C11 6.5.2.2 Default Argument Promotions]: {| class="wikitable" |- ! Ausgangstyp !! Umwandlungstyp |- | char, signed char, short || int |- | unsigned char, unsigned short || unsigned int |- | float || double |- | Alle anderen Datentypen || bleiben erhalten |} Bspw.: <syntaxhighlight lang="C"> signed char varc=-1; float varf =0.1; printf("%d %f",varc, varf); //varc wird beim Aufruf nach int konvertiert! //varf wird beim Aufruf nach double konvertiert! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { signed char varc=-1; float varf =0.1; printf("%d %f",varc, varf); //varc wird beim Aufruf nach int konvertiert! //varf wird beim Aufruf nach double konvertiert! //Zur Darstellung der besagten Konvertierung siehe rechtes Fenster return 0; } | execCompilerOptions=-Wall| h=g }} Öffnen im Compiler Explorer] }} Zum Umgang mit dem variadischen Parameter stellt C die Funktionen <code>va_start(), va_arg(), va_copy()</code> und <code>va_end()</code> bereit. Auf Grundlage des dazugehörigen Datentyps <code>va_list</code> können variadische Parameter auch an Unterfunktionen weitergereicht werden (bspw vprintf()). Dieses Thema bedingt jedoch genaue Kenntnisse vom Umgang mit dem Stack und ist nicht Bestandteil dieser Vorlesung. == Variable Length Array (VLA) == Im Normalfall ergibt sich die Anzahl der Elemente eines Arrays aus einer Konstanten, so dass der Compiler zur Compilezeit passend Speicher reserviert (siehe Kap. [[Programmieren in C/C++: Array | Array]]): <syntaxhighlight lang="C"> int arr[4]; //Compiler reserviert für Variable arr //4*sizeof(int) Speicherplatz </syntaxhighlight> Bei Variable Lenght Array wird die Arraydimension nicht über eine Konstante, sondern über eine Variable oder einen Ausdruck angegeben. D.h. die tatsächliche Dimension des Arrays ergibt sich erst zum Ausführungszeitpunkt der Definition: <syntaxhighlight lang="C"> void foo(size_t n) { int arr[n*2+1]; //Arraydimension ergibt sich zum Ausführungszeitpunkt n++; //Nachträgliches Ändern von n ändert nicht //die Größe des Arrays! } </syntaxhighlight> Ein Variable Length Array kann nur als lokale Variable oder als Übergabeparameter definiert werden (wobei im letzteren Fall kein Speicher hiermit reserviert wird). Eine Initialisierung eines VLA's mit der Definition ist nicht möglich, d.h. nach der Definition beinhaltet das Array 'zufällige' Werte. Es empfiehlt sich daher, diese bspw. mit memset händisch zu initialisieren (siehe auch Kap [[Programmieren in C/C++: Array#Initialisierung | Array:Initialisierung]]): <syntaxhighlight lang="C"> void foo(size_t n) { char str[n]; memset(str,0,n*sizeof(char)); //Array mit 0 füllen </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> void foo(size_t n) { char str[n]; memset(str,0,n*sizeof(char)); //Array mit 0 füllen for(size_t lauf=0;lauf<n;lauf++) printf("str[%zu]=%d\n",lauf,str[lauf]); } int main(int argc, char *argv[]) { foo(4); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Mittels sizeof kann weiterhin der Speicherbedarf ermittelt werden, wobei sizeof mit einem VLA als Argument kein Konstantenausdruck ist. Stattdessen wird die Größe zur Laufzeit ermittelt: <syntaxhighlight lang="C"> void foo(size_t n) { int arr[n*2+1]; //VLA size_t size; size=sizeof(arr); //sizeof(arr) entspricht einem Funktionsaufruf //welcher die Speichergröße des VLA's ermittelt </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void foo(size_t n) { int arr[n*2+1]; //VLA size_t size; size=sizeof(arr); //sizeof(arr) entspricht einem Funktionsaufruf //welcher die Speichergröße des VLA's ermittelt printf("size=%zu\n",size); } int main(int argc, char *argv[]) { foo(5); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} VLA wurden erstmals in C mit C99 eingeführt. In C11 wurden VLA's als optional eingestuft und mit C23 zurück auf notwendig gesetzt. In C++ sind VLA's nicht definiert, werden jedoch vom GCC Compiler unterstützt. Als alternativen Datentyp wird hier std::array empfohlen. Hinweis: * VLA sind nicht direkt in einem Switch-Case Block definierbar. Wird hier ein VLA benötigt, so muss hierzu ein Block erzeugt werden: :<syntaxhighlight lang="C"> switch(value) { case 1: char arr1[value]; //Compilerfehler, da bei value!=1 kein Speicherplatz //für das VLA reserviert wird break; case 2: { char arr2[value]; //OK } break; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int value=argc; switch(value) { case 1: char arr1[value]; //Compilerfehler, da bei value!=1 kein Speicherplatz //für das VLA reserviert wird break; case 2: { char arr2[value]; //OK } break; } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Operatoren == In der Programmiersprache C sind folgende Punctuators [C11 6.4.6] definiert: <syntaxhighlight> [ ] ( ) { } . -> ++ -- & * + - ~ ! / % << >> < > <= >= == != ^ | && || ? : ; ... = *= /= %= += -= <<= >>= &= ^= |= , # ## <: :> <% %> %: %:%: </syntaxhighlight> Die Funktionalitäten sind identisch zu Java. Aufgrund des Datentyps Zeiger gibt es in C ergänzend den Punctuator <code>-></code> (siehe Kap [[Programmieren in C/C++: Datentypen#Verbundtyp Struktur/Klasse (nur C++)|Datentypen:Verbundtyp Struktur/Klasse (nur C++)]]). Der Präprozessor bedingt die beiden Punctuatoren <code>#</code> und <code>##</code> (siehe Kap [[Programmieren in C/C++: Präprozessor | Präprozessor]]). Die letzten 6 Punctuators <code><: :> <% %> %: %:%:</code> werden zu <code>[ ] { } # ##</code> ersetzt. Sie sind für Computersysteme gedacht, welche keine ALTGR-Taste besitzen.<br /> Java kennt ergänzend den <code>>>></code> Operatoren, welcher in C über den normalen Schiebebefehl und den zugrundeliegenden Datentyp gesteuert wird. Wie in Java sind einige Punctuators vom Kontext abhängig und haben damit unterschiedliche Funktionalitäten: <syntaxhighlight> ++ → (Postfix) ++ vs. ++(Präfix) -- → (Postfix) -- vs. --(Präfix) +/- → Vorzeichen vs. Addition/Subtraktion () → Funktionsaufruf() vs. Befehlsbestandteil if() vs. Priorisierung </syntaxhighlight> Für den Umgang mit dem Datentyp Zeiger besitzen einige Punctuatoren ergänzende Funktionalitäten (siehe Kap [[Programmieren in C/C++: Zeiger| Zeiger]]): <syntaxhighlight> & → Bitweises UND: Anwendung: Ganzahlausdruck & Ganzahlausdruck & → Adressoperator: Anwendung: &Variable * → Multiplikation Anwendung: Ganzahl-/Gleitkommaausdruck * Ganzahl-/Gleitkommaausdruck * → Datentyp Zeiger Anwendung: Datentyp * Variablenname; * → Dereferenzierung: Anwendung: * Zeiger </syntaxhighlight> Punctuatoren, welche von Java abweichende / ergänzende Funktionalitäten haben, werden nachfolgend gesondert beschrieben. Sind in einer Anweisung mehrere Operatoren enthalten, so hängt die Abarbeitungsreihenfolge von der Rangfolge/Priorität der Operatoren ab (siehe [[C-Programmierung: _Liste_der_Operatoren_nach_Priorität| C-Programmierung:Liste der Operatoren nach Priorität]]).<br /> Die Rangfolge ist identisch zu Java, wobei C mehr Operatoren kennt. Generell empfiehlt sich, lieber eine Klammer zu viel als zu wenig zusetzen. Klammern haben die höchste Priorität. === Zuweisungs-Operator === Die Zuweisung (<code>=</code>-Operator, assignment expression) weist dem L-Value den R-Value zu. Ergänzend dient der L-Value als Rückgabewert des Operators, so dass das Ergebnis der Zuweisung weiter genutzt werden kann. Die Abarbeitungsreihenfolge ist von rechts nach links (R-L Assoziativität). Wird der 'letzte' Rückgabewert nicht verwendet, so wird dieser verworfen (siehe Kap. [[Programmieren in C/C++: Grundlagen#Discarded Value | Discarded Value]]).<br /> Beispiel: <syntaxhighlight lang="C"> a=7; //Zuweisung a=b=7; //Erste Zuweisung (b=7) hat einen Rückgabewert, welcher im //Anschluss a zugewiesen wird if(a=7) //Variablen a wird der Wert 7 zugewiesen. Der Rückgabewert //der Zuweisung wird im Anschluss auf True oder False geprüft if(7=a) //Besser, da aufgrund der fehlerhafter Zuweisung ein //Compilerfehler geworfen wird x*=y=z //entspricht x=x*(y=z) a=b=d+7; //entspricht a=(b=(d+7)) a=b==c; //a bekommt das boolesche Ergebnis der Vergleichsoperation //zugewiesen </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a,b,c=3,d=4; int x,y,z; a=7; //Zuweisung a=b=7; //Erste Zuweisung (b=7) hat einen Rückgabewert, welcher im //Anschluss a zugewiesen wird if(a=7) //Variablen a wird der Wert 7 zugewiesen. Der Rückgabewert ; //der Zuweisung wird im Anschluss auf True oder False geprüft if(7=a) //Besser, da aufgrund der fehlerhafter Zuweisung ein ; //Compilerfehler geworfen wird x*=y=z; //entspricht x=x*(y=z) a=b=d+7; //entspricht a=(b=(d+7)) a=b==c; //a bekommt das boolesche Ergebnis der Vergleichsoperation //zugewiesen return 0; return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * Auf beiden Seiten der Zuweisung muss der identische Datentyp stehen. Wenn andernfalls eine implizite Typkonvertierung nicht möglich ist, gibt der Compiler einen Fehler aus: :<syntaxhighlight lang="C"> int a = 7.3; //implizite Typkonvertierung double b=a+3; //Implizite Typkonvertierung der Intergeraddition nach double float c=(float)a+(float)3; //Explizite Typkonvertierung char *d=a; //Compilerfehler, da Integerwert nicht implizit in einen //Zeiger konvertiert werden kann </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a = 7.3; //implizite Typkonvertierung double b=a+3; //Implizite Typkonvertierung der Intergeraddition nach double float c=(float)a+(float)3; //Explizite Typkonvertierung char *d=a; //Compilerfehler, da Integerwert nicht implizit in einen //Zeiger konvertiert werden kann //Zur Darstellung der besagten Konvertierung siehe rechtes Fenster (void)b; (void)c; (void)d; return 0; } | execCompilerOptions=-Wall| h=g }} Öffnen im Compiler Explorer] }} * Bei der Parameterübergabe beim Funktionsaufruf wird ebenfalls indirekt der Zuweisungsoperator angewendet. Die Parameter des Aufrufers werden per Zuweisung den lokalen Variablen der aufgerufenen Funktion zugewiesen :<syntaxhighlight lang="C"> void func(int a, float b) { printf("a=%d b=%f",a,b); } int x=4; float y=5.0; func(x,y); //der Inhalt der Variablen x wird der lokalen Variable a //(a=x) und der Inhalt der Variablen y der lokalen Variablen b //(b=y) zugewiesen. func(y,x); //Dito, mit der Ergänzung, dass eine implizite Typkonvertierung //stattfindet (a=(int)y) und (b=(float)x). </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void func(int a, float b) { printf("a=%d b=%f",a,b); } int main(int argc, char *argv[]) { int x=4; float y=5.0; func(x,y); //der Inhalt der Variablen x wird der lokalen Variable a //(a=x) und der Inhalt der Variablen y der lokalen Variablen b //(b=y) zugewiesen. func(y,x); //Dito, mit der Ergänzung, dass eine implizite Typkonvertierung //stattfindet (a=(int)y) und (b=(float)x). //Zur Darstellung der besagten Konvertierung siehe rechtes Fenster return 0; } | execCompilerOptions=-Wall| h=g }} Öffnen im Compiler Explorer] }} === Komma-Operator === Der Komma-Operator erlaubt es, zwei Ausdrücke auszuführen, wo nur einer erlaubt wäre. Die Ergebnisse aller durch diesen Operator verknüpften Ausdrücke, außer dem letzten werden verworfen. Der letzte Ausdruck dient als Rückgabewert. Folgendes gilt es bei der Nutzung des Komma-Operators zu beachten: * Der Komma-Operator wird von links nach rechts ausgewertet * Das Komma selbst stellt eine Sequence Point dar (siehe Kap [[Programmieren in C/C++: Grundlagen#Sequence Point|Sequence Point]]) * An Stellen, wo das Komma zum Syntax gehört (z.B. Trennung der Übergabeparameter bei der Funktionsdefinition und beim Funktionsaufruf, Trennung von Variablen bei der Variablendefinition/-deklaration, Trennung der enum Konstanten) muss der Ausdruck ergänzend geklammert werden, wenn der Komma-Operator gefordert ist * Der Komma-Operator hat von allen Operatoren die niedrigste Priorität/Rangfolge, so dass dieser Operator als letztes 'ausgewertet' wird Beispiel: <syntaxhighlight lang="C"> int a=(5,3); //5 wird verworfen, 3 dient als Rückgabewert, so dass //a den Wert 3 erhält. int b=5,3; //KO, da Komma Bestandteil der Definition ist int c=1,d=2,e=3; int f=(c+=2,a+a); //c um zwei erhöht, a+a in f int g= c+=2,a+a; //KO, da Komma Bestandteil der Defintion ist void func(int value){} func(1); //Funktion wird mit dem Wert 1 aufgerufen func(1,2); //KO, da Komma Bestandteil des Funktionsaufrufes ist func((1,2)); //Funktion wird mit dem Wert 2 aufgerufen int arr[12]; arr[3,4]=1; //3 wird verworfen, 4 dient als Index für das Array </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void func(int value){ printf("func called with %d\n",value); } int main(int argc, char *argv[]) { int a=(5,3); //5 wird verworfen, 3 dient als Rückgabewert, so dass //a den Wert 3 erhält. int b=5,3; //KO, da Komma Bestandteil der Definition ist printf("a=%d\n",a); int c=1,d=2,e=3; printf("c=%d,d=%d,e=%d\n",c,d,e); int f=(c+=2,a+a); //c um zwei erhöht, a+a in f printf("c=%d,f=%d\n",c,f); int g= c+=2,a+a; //KO, da Komma Bestandteil der Defintion ist func(1); //Funktion wird mit dem Wert 1 aufgerufen func(1,2); //KO, da Komma Bestandteil des Funktionsaufrufes ist func((1,2)); //Funktion wird mit dem Wert 2 aufgerufen int arr[12]; arr[3,4]=1; //3 wird verworfen, 4 dient als Index für das Array return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} 'Sinnvolle' Anwendungsbeispiele: * Bei For-Schleifen, so dass mehrere Variablen initialisiert und mehrere Variablen mit jedem Schleifendurchlauf geändert werden können: :<syntaxhighlight lang="C"> int sum,lauf; int arr[]={5,4,3,2,1}; for(sum=100,lauf=5 ; lauf ; lauf--,sum+=arr[lauf]); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int sum,lauf; int arr[]={5,4,3,2,1}; for(sum=100,lauf=5 ; lauf ; lauf--,sum+=arr[lauf]) printf("sum=%d lauf=%d\n",sum,lauf); printf("sum=%d\n",sum); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Bei der Return-Anweisung, bei welcher zur Darstellung der Zusammengehörigkeit mehrere Aktionen ausgeführt werden sollen: :<syntaxhighlight lang="C"> return errno=EINVAL,-1; return printf("Fehler"),-1; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <errno.h> int foo(void) { return errno=EINVAL,-1; } int far(void) { return printf("Fehler\n"),-1; } int main(int argc, char *argv[]) { printf("foo()=%d\n",foo()); printf("far()=%d\n",far()); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * An Stellen, wo nur eine Anweisung erlaubt ist (und man zu faul ist, einen Block zu öffnen) :<syntaxhighlight lang="C"> if(…) y=2,z=3; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int y=0,z=0; if(1) y=2,z=3; printf("y=%d z=%d\n",y,z); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * In vielen Ländern wird das Komma zur Darstellung von Gleitkommazahlen genutzt. Wird versehentlicher Weise dies in C/C++ übernommen, so führt dies zu einem unerwarteten Verhalten: :<syntaxhighlight lang="C"> double var; var=5.3; //Variable wird mit 5.3 initialisiert var=5,3; //KO, da Komma Bestandteil der Defintion ist var=(5,3); //Variable wird mit 3 initialisiert </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { double var; var=5.3; //Variable wird mit 5.3 initialisiert printf("var=%f\n",var); var=5,3; //KO, da Komma Bestandteil der Defintion ist var=(5,3); //Variable wird mit 3 initialisiert printf("var=%f\n",var); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === ?-Operator / Conditional-Operator === Operator mit 3 Operanden, welcher in Abhängigkeit des ersten Operanden den zweiten oder dritten Operanden zurückgibt. <code> Syntax: Logical-OR-expression ? expression : condition-expression </code> Entspricht der if()-Anweisung, wobei der ? Operator als solches einen Wert zurückgibt! Expression wird nur ausgewertet, wenn der erste Operand true ist. Andernfalls wird nur condition-expression ausgeführt. Der zurückgegebene Datentyp ergibt sich aus der Expression resp. Condition-expression. Beide sollten somit vom identischen Datentyp sein. Folgendes gilt es bei der Nutzung des ?-Operators zu beachten * Der Datentyp Expression und condition-Expression muss identisch sein <syntaxhighlight lang="C"> int a=5; a=a > 10 ? "String" : 4; //KO, "String" ist vom Datentyp (char*) und // 4 ist vom Datentyp (int). </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a=5; a=a > 10 ? "String" : 4; //KO, "String" ist vom Datentyp (char*) und // 4 ist vom Datentyp (int). return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Nach der GNU-C Reference kann der mittlere Operand fehlen, in diesem Fall wird stattdessen das Ergebnis des linken Operanden dort eingesetzt (siehe https://gcc.gnu.org/onlinedocs/gcc/Conditionals.html#Conditionals) <syntaxhighlight lang="C"> int a=13; int b=a>10 ? : 0; //wenn a > 10 wird true, andernfalls false zurückgegeben </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a=13; int b=a>10 ? : 0; //wenn a > 10 wird true, andernfalls false zurückgegeben printf("b=%d\n",b); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Sollen innerhalb von condition-expression mehrere (durch Komma getrennte) Anweisungen enthalten sein, so sind diese zu Klammern! Andernfalls bedingt die niedrige Priorität des Komma-Operators ein anders Verhalten, als erwartet. <syntaxhighlight lang="C"> int a=7,max=5; max=a>max ? a : max; //Alles bestens int var0,var1,var2; var0=a>5 ? a++,5:6,a=1; //das zweite Komma wird als separate Anweisung //ausgeführt und kommt somit immer zur //Ausführung var1=(a>5 ? a++,5:6),a=1; //durch Klammerung klare Abgrenzung var2= a>5 ? a++,5 : (6,a=1); //durch Klammerung klare Abgrenzung </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a=7; int max=5; max=a>max ? a : max; //Alles bestens printf("max=%d\n",max); int var0,var1,var2; var0=a>5 ? a++,5:6,a=1; //das zweite Komma wird als separate Anweisung //ausgeführt und kommt somit immer zur //Ausführung printf("var0=%d a=%d\n",var0,a); var1=(a>5 ? a++,5:6),a=1; //durch Klammerung klare Abgrenzung printf("var1=%d a=%d\n",var1,a); var2= a>5 ? a++,5 : (6,a=1); //durch Klammerung klare Abgrenzung printf("var2=%d a=%d\n",var2,a); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Die Nutzung des ?-Operators empfiehlt sich an diversen Stellen: * Bei Makros :<syntaxhighlight lang="C"> #define MAX(a,b) (a>b?a:b) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #define MAX(a,b) (a>b?a:b) int main(int argc, char *argv[]) { printf("MAX(4,5)=%d\n",MAX(4,5)); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Beim Fehlerhandling :<syntaxhighlight lang="C"> char *str=strstr("hallo123","lox"); //Ausgabe von str nur, wenn Suche erfolgreich (str!=NULL) war printf("%s",str!=NULL?str : "(not found)" ); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char *str=strstr("hallo123","lox"); //Ausgabe von str nur, wenn Suche erfolgreich (str!=NULL) war printf("%s",str!=NULL?str : "(not found)" ); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Prüfen, ob eine Funktion erfolgreich ausgeführt wurde, bevor eine weitere Funktion ausgeführt wird <syntaxhighlight lang="C"> int ret; ret=init1(); //im Fehlerfreien gibt init1() 0 zurück ret=ret?:init2(); //Aufruf von init2() nur wenn ret==0 ist //andernfalls wird ret zurückgegeben </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int init1(void) { printf("init1() called\n"); return 0; } int init2(void) { printf("init2() called\n"); return 0; } int main(int argc, char *argv[]) { int ret; ret=init1(); //im Fehlerfreien gibt init1() 0 zurück ret=ret?:init2(); //Aufruf von init2() nur wenn Ret==0 ist //andernfalls wird Ret zurückgegeben return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Logische Verknüpfungen === Alle logischen Operationen nutzen als Operanden Ganzzahlen ,Gleitkommazahlen oder Zeiger. Der Operand wird als false angesehen, wenn der Operand 0, 0.0 oder NULL ist. Andernfalls als true. Das Ergebnis ist immer vom Datentyp int und hat den Wert von 0 oder 1. <code>Syntax: Expression && Expression</code><br /> <code>Syntax: Expression || Expression</code><br /> <code>Syntax: ! Expression</code><br/> Bei der logischen UND und ODER Verknüpfung wird zuerst der linke Ausdruck ausgewertet (Operator ist ein Sequence Point). Der rechte Ausdruck wird nur ausgeführt, wenn: * bei der logischen UND Verknüpfung der linke Ausdruck TRUE ergab * bei der logische OR Verknüpfung der linke Ausdruck FALSE ergab Andernfalls steht das Ergebnis schon mit der Auswertung des linken Operanden fest.<br /> In der theoretischen Informatik wird dies 'Non-strict-evaluation' genannt, bei welcher der Rückgabewert feststeht, bevor alle Ausdrücke bearbeitet worden sind. Beispiel für das Verhalten des Ausbleibens der Auswertung des zweiten Operators: <syntaxhighlight lang="C"> int a=0,b=0; //a=-1; //Als alternativer Startwert if(++a || ++a) b=1; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=0,b=0; //a=-1; //Als alternativer Startwert if(++a {{!}}{{!}} ++a) b=1; printf("a=%d b=%d\n",a,b); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Diese Funktionalität ist insbesondere beim Umgang mit Fehlern vorteilhaft: * Prüfen, ob eine Variable einen gültigen Wert hat, bevor sie weiterverwendet wird <syntaxhighlight lang="C"> char *str = strstr("hallo123","la"); if(str!=NULL && strlen(str) ) printf("Len = %ld",strlen(str)); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char *str = strstr("hallo123","la"); if(str!=NULL && strlen(str) ) printf("Len = %ld",strlen(str)); else printf("Kein Substring im String gefunden\n"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Prüfen, ob eine Funktion erfolgreich ausgeführt wurde, bevor eine weitere Funktion aufgerufen wird: <syntaxhighlight lang="C"> int ret; ret=init1(); //Bei erfolgreicher Initialisierung wird 1 zurückgegeben ret=ret && init2(); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int init1(void) { printf("init1() called\n"); return 1; } int init2(void) { printf("init1() called\n"); return 1; } int main(int argc, char *argv[]) { int ret; ret=init1(); //Bei erfolgreicher Initialisierung wird 1 zurückgegeben ret=ret && init2(); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Bitweise Verknüpfungen === Alle bitweisen Operationen nutzen als Operanden Ganzzahlen. Bei vorzeichenbehafteten Zahlen ist das Ergebnis nach [C11 6.5] Implementierungsabhängig, wobei das Vorzeichenbit zumeist als eigenständiges Bit angesehen wird und bei UND/ODER/EXOR als normales BIT betrachtet wird. <code>Syntax: Ganzzahl & Ganzzahl → Bitweise UND Operation</code><br /> <code>Syntax: Ganzzahl | Ganzzahl → Bitweise ODER Operation</code><br /> <code>Syntax: Ganzzahl ^ Ganzzahl → Bitweise EXOR Operation</code><br /> <code>Syntax: ~ Ganzzahl → Bitweise Negierung</code><br /> <code>Syntax: Ganzzahl >> additive-expression</code><br /> <code>Syntax: Ganzzahl << additive-expression</code><br /> Mittels des Schiebeoperators können Ganzzahlen um additive-expression bitweise nach Links <code><<</code> oder Rechts <code>>></code> verschoben werden. Der resultierende Datentyp ergibt sich aus dem linken Operanden. Der rechte Operand muss positiv und kleiner gleich der Bitbreite des linken Operanden sein. Andernfalls ist das Ergebnis implementierungsspezifisch. Nach [C11 6.5.7] ist das Ergebnis der Schiebeoperation implementierungsspezifisch, wenn der linke Operand eine negative vorzeichenbehaftete Zahl ist. In der Regel wendet der Compiler jedoch folgende Schiebeoperation an: * Logisches Schieben (zu füllende Bit-Stellen werden mit 0 aufgefüllt), wenn der linke Operand eine vorzeichenlose Zahl ist * Arithmetisches Schieben (zu füllende Bit-Stelle beim Rechtsschieben wird mit dem Vorzeichenbit aufgefüllt), wenn der linke Operand eine vorzeichenbehaftete Zahl ist. Hiermit wird das Vorzeichen beibehalten, so dass eine negative Zahl nach dem Schieben weiterhin negativ ist (In Java erfolgt dies durch den >>> - Operator) Hinweis: * Ein Schieben um eine Stelle nach rechts entspricht einer Division durch 2 * Ein Schieben um eine Stelle nach links entspricht einer Multiplikation mit 2 === sizeof-Operator === Der sizeof-Operator dient zur Ermittlung des Speicherbedarfs (in Bytes) einer Variablen/eines Datentyps. <code>Syntax: sizeof (type-name)</code><br /> <code>Syntax: sizeof unary-expression</code><br /> Als Argument für den Sizeof-Operator kann wahlweise ein Datentyp, eine Variable oder ein Ausdruck genutzt werden. Sizeof gilt als Konstantenausdruck, d.h. seine Berechnung erfolgt durch den Compiler, sodass: * sizeof zur Initialisierung von globalen Variablen genutzt werden :<syntaxhighlight lang="C"> struct xyz{int x,y,z;}; size_t size=sizeof(struct xyz); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct xyz{int x,y,z;}; size_t size=sizeof(struct xyz); //3*sizeof(int)=12 int main(int argc, char *argv[]) { printf("size=%zu\n",size); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * bei einem Ausdruck dieser nicht ausgeführt wird, sondern nur der resultierende Datentyp bestimmt wird und dessen Größe zurückgegeben :<syntaxhighlight lang="C"> short var=4711; size_t size=sizeof var++; //var=4711, size=2 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { short var=4711; size_t size=sizeof var++; //var=4711, size=2 printf("size=%zu var=%d\n",size,var); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Der resultierende Datentyp des Rückgabewertes ist size_t. Es empfiehlt sich, den sizeof-Operator mit Klammern zu nutzen, andernfalls wird im Falle eines Ausdruckes der Speicherbedarf des linken Operanden angegeben: <syntaxhighlight lang="C"> size_t size; short var; size=sizeof var+0; //size=2, da sizeof auf var angewendet wird size=sizeof(var+0); //size=4, da sizoeof auf den resultierenden datentyp //angewendet wird </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { size_t size; short var=0; size=sizeof var+0; //size=2, da sizeof auf var angewendet wird printf("size=%zu var=%d\n",size,var); size=sizeof(var+0); //size=4, da sizoeof auf den resultierenden datentyp //angewendet wird printf("size=%zu var=%d\n",size,var); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * sizeof angewendet auf char gibt immer den Wert 1 zurück. * sizeof ist nicht auf Operanden vom Typ Funktion, void, Felder ohne Größenangabe und Bitfelder anwendbar * wird sizeof auf ein VLA angewendet, so entspricht sizeof nicht mehr einen Konstantenausdruck, sondern einem Funktionsaufruf :<syntaxhighlight lang="C"> void foo(int n) { int arr[n]; size_t size=sizeof(arr); //Speicherbedarf ist kein Konstantenausdruck //sondern wird zur Laufzeit berechnet </syntaxhighlight> * Sizeof entspricht nicht strlen(), da sizeof den für die Variable reservierten Speicherbereich zurückgibt und nicht wie strlen() den Inhalt des Speicher hinsichtlich des Stringendezeichens auswertet. :<syntaxhighlight lang="C"> char string[100]="Test"; printf("%zu\n",sizeof(string)); //100 printf("%zu\n",strlen(string)); //4 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char string[100]="Test"; printf("%zu\n",sizeof(string)); //100 printf("%zu\n",strlen(string)); //4 return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Anweisungen == === If-Anweisung === <code>Syntax: if (expression) statement</code><br /> <code>Syntax: if (expression) statement else statement</code><br /> Das Ergebnis des Ausdruckes (Ganzzahl, Gleitkommazahl oder Zeiger) wird auf ungleich 0, 0.0 oder NULL getestet. Trifft dies zu, so wird statement ausgeführt. Andernfalls wird das else statement ausgeführt, sofern vorhanden. Sollen mehrere Anweisungen ausgeführt werden, so sind diese mittels Block zusammenzufassen (diesen dann bitte nicht mit ; abschließen). Beispiel: <syntaxhighlight lang="C"> if(a==1) if(a=1) //Erst Zuweisung, dann prüfen der Rückgabe der Zuweisung if(a) //entspricht a!=0 if(printf("hallo")<0) //prüfen, ob printf() fehlschlägt if( ({int dummy=a;a=b;b=dummy;})==6) if(a=7) //Zuweisung! if(7=a) //KO, Eine Konstante kann kein L-Value sein if(7==a) {printf("a ist 7");}; //Semikolon hinter Blocksope ist eine zweite else //Anweisung, so dass die ELSE Anweisung nicht {printf("Compilerfehler");};//zur IF-Anwesigung zugeordnet werden kann. </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=1,b=2; if(a==1) printf("a==1\n"); if(a=1) //Erst Zuweisung, dann prüfen der Rückgabe der Zuweisung printf("a=1\n"); if(a) //entspricht a!=0 printf("a\n"); if(printf("hallo\n")<0) //prüfen, ob printf() fehlschlägt printf("printf()\n"); if( ({int dummy=a;a=b;b=dummy;})==6) printf("({...})\n"); if(a=7) //Zuweisung! printf("a=7\n"); if(7=a) //KO, Eine Konstante kann kein L-Value sein ; if(7==a) {printf("a ist 7");}; //Semikolon hinter Blocksope ist eine zweite else //Anweisung, so dass die ELSE Anweisung nicht {printf("Compilerfehler");};//zur IF-Anwesigung zugeordnet werden kann. return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Bei der Anweisung <code>if(a==7)</code> finden aus syntaktischer Sicht zwei Aktionen statt. Zunächst wird geprüft, ob a gleich 7 ist. Dieser Vergleich liefert true(=1) oder false(=0) zurück. Die If-Anweisung prüft im Anschluss, ob das Argument true oder false ist. === For-Anweisung === <code>Syntax: for(Initialisierungsteil<sub>OPT</sub> ; Test<sub>OPT</sub> ; Fortsetzung<sub>OPT</sub>) Statement</code> Die For-Anweisung wird vom Compiler wie folgt umgesetzt: <poem> '''Initialisierungsteil'''<sub>OPT</sub> Goto Next Goon: //Continue-Anweisung entspricht goto Continue //Break-Anweisung entspricht goto Break; '''Statement''' Continue: '''Fortsetzung'''<sub>OPT</sub> Next: if('''Test'''<sub>OPT</sub>) goto Goon Break: </poem> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> int main(int argc, char *argv[]) { int lauf; int summe; for(summe=lauf=0;lauf<20;lauf++) summe+=lauf; printf("summe=%d\n",summe); //Initialisierungsteil summe=lauf=0; goto Next; Goon: //Continue-Anweisung entspricht goto Continue //Break-Anweisung entspricht goto Break; //Statement summe+=lauf; Continue: __attribute__((unused)) //Fortsetzung lauf++; Next: //if(TestOPT) goto Goon if(lauf<20) goto Goon; Break: __attribute__((unused)) printf("summe=%d\n",summe); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Die einzelne Elemente haben folgende Bedeutung/Besonderheiten: ;Initialisierungsteil: Zum Initialisieren von Schleifenvariablen, wird einmalig mit Beginn der FOR-Anweisung ausgeführt. :* kann Leer sein, dann erfolgt keine Initialisierung :* Ab C99: Hier kann eine lokale Variable definiert werden, welche nur innerhalb dieser For-Anweisung gültig ist ;Testteil: Hierin wird vor jedem Schleifendurchlauf geprüft, ob die Schleifenbedingung erfüllt ist. Wenn Bedingung nicht erfüllt ist (Ganzzahl, Gleitkommazahl oder Zeiger gleich 0,0.0 oder NULL), wird die For-Schleife beendet. :* Kann leer sein, dann wird dieser Teil als true angesehen ;Fortsetzungsteil: Wird nach jeden Schleifendurchlauf ausgeführt. In der Regel sollte hier die Schleifenvariable aktualisiert werden :* Kann leer sein ;Statement: In der Schleife auszuführender Ausdruck :* Sollen mehrere Ausdrücke ausgeführt werden, so sind diese in einem Block zusammen zu fassen. :Ergänzende Anweisungen innerhalb des Statements/Block :* 'continue' zum Fortsetzen des Schleifendurchlaufes, d.h. Sprung zum Fortsetzungs-Teil :* 'break', zum Beenden des Schleifendurchlaufes Beispiele: * For-Schleife mit lokaler Schleifenvariable :<syntaxhighlight lang="C"> char string[]="hallo"; for(size_t lauf=0; lauf < strlen(string); lauf++) //Schleife ist Suboptimal, da in jedem Durchlauf die Funktion //strlen() aufgerufen wird! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <time.h> struct timespec diff_timespec(const struct timespec *minuend, const struct timespec *subtrahend ) { struct timespec diff = { .tv_sec = minuend->tv_sec - subtrahend->tv_sec, .tv_nsec = minuend->tv_nsec - subtrahend->tv_nsec}; //Sekundenüberlauf? if (diff.tv_nsec < 0) { diff.tv_nsec += 1000000000; diff.tv_sec--; } return diff; } int main(int argc, char *argv[]) { char string1[10000]; char string2[10000]; memset(string1,'a',sizeof(string1)); memset(string2,'a',sizeof(string2)); string1[sizeof(string1)-1]=0; string2[sizeof(string2)-1]=0; struct timespec start1,stop1; struct timespec start2,stop2; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start1); size_t sum1=0; for(size_t lauf=0; lauf < strlen(string1); lauf++) sum1++; //Schleife ist Suboptimal, da in jedem Durchlauf die Funktion //strlen() aufgerufen wird! clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop1); clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start2); size_t sum2=0; size_t count2=strlen(string2); for(size_t lauf=0; lauf < count2; lauf++) sum2++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop2); stop1=diff_timespec(&stop1,&start1); stop2=diff_timespec(&stop2,&start2); printf("Slow: Sum1=%zu Time=%lds %ldns\n",sum1,stop1.tv_sec,stop1.tv_nsec); printf("Fast: Sum2=%zu Time=%lds %ldns\n",sum2,stop2.tv_sec,stop2.tv_nsec); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Schleife mit Break-Anweisung :<syntaxhighlight lang="C"> char dest[5]; char src[10]="HalloWelt"; for(size_t lauf=0; src[lauf]!=0; lauf++) { if(lauf >= sizeof(dest)) break; dest[lauf]=src[lauf]; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char dest[5]; char src[10]="HalloWelt"; for(size_t lauf=0; src[lauf]!=0; lauf++) { printf("lauf=%zu\n",lauf); if(lauf >= sizeof(dest)) break; dest[lauf]=src[lauf]; } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Schleife, bei welcher die gesamte Aktion innerhalb der For-Anweisung ausgeführt wird :<syntaxhighlight lang="C"> char dest[5]; char src[10]="HalloWelt"; for(size_t l=0; src[l]!=0 && l <sizeof(dest); printf("l=%zu\n",l),dest[l]=src[l],l++); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char dest[5]; char src[10]="HalloWelt"; for(size_t l=0;src[l]!=0 && l <sizeof(dest); printf("l=%zu\n",l),dest[l]=src[l],l++); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Schleifenvariable muss keine Zählvariable sein :<syntaxhighlight lang="C"> int zahl=0b100010; int bits=0; for(int mask=0b10000000; mask!=0; mask>>=1 ) bits+= zahl & mask ? 1 : 0; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int zahl=0b100010; int bits=0; for(int mask=0b10000000; mask!=0; mask>>=1 ) bits+= zahl & mask ? 1 : 0; printf("Anzahl Einsen in %b = %d\n",zahl,bits); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Zeiger als Schleifenvariable :<syntaxhighlight lang="C"> char src[]="hallo"; char dst[strlen(src)+1]; char *s,*d; for(s=src,d=dst; *s; ) *d++=*s++; *d=0; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char src[]="hallo"; char dst[strlen(src)+1]; char *s,*d; for(s=src,d=dst; *s; ) *d++=*s++; *d=0; printf("src='%s' dst='%s'\n",src,dst); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Zur Geschwindigkeitsoptimierung sollten im Test- und Fortsetzungsteil keine Funktionsaufrufe mit Werten enthalten sein, die sich innerhalb der Schleife nicht ändern: :<syntaxhighlight lang="C"> for(size_t lauf=0;lauf<strlen("hallo");lauf++) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <time.h> struct timespec diff_timespec(const struct timespec *minuend, const struct timespec *subtrahend ) { struct timespec diff = { .tv_sec = minuend->tv_sec - subtrahend->tv_sec, .tv_nsec = minuend->tv_nsec - subtrahend->tv_nsec}; //Sekundenüberlauf? if (diff.tv_nsec < 0) { diff.tv_nsec += 1000000000; diff.tv_sec--; } return diff; } int main(int argc, char *argv[]) { char string1[10000]; char string2[10000]; memset(string1,'a',sizeof(string1)); memset(string2,'a',sizeof(string2)); string1[sizeof(string1)-1]=0; string2[sizeof(string2)-1]=0; struct timespec start1,stop1; struct timespec start2,stop2; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start1); size_t sum1=0; for(size_t lauf=0; lauf < strlen(string1); lauf++) sum1++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop1); clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start2); size_t sum2=0; size_t count2=strlen(string2); for(size_t lauf=0; lauf < count2; lauf++) sum2++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop2); stop1=diff_timespec(&stop1,&start1); stop2=diff_timespec(&stop2,&start2); printf("Slow: Sum1=%zu Time=%lds %ldns\n",sum1,stop1.tv_sec,stop1.tv_nsec); printf("Fast: Sum2=%zu Time=%lds %ldns\n",sum2,stop2.tv_sec,stop2.tv_nsec); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Zur Geschwindigkeitssteigerung sollte im Testteil auf 0 abgefragt werden, d.h. die Schleifenvariable dekrementiert werden :<syntaxhighlight lang="C"> for(int lauf=700000;lauf;lauf--) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <time.h> struct timespec diff_timespec(const struct timespec *minuend, const struct timespec *subtrahend ) { struct timespec diff = { .tv_sec = minuend->tv_sec - subtrahend->tv_sec, .tv_nsec = minuend->tv_nsec - subtrahend->tv_nsec}; //Sekundenüberlauf? if (diff.tv_nsec < 0) { diff.tv_nsec += 1000000000; diff.tv_sec--; } return diff; } int main(int argc, char *argv[]) { char string1[10000]; char string2[10000]; memset(string1,'a',sizeof(string1)); memset(string2,'a',sizeof(string2)); string1[sizeof(string1)-1]=0; string2[sizeof(string2)-1]=0; struct timespec start1,stop1; struct timespec start2,stop2; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start1); size_t sum1=0; for(ssize_t lauf=700000000;lauf;lauf--) sum1++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop1); clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start2); size_t sum2=0; for(ssize_t lauf=0;lauf<700000000;lauf++) sum2++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop2); stop1=diff_timespec(&stop1,&start1); stop2=diff_timespec(&stop2,&start2); printf("Slow: Sum1=%zu Time=%lds %ldns\n",sum1,stop1.tv_sec,stop1.tv_nsec); printf("Fast: Sum2=%zu Time=%lds %ldns\n",sum2,stop2.tv_sec,stop2.tv_nsec); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Alternativ zu einer Laufvariablen empfiehlt sich die Nutzung von Pointer als Schleifenvariable; :<syntaxhighlight lang="C"> for(char *ptr=str; *ptr; ptr++); </syntaxhighlight> === While-Anweisung === <code>Syntax: while(expression) Statement </code><br /> <code>Syntax: do Statement while(expression);</code><br /> Die While-Anweisungen werden vom Compiler wie folgt umgesetzt: {| class="wikitable" ! while()-Anweisung !! do while()-Anweisung |- | <poem> Continue: if(!'''expression''') goto Break //Break-Anweisung entspricht // goto Break; //Continue-Anweisung entspr. // goto Continue; '''Statement''' goto Continue Break: </poem> || <poem> GoOn: //Break-Anweisung entspr. // goto Break //Continue-Anweisung ent. // goto Continue '''Statement''' Continue: if('''expression''') goto GoOn Break: </poem> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> int main(int argc, char *argv[]) { int lauf; int summe; lauf=summe=0; while(lauf<10) { if(lauf>=5) break; lauf++; if(lauf<3) continue; summe+=lauf; } printf("summe=%d\n",summe); lauf=summe=0; Continue1: if(!(lauf<10)) goto Break1; //Break-Anweisung entspricht // goto Break; //Continue-Anweisung entspr. // goto Continue; //Statement if(lauf>=5) { goto Break1; } lauf++; if(lauf<3) goto Continue1; summe+=lauf; goto Continue1; Break1: printf("summe=%d\n",summe); lauf=summe=0; do { lauf++; if(lauf>5) break; if(lauf<3) continue; summe+=lauf; } while(lauf<10); printf("summe=%d\n",summe); lauf=summe=0; GoOn2: //Break-Anweisung entspr. // goto Break //Continue-Anweisung ent. // goto Continue //Statement lauf++; if(lauf>5) goto Break2; if(lauf<3) goto Continue2; summe+=lauf; Continue2: if(lauf<10) goto GoOn2; Break2: __attribute__((unused)); printf("summe=%d\n",summe); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Folgendes gilt es bei der Nutzung der While-Anweisung zu beachten: * Soll mehr als ein Statement innerhalb der While-Schleife ausgeführt werden, so sind diese in einem Block zu schreiben * Statement kann eine Leeranweisung (gekennzeichnet durch ein Semikolon) sein :<syntaxhighlight lang="C"> while(1); do ; while(1); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int lauf1=1000; while(lauf1--); int lauf2=1000; do ; while(lauf2--); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Bei der do-While-Schleife ist das abschließende Semikolon Bestandteil des Befehls * expression muss eine Ganzzahl, Gleitkommazahl oder Zeiger zurückgeben, der bei False (0, 0.0 oder NULL) die Schleife beendet. Beispiele: * Endlosschleife :<syntaxhighlight lang="C"> while(1) {} </syntaxhighlight> * Schleife zum Durchlaufen eines String :<syntaxhighlight lang="C"> char str[]="string"; char *ptr=str; while(*ptr++); size_t len=ptr-str-1; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char str[]="string"; char *ptr=str; while(*ptr++); size_t len=ptr-str-1; printf("Stringlänge=%zu\n",len); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Switch-Anweisung === <code>Syntax: switch(expression) statement</code><br /> <code>Syntax: statement:= case constant-expression: statement<sub>opt</sub> default: statement<sub>opt</sub></code><br /> Die Switch-Anweisung entspricht einer verschachtelten If-Anweisung, mit der Besonderheit, dass der auszuführende Code nicht im If-Zweig stattfindet, sondern dort ein goto zum eigentlichen Code enthalten ist: {| class="wikitable" ! Switch-Anweisung !! Compilerumsetzung |- |<syntaxhighlight lang="C"> switch(a) { case 1: int a=7; //Code break; case 2: printf("%d",a); case 3: { int a; //Code } case 4 ... 8: default: //Code } </syntaxhighlight> ||<poem> if(a==1) goto label1; else if(a==2) goto label2; else goto label_default; //------------------- label1: //Code goto label_break; label2: //Code label_default: goto label_break; label_break: </poem> |} Folgendes gilt es bei der Nutzung der Switch-Anweisung zu beachten: * <code>Expression</code> muss zu einer Ganzzahl (int, short, char, long, long long) oder enum (entspricht einer Ganzzahl) ausgewertet werden * <code>constant-expression</code> muss eine Ganzzahl-Konstante oder ein Enumelement sein. Sie darf nicht doppelt im Block vorkommen. Der genaue Datentyp ergibt sich aus dem Datentyp der <code>expression</code> * Lt. Spezifikation ist ein nur <code>statement</code> hinter der switch-Anweisung erlaubt, so dass nur ein <code>case</code> Fall oder der <code>default</code> Fall bedient werden kann::<syntaxhighlight lang="C"> int var=1; switch(var) case 1: printf("hallo"); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int var=1; switch(var) case 1: printf("hallo"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Die geschweifte Klammer der <code>switch</code>-Anweisung erzeugt einen Block, so dass a) hier mehrere <code>case</code>-Fälle und b) hierin definierte Variablen innerhalb des gesamten Blocks zur Verfügung stehen (sind somit nicht <code>case</code> abhängig). Die <code>case</code> Anweisung ist nichts anderes als eine Sprungmarken (welche durch die switch-Anweisung angesprungen wird) so dass der Initialisierungsteil der lokalen Variablen übersprungen / nicht ausgeführt werden kann: :<syntaxhighlight lang="C"> switch(a) { int a=3; //Variable in gesamten Block gültig case 1: int b=3; //Variabe in gesamten Block gültig printf("%d %d",a,b); //a undefiniert, b=3 break; case 2: printf("%d %d",a,b); //a und b undefiniert break; case 3: { //Block, so dass Variable int a=4711; //nur in diesem CASE gültig ist break; } } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=1; switch(a) { int a=3; //Variable in gesamten Block gültig case 1: int b=3; //Variabe in gesamten Block gültig printf("a=%d b=%d",a,b); //a undefiniert, b=3 break; case 2: printf("%d %d",a,b); //a und b undefiniert break; case 3: { //Block, so dass Variable int a=4711; //nur in diesem CASE gültig ist (void)a; break; } } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * GNU-C (siehe [https://www.gnu.org/software/c-intro-and-ref/manual/html_node/switch-Statement.html Switch-Statement]) erlaubt ergänzend zur Angabe einer Konstante die Angabe eines Wertebereiches: :<syntaxhighlight lang="C"> switch(a) { case 1 ... 8: //Leerzeichen zwischen den Konstanten zwingend notwendig //andernfalls wird der Punkt zur Konstante zugehörig //interpretiert (erzeugt dann eine Gleitpunktkonstante) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=2; switch(a) { case 1 ... 8: //Leerzeichen zwischen den Konstanten zwingend notwendig //andernfalls wird der Punkt zur Konstante zugehörig //interpretiert (erzeugt dann eine Gleitpunktkonstante) printf("a im Bereich von 1 bis 8\n"); break; } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * <code>break</code> ist optional. Mittels <code>break</code> wird an das Ende der Switch-Anweisung gesprungen. Wenn <code>break</code> weggelassen wird, wird die nachfolgende Anweisungen ausgeführt. Ggf. gibt der Compiler eine Warning aus. Mittels der GCC-Compiler-Anweisung __attribute__((fallthrough)); kann diese Warning unterdrückt werden: :<syntaxhighlight lang="C"> switch(a) { case 0: //ggf. Compiler-Warning __attribute__((fallthrough)); case 1: case 2: break; } </syntaxhighlight> * Ein Variable Length Array ist als Variable im Switch-Block direkt nicht erlaubt. Ist dies notwendig, so ist das VLA in einem inneren Block zu kapseln: :<syntaxhighlight lang="C"> switch(var) { case 1: int arr[var]; //KO break; case 2: { int arr[var]; //OK } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int var=1; switch(var) { case 1: int arr[var]; //KO break; case 2: { int arr[var]; //OK } } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Case - Anweisungen sind nichts anderes als Sprungmarken (Labels), so dass CASE-Anweisungen überall innerhalb des Switch-Blockes stehen können: :<syntaxhighlight lang="C"> int prime(int value) {return value+1;} void hallo(int var) { switch(var) { default: if(prime(var)) case 2: case 4: printf("%d",var); else { case 3: case 6: printf("%x",var); } case 7: printf("xyz"); } } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int prime(int value) { return value+1; } int main(int argc, char *argv[]) { int var=1; switch(var) { default: if(prime(var)) case 2: case 4: printf("%d",var); else { case 3: case 6: printf("%x",var); } case 7: printf("xyz"); } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} :oder anderen Anweisungen innerhalb des Switch-Blockes enthalten sein können: :<syntaxhighlight lang="C"> void send(register char *dst, register char *src, register size_t count) { register char unsigned n=(count+7)/8; switch(count%8) { case 0: do{ *dst = *src++; case 7: *dst = *src++; case 6: *dst = *src++; case 5: *dst = *src++; case 4: *dst = *src++; case 3: *dst = *src++; case 2: *dst = *src++; case 1: *dst = *src++; }while(--n>0); } } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <stdint.h> //fuer uintptr_t void send(register char *dst, register char *src, register size_t count) { register char unsigned n=(count+7)/8; switch(count%8) { case 0: do{ *dst = *src++; printf("%02hhx ",*dst); case 7: *dst = *src++; printf("%02hhx ",*dst); case 6: *dst = *src++; printf("%02hhx ",*dst); case 5: *dst = *src++; printf("%02hhx ",*dst); case 4: *dst = *src++; printf("%02hhx ",*dst); case 3: *dst = *src++; printf("%02hhx ",*dst); case 2: *dst = *src++; printf("%02hhx ",*dst); case 1: *dst = *src++; printf("%02hhx ",*dst); }while(--n>0); } } int main(int argc, char *argv[]) { char src[20]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}; char dst; send(&dst,src,20); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Eine Switch-Case Anweisung über Strings sind in C/C++ nicht möglich: :<syntaxhighlight lang="C"> switch(str) { case "hallo": return 1; case "du da": return 2; case "xyz": return 3; default: rReturn -1; } </syntaxhighlight> :Ein direkte Lösungsansatz ist die Nutzung von strcmp() zum Vergleichen von String. Da strcmp zeichenweise den String vergleicht, ist dieser Ansatz langsam. Alternativ bietet sich an, von allen String einen Hash-Wert zu berechnen und zunächst diesen Hash-Wert zu kontrollieren. Da der Hash-Wert nicht eindeutig ist, muss ergänzend ein strcmp() erfolgen: :<syntaxhighlight lang="C"> char *str="hallo"; switch(HASH_LAUFZEIT(str)) { case HASH_COMPILEZEIT('d','u'): if(!strcmp(str,"du")) printf("Case \"du\":\n"); break; case HASH_COMPILEZEIT('h','a','l','l','o'): if(!strcmp(str,"hallo")) printf("Case \"hallo\"\n"); else if(!strcmp(str,"xyz")) printf("String='xyz'\n"); break; default: return -1; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <stdint.h> //Lösungsansatz von: https://stackoverflow.com/questions/2826559/compile-time-preprocessor-hashing-of-string #define H1(s,i,x) (x*65599u+(uint8_t)s[(i)<strlen(s)?strlen(s)-1-(i):strlen(s)]) #define H4(s,i,x) H1(s,i,H1(s,i+1,H1(s,i+2,H1(s,i+3,x)))) #define H16(s,i,x) H4(s,i,H4(s,i+4,H4(s,i+8,H4(s,i+12,x)))) #define H64(s,i,x) H16(s,i,H16(s,i+16,H16(s,i+32,H16(s,i+48,x)))) #define H256(s,i,x) H64(s,i,H64(s,i+64,H64(s,i+128,H64(s,i+192,x)))) #define HASH(s) ((uint32_t)(H256(s,0,0)^(H256(s,0,0)>>16))) #define HASH_LAUFZEIT(s) (H256(s,0,0)) //Eigener Lösungsatz zur Umsetzung des vorherigen HASH-Algorithmus //so dass dieser zur Compilezeit berechnet werden kann //Was fehlt ist die abschließende EXOR berechnung! //Problem war, dass die Array-Dereferenzierung nicht zur Compilezeit //aufelöst werden kann #define HH0(a,x) (x*65599u+a) #define HH1(a) HH0(a,HH0(0,HH0(0,HH0(0,0)))) #define HH2(a,b) HH0(b,HH0(a,HH0(0,HH0(0,0)))) #define HH3(a,b,c) HH0(c,HH0(b,HH0(a,HH0(0,0)))) #define HH4(a,b,c,d) HH0(d,HH0(c,HH0(b,HH0(a,0)))) #define HH4x(a,b,c,d,x) HH0(d,HH0(c,HH0(b,HH0(a,x)))) #define HH5(a,b,c,d,e) HH4x(b,c,d,e,HH4x(0,0,0,a,0)) #define HH6(a,b,c,d,e,f) HH4x(c,d,e,f,HH4x(0,0,a,b,0)) #define HH7(a,b,c,d,e,f,g) HH4x(d,e,f,g,HH4x(0,a,b,c,0)) #define HH8(a,b,c,d,e,f,g,h) HH4x(e,f,g,h,HH4x(a,b,c,d,0)) #define HH9(a,b,c,d,e,f,g,h,i) HH4x(f,g,h,i,HH4x(b,c,d,e,HH4x(0,0,0,a,0))) #define HH10(a,b,c,d,e,f,g,h,i,j) HH4x(g,h,i,j,HH4x(c,d,e,f,HH4x(0,0,a,b,0))) #define HH11(a,b,c,d,e,f,g,h,i,j,k) HH4x(h,i,j,k,HH4x(d,e,f,g,HH4x(0,a,b,c,0))) #define HH12(a,b,c,d,e,f,g,h,i,j,k,l) HH4x(i,j,k,l,HH4x(e,f,g,h,HH4x(a,b,c,d,0))) #define HH13(a,b,c,d,e,f,g,h,i,j,k,l,m) HH4x(j,k,l,m,HH4x(f,g,h,i,HH4x(b,c,d,e,HH4x(0,0,0,a,0)))) #define HH14(a,b,c,d,e,f,g,h,i,j,k,l,m,n) HH4x(k,l,m,n,HH4x(g,h,i,j,HH4x(c,d,e,f,HH4x(0,0,a,b,0)))) #define HH15(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) HH4x(l,m,n,o,HH4x(h,i,j,k,HH4x(d,e,f,g,HH4x(0,a,b,c,0)))) #define HH16(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) HH4x(m,n,o,p,HH4x(i,j,k,l,HH4x(e,f,g,h,HH4x(a,b,c,d,0)))) #define EIGHTEENTH_ARGUMENT(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, \ a11,a12,a13,a14,a15,a16,a17,a18, ...) a18 #define CONCAT(c,d) c ## d #define CONCATI(a,b) CONCAT(a,b) #define HASH_COMPILEZEIT(...) CONCATI(HH , EIGHTEENTH_ARGUMENT(dummy, ## __VA_ARGS__, \ 16,15,14,13,12,11,10,9, 8, 7, 6, 5, 4, 3, 2, 1, 0))(__VA_ARGS__) //Lösungsansatz basierend auf: https://renenyffenegger.ch/notes/development/languages/C-C-plus-plus/preprocessor/macros/__VA_ARGS__/count-arguments #define COUNT_ARGUMENTS(...) EIGHTEENTH_ARGUMENT(dummy, ## __VA_ARGS__, \ 16,15,14,13,12,11,10,9, 8, 7, 6, 5, 4, 3, 2, 1, 0) int main(int argc, char *argv[]) { char *str="hallo"; switch(HASH_LAUFZEIT(str)) { case HASH_COMPILEZEIT('d','u'): if(!strcmp(str,"du")) printf("Case \"du\":\n"); break; case HASH_COMPILEZEIT('h','a','l','l','o'): if(!strcmp(str,"hallo")) printf("Case \"hallo\"\n"); else if(!strcmp(str,"xyz")) printf("String='xyz'\n"); break; default: return -1; } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} :Siehe:[https://benhoyt.com/writings/hash-table-in-c/ Hash Table in C] == Label + Goto == === Label === <code>Syntax: name:</code><br /> Labels dienen zur Kennzeichnung einer Anweisung, so dass die Programmausführung an dieser Stelle fortgesetzt, resp. mit einer GOTO-Anweisung angesprungen werden kann. Ein Label ist durch den folgenden Doppelpunkt gekennzeichnet. Dem Label muss eine Anweisung folgen, welches auch eine Leeranweisung (Semikolon) sein kann. Folgendes gilt es bei der Nutzung von Labels zu beachten: * Ein Label entspricht der Speicheradresse des der Label-Anweisung folgenden Anweisung * Bei nicht genutzten Labels (mit goto nicht angesprungene Labels) gibt der Compiler eine Warning aus. Diese kann beim GCC-Compiler mit __attribute__((unused)) unterdrückt werden * die Case- und die Default-Anweisung aus der Switch-Anweisung entspricht einem Label <br /> Labels hat eine funktionsweite Sichtbarkeit (siehe Kap [[#Gültigkeit/Sichtbarkeit von Variablen| Gültigkeit/Sichtbarkeit von Variablen]]). Dies bedeutet, dass das: * Labels nur innerhalb einer Funktion gültig ist * Labels einen von Variablen/Funktionen/Datentypen unabhängigen Namensraum haben * Kein Prototyp für ein Label notwendig ist, wenn es bei Nutzung über goto noch nicht gesetzt worden ist, also nach vorne gesprungen wird === goto === <code>Syntax: goto label;</code><br /> Mit der Goto-Anweisung wird die Programmausführung an der mit <code>label</code> gekennzeichneten Stelle fortgesetzt. Folgendes gilt es bei der Nutzung von goto zu beachten: * Mit einer <code>goto</code> Anweisung kann an eine beliebige Steller innerhalb der '''identischen''' Funktion gesprungen werden. Es kann nicht zu einem Label in einer anderen Funktion gesprungen werden (hierzu ist <code>setjmp()</code> und <code>longjmp()</code> zu nutzen) * Mit der Goto Anweisung kann gleichermaßen in einen Block hinein, als auch herausgesprungen werden: :<syntaxhighlight lang="C"> goto first_time; for(;;) { if(a>10) goto last_time: first_time: a++; } last_time: ; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=0; goto first_time; for(;;) { printf("a=%d\n",a); if(a>10) goto last_time; first_time: a++; } last_time: ; //Leeranweisung wäre hier nicht nötig return 0; //da dem Label ein return folgt! } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Wird mit der <code>goto</code> Anweisung der Initialisierungsteil einer Variablen übersprungen, so ist zwar die Variable existent, beinhaltet aber nicht ihren Initialisierungswert Beispiel: <syntaxhighlight lang="C"> goto label1; if(a==3) { label2: printf("True\n"); } else label1: { printf("False\n"); } if(a==3) goto label2; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=3; goto label1; if(a==3) { label2: printf("True\n"); a++; } else label1: { printf("False\n"); } if(a==3) goto label2; return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * In Java gibt es das Schlüsselwort goto, welches aber ohne Funktion ist. Es gibt jedoch Labels, die mit "break label" angesprungen werden können === Anwendungsbeispiele === Prinzipiell sind Goto-Anweisungen zu vermeiden. In einigen Anwendungsfällen erweist sich goto als nützlich: * Nutzung nur einer <code>return</code> Anweisung in einer Funktionen :<syntaxhighlight lang="C"> #include <unistd.h> int input(int hdl,size_t buflen) { int rc=-1; unsigned char packettype; if(read(hdl,&packettype,1) != 1) goto exit; unsigned short packetlen; if(read(hdl,&packetlen,2) != 2) goto exit; if((1+packetlen) > buflen) { rc=-2; goto exit; } rc=packetlen; exit: return rc; } </syntaxhighlight> * Konstruktor mit mehreren Initialisierungsteilen :<syntaxhighlight lang="C"> int main(int argc,char *argv[]) { enum {INIT_2,INIT_1,INIT_START} fortschritt=INIT_START; int *ptr1; int *ptr2; if(!(ptr1=malloc(10))) goto end; fortschritt=INIT_1; if(!(ptr2=malloc(20))) goto end; fortschritt=INIT_2; // ... end: switch(fortschritt) { case INIT_2: free(ptr2); __attribute__((fallthrough)); case INIT_1: free(ptr1); __attribute__((fallthrough)); case INIT_START: } return (int)fortschritt; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { enum {INIT_2,INIT_1,INIT_START} fortschritt=INIT_START; int *ptr1; int *ptr2; if(!(ptr1=malloc(10))) goto end; fortschritt=INIT_1; if(!(ptr2=malloc(20))) goto end; fortschritt=INIT_2; // ... end: switch(fortschritt) { case INIT_2: free(ptr2); __attribute__((fallthrough)); case INIT_1: free(ptr1); __attribute__((fallthrough)); case INIT_START: } return (int)fortschritt; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Abbruch einer verschachtelten Schleife :<syntaxhighlight lang="C"> int arr[10][10]; size_t zeile; size_t spalte; for(zeile=0;zeile<10;zeile++) for(spalte=0;spalte<0;spalte++) if(arr[zeile][spalte]==0) goto label_end; label_end: if((zeile==0) && (spalte==0)) printf("Nichts gefunden"); else printf("Gefunden an %zu %zu",zeile,spalte); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int arr[10][10]; size_t zeile; size_t spalte; for(zeile=0;zeile<10;zeile++) for(spalte=0;spalte<0;spalte++) if(arr[zeile][spalte]==0) goto label_end; label_end: if((zeile==0) && (spalte==0)) printf("Nichts gefunden"); else printf("Gefunden an %zu %zu",zeile,spalte); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Sonstiges == === ??-Trigraphs === Zeichenfolge bestehend aus 3 Zeichen beginnend mit 2 Fragezeichen. Die beiden Fragezeichen entsprechen einem ESCAPE-Operator (siehe Kap [[#Char-Konstanten|Char-Konstanten]]), welcher das nachfolgende Zeichen durch ein anderes ASCII Zeichen ersetzt. Die Ersetzung findet auch innerhalb von Strings statt.<br /> Trigraphs wurden früher genutzt, als die ALTGR Taste noch nicht üblich war. <syntaxhighlight> ??< → { ??> → } ??( → [ ??) → ] ??/ → \ ??! → | ??' → ^ ??- → ~ ??= → # </syntaxhighlight> Bei neuer C Varianten muss zur Nutzung von Trigraphs der Compiler mittels -trigraphs aktiviert werden. <noinclude> {{Navigation zurückhochvor buch |zurücklink=Programmieren in C/C++: Toolchain/Entwicklungsumgebung |zurücktext=Toolchain/Entwicklungsumgebung |hochlink=Programmieren in C/C++ |hochtext=Inhaltsverzeichnis |vorlink=Programmieren in C/C++: Datentypen |vortext=Datentypen}} </noinclude> 4djcz7rfr8eyurcr1h2v8hym5xvlwtf 1090558 1090554 2026-09-08T13:47:50Z D. Justen 102048 Formulierung geändert 1090558 wikitext text/x-wiki <noinclude> {{Navigation zurückhochvor buch |zurücklink=Programmieren in C/C++: Toolchain/Entwicklungsumgebung |zurücktext=Toolchain/Entwicklungsumgebung |hochlink=Programmieren in C/C++ |hochtext=Inhaltsverzeichnis |vorlink=Programmieren in C/C++: Datentypen |vortext=Datentypen}} </noinclude> <!-- Falls du ein automatisch erstelltes Inhaltsverzeichnis nicht willst, ersetze das nachfolgende TOC durch NOTOC --> <!-- Einklammerung mit noinclude, damit dieses nicht in der Druckversion erscheint --> <noinclude>__TOC__</noinclude> Die Programmiersprache C/C++ beinhaltet mehrere Sprachen/ Syntaxen: * C-Syntax * Präprozessor-Syntax * Printf/Scanf Formatstring Syntax * Terminal Emulation * Compiler/Linker Anweisungen Letztere beiden werden nur rudimentär in dieser Vorlesung/diesem Skript behandelt. Alle anderen sind Bestandteil dieser Vorlesung. In diesem Kapitel sollen zunächst allgemeine Eigenschaften der Sprache, der grundlegende Syntax und die Kontrollstrukturen erklärt werden. Bei vielen Erklärungen sind Code-Beispiele vorhanden. Da man aus Fehlern am meisten lernt, sind zum Teil auch negative Beispiele enthalten. Für ein besseres Verständnis empfiehlt es sich, Code-Beispiele selbst nachzuvollziehen.<br /> Sofern sich die Eigenschaften auf eine bestimmte C-/C++- oder Compiler-Version beziehen, wird dies gesondert vermerkt. == Zeichensatz == Der Syntax von C nutzt die unteren 128 Zeichen des ASCII Zeichensatzes. Da UTF-8 in den ersten 128 Zeichen deckungsgleich zu ASCII ist, kann auch dieser zur Erstellung des Source Codes genutzt werden. Zeichen außerhalb dieses gültigen Zeichensatzes können folglich nur in Strings oder Kommentaren vorkommen. Werden Zeichen außerhalb der unteren 128 Zeichen in Strings genutzt, so gilt Folgendes zu berücksichtigen: * Die String-Funktionalitäten der Standard-C Library gehen von dem regulären ASCII Zeichensatz aus, so dass z.B. die Suche, der Vergleich oder die Konvertierung fehlschlagen kann * Strings werden oftmals in Verbindung mit printf() genutzt, d.h. auf der Standardausgabe ausgegeben. Der verwendete Zeichensatz sollte hier identisch zum verwendeten Zeichensatz der Terminal-Emulation sein! == Kommentarzeichen == Kommentare dienen dazu, den Source Code mit zusätzlichen Hinweisen zu versehen, so dass die Intension der Anweisungen sichtbar wird. Kommentarzeichen werden durch den Compiler vor dem eigentlichen Übersetzungsdurchlauf entfernt und durch ein Leerzeichen ersetzt [C11 6.4.9]. Innerhalb von Strings wird nicht nach Kommentarzeichen gesucht. <code> Syntax: /* */ </code> Blockkommentar zum Kommentieren eines Bereiches, auch über mehrere Zeilen hinweg. Dieses Kommentarzeichen kann nicht verschachtelt werden, d.h. '*/' beendet die Kommentierung, unabhängig von der Anzahl der zuvor geöffneten Kommentierungen! <code> Syntax: // </code> Zeilenkommentar zum Kommentieren bis zum Zeilenende (wurde in der Programmiersprache BCPL definiert, aber nicht von C, sondern erst von C++ übernommen). Sollen größere Bereiche auskommentiert werden, so empfiehlt sich die Nutzung der Präprozessoranweisung #if 0 ... #endif. Beispiele: <syntaxhighlight lang="C"> /* Blockkommentar mit zwei öffnenden Klammern /* über mehrere Zeilen, nicht verschachtelt */ //Zeilenkommentar /* Kleiner Bereich zum auskommentieren */ #if 0 Großer Bereich zum auskommentieren #endif </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> /* Blockkommentar mit zwei öffnenden Klammern /* über mehrere Zeilen, nicht verschachtelt Compiler-Warning nur aufgrund des Compiler-Schalters -Wall! */ //Zeilenkommentar /* Kleiner Bereich zum auskommentieren */ #if 0 Großer Bereich zum auskommentieren #endif int main(int argc,char *argv[]) { return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Namenskonventionen == Folgende Regeln gelten bzgl. der Benennung von Variablen und Funktionen: * Variablen und Funktionsnamen können aus Buchstaben, Zahlen und dem Unterstrich bestehen. Sie müssen mit einem Buchstaben oder einem Unterstrich beginnen * Seit C95 können weitere Zeichen aus dem Universal Coded Character Set (UCS) genutzt werden [C11 D.1] * C ist Case sensitiv, d.h. es wird zwischen Groß- und Kleinbuchstaben unterschieden * Schlüsselwörter können nicht für Variablen/Funktionsnamen/Datentypen genutzt werden Namenskonventionen von Libraryfunktionen: * In C (und C++) sind Schlüsselwörter und Standardlibraryfunktionen zumeist in Kleinbuchstaben geschrieben. In der C-Standardlibrary werden oftmals verkürzte Ausdrücke (z.B. isalnum() (zum Testen ob ein Zeichen ein Buchstaben oder ein Digit ist) und in C++ der Unterstrich als Worttrenner (z.b. out_of_range) genutzt * Makros (siehe Kap.[[Programmieren in C/C++: Präprozessor | Präprozessor]]) werden per Konvention in GROSSBUCHSTABEN und ggf. mit Unterstrich als Worttrenner geschrieben. * Namen beginnend mit doppelten Unterstrich oder beginnend mit einem Unterstrich gefolgt von einem Großbuchstaben (z.B. __LINE__ _Reserved) sind für den Compiler und der Standard-C-Library vorbehalten und sollten im eigenen Programm nicht benutzt werden. == Zeilenfortsetzung == Mit dem Backslash Operator (gefolgt von einem Zeilenende) kann eine Zeile in der nächsten Zeile fortgesetzt werden. Der Compiler löscht das \-Zeichen mit anschließendem Zeilenende und ersetzt dies durch nichts. Dies ist insbesondere bei Anweisungen notwendig, die am Ende der Zeile abgeschlossen sein müssen (z.B. Strings, Makros). Beispiele: <syntaxhighlight lang="c"> char str1[]="Strings müssen am Ende abgeschlossen sein so dass dies ein Fehler ist"; char str2[]="Dies\ ist ein Test"; //Vorsicht, führende Leerzeichen vor 'ist' //bleiben erhalten! /*mehrzeiliges Makro*/ #define MAX(a,b) (a>b?\ b: \ a) //Dies ist ein Zeilenkommentar \ welcher in dieser Zeile fortgesetzt wird /\ * dies ist ein Blockkommentar*\ / //hinter der Zeilenfortsetzung darf nur ein CR/LF folgen #define MAX2(a,b) \ //so dass hier kein Kommentar folgen darf a>b?a:b </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> char str1[]="Strings müssen am Ende abgeschlossen sein so dass dies ein Fehler ist"; char str2[]="Dies\ ist ein Test"; //Vorsicht, führende Leerzeichen vor 'ist' //bleiben erhalten! /*mehrzeiliges Makro*/ #define MAX(a,b) (a>b?\ b: \ a) //Dies ist ein Zeilenkommentar \ welcher in dieser Zeile fortgesetzt wird /\ * dies ist ein Blockkommentar*\ / //hinter der Zeilenfortsetzung darf nur ein CR/LF folgen #define MAX2(a,b) \ //so dass hier kein Kommentar folgen darf a>b?a:b int main(int argc,char *argv[]) { return 0; } | execCompilerOptions=| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Innerhalb von Char-Literatoren und Strings wird '\' als Escape-Operator genutzt, welche das '\' und ein oder mehrere folgende Zeichen ersetzt (siehe Kap.[[Programmieren in C/C++: Grundlagen#Literale/Konstanten | Grundlagen:Literale/Konstanten]]). Daher darf hinter Backslash als Zeilenfortsetzungszeichen kein weiteres Zeichen folgen. == Gültigkeit/Sichtbarkeit von Variablen == Vorrangig in der objektorientierten Programmierung werden mit Namensräumen Objekte und deren Methoden/Attribute in einer Art Baumstruktur strukturiert. Dies ermöglicht eine eindeutige Ansprache von Variablen/Objekte, aber auch eine doppelte Verwendung von Methoden-/Attributnamen in unterschiedlichen Namensräumen. Ergänzend zu den Namensräumen kann mit public/private/proteced eine Zugriffsbeschränkung von Methoden/Attributen definiert werden. Die Programmiersprache C unterstützt keinen Namensraum. Zugriffsmodifikatoren werden indirekt über Header-Dateien getätigt. Hinsichtlich der Gültigkeit/Sichtbarkeit unterscheidet C folgende Bereiche [C11 6.2.1]: * Funktionen (Function Scope) * Datei (File Scope) * Block (Block Scope) * Funktionsparameter in Prototypen (Function Prototype Scope) Innerhalb eines Gültigkeitsbereiches dürfen Variablen-/Funktions-/Datentypnamen nicht doppelt genutzt werden.<br /> In der Programmiersprache C++ sind weitere Scope wie z.B. Class Scope, Enumationation Scope und ergänzend das Konzept von Namensräumen vorhanden (Beschreibung folgt). === Funktionsweite Sichtbarkeit === Eine Label-Definition (als Sprungmarke für die goto-Anweisungen) erfolgt immer mit funktionsweiter Sichtbarkeit/Gültigkeit. Die genaue Beschreibung dieses Sichtbarkeitstyps erfolgt im Rahmen des Kapitels [[Programmieren in C/C++: Grundlagen #Label + Goto|Grundlagen:Label+Goto]]. === Dateiweite Sichtbarkeit === Erfolgt eine Funktion-/Variablen-/Datentyp-Definition außerhalb eines Block-Scopes oder von Funktionsparameter, so sind diese innerhalb der gesamten Datei und bei Funktionen/Variablen ergänzend Projektweit (für alle Objektdateien) sichtbar/gültig (=&nbsp;global) (In der C-Spec unter dem Stichwort 'Linkage' beschrieben, siehe Kapitel [[Programmieren in C/C++: DatentypeSpecifier#Internal/External Linkage| DatentypeSpecifier:Internal/External Linkage]]). Alle globalen Funktionen/Variablen können von allen Dateien aus genutzt/zugegriffen werden (sofern sie zuvor deklariert wurden).<br /> Beispiel: {| class="wikitable" |- ! Datei1.c !! Datei2.c |- | <syntaxhighlight lang="C"> //Deklaration von func(), //welche in Datei2.c definiert wird extern void func(void); //Definition der Variablen global int global=0; int main(void) { func(); global++; return 0; } </syntaxhighlight> || <syntaxhighlight lang="C"> //Deklaration von global, //welche in Datei1.c definiert wird extern int global; //Definition der Funktion func() void func(void) { global++; } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Deklaration von func(), //welche in Datei2.c definiert wird extern void func(void); //Definition der Variablen global int global=0; int main(void) { func(); global++; printf("global=%d\n",global); return 0; } | datei2_c=#include <stdio.h> //Deklaration von global, //welche in example.c definiert wird extern int global; //Definition der Funktion func() void func(void) { global++; printf("func() called\n"); } | execCompilerOptions=-Wall datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Wird das Schlüsselwort 'static' der Variablen/Funktionsdefinition vorangestellt, so wird die Sichtbarkeit/Gültigkeit auf Dateiweit eingeschränkt. Variablen/Funktionen können nur innerhalb der (Objekt-) Datei genutzt werden und sind für anderen (Objekt-)Dateien unsichtbar. (Siehe Kap. [[Programmieren in C/C++: DatentypeSpecifier#Internal/External Linkage|DatentypeSpecifier:Internal/External Linkage]] Internal/External Linkage) {| class="wikitable" |- ! Datei1.c !! Datei2.c |- | <syntaxhighlight lang="C"> //Dateiweite Sichtbarkeit von var1 static int var1; int main(void) { var1++; return 0; } </syntaxhighlight> || <syntaxhighlight lang="C"> //Dateiweite Sichtbarkeit von var1 static int var1; void func(void) { static int var2; //Vorsicht, static // hat hier eine andere Bedeutung var1++; } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Dateiweite Sichtbarkeit von var1 static int var1; int main(void) { var1++; printf("example.c:var1=%d\n",var1); void func(void); //Prototyp für func() func(); return 0; } | datei2_c=#include <stdio.h> //Dateiweite Sichtbarkeit von var1 static int var1; void func(void) { static int var2; //Vorsicht, static // hat hier eine andere Bedeutung var1++; printf("datei2.c:var1=%d\n",var1); } | execCompilerOptions=datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Projektweite Gültigkeit bedeutet insbesondere, dass keine doppelten Benennung von Variablen/Funktionen/Datentypen innerhalb des gesamten Projektes erlaubt sind, d.h. alle Variablen/Funktionennamen über alle Dateien/Librarys eindeutig sein müssen.<br> Beispiel 1: {| class="wikitable" |- ! Datei1.c !! Datei.2 |- | <syntaxhighlight lang="C"> #include <stdio.h> int a=1; int main(int argc,char *argv[]) { printf("Hello World %d",a); void dummy(void); //Deklaration von Dummy dummy(); return 0; }</syntaxhighlight> || <syntaxhighlight lang="C"> #include <stdio.h> int a=7; void dummy(void) { printf("Hello Again %d\n",a); } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int a=1; int main(int argc,char *argv[]) { printf("Hello World %d",a); void dummy(void); //Deklaration von Dummy dummy(); return 0; } | datei2_c=#include <stdio.h> #include <stdio.h> int a=7; void dummy(void) { printf("Hello Again %d\n",a); } | execCompilerOptions=datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Der Linker meldet beim Zusammenfügen der Objekt-Dateien, dass die Variable a bereits woanders definiert sei (multiple definition of `a';)! Beispiel 2: <syntaxhighlight lang="C"> #include <stdio.h> //fuer printf() size_t stderr int printf=7; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int printf=7; int main(int argc,char *argv[]) { return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hier meldet der Compiler eine Fehlermeldung, da das Symbol printf zu einen als Variable und zum anderen als Funktion (innerhalb der inkludierten Datei stdio.h beschrieben) genutzt wird ('printf' redeclared as different kind of symbol). === Blockweite Sichtbarkeit === Erfolgt eine Funktion-/Variablen-/Datentyp Definition innerhalb einer Funktion, als Funktionsparameter oder eines Blockes, so sind diese nur innerhalb des Blockes sichtbar/gültig (=Lokale Variable). Blöcke können verschachtelt sein, so dass das bei identischer Namensgebung innere Definitionen Vorrang haben. Ebenso haben Blockdefinitionen Vorrang vor Datei-/Projektdefinitionen (überdecken diese): {| class="wikitable" |- ! Datei1.c !! Datei2.c |- | <syntaxhighlight lang="C"> int main(void) { int var2; //var2 ist nur innerhalb //von main() sichtbar struct xyz //Datentyp ist nur innerhalb {int x,y,z;};//von main() //sichtbar/gültig extern void func(void); //Deklaration //ist nur innerhalb von //main() sichtbar/gültig func(); } void foo(void) { struct xyz var_xyz; //Fehler, da //Datentypedefinition hier nicht mehr //gültig ist! func(); //Fehler, da Deklaration //hier nicht mehr gültig ist } </syntaxhighlight> || <syntaxhighlight lang="C"> #include <stdio.h> void func(void) { int var2=1; //var2 ist //nur innerhalb von //func() sichtbar { int var2=2; //var2 ist nur innerhalb //dieses Blockes sichtbar printf("%d\n",var2); } printf("%d\n",var2); } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(void) { int var2; //var2 ist nur innerhalb //von main() sichtbar struct xyz //Datentyp ist nur innerhalb {int x,y,z;};//von main() //sichtbar/gültig extern void func(void); //Deklaration //ist nur innerhalb von //main() sichtbar/gültig func(); } void foo(void) { struct xyz var_xyz; //Fehler, da //Datentypedefinition hier nicht mehr //gültig ist! func(); //Fehler, da Deklaration //hier nicht mehr gültig ist } | datei2_c=#include <stdio.h> void func(void) { int var2=1; //var2 ist //nur innerhalb von //func() sichtbar { int var2=2; //var2 ist nur innerhalb //dieses Blockes sichtbar printf("%d\n",var2); } printf("%d\n",var2); } | execCompilerOptions=-Wall datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Sichtbarkeit von Funktionsparameter in Protypen === Soll eine Funktion aufgerufen werden, die zuvor nicht definiert wurde, so ist ein Prototyp/(Forward)deklaration der Funktion notwendig (siehe nachfolgendes Kapitel). Die Parameterliste dieses Prototyps hat seinen eigenen Gültigkeitsbereich.<br/> Beispiel: <syntaxhighlight lang="C"> int a; //a im File Scope int func(int a, int b); //a und b im Function Prototyp scope </syntaxhighlight> Hinweis: * Bei Prototypen ist die Angabe von Variablenname nicht notwendig. Die alleinige Angabe des Datentyps ist ausreichend === Zuordnung der Gültigkeitsbereiche zu globalen/lokalen Variablen === Zum einfacheren Verständnis wird im Skript von folgenden Begrifflichkeiten gesprochen: * '''Globale''' Variablen-/Funktionen-/Datentypdefinitionen → Projektweite Sichtbarkeit/Gültigkeit * '''Statisch globale''' Variable/Funktionen → Dateiweite Sichtbarkeit/Gültigkeit * '''Lokale''' Variablen/Funktionen/Funktionsparameter/Datentypen → Nur innerhalb des zugehörigen Blockes sichtbare/gültig * '''Statisch lokale''' Variablen → Nur innerhalb der Funktion sichtbar/gültig, mit der Besonderheit, dass die Gültigkeit über der Laufzeit der Funktion gilt (siehe Kap. [[Programmieren in C/C++: DatentypeSpecifier#Static Storage Class Specifier|DatentypeSpecifier:Static Storage Class Specifier]]) === Speicherzuweisung === Für die einzelnen Gültigkeitsbereiche werden im Speicher (und auch in der Objekt-Datei) unterschiedliche Speicherbereiche (Segmente) vorgehalten, d.h. der Compiler teilt den Speicher in unterschiedliche Bereiche auf und weist den Variablen/Funktionen in Abhängigkeit der Gültigkeit/Sichtbarkeit unterschiedliche Speicherbereiche zu! [[File:Zuordnung von Inhalten eines C-Programms zu Speicherbereichen (Segmenten).png|thumb|Zuordnung von Inhalten eines C-Programms zu Speicherbereichen (Segmenten)]] Zur Ermöglichung von Rekursion werden lokale Variable auf dem Stack gehandelt. Mit Aufruf einer Funktion oder öffnen eines neuen Block-Scopes wird Speicher auf dem Stack reserviert, der bei Beenden des Scopes wieder freigegeben wird. Die Speicheradresse von lokalen Variablen ist somit nicht Fix, sondern hängt von der Aufrufhierarchie ab! Globale und statisch globale Variablen werden nicht auf dem Stack gehalten, sondern bekommen einen 'festen' Speicherbereich (hier DATA/BSS/RODATA) während der gesamten Laufzeit des Programms zugewiesen. Die Adresse dieser Variablen sind somit konstant. Das genutzte Speichersegment von globalen Variablen hängen von der Art der Variablen ab. Initialisierte Variablen werden im DATA-Segment gesammelt, welcher mit dem Initialisierungswert der Variablen initialisiert wird. Nicht initialisierte globale Variablen landen im BSS-Segment, so dass diese mit Programmstart durch Füllen dieses Blockes mit 0 auf 0 gesetzt werden. Konstante globale Variablen werden im RODATA-Segment gehalten. Über das Betriebssystem kann dieser Speicherbereich auf nur Lesbar gesetzt werden. Dynamische Speicheranforderungen, resp. Speicher, dessen Gültigkeit über die Laufzeit einer Funktion hinausgeht, wird im Heap gesammelt. Für die Verwaltung dieses Speichers ist der Programmierer zuständig. Entsprechend globalen Variablen wird für Funktionen ebenfalls ein eigener Speicherbereich (TEXT Segment) vorgesehen. Im Gegensatz zu Variablen, wo im Speicher der dazugehörige Inhalt gespeichert ist, ist der Speicherinhalt von Funktionen die Maschinenanweisungen. Die Speicheradresse der Funktionen sind konstant. Hinweis: * Die Speicheradresse von sowohl globalen und statisch globalen Variablen als auch von Funktionen ist konstant und ändert sich während der Laufzeit des Programms nicht. Die Adressvergabe dieser Variablen und Funktionen erfolgt somit nicht zur Laufzeit sondern durch die Toolchain (hier der Linker). * Dieses Konzept ist allgemeingültig, gilt nicht nur für die Programmiersprache C/C++ == Definition/Deklaration(Prototyp) == Der C-Compiler ist ein Single-Pass Compiler (siehe Kap [[Programmieren in C/C++: Einführung/Literatur#Arbeitsweise eines Compilers | Einführung/Literatur:Arbeitsweise eines Compilers ]]), d.h. für den Übersetzungsvorgang wird der Quellcode einmalig eingelesen und von vorne nach hinten abgearbeitet. Dies bedingt, dass keine Vorwärtsbezüge im Quelltext enthalten sein dürfen: * keine Variable genutzt werden kann, die erst später definiert wird (da der Compiler in Abhängigkeit des Datentyps (den er dann noch nicht kennt) keine entsprechende Maschinensprachebefehle erzeugen kann) * keine Funktion aufgerufen werden kann, die erst später definiert wird (da der Compiler nicht weiß, welcher Datentyp die Übergabewerte haben und folglich keine Maschinensprachebefehle zur Konvertierung und Übergabe der Variablen erzeugen kann) * kein Datentyp genutzt werden kann (struct, union, enum, typedef), welcher erst später definiert wird (da der Compiler nicht weiß, wieviel Speicher er für die Variable reservieren muss) Eine Lösungsvariante dieser Problematik ist, im Quellcode alle Variablen/Funktionen/Datentypen/Makros zu definieren, bevor diese erstmalig genutzt werden (Funktion main() steht dann folglich am Ende des Quellcodes): <syntaxhighlight lang="C"> void foo(void) { //foo() wird vor dem ersten Aufruf definiert //Hier kein Zugriff auf var möglich! //Hier kein Zugriff auf Datentyp uchar möglich! } int var; //var wird vor dem ersten Aufruf definiert typedef unsigned char uchar; //Definition des Datentyps uchar int main(void) { foo(); //da zuvor definiert kann diese Funktion hier aufgerufen werden var++; //dito } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void foo(void) { //foo() wird vor dem ersten Aufruf definiert var++; //Hier kein Zugriff auf var möglich! uchar xyz;//Hier kein Zugriff auf Datentyp uchar möglich! } int var; //var wird vor dem ersten Aufruf definiert typedef unsigned char uchar; //Definition des Datentyps uchar int main(int argc, char *argv[]) { foo(); //da zuvor definiert kann diese Funktion hier aufgerufen werden var++; //dito } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Sollen globale Funktionen/Variablen in Datei1.c genutzt werden, die in Datei2.c definiert sind, so schlägt diese Vorgehensweise fehl. Um auch dieses zu ermöglichen, bietet C die Möglichkeiten von Prototypen/Deklarationen an. Diese teilt dem Compiler mit, wie im späteren Ablauf die Variable, die Funktion definiert wird, bzw. dass es diesen Datentyp geben wird: {| class="wikitable" |- ! Datei1.c !! Datei2.c |- | <syntaxhighlight lang="C"> //Prototyp für Variable var extern int var; //Prototyp für Funktion foo void foo(void); int main(int argc, char *argv[]) { foo(); //Compiler kann aufgrund var++; //der Prototypen diese //Aufruf in Maschinen- //sprachebefehle umsetzen } </syntaxhighlight> || <syntaxhighlight lang="C"> //Definition der Variablen var int var; //Definition der Funktion foo void foo(void) { } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Prototyp für Variable var extern int var; //Prototyp für Funktion foo void foo(void); int main(int argc, char *argv[]) { foo(); //Compiler kann aufgrund var++; //der Prototypen diese //Aufruf in Maschinen- //sprachebefehle umsetzen } | datei2_c=#include <stdio.h> //Definition der Variablen var int var; //Definition der Funktion foo void foo(void) { } | execCompilerOptions=-Wall datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Innerhalb der C-Spezifikation werden für den Umgang mit dieser Problematik die Begriffe 'Declaration' und 'Definition' genutzt. Da diese Begriffe jedoch nicht klar abgegrenzt werden und auch für viele weitere Aspekte genutzt werden, sollen in diesem Skript in Anlehnung an den Wikipedia Artikel {{w|Deklaration (Programmierung)|Deklaration (Programmierung)}} (im Absatz zur Programmiersprache C/C++) die Begriffe Definition/Deklaration wie folgt genutzt werden: ;Definition: entspricht der Belegung/Reservierung von Speicherplatz :* Bei der Definition einer Variablen wird hiermit Speicherplatz entsprechend dem Datentyp der Variable belegt: :<syntaxhighlight lang="C"> int var1; //entsprechend der Größe des Datentyps int wird //Speicherplatz für die Variable var1 reserviert int var2=4711; //Dito, ergänzend wird dieser Speicherplatz mit dem //Wert 4711 initialisiert </syntaxhighlight> :* Bei einer Funktion wird Speicherplatz zur Aufnahme der Maschinenbefehle belegt: :<syntaxhighlight lang="C"> void foo(void) { //Die Anweisungen in den geschweiften Klammern //werden in Maschinenbefehle übersetzt. D.h. die //Funktion foo() belegt Speicher, dessen Inhalt //die Maschinensprachebefehle sind } </syntaxhighlight> :* Ergänzend wird der Begriff Definition auch in Verbindung mit der Definition von neuen Datentypen genutzt! ;Deklaration/Prototyp: ist die Mitteilung an den Compiler, wie diese Variable/Funktion an einer späteren Stelle im Source-Code oder in einer anderen Source-Datei definiert wird. Auf Grundlage dieser 'vorab' Information kann der Compiler die passenden Maschinensprachebefehle für den Zugriff/Aufruf auf die Variablen/Funktion einsetzen: :<syntaxhighlight lang="C"> extern int var1; //Deklaration von var1 extern void foo(void); //Deklaration von foo() void foo(void); //Deklaration von foo() </syntaxhighlight><br /> Insbesondere bei dem Umgang mit der Deklaration gilt es Folgendes zu berücksichtigen: * Deklarationen werden entweder: :* am Anfang einer C-Datei geschrieben, so dass Funktionen/Variablen im Zugriff stehen, die erst später in der C-Datei definiert werden (entspricht dann der Private Anweisung in anderen Sprachen) :* in Header-Dateien geschrieben, so dass diese Variable/Funktionen für alle sichtbar sind, welche diese Header-Datei einbinden (entspricht der Public Anweisung in anderen Sprachen) * Deklarationen von Funktionen werden in der C-Spec als (function) Prototyp bezeichnet und sind dadurch gekennzeichnet, dass diese mit einem Semikolon abgeschlossen sind. Der Specifier 'extern' ist hier optional und sagt eigentlich aus, dass diese Funktion external Linkage besitzt (siehe [[Programmieren in C/C++:_DatentypeSpecifier#Internal/External Linkage | DatentypeSpecifier:Internal/External Linkage]]). Die Benennung der Parametervariablen sind gleichermaßen optional: :<syntaxhighlight lang="C"> extern int foo(int var1, float var2); //Deklaration extern int foo(int , float ); //Deklaration int foo(int var1, float var2); //Deklaration + external Linkage int foo(int , float ); //Deklaration + external Linkage </syntaxhighlight> * Für globale Variablen gibt es keine (Variablen) Prototype. Stattdessen muss zur Bekanntgabe des Datentyps der Specifier 'extern' vorangestellt werden, mit welchen ergänzend zum Ausdruck gebracht wird, das diese Variable external Linkage und damit globale Gültigkeit hat (siehe Kap [[Programmieren in C/C++: DatentypeSpecifier# Extern - Storage Class Specifier| DatentypeSpecifier:Extern - Storage Class Specifier]]). Da die Deklaration einzig zur Bestimmung der Zugriffsmethoden auf Maschinenspracheebene genutzt wird, können diese keine Initialisierungswerte enthalten: :<syntaxhighlight lang="C"> extern int var1; extern int var2=7; //KO Deklarationen können keine //Initialisierungswerte haben </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> extern int foo; extern int foo=7; int main(int argc, char *argv[]) { return foo; } int foo=7;| execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Deklarationen von statisch globalen, lokalen und statisch lokalen Variablen nicht möglich sind: :<syntaxhighlight lang="C"> extern static int glob; //keine Deklaration von statisch globalen //Variablen möglich int main(int argc, char *argv[]) { extern int var; //Deklaration bezieht sich auf eine globale //Variable, die nicht definiert ist extern static int lok; printf("%d %d\n",var,lok); int var; static int lok; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> extern static int glob; //keine Deklaration von statisch globalen //Variablen möglich int main(int argc, char *argv[]) { extern int var; //Deklaration bezieht sicht auf eine globale //Variable, die nicht definiert ist extern static int lok; printf("%d %d\n",var,lok); int var; static int lok; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Deklarationen für identische Variablen/Funktionen können beliebig oft erfolgen, sofern der Datentyp identisch ist: :<syntaxhighlight lang="C"> extern int var; extern int var; //OK, doppelt Deklaration mit identischen Datentyp extern unsigned int var; //KO, Doppelte Deklaration mit unterschiedlichen // Datentyp </syntaxhighlight> * Sofern eine Deklaration und eine Definition in der identischen Datei erfolgen überprüft der Compiler, ob Deklaration und Definition identisch sind. Es empfiehlt sich, die eigene Header-Datei (in welcher die Deklaration normalerweise enthalten ist) zu inkludieren: :{| class="wikitable" |- ! Datei1.c !! Datei1.h |- | <syntaxhighlight lang="C"> //Include der eigenen Header-Datei #include "datei1.h" int var1; //Definition von var1 short var2; //Definition von var2 int var3; //Private Variable //da kein Prototyp //im Header vorhanden void func(void) { } </syntaxhighlight> || <syntaxhighlight lang="C"> extern int var1; //Deklaration extern char var2; //KO, da Deklaration //von Definition //abweicht void func(int); //KO, da Deklaration //von Definition //abweicht </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Include der eigenen Header-Datei #include "example.h" int var1; //Definition von var1 short var2; //Definition von var2 int var3; //Private Variable //da kein Prototyp //im Header vorhanden void func(void) { } int main(int argc, char *argv[]) { return 0; } | example_h= extern int var1; //Deklaration extern char var2; //KO, da Deklaration //von Definition //abweicht void func(int); //KO, da Deklaration //von Definition //abweicht | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Innerhalb einer Datei kann eine Variable identischen Datentyps mehrmals definiert werden (bei identischen Initialisierungswert). Diese Definitionen werden vom Compiler als eine Definition angesehen. Wenn jedoch eine identische Variable in unterschiedlichen Dateien definiert wird, so legt jede Datei eine eigene unabhängige Variable an, welche dann beim Zusammenführen der Objektdateien durch den Linker zu Fehler führt. Da Header-Datei zumeist in mehrere C-Dateien inkludiert werden, sind Definitionen in Header-Dateien 'verboten'. * Deklarationen innerhalb eines Block-Scopes oder eines Function Prototyp Scopes sind nur in diesen Bereich gültig. == Grundlegende Datentypen und Typsicherheit == Die Programmiersprache C kennt folgende grundlegende Datentypen (siehe Kap. [[Programmieren in C/C++: Datentypen | Datentypen]]). Von jedem Datentyp kann ein Zeiger angelegt werden: {| class="wikitable" |- ! Datentyp !! Bsp. für Datentyp !! Bsp. für Zeiger auf Datentyp |- | Ganzzahl || <syntaxhighlight lang="C"> char var; int var; short int var; long int var; long long int var; </syntaxhighlight> || <syntaxhighlight lang="C"> char *ptr; int *ptr; short int *ptr; long int *ptr; long long int *ptr; </syntaxhighlight> |- | Gleitkommazahl || <syntaxhighlight lang="C"> double var; float var; long double var; </syntaxhighlight> || <syntaxhighlight lang="C"> double *ptr; float *ptr; long double *ptr; </syntaxhighlight> |- | Funktionen || <syntaxhighlight lang="C"> void func(void) {} </syntaxhighlight> || <syntaxhighlight lang="C"> void (*pfunc)(void); </syntaxhighlight> |- | Arrays || <syntaxhighlight lang="C"> int arr[10]; float arr[3][3]; </syntaxhighlight> || <syntaxhighlight lang="C"> int (*parr); float (*parr)[3]; void (*pfunc[5])(void); </syntaxhighlight> |- | Strukturen/Unions || <syntaxhighlight lang="C"> struct xyz {int x,y,z}; union abc {int a,b,c}; </syntaxhighlight> || <syntaxhighlight lang="C"> struct xyz *ptr; union abc *ptr; </syntaxhighlight> |- | Aufzählungstyp || <syntaxhighlight lang="C"> enum abc {A,B,C}; </syntaxhighlight> || <syntaxhighlight lang="C"> enum abc *ptr; </syntaxhighlight> |- | Boolescher Datentyp || <syntaxhighlight lang="C"> _Bool var; </syntaxhighlight> || <syntaxhighlight lang="C"> _Bool *ptr; </syntaxhighlight> |- | Komplexe Zahlen || <syntaxhighlight lang="C"> _Complex var; </syntaxhighlight> || <syntaxhighlight lang="C"> _Complex *ptr; </syntaxhighlight> |} C/C++ unterscheidet zwischen vorzeichenbehafteten <code>signed</code> und vorzeichenlosen <code>unsigned</code> ganzzahligen Datentypen. Vorzeichenlose Datentypen können nur positive Zahlen incl. der 0 aufnehmen (Anwendungsbereich bspw. Speicheradressen/Arrayindexe, welche nicht negativ sein können). Deren max. Zahlenwert ergibt sich aus der Datenbreite N des Datentyps 2<sup>N</sup>-1. Ein Vergleich eines vorzeichenlosen Datentyps mit ≥ 0 ist somit immer TRUE: <syntaxhighlight lang="C"> unsigned char var=0; if(var >= 0) //Bedingung ist immer erfüllt, so dass printf("Bedingung erfüllt"); //dieser ggf. vom Compiler wegoptimiert wird! for(var=10; var>=0; var--); //Endlosschleife! 0 dekrementiert ergibt 255 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> int main(int argc,char *argv[]) { unsigned char var=0; if(var >= 0) //Bedingung ist immer erfüllt, so dass printf("Bedingung erfüllt\n"); //dieser ggf. vom Compiler wegoptimiert wird! //Beim Öfffnen des Compiler-Fensters ist die IF-Anweisung nicht farblich //hervorgehoben. Dies bedeutet, dass diese Zeile wegoptimiert wurde und folglich //kein Maschinencode für diese Anweisung erzeugt wurde for(var=10; var>=0; var--) //Endlosschleife! 0 dekrementiert ergibt 255 printf("%u ",var),fflush(stdout); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Vorzeichenlose Datentypen halbieren den verfügbaren Zahlenbereich und 'weisen' dem oberen Wertebereich den negativen Zahlen zu.<br> Wird ein ganzzahliger Datentyp ohne Angabe des Vorzeichentyps (signedness) definiert, so ist diese vorzeichenbehaftet. Bei vorzeichenlosen Variablen muss explizit <code>unsigned</code> vorangestellt werden. Die Voranstellung von <code>signed</code> ist optional. Einzige Ausnahme stellt der Datentyp char dar. Hier gibt die Spezifikation keine default signedness vor, so dass bei Nutzung dieses Datentyps zur Aufnahme von Zahlen immer signed oder unsigned vorangestellt werden sollte!<br> Innerhalb des Formatstrings bei den printf()/scanf() Anweisungen '''muss''' die signedness vom Programmierer händisch berücksichtigt werden. Die Formatanweisung %d und %i interpretieren die übergebenen Zahl als vorzeichenbehaftete Zahl. Soll eine vorzeichenlose Zahl ausgegeben werden, so muss %u verwendet werden: <syntaxhighlight lang="C"> signed int vari=-10; unsigned int varu=3000000000; printf("vari=%d varu=%u",vari,varu); //Korrekt printf("vari=%u varu=%i",vari,varu); //Falsche Werteausgaben! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> int main(int argc,char *argv[]) { signed int vari=-10; unsigned int varu=3000000000; printf("vari=%12d varu=%12u\n",vari,varu); //Korrekt printf("vari=%12u varu=%12i\n",vari,varu); //Falsche Werteausgaben! return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Mit der Definition (dem Anlegen) einer Variablen eines Datentyps wird Speicher entsprechend der Größe des Datentyps reserviert. Optional kann dieser Speicher initialisiert werden. Über den Datentyp wird ausgesagt, wie der Inhalt des Speichers zu interpretieren ist: <syntaxhighlight lang="C"> char var1; //Speicherplatzreservierung von 1 Byte //Inhalt der Speicherstelle wird als Zahl interpretiert //(Hinweis: ASCII-Zeichen sind Zahlen) double var2=47.11; //Speicherplatzreservierung von 8 Byte //Inhalt der Speicherstellen wird als Gleitkommazahl //interpretiert (bestehend aus je einer Ganzzahl für //Mantisse und Exponent) short arr[10]; //Speicherplatzreservierung von 10*2 Byte //Inhalt der 10 Speicherstellen werden als Ganzzahl //interpretiert </syntaxhighlight> Die Funktionalität der Operatoren hängt vom Datentyp der Operanden ab. Der Plus-Operator angewendet auf ganzzahlige Operanden führt eine Ganzzahl Addition aus, angewendet auf gleitkomma Operanden eine Gleitkomma Addition. Ist einer der Operanden ein Zeiger, so wird eine Zeigeraddition angewendet. Für andere Datentypen ist der Plus-Operator nicht definiert, so dass der Compiler einen Fehler wirft. '''Bei der Betrachtung eines Ausdruckes sollte dem genutzten Datentypen folglich eine besondere Aufmerksamkeit zuteil werden''': <syntaxhighlight lang="C"> int vari=47; vari+12; //(int) + (int) → Ganzzahladdition float varf=12.3; 3.1415F+varf; //(float) + (float) → Gleitkommaaddition int *ptr=&vari; ptr+3; //(int *) + (int) → Zeigeraddition int arr[3]; arr+3; //(int (*)) + (int) → Zeigeraddition </syntaxhighlight> Das Ergebnis einer Operation hat ebenfalls einen Datentyp. Eine Ganzzahl Addition gibt bspw. als Ergebnis einen Ganzahl Datentyp zurück, eine Gleitkomma Addtition einen Gleitkomma Datentyp und ein Vergleichsoperator den Datentyp _Bool: <syntaxhighlight lang="C"> int vari1=47; int vari2=11; vari1 + 12 + vari2; //((int)+(int)+(int))→((int)+(int))→(int) 40 < vari1 < 50; //((int)<(int)<(int))→((_Bool=int)<(int))→(_Bool=int) </syntaxhighlight> Wie Operatoren haben auch Funktionen Operanden (in Form von Übergabeparameter). Das Ergebnis eines Funktionsaufrufes wird ebenfalls in Form eines Datentyps zurückgegeben: <syntaxhighlight lang="C"> float add(int par1,par2) {return par1+par2;} int vari1=47; int vari2=11; vari1 + add(var2,12); //(int)+((int),(int)→(float))→(int)+(float)→(float) </syntaxhighlight> Wird auf einen Operator gleichermaßen ein vorzeichenbehafteter und ein vorzeichenloser Operand angewendet, so kann es zu unerwarteten Konvertierungsproblemen führen: <syntaxhighlight lang="C"> unsigned char varu=12; signed char vars=-12; float varf; varf = varu + vars; if(vars < varu) </syntaxhighlight> Sind die Datentypen der Operanden nicht 'kompatibel', so 'passt' der Compiler die Datentypen im Falle von Ganzahl und Gleitkomadatentypen per impliziter Regel an (siehe Kap. [[Programmieren in C/C++: Datentypen#Implizite Typumwandlung | Datentypen:Implizite Typumwandlung]]). Über explizite Typumwandlung (siehe Kap.[[Programmieren in C/C++: Datentypen# Explizite Typumwandlung|Datentypen:Explizite Typumwandlung]]) kann ein Datentyp z.T. in einen anderen Datentyp gewandelt werden. In allen anderen Fällen ist C Typsicher, d.h. der Compiler gibt zumindest eine Warning aus, wenn die Datentypen nicht identisch sind und der Compiler keine implizite Regel anwenden kann. Tipp: * Compiler gibt bei Fehlermeldung oftmals die erwarteten und die vorhandenen Datentyp an. Wenn solch eine Fehlermeldung kommt, sollten sie sich a) überlegen, was wollten sie syntaktisch geschrieben haben und b) was haben sie in der Tat geschrieben. Ein Google nach einer Lösung des Compilerproblems löst zumeist nicht das Problem, sondern umgeht es! Hinweis: * Ein guter Programmierer sollte die Datentypen so wählen, dass: :* die Datentypen zum Inhalt und zum Wertebereiches passen :* keine Datentypkonvertierungen notwendig sind : andernfalls besteht die Gefahr, dass hiermit Laufzeitfehler einprogrammiert werden. * Wenn Datentypkonvertierungen notwendig sind, sollte die explizite Konvertierung genutzt werden == Abhängigkeiten bzgl. Rechnerarchitektur == Kenngrößen von Prozessoren sind unter anderem die Anzahl der Bits für den Datentransport und für Arithmetisch-/Logische-Operationen (→ Datenbreite) und die Anzahl der Bits für die Adressierung des Speichers (→ Adressierungsbreite). Die Datenbreite sagt dabei aus, welche max. Datenbreite ein Maschinenbefehl (zumeist in einem Taktzyklus) transportieren/berechnen kann. Werden programmtechnisch größere Datenbreiten benötigt, bedingt dies, dass hierzu mehrere Maschinenbefehle notwendig sind. Wenn kleinere Datenbreiten notwendig sind, so wird oftmals das Ergebnis abgeschnitten (sofern der Prozessor keine Befehle für den Umgang mit kleineren Datentyp beherrscht): {| class="wikitable" |- ! 32-Bit Datentransport/Operation<br /> bei 32-Bit Datenbreite ! 64-Bit Datentransport/Operation<br /> bei 32-Bit Datenbreite ! 16-Bit Datentransport/Operation<br /> bei 32-Bit Datenbreite |- | <syntaxhighlight lang="C"> int32_t a32,b32; </syntaxhighlight> || <syntaxhighlight lang="C"> int64_t a64,b64; </syntaxhighlight> || <syntaxhighlight lang="C"> int16_t a16,b16; </syntaxhighlight> |- | <syntaxhighlight lang="asm"> // a32=b32; mov eax,b32 mov a32,eax </syntaxhighlight> || <syntaxhighlight lang="asm"> // a64=b64; mov eax ,b64 mov edx ,b64+4 mov a64 ,eax mov a64+4,edx </syntaxhighlight> || <syntaxhighlight lang="asm"> //a16=b16; movz eax,b16 mov a16,ax </syntaxhighlight> |- | <syntaxhighlight lang="asm"> // a32=a32+b32; mov edx, a32 mov eax, b32 add eax, edx mov a32, eax </syntaxhighlight> || <syntaxhighlight lang="asm"> // a64=a64+b64; mov ecx , a64 mov ebx , a64+4 mov eax , b64 mov edx , b64+4 add eax , ecx adc edx , ebx mov a64 , eax mov a64+4, edx </syntaxhighlight> || <syntaxhighlight lang="asm"> // a16=16+b16; movzx eax, a16 mov edx, eax movzx eax, b16 add eax, edx mov a16, ax </syntaxhighlight> |} Die Adressierungsbreite gibt an, mit welcher Bitbreite der Speicher adressiert werden kann: * Bei einem 32-Bit System können 2<sup>32</sup>=4.294.967.295=4Gi&nbsp;Bytes/Speicherstellen adressiert werden * Bei einem 16-Bit System können 2<sup>16</sup>=65.536=64Ki&nbsp;Bytes/Speicherstellen adressiert werden * Bei einem 64-Bit System können 2<sup>64</sup>=18.446.744.073.709.551.616 =16Ei ~18Exa&nbsp;Bytes/Speicherstellen adressiert werden Waren die Datenbreite und die Adressierungsbreite bei den ersten Prozessoren noch unterschiedlich, so sind diese heutzutage zumeist identisch. Bei einem 32-Bit Prozessor bedeutet dies, dass dieser max. 4Gi&nbsp;Bytes Speicherstellenstellen adressieren kann und Maschinenbefehle für den Datentransport und die Berechnung von 32-Bit Datenworten beinhaltet. Die Datenbreite und auch die Adressierungsbereite haben direkten Einfluss auf die Programmiersprache: * Wird defaultmäßig mit größerer Datenbreite gerechnet, als der Prozessor 'von Hause' aus unterstützt, so werden die erzeugten Maschinenprogramme größer und langsamer (Umgedreht bedeutet dies jedoch nicht, dass die Maschinenprogramme kleiner und schneller werden) * Die max. Größe von Verbunddatentypen und Arrays ergibt sich aus der Adressierungsbreite des Prozessors Die Intention der Programmiersprache C/C++ ist, die Prozessorarchitektur optimal zu nutzen. Dementsprechend sind diverse Eigenschaften der Sprache nicht fest spezifiziert, sondern von der Rechnerarchitektur abhängig. === Integer Datentyp === Intention von C/C++ ist, dass der Umgang mit dem Grunddatentyp 'int' möglichst direkt in einen Maschinensprachebefehl umgesetzt werden kann.<br /> Bei einem 16-Bit Prozessor hat der Datentyp int daher eine Breite von 16-Bit und bei einem 32-Bit Prozessor eine Breite von 32-Bit (siehe Kap [[Programmieren in C/C++: Datentypen # Ganzzahlige Datentypen|Datentypen:Ganzahl Datentypen]]). Über vorangestellte Qualifier kann dieser Grunddatentyp verkleinert/vergrößert werden. === Integer Arithmetik === Ganzzahlen haben nur einen begrenzten Wertebereich. Wird dieser bspw. durch eine Addition überschritten (d.h. das Rechenergebnis benötigt zur Darstellung mehr Stellen, als der Datentyp 'hergibt'), so gibt es zwei Vorgehensweisen: * Arithmetischer Überlauf (siehe {{w|arithmetischer Überlauf}}): Die nicht speicherfähigen Stellen werden verworfen, so dass i.d.R. ein falsches Ergebnis erzeugt wird! :Beispiel: :<syntaxhighlight lang="C"> unsigned char a=254,b=3,c; c=a+b; //c ist (254+3)%256=1 c=a*b; //c ist (254*3)%256=250 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { unsigned char a=254,b=3,c1,c2; c1=a+b; //c ist (254+3)%256=1 c2=a*b; //c ist (254*3)%256=250 printf("c1=%hhu c2=%hhu\n",c1,c2); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Sättigungsarithmetik (siehe {{w|Sättigungsarithmetik}}): Alle Operationen laufen innerhalb eines festen Intervalls ab, so dass Überläufe und Unterläufe auf dieses Intervall begrenzt werden: :Beispiel: :<syntaxhighlight lang="C"> unsigned char a=254,b=3,c; c=a+b; //c ist MAX((254+3),255)=255 c=a*b; //c ist MAX((254*3),255)=255 </syntaxhighlight> Die Spezifikation von C macht bezüglich der zu nutzenden Methodik keine Vorgaben, so dass das Handling von der ALU des Prozessors abhängt. Aus Komplexitäts- und Geschwindigkeitsgründen ist dies zumeist der arithmetische Überlauf. Nur bei Spezialprozessoren (z.B. DSP Digital Signal Processor) kommt z.T. die Sättigungsarithmetik zum Einsatz. === Gleitkomma Datentyp und Arithmetik === Für den Umgang mit Gleitkommazahlen bieten einige Prozessoren spezielle Recheneinheiten ({{w|Gleitkommaeinheit}} Floating Point Units FPU) an. Sowohl die Darstellung von Gleitkommazahlen als auch das Verhalten bei Überlauf/Unterlauf ist damit Herstellerabhängig. Um auch diese Einheiten effektiv nutzen zu können, ist die C/C++ Spezifikation in diesem Bereich ebenfalls sehr offen. === Max. Speicherbedarf von Variablen === Die maximale Größe von Arrays/Strukturen/Unions ist in C/C++ von der zugrundeliegenden Rechnerarchitektur abhängig: <syntaxhighlight lang="C"> char a[100000]; //Speicherbedarf=100.000*1Byte=100.000 Bytes //Bei 16-Bit Architektur KO //Ab 32-Bit Architektur OK struct size_16 { char a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_256 { struct size_16 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_4096 { struct size_256 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_65536 { struct size_4096 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_65536 var65536; //Speicherbedarf=65536 Bytes //Bei 16-Architektur KO //Ab 32-Architektur OK </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Zur Darstellung bitte Compiler-Fenster öffnen //und dort den CC65-Compiler für den 6502 Prozessor auswählen char a[100000]; //Speicherbedarf=100.000*1Byte=100.000 Bytes //Bei 16-Bit Architektur KO //Ab 32-Bit Architektur OK struct size_16 { char a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_256 { struct size_16 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_4096 { struct size_256 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_65536 { struct size_4096 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_65536 var65536; //Speicherbedarf=65536 Bytes //Bei 16-Architektur KO //Ab 32-Architektur OK int main(int argc,char *argv[]) { return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Im Falle von globalen Variablen erzeugt der Compiler/Linker eine Fehlermeldung. Werden von diesen Datentypen Variablen als lokale Variablen angelegt, so erzeugt dies zur Laufzeit einen Stackoverflow. === Zeigervariable === Eine Zeigervariable ist eine Variable, die eine Speicheradresse speichert. Die Größe dieses Datentyps hängt von der Adressierungsbreite des Prozessors ab. Unabhängig von dem Datentyp, auf den die Zeigervariable zeigt, ergibt sich folgende Breite: * 4-Byte bei einer 32-Bit Rechnerarchitektur * 8-Byte bei einer 64-Bit Rechnerarchitektur * 2-Byte bei einer 16-Bit Rechnerarchitektur === Datentyp size_t === Die maximale Größe von Arrays/Strukturen/Unions ist in C von der zugrundeliegenden Rechnerarchitektur abhängig. Sie ergibt sich aus der Adressierungsbreite. Da die Datenbreite des Datentyps int zumeist kleiner als die Adressierungsbreite ist, existiert in C/C++ der vorzeichenlose Datentyp size_t.<br /> Alle Funktionen, welche den Speicherbedarf übergeben bekommen, bzw. zurückgeben (bspw. strlen(), memcpy(), sizeof()) , nutzen den Datentyp size_t: <syntaxhighlight lang="C"> //Prototypen size_t strlen(char *str); //Die max. Stringlänge ist durch den //adressierbaren Speicher vorgegeben void *malloc(size_t size); void *memcpy(void *dest, const void *src, size_t n); </syntaxhighlight> Der Datentyp size_t ist in der Header-Datei stddef.h der Standard-C-Library per typedef gesetzt. Im Normalfall muss diese Header-Datei nicht explizit inkludiert werden, da bei Nutzung von z.B. strlen() diese bereits durch die Header-Datei string.h inkludiert wird: <syntaxhighlight lang="C"> typedef unsigned long long size_t; //Bei einer 64-Bit Rechnerarchitektur </syntaxhighlight> Hinweis: * Der Datentyp size_t ist immer ein vorzeichenloser Datentyp (es gibt keine negativen Speicheradressen). * Mit dem Datentype ssize_t wird eine vorzeichenbehaftete Variante zur Verfügung gestellt, welche hilfreich ist, wenn Speicheradresse subtrahiert werden sollen. * Soll der Wert vom Datentyp size_t mittels printf() ausgegeben werden, so ist der 'Length Modifier' z und der 'Conversion Specifier' u zu nutzen: :<syntaxhighlight lang="C"> size_t var=strlen("String"); printf("%zu",var); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc,char *argv[]) { size_t var=strlen("String"); printf("%zu",var); printf("%d",var); //Hier sollte es eine Compiler-Warning geben! return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Boolescher-Datentype/Operatoren == Ursprünglich gab es den booleschen Datentyp in der Programmiersprache C nicht. Mit C99 wurde zwar der Datentyp <code>_Bool</code> eingeführt, dies änderte jedoch nicht den Umgang mit Anweisungen und Operatoren, die einen booleschen Datentyp erwarten/zurückgeben! An allen Stellen, an denen ein boolescher Datentyp erwartet wird (z.B. IF-Abfrage, bei booleschen Operationen) wird der Datentyp Ganzzahl, Gleitkommazahl oder Zeiger erwartet (= Scalar-Type) und ausgewertet. Der hierin gespeicherte Zahlenwert sagt aus, ob diese Zahl als True oder False zu interpretieren ist: * False, wenn Ganzzahl gleich 0 oder Gleitkommazahl gleich 0.0 oder Zeiger gleich NULL * True, wenn Ganzzahl ungleich 0 oder Gleitkommazahl ungleich 0.0 oder Zeiger ungleich NULL Beispiel: <syntaxhighlight lang="C"> int a=3; double b=0.0; int *ptr=&a; while(1); if(a) {} for( ; b && ptr ; ); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=3; double b=0.0; int *ptr=&a; while(0); if(a) {} for( ; b && ptr ; ) {} return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Operatoren, welchen einen booleschen Wert zurückliefern (Vergleichs-Operatoren und Boolesche-Operatoren), liefern ein Integer-Datentyp zurück: * (int)0 für False * (int)1 für True Beispiel: <syntaxhighlight lang="C"> int a=3; int b= (a==3); //b=1 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=3; int b= (a==3); //b=1 printf("%d",b); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} In den if()/for()/while() Anweisungen ist folglich kein explizites Konvertieren eines Ganzzahl-/Gleitkomma-/Zeigerwertes mittels des Vergleichs-Operators in einen Booleschen Wert notwendig: <syntaxhighlight lang="C"> int a; double b; if(a) //entspricht if(a!=0) if(!b) //entspricht if(b==0.0) while(1) //entspricht while(True) for(int lauf=1; lauf ; lauf--); </syntaxhighlight> Umgedreht kann ein boolescher Wert oder auch das Ergebnis einer booleschen Operation direkt mit einer Ganzzahl- oder Gleitkommazahl verknüpft werden: <syntaxhighlight lang="C"> int a=3,b=2; a=a+1 && 7 << 3 & a==3; if( a==1 & b==2) if(3 < a < 9) //Vorsicht, die Schreibweise lässt ein //anderes Verhalten erwarten! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=3,b=2; a=a+1 && 7 << 3 & a==3; printf("%d\n",a); if(a==1 & b==2) printf("true\n"); else printf("false\n"); if(3 < a < 9) if( (a==1) & (b==2)) printf("true\n"); else printf("false\n"); return 0; } | execCompilerOptions=| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Mit C99 wurde der Datentyp <code>_Bool</code> eingeführt. Dieser entspricht weiterhin einem Integerdatentyp mit der Besonderheit, dass beim Zuweisen eines Wertes dieses auf true oder false geprüft wird und Variablen dieses Datentyps nur die Werte 0 oder 1 annehmen können: <syntaxhighlight lang="C"> _Bool var1=12; printf("var1=%d\n",var1); //→ 1 float var2=13.2; var1=var2; printf("var1=%d\n",var1); //→ 1 var1--; //Post/Pre Inkrement/Dekrement in C++ nicht auf Datentyp bool! möglich printf("var1=%s\n",var1?"true(1)":"false(0)"); //→ false </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { _Bool var1=12; printf("var1=%d\n",var1); //→ 1 float var2=13.2; var1=var2; printf("var1=%d\n",var1); //→ 1 var1--; //Post/Pre Inkrement/Dekrement in C++ nicht auf Datentyp bool! printf("var1=%s\n",var1?"true(1)":"false(0)"); //→ false return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Für den einfacheren Umgang mit dem 'neuen' Datentyp wurde in der Header-Datei <code>stdbool.h</code> die Makros <code>true</code> (als Austauschwert für die Ganzzahl 1) und <code>false</code> (als Austauschwert für die Ganzahl 0) definiert. Ergänzend wird hier der Datentyp <code>bool</code> als Alias auf <code>_Bool</code> gesetzt. <syntaxhighlight lang="C"> #include <stdbool.h> bool foo(int par,int min,int max) { if((par >= min) && (par <= max)) return true; else return false; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdbool.h> bool foo(int par,int min,int max) { if((par >= min) && (par <= max)) return true; else return false; } int main(int argc,char *argv[]) { foo(4,3,6); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * In C++ gibt es anstatt des Datentypes <code>_Bool</code> den Datentyp <code>bool</code>. Auch sind die beiden Konstanten <code>true</code> und <code>false</code> ohne zusätzliches Einbinden der Header-Datei vorhanden. Der weitere Umgang ist jedoch identisch zu C. == Literale/Konstanten == Zahlenwerte und Strings im Source-Code werden vom Compiler in binäre Zahlen umgerechnet. Über der Schreibweise/Syntax der Literale/Konstanten wird dem Compiler gesagt, in welchem Zahlenformat die Zahl auf Source-Code Ebene beschrieben ist und welchem Datentyp sie entspricht. Unabhängig wie die Konstanten im Source-Code beschrieben sind, werden die Zahlen intern als binäre Zahlen gespeichert. Beispiele, wie die Zahlen intern gespeichert werden: <syntaxhighlight lang="C"> int var=17; //0000 0000 0000 0000 0000 0000 0001 0001 short var=0x307;// 0000 0011 0000 0111 char var=017; // 0000 1111 int var=-1; //1111 1111 1111 1111 1111 1111 1111 1111 float var=0.0; //0000 0000 0000 0000 0000 0000 0000 0000 float var=1.0; //0011 1111 1000 0000 0000 0000 0000 0000 </syntaxhighlight> === Ganzzahl-Konstanten === Im Allgemeinen ordnet der Compiler einer numerischen, ganzzahligen Konstanten den kleinstmöglichen Datentyp beginnend vom Datentyp integer zu. Sobald der Wert der Konstanten den Wertebereich von integer übersteigt, wird der nächst größere passende Datentyp gewählt. Ergänzend gilt, dass alle Ganzzahl-Konstanten als vorzeichenbehaftete Ganzzahl-Konstanten angesehen werden!<br /> Beispiele für integer Konstanten: <pre> 123 +123 -123 → Formal wird das Minus als Operator angesehen und die positive Zahl 123 negiert 0x123 → Konstante ist in hexadezimaler Schreibweise notiert 0123 → Konstante ist in oktaler Schreibweise notiert 0b011 → Konstante ist in binärer Schreibweise notiert nicht offizieller C-Syntax, wird aber von vielen Compiler unterstützt ab C23-Spezifikation offiziell im C-Syntax enthalten! 6'432'108 → Tausendertrenner Nur in C++ Spezifikation enthalten ab C23-Spezifikation auch im C-Syntax enthalten. 5123123123 → Wertebereich größer als 2^31 so dass automatisch zum nächst größeren Datentyp konvertiert wird </pre> Mit den Suffixen L/l und LL/ll kann der Datentyp long und long long erzwungen werden: <pre> 12L → Konstante wird in eine long Integer Konstante konvertiert 4711LL → Konstante wird in eine Long Long Konstante konvertiert </pre> Mit dem Suffix U/u kann die Konstante explizit auf unsigned gesetzt werden: <pre> 12U → Konstante wird als vorzeichenlose Zahl gesepeichert 4711ULL → Konstante wird in eine vorzeichenlose Long Long Konstante konvertiert </pre> === Char-Konstanten === In einfachen Anführungsstrichen geschriebene ASCII Zeichen werden entsprechend der {{w|American Standard Code for Information Interchange | ASCII-Tabelle}} als Zahlenwert (Datentyp int) dargestellt: <pre> 'A' → Integerkonstante 65 'a' → Integerkonstante 97 … </pre> Über den {{w|Escape-Sequenz|Escape-Operator}} (Zeichen Backslash '\') wird das/die dem ESCAPE Operator folgende Zeichen gesondert interpretiert. Die im Source-Code erhaltene Zeichenfolge wird im Computerprogramm als ein Zahlenwert (Datentyp int) gespeichert. Dies ist u.A. zur Darstellung von ' und " aber auch zur Darstellung der unteren 32 Zeichen der ASCII Tabelle notwendig (Siehe auch {{w|Steuerzeichen}}) <pre> ESCAPE Integer- → Bedeutung / (Terminal)funktionalität Sequence konstante '\0' = 0 → 0 Character = Stringendezeichen '\a' = 7 → Bell (erzeugt auf dem Terminal einen Ton) '\b' = 8 → Backspace (Bewegt den Cursor um eine Position nach links) '\t' = 9 → Horizontal Tab (Bewegt den Curso auf die nächste horizontale Tabulatorposition, Abstand ist Terminalspezifisch) '\n' = 10 → NewLine (Zeilenvorschub) '\v' = 11 → Vertial Tab '\r' = 13 → Carriage Return (Wagenrücklauf, Bewegt den Cursor an den Zeilenanfang) '\"' = 34 → Double Quote '\'' = 39 → Single Quote '\?' = 63 → Question mark '\\' = 92 → Backslash '\f' = 12 → FormFeed (Erzeugt auf dem Terminal/Drucker einen Seitenvorschub) '\ooo' = 0ooo → Oktal, wobei o Digits von 0..7 sein müssen '\xdd' = 0xdd → Hexadezimal, wobei d Digits von 0..9 A..F sein müssen '\udddd' Unicode mit 4 Digits '\Udddddddd' Unicode mit 8 Digits </pre> Beispiel <syntaxhighlight lang="C"> 'A' == 65 == '\101' == '\x41' == '\u0041' == '\U00000041' </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { //Programmiersprache wurde auf C++ gesetzt if('A' == 65) printf("'A' == 65\n"); if('A' == '\101') printf("'A' == '\\101'\n"); if('A' == '\x41') printf("'A' == '\\x41'\n"); if('A' == '\u0041') printf("'A' == '\\u0041'\n"); if('A' == '\U00000041') printf("'A' == '\\U00000041'\n"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true| lang=c++ }} Öffnen im Compiler Explorer] }} Über Prefixe können alternative Zieldatentypen/Konvertierungen erzwungen werden: <pre> u'b' → unicode 16 (nur C++) U'b' → unicode 32 (nur C++) L'b' → wchar_t </pre> Hinweis * Die ASCII-Tabelle basiert auf einer 7-Bit Zeichenkodierung, so dass bspw. die Umlaute 'ä', 'ö' und 'ü' dort nicht kodiert sind. Sollen auch diese Zeichen genutzt werden, so empfiehlt sich der Datentyp wchar_t === Gleitkommakonstanten === Alle Gleitkommakonstanten sind ohne weitere Angaben vom Datentyp double! <pre> 555.12 555. → 555.0 .1 → 0.1 4e2 → 400.0 0x22.11p13 → Konstante in Hexadezimalen Schreibweise (ab C99) </pre> Über Suffixe kann ein alternativer Datentyp erzwungen werden: <pre> 3.0F → Datentyp float 3.0l → Datentyp long double </pre> Hinweis: * Aufgrund der unterschiedlichen Basis zwischen dem menschlichen Zehner-System und dem computerinternen Binär-System entstehen insbesondere bei den Nachkommastellen Rundungsfehler. Die Konstante 0.1f wird durch die Wandlung intern als 1.00000001490116119384765625e-1 dargestellt * Die C-Spec verlangt, dass die binäre Repräsentation von Gleitkommazahlen zur Laufzeit (z.B. durch die Funktion atof() strtod() scanf("%f")) identisch zur der zur Compilezeit ist. Beispiel: :<syntaxhighlight lang="C"> if(3.14==atof("3.14")) printf("muss erfüllt sein"); //3.14 wird vom Compiler in ein Binärwert gewandelt //Der String "3.14" wird zur Laufzeit mittels atof in ein Binärwert gewandelt //Beide Wandlungsergebnisse müssen identisch sein </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { if(3.14==atof("3.14")) printf("muss erfüllt sein\n"); //3.14 wird vom Compiler in ein Binärwert gewandelt //Der String "3.14" wird zur Laufzeit mittels atof in ein Binärwert gewandelt //Beide Wandlungsergebnisse müssen identisch sein printf("Intern wird 3.14 wie folgt dargestellt %14.20f",3.14); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Konstanten Ausdrücke === Ergänzend zu den Zahlenwerten werden auch Ausdrücke durch den Compiler ausgewertet. Als Voraussetzung für die Ausdrücke gilt, dass alle Operatoren Literale/Konstante sein müssen, so dass der Compiler die Berechnung durchführen kann. Als Operatoren können alle im normalem Syntax erlaubten Operatoren (z.B.: +,-,*,/,&,&&,|,||,>>,<<,==,!=) genutzt werden.<br /> Beispiel: <syntaxhighlight lang="C"> int var1=7*3+5; → wird vom Compiler durch 26 ersetzt int var2=(4710+(8-1))&-8; → wird vom Compiler durch 4712 ersetzt var1=4*4*var1+77*(77%3); → wird vom Compiler durch 16 * var1 + 154 ersetzt </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { int var1=7*3+5; //→ wird vom Compiler durch 26 ersetzt int var2; var2=(4710+(8-1))&-8; //→ wird vom Compiler durch 4712 ersetzt var1=4*4*var1+77*(77%3); //→ wird vom Compiler durch var1 * 16 + 154 ersetzt return 0; } | execCompilerOptions=-Wall| h=g| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Konform zur C-Spezifikation bieten einige Compiler weitere Operatoren aus der math.h Library an (z.B. sin(), cos(), ...). Bestehen die Aufrufparameter aus Konstanten, so ersetzt der Compiler den Ausdruck durch die 'Ergebnis'-Konstante: :<syntaxhighlight lang="C"> int var3=sin(1.0)*10; →wird vom Compiler durch 8 ersetzt </syntaxhighlight> * Konstanten Ausdrücke werden durch den Präprozessor ausgewertet, so dass dieser die Ergebnisse ebenfalls nutzen kann: :<syntaxhighlight lang="C"> #define BUF_SIZE 512 #if (BUF_SIZE & (BUF_SIZE -1)) != 0 #endif </syntaxhighlight> === String Konstanten === Stringkonstanten erzeugen ein Array von Characters. Mit dem abschließenden Hochkommata wird das Array um ein Stringendezeichen ergänzt: <pre> "abc" → (char []) {'a','b','c','\0'} </pre> Adjacent Strings Konstanten werden vom Compiler zu einer String-Kontante zusammengefasst, so dass nur ein Stringendezeichen vorhanden ist: <pre> "xxx" "yyy" → (char []) {'x','x','x','y','y','y','\0'} </pre> Über Prefixe können alternative Zieldatentypen/Konvertierungen erzwungen werden: <pre> L"string" → (wchar_t[7]){L's',L't',L'r' …) </pre> Über Postfixes können in C++ Objekte erzeugt werden: <pre> "string"s → erzeugt einen String vom Datentyp std::string "string"sw → Erzeugt einen String vom Datentyp std::string_view </pre> String Konstanten werden Compilerintern über unnamed Variablen realisiert, welche als globale Variable angelegt werden und per default const sind: <syntaxhighlight lang="C"> printf("Wert=%d",4); //entspricht const char unnamed1[]="Wert=%d"; printf(unnamed1,4); //String Konstanten sind per Default Konstant char *str="hallo"; //Typkonflikt!, da "hallo" vom Datentyp const char[] ist str[0]='H'; //Laufzeitfehler, da nun schreibender Zugriff auf im //Readonly Speicher angelegt Variable. </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { printf("Wert=%d\n",4); //entspricht const char unnamed1[]="Wert=%d\n"; printf(unnamed1,4); fflush(stdout); //Zur Darstellung der Ausgabe, da nachfolgend //das Programm abstürzt und die gepufferte Ausgabe //nicht zur Anzeige gebracht wird //String Konstanten sind per Default Konstant char *str="hallo"; //Typkonflikt!, da "hallo" vom Datentyp const char[] ist str[0]='H'; //Laufzeitfehler, da nun schreibender Zugriff auf im //Readonly Speicher angelegt Variable. return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Für doppelte String Konstanten wird nur einmal Speicher reserviert: <syntaxhighlight lang="C"> const char *str1="hallo"; const char *str2="hallo"; if(str1==str2) printf("Identische Startadressen"); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { const char *str1="hallo"; const char *str2="hallo"; if(str1==str2) printf("Identische Startadressen"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Initialisierungsliste / Compound Literal == Arrays, Strukturen und Unions bestehen zumeist aus mehreren Elementen. Zur Initialisierung solcher Variablen werden die Initialisierungswerte in geschweiften Klammern als Initialisierungsliste zusammengefasst. <code> Syntax: {Initialisierungsliste} </code> Für eine Initialisierungsliste wird kein Speicher vorgehalten. Vielmehr wird bei der Variablendefinition die Variable direkt mit dem Inhalt der Liste initialisiert. Der Datentyp der Initialisierungsliste ergibt sich aus dem Datentyp der zu initialisierenden Variable: <syntaxhighlight lang="C"> int arr[5] = { 1,2,3,4,5 }; struct xyz { int x,y,z;}; //Definition einer Struktur struct xyz var = { 1,2,3 }; </syntaxhighlight> Wird der Initialisierungsliste ein Datentyp in runden Klammern vorangestellt, so wird hiermit eine 'unnamend' Variable/Objekt, ein Compound Literal erstellt: <code> Syntax: (type) {Initialisierungsliste} </code> Ein Compound Literal entspricht einer anonymen Variablen des angegebenen Datentyps. Wie bei einer normalen Variablendefinition wird hier ebenfalls eine Variable angelegt und diese mit den Initialisierungswerten initialisiert. Im Unterschied zu einer normalen Variable kann auf solch eine Variable im Nachgang nicht mehr zugegriffen werden. Der Rückgabewert eines Compound Literals entspricht somit dem einer Variablen.</br> Compound Literale bieten sich überall dort an, wo Variablen nur für einen einmaligen Zweck angelegt werden (bspw. bei der Parameterübergabe von Funktionen): <syntaxhighlight lang="C"> struct point {int x; int y;}; drawline((struct point){1,2},(struct point){2,3}); printarray((int []){1,2,3,4}); //entsprechen struct point unnamed1={1,2},unnamed2={2,3}; drawline(unnamed1,unnamed2); int unnamed3[]={1,2,3,4}; printarray(unnamed3); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct point {int x,y;}; void drawline(struct point start,struct point end) { printf("Linie von (%d,%d) nach (%d,%d)\n",start.x,start.y,end.x,end.y); } void printarray(int arr[4]) { printf("[ "); for(size_t idx=0;idx<4;idx++) printf("%d ",arr[idx]); printf("]\n"); } #include <stdlib.h> int main(int argc,char *argv[]) { struct point {int x; int y;}; drawline((struct point){1,2},(struct point){2,3}); printarray((int []){1,2,3,4}); //entsprechen struct point unnamed1={1,2},unnamed2={2,3}; drawline(unnamed1,unnamed2); int unnamed3[]={1,2,3,4}; printarray(unnamed3); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Über den Adressoperator kann auch die Adresse der anonymen Variablen ermittelt werden. In diesem Falle ist dann der Gültigkeitsbereich/-dauer des Compound Literals zu berücksichtigen. Wird eine Compound Literals außerhalb eines Block-Scopes angelegt, so entspricht sie einer globalen Variable, andernfalls einer lokalen Variablen. Außerhalb des Gültigkeitsbereiches verliert die Adresse auf solch eine Variable ihre Gültigkeit: <syntaxhighlight lang="C"> drawlinep( &(struct point){1,2},&(struct point){2,3}); //entspricht struct point unnamed1={1,2},unnamed2={2,3}; drawlinep( &unnamed1, &unnamed2); struct point1, *point2; { //Block-Scope, zwecks Darstellung von lokalen Variablen point1= (struct point){1,2}; //Compound Literal entspricht hier //Initialisierungswert für point1 point2=&(struct point){3,4}; //Compound Literal ist nur in diesem //Block gültig drawlinep(&point1 /*OK*/, point2 /*OK*/); } drawlinep(&point1 /*OK*/, point2 /*KO*/); //Zeiger zeigt auf nicht mehr //gültigen Speicherbereich </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct point {int x,y;}; void drawlinep(struct point *start,struct point *end) { printf("Linie von (%d,%d) nach (%d,%d)\n",start->x,start->y,end->x,end->y); } #include <stdlib.h> int main(int argc,char *argv[]) { drawlinep( &(struct point){1,2},&(struct point){2,3}); //entspricht struct point unnamed1={1,2},unnamed2={2,3}; drawlinep( &unnamed1, &unnamed2); struct point point1, *point2; { //Block-Scope, zwecks Darstellung von lokalen Variablen point1= (struct point){1,2}; //Compound Literal entspricht hier //Initialisierungswert für point1 point2=&(struct point){3,4}; //Compound Literal ist nur in diesem //Block gültig drawlinep(&point1 /*OK*/, point2 /*OK*/); } drawlinep(&point1 /*OK*/, point2 /*KO*/); //Zeiger zeigt auf nicht mehr //gültigen Speicherbereich } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * Compound-Literal sind per Default keine Konstanten, können also zur Laufzeit geändert werden (siehe Kap. [[Programmieren in C/C++: DatentypeSpecifier#Const Type Qualifier|DatentypeSpecifier:Const Type Qualifier]]): :<syntaxhighlight lang="C"> float *arr=(float []){1.1,2.2,3.3}; //Kein Typkonflikt arr[0]=47.11; //Änderung des 'Konstanten' arr[0] ist möglich </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { float *arr=(float []){1.1,2.2,3.3}; //Kein Typkonflikt arr[0]=47.11; //Änderung des 'Konstanten' arr[0] ist möglich return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Die geschweiften Klammern <code>{ }</code> sind nicht mit dem Block-Operator (siehe [[Programmieren in C/C++: Grundlagen#Block / Compound-Statement | Block / Compound-Statement]]) zu verwechseln. Werden die geschweiften Klammern bei der Initialisierung von Variablen genutzt, dann beschreibt der Inhalt der geschweiften Klammern eine Initialisierungsliste. Wird diesen ein Datentyp vorangestellt, dann wird hiermit eine Compound Literal definiert. == Variableninitialisierung == Mit der Definition einer Variable kann diese optional initialisiert werden. Der tatsächliche Zeitpunkt der Variableninitialisierung (zur Laufzeit oder zur Compilezeit) und damit die Ausführung der Initialisierung (Maschinensprachebefehle oder Speichervorbelegung) hängt von der Gültigkeit/Sichtbarkeit der Variablen ab(siehe [[Programmieren in C/C++: Grundlagen#Gültigkeit/Sichtbarkeit von Variablen| Gültigkeit/Sichtbarkeit von Variablen]]). === Globale + Static lokale Variablen === Globale und statisch globale Variablen werden in einem während der Laufzeit des Programms festen Speicherbereich gehalten. Zum Startzeitpunkt des Programms ist der Speicherplatz solch einer Variable mit dem Initialisierungswert gefüllt, so das bei erstmaliger Nutzung dieser Variablen diese ihre Initialisierungswerte enthalten. Die Belegung des Speicherplatzes erfolgt durch den Compiler, so dass als Initialisierungswerte / Inhalt der Initialisierungsliste nur Konstanten oder Konstanten-Ausdrücke (siehe [[Programmieren in C/C++: Grundlagen#Literale/Konstanten | Literale/Konstanten]]) erlaubt sind: <syntaxhighlight lang="C"> int g=1; //Speicherstelle der Variable g wird //mit 1 belegt short array[3]={1,1+1, sin(0.0)}; //Speicherstellen des Arrays wird //mit 1, 2 und 0 (Funktion sin() wird zur //Compilezeit ausgeführt) belegt </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> double sin(double); //DJ: Include-Anweisung in wikibooks schlägt fehlt int g=1; //Speicherstelle der Variable g wird //mit 1 belegt short array[3]={1,1+1, sin(0.0)}; //Speicherstellen des Arrays wird //mit 1, 2 und 0 (Funktion sin() wird zur //Compilezeit ausgeführt) belegt int main(int argc,char *argv[]) { printf("%hd %hd %hd\n",array[0],array[1],array[2]); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Nicht initialisierte globale und static lokale Variablen werden mit 0 initialisiert! D.h. die Speicherstellen dieser Variablen werden mit dem Wert 0 vorbelegt:: <syntaxhighlight lang="C"> int f; //f hat den Wert 0 double arr[10]; //Alle Elemente von arr werden mit 0.0 initialisiert! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int f; //f hat den Wert 0 double arr[10]; //Alle Elemente von arr werden mit 0.0 initialisiert! int main(int argc,char *argv[]) { printf("f=%d\n",f); printf("%f %f %f\n",arr[0],arr[1],arr[2]); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Lokale Variable === Der Speicherplatz für lokale Variable wird auf dem Stack zur Verfügung gestellt. Mit jedem öffnenden Block-Scope wird Speicher für die innerhalb dies Block-Scopes vorhandenen Variablen vom Stack nach dem LIFO Prinzip reserviert und mit der Variablendefinition Maschinencode zur Initialisierung der Speicherstellen ausgeführt (sofern Variable einen Initialisierungswert hat): <syntaxhighlight lang="C"> { //Öffnende Klammer erzeugt Maschinencode zur Speicherreservierung //von 4 Bytes (für int) und 8 Bytes (für double) int var1=12; //erzeugt Maschinencode zur Initialisierung //der ersten 4 Byte mit dem Wert 12 double var2=sin(f); //erzeugte Maschinencode, welche zunächst //die Funktion sin() mit dem Übergabewert f //aufruft und dessen Rückgabewert in die //nächsten 8 Byte des reservierten Speichers //kopiert ... { //siehe zuvor int var3=var1; //siehe zuvor double var4=var2+var1; } //siehe nachfolgenden } //Freigabe des zuvor reservierten Speichers </syntaxhighlight> Dies gilt auch für Funktionsaufrufe. Mit der öffnenden geschweiften Funktionsklammer wird ebenfalls Speicher reserviert: <syntaxhighlight lang="C"> void foo(int par) { //Öffnende Funktionsklammer erzeugt Maschinencode zur Speicherreservierung //von 4 Bytes (für (Übergabe)Variable par und 4 Bytes für Variable var int var; //Da keine Initialisierung vorhanden ist wird auch //kein Maschinencode zur Initialisierung ausgeführt { //Öffnende Klammer erzeugt Maschinencode zur Speicherreservierung //von 4 Byte für Variable x int x; ... </syntaxhighlight> Aufgrund der mit der Initialisierung bedingten Erzeugung von Maschinencode können die Initialisierungswerte/Inhalte der Initialisierungsliste bei lokalen Variablen aus beliebigen Ausdrücken bestehen und müssen keine Konstanten oder Konstanten Ausdrücke sein: <syntaxhighlight lang="C"> void foo(float f,float g) { float summe=f+g; //Initialisierungswerte float arr[3] = {f+f,g-f,sin(f)}; //werden zur Laufzeit berechnet } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> #include <math.h> //fuer sinf() void foo(float f,float g) { float summe=f+g; //Initialisierungswerte float arr[3] = {f+f,g-f,sinf(f)}; //werden zur Laufzeit berechnet printf("%f\n",(double)summe); printf("%f %f %f\n",(double)arr[0],(double)arr[1],(double)arr[2]); } int main(int argc,char *argv[]) { foo(3,4); return 0; } | execCompilerOptions=-Wall -lm| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Dieser Maschinencode wird jedes Mal ausgeführt, wenn die dazugehörige Anweisung abgearbeitet wird und bedingt dementsprechend Rechenzeit. Zehnmaliges Ausführen einer Funktion oder zehnmaliges Öffnen eines Block-Scopes innerhalb einer For-Schleife führt zur zehnmaligen Ausführung der oben genannten Sachverhalte: <syntaxhighlight lang="C"> void foo(int); void var(void) { for(int lauf=10; lauf>0; lauf--) { //zehnmaliges Reservieren von Speicher int var=lauf*2; //zehnmalige Initialisierung foo(var); } //Freigabe des Speichers } void foo(int par) { //zehnmaliges Reservieren von Speicher int var=12; //zehnmalige Initialisierung } //Freigabe des Speichers </syntaxhighlight> Nicht initialisierte lokale Variablen werden nicht initialisiert, d.h. keine zusätzlichen Maschinenbefehle zum Initialisieren erzeugt. Der Variablenwert entspricht dann einem 'Zufallswert' oder korrekter gesagt dem Inhalt der Variablen, welcher zuvor der Speicherstelle zugewiesen war: <syntaxhighlight lang="C"> int first(void) { int var_first=7; return var_first; } int second(void) { int var_second; //Variable var_second bekommt den identischen return var_second; //Speicherbereich wie var_first zugwiesen //und damit auch dessen zuletzt gültigen Wert } int main(int argc, char *argv[]) { int var1=first(); //var1 beinhaltet Wert 7 int var2=second(); //var2 beinhaltet Wert 7 printf("var_foo=%d\n",var1); printf("var_far=%d\n",var2); return 0; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> int first(void) { int var_first=7; return var_first; } int second(void) { int var_second; //Variable var_second bekommt den identischen return var_second; //Speicherbereich wie var_first zugwiesen //(und damit auch dessen zuletzt gültigen Wert) } int main(int argc, char *argv[]) { printf("%d\n",second()); //Zufallswert (0, da Stack mit 0 initialisiert ist) printf("%d\n",first()); //Stack belegen printf("%d\n",second()); //Zufallswert (7, da Speicherstelle zuvor mit 7 return 0; //belegt wurde) } | execCompilerOptions=| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Wird eine Variableninitialisierung mit einer switch oder goto Anweisung übersprungen, so wird zwar die Variable angelegt (Speicherplatz reserviert), jedoch die Maschinenbefehle zur Initialisierung dieser Variablen nicht ausgeführt (siehe auch [[Programmieren in C/C++: Grundlagen# Switch-Anweisung|Switch-Anweisung]] und [[Programmieren in C/C++: Grundlagen# Label + Goto|Label + Goto]]). Die Variable enthält dann einen Zufallswert: <syntaxhighlight lang="C"> switch(value) { case 0: int lok=7; printf("%d",lok); //OK, lok beinhaltet den Wert 7 break; default: printf("%d",lok); //KO, Variable lok vorhanden, //aber nicht initialisiert. D.h. Ausgabe einer break; //Zufallszahl } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> void foo(int value) { switch(value) { case 0: int lok=7; printf("%d\n",lok); //OK, lok beinhaltet den Wert 7 break; default: printf("%d\n",lok); //KO, Variable lok vorhanden, //aber nicht initialisiert. D.h. Ausgabe einer break; //Zufallszahl } } void far(void) { int var1=4711; int var2=1799; printf("Marke: %d, Erscheinungsjahr: %d\n",var1,var2); } int main(int argc,char *argv[]) { foo(2); //Zufallswert (0, da Stack mit 0 initialisiert ist) foo(0); //Initialisierungswert far(); //Stack belegen foo(2); //Zufallswert return 0; } | execCompilerOptions=| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Bei erstmaligem Funktionsaufruf kann eine nicht initialisierten lokale Variablen den Wert 0 beinhalten (Stackframe wird mit Programmstart auf 0 gesetzt). Beim nächsten Aufruf der Funktion ist zumeist die Speicherstelle der lokalen Variablen mit anderen Werten gefüllt worden, so dass nun ein anderer 'Zufallswert' als 'Initialisierungswert' enthalten ist === C++ === In C++ ist ergänzend die Initialisierung einer Variablen über () möglich. Bei Objekten wird hierüber der zugehörige Konstruktor aufgerufen. Bei primitiven Datentypen entspricht der Wert in den Klammern dem Initialisierungswert: <syntaxhighlight lang="C++"> int variable(10); //Bei primitiven Datentype entspricht dies //int variable=10; struct test { int a; test(int par) {a=par;} //Konstruktor der Struktur test }; struct test test(4); //Konstruktor test(int par) wird aufgerufen struct test test(4,5); //KO, kein passender Konstruktor vorhanden </syntaxhighlight> === Sonstiges === Folgende weitere Sachverhalten gilt es bzgl. Variableninitialisierung zu berücksichtigen: * Nach C-Spezifikation ist eine Initialisierung von Variablen nicht notwendig. Es liegt folglich kein Fehler vor, wenn auf eine nicht initialisierte Variable lesend zugegriffen wird. Ungeachtet der C-Spezifikation überprüft der Compiler mit dem Schalter '-Wall' diesen Sachverhalt und gibt eine Warning aus * Deklarationen/Prototypen können keinen Initialisierungswert enthalten <syntaxhighlight lang="C++"> extern int var=7; //Fehlerhaft </syntaxhighlight> * Const und lokale Static Variablen sollten initialisiert werden, auch wenn C in diesem Fall keinen Fehler meldet! <syntaxhighlight lang="C++"> const int konstante; //Syntaktisch OK, Initialisierungswert fraglich! static int statisch; </syntaxhighlight> == Anweisung (Statement) & Expression == Eine Anweisung (Statement) stellt entsprechend dem Wikipedia Artikel {{w|Anweisung_(Programmierung) | Anweisung}} ''"ein in der Syntax einer Programmiersprache formulierte einzelne Vorschrift dar, die im Rahmen der Abarbeitung des Programms auszuführen ist"''. Entsprechend der C-Spezifikation [C11 6.8] kann eine Anweisung aus: : labled-statement: Eine Sprungmarke für die Switch- und die Goto-Anweisung : compound-statement: siehe nachfolgendes Kapitel : expression-statement: siehe nachfolgendes Kapitel : selection-statement: Eine if() oder switch() Anweisung : iteration-statement: Eine while(), do while() oder eine for() Anweisung : jump-statement: Eine goto, break, continue oder return Anweisung Die einzelnen Statements können dabei aus weiteren Statements bestehen. === Ausdruck (Expression) === Entsprechend der C-Spezifikation [C11 6.5] ist ein Ausdruck eine Folge von Operatoren und Operanden, die die Berechnung eines Werts angibt, ein Objekt oder eine Funktion bezeichnet, Nebenwirkungen erzeugt oder eine Kombination davon ausführt. Die Wertberechnungen der Operanden eines Operators werden vor der Wertberechnung des Ergebnisses des Operators sequenziert (siehe auch {{w|lang=en|Expression_(computer_science)|Expression}}). Beispiele: <syntaxhighlight lang="C"> a=sqrt(a*a+b*b); //Ausdruck mit Nebenwirkungen int func(int par) { a++; return par*2;} b=func(1)*func(2); //Ausdruck mit undefinierten Verhalten a=++a + 1; a=for(lauf=10;lauf>0;lauf--); //for-Anweisung ist kein Ausdruck //d.h. liefert keinen Wert zurück </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> double sqrt(double); //DJ: Include-Anweisung in wikibooks schlägt fehlt int a=0; int func(int par) { a++; return par*2; } int main(int argc,char *argv[]) { int a=4,b=7; a=sqrt(a*a+b*b); //Ausdruck mit Nebenwirkungen b=func(1)*func(2); //Globale Variable a wird geändert! //Ausdruck mit undefinierten Verhalten a=++a + 1; //Kein Ausdruck a=for(lauf=10;lauf>0;lauf--); //for-Anweisung ist kein Ausdruck //d.h. liefert keinen Wert zurück return 0; } | execCompilerOptions=-Wall -lm| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Discarded Value === Discarded Value sind Ausdrücke, dessen Ergebnisse nicht verwendet werden (also keiner Variablen zugewiesen werden). Ergebnisse von Ausdrücken, die nicht verwendet werden, führen nicht zu einer Fehlermeldung: <syntaxhighlight lang="C"> int a=7; a; //Variable a wird gelesen, der Wert jedoch verworfen 7; //Konstante wird verworfen a+7; //Ergebnis wird Berechnet und verworfen printf("hallo"); //Printf hat einen Rückgabewert, dessen Wert verworfen wird </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=7; a; //Variable a wird gelesen, der Wert jedoch verworfen 7; //Konstante wird verworfen a+7; //Ergebnis wird Berechnet und verworfen printf("hallo"); //Printf hat einen Rückgabewert, dessen Wert verworfen wird return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * Soll bewusst der Rückgabewert verworfen werden, so kann/sollte mit dem explizten Cast auf (void) der Rückgabewert explizit 'verworfen' werden. Dies ist u.A. hilfreich bei Variablen, die (noch) nicht benutzt werden und der Compiler die Warning "unused Variable" ausgibt: :<syntaxhighlight lang="C"> (void)a; //Zur Vermeidung von Compiler-Warnings "Unused Variable" (void)(a+7); //hier eine explizte 'Ansage' der Verwerfung des Wertes (void)func(); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int func(void) { return 4711; } int main(int argc,char *argv[]) { int a; (void)a; //Zur Vermeidung von Compiler-Warnings "Unsued Variable" (void)(a+7); //hier eine explizte 'Ansage' der Verwerfung des Wertes (void)func(); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Mit der Anweisung <nowiki>[[nodiscard]]</nowiki> (ab C++17, ab C23) wird der Compiler angewiesen, dass der Aufrufer einer Funktion mit Rückgabewert der Rückgabewert entgegenzunehmen ist. Wird der Rückgabewert verworfen, so gibt der Compiler eine Fehlermeldung aus: :<syntaxhighlight lang="C"> [[nodiscard]] int Client(int socket); Client(5); ////Fehlermeldung, da Rückgabewert nicht verwendet wird </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> [[nodiscard]] int Client(int socket) { return socket+1; } int Server(int socket) { return socket+1; } int main(int argc,char *argv[]) { Server(5); //keine Fehlermeldung Client(5); //Fehlermeldung, da Rückgabewert nicht verwendet wird return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Java kennt Dicarded Values nicht. Ausnahme, es handelt sich um einen Funktionsaufruf, dessen Rückgabewert nicht genutzt wird. === Sequence Point === Ein Sequenzpunkt (u.A. das abschließende Semikolon am Ende der Anweisung) ist nach dem Wikipedia Artikel {{w|lang=en|Sequence_point|Sequence Point}} definiert als der Punkt in der Ausführung eines Computerprogramms, an dem garantiert ist, dass alle Nebenwirkungen früherer Bewertungen durchgeführt wurden und noch keine Nebenwirkungen von nachfolgenden Bewertungen durchgeführt wurden.<br /> Sequenzpunkte sind beispielsweise dann von Interesse, wenn dieselbe Variable innerhalb eines einzelnen Ausdrucks mehr als einmal geändert wird und die Ausführungsreihenfolge der Operationen nicht sauber spezifiziert ist.<br /> Ein oft zitiertes Beispiel ist der C-Ausdruck 'i=i++;'. Der Sequence Point garantiert, dass alle Operationen (hier Zuweisung und Postinkrement) ausgeführt sind. Jedoch ist die Ausführungsreihenfolge dieser beiden Operationen nicht spezifiziert. In Abhängigkeit des Zeitpunktes der Ausführung des Postinkrementes (vor oder nach der Zuweisung) kann i unterschiedliche Werte annehmen. In C und C++ führt die Auswertung eines solchen Ausdrucks zu undefiniertem Verhalten. Andere Sprachen, wie z. B. C#, definieren den Vorrang des Zuweisungs- und des Inkrementoperators so, dass das Ergebnis des Ausdrucks i=i++ garantiert ist.<br/> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int i=5; i=i++; printf("%d",i); //Gerne anderen Compiler auswählen, z.B. x86-64 icc... return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Weitere Sequence Points: * Beim ?-Operator stellt sowohl das ? als auch der : ein Sequenz Point dar. Zunächst muss der linke Ausdruck vollständig bearbeitet werden, bevor einer der beiden Bedingungen bearbeitet wird * Bei der logischen UND / ODER Funktion stellen der Operator ein Sequenz Point dar. Erst wird der linke Operand vollständig ausgeführt und ausgewertet, bevor (ggf.) der rechte Operand ausgewertet wird (siehe [[Programmieren in C/C++: Grundlagen#Logische Verknüpfungen | Logische Verknüpfungen]]) * Beim Komma-Operator stellen der Komma ein Sequence-Point dar (siehe [[Programmieren in C/C++: Grundlagen#Komma-Operator | Komma-Operator]]) • und weitere (siehe Appendix der C-Spec) Operationen, bei denen die Ausführungsreihenfolge nicht spezifiziert ist: * Bei Funktionsaufrufen ist die Abarbeitungsreihenfolge der Parameter nicht spezifiziert, so dass bspw.: :<syntaxhighlight lang="C"> //Aufrufruf einer Funktion, deren Parameter sich aus Funktionsaufrufen //ergeben (*pf[f1()]) (f2(), f3() + f4()); //pf -> Array von Funktionszeigern //Die Funktionen f1,f2,f3 und f4 können in einer beliebigen Reihenfolge //aufgerufen werden </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int f1(void) { printf("f1 called\n"); return 1; } int f2(void) { printf("f2 called\n"); return 2; } int f3(void) { printf("f3 called\n"); return 3; } int f4(void) { printf("f4 called\n"); return 4; } void func1(int par1,int par2) { printf("func1(%d,%d) called\n",par1,par2); } void func2(int par1,int par2) { printf("func2(%d,%d) called\n",par1,par2); } int main(int argc,char *argv[]) { void (*pf[2])(int,int)={func1,func2}; //Aufrufruf einer Funktion, deren Parameter sich aus Funktionsaufrufen //ergeben (*pf[f1()]) (f2(), f3() + f4()); //pf -> Array von Funktionszeigern //Die Funktionen f1,f2,f3 und f4 können in einer beliebigen Reihenfolge //aufgerufen werden //Gerne anderen Compiler auswählen, z.B. x86-64 icc... return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Per Postinkrement/-dekrement Operator sagt aus, dass für die eigentliche Operation der Wert der Variablen genutzt wird und im Anschluss die Variable erhöht / erniedrigt werden soll. Nach C-Spezifikation [C11 6.5.2.4] muss dies spätestens vor dem nächsten Sequence Point erfolgt sein. Der genaue Zeitpunkt innerhalb des Sequence Points ist jedoch nicht vorgegeben: :<syntaxhighlight lang="C"> int a=7; int b=a++ + a; //Ergebnis Abhängig, ob das Postinkrement vor der Addition //oder als letztes ausgeführt wird. a=a++ + 1; //dito </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=7; int b=a++ + a; //Ergebnis Abhängig, ob das Postinkrement vor der Addition //oder als letztes ausgeführt wird. a=a++ + 1; //dito printf("a=%d b=%d\n",a,b); //Gerne anderen Compiler auswählen, z.B. x86-64 icc... return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Block / Compound-Statement === Ein Block oder Compound-Statement fasst Vereinbarungen und Anweisungen zu 'einer' Anweisung/Statement zusammen. Es kann überall dort eingesetzt werden, wo nur eine Anweisung erlaubt ist. <code> Syntax: {Declaration-or-statement-list/textsuperscript<sub>OPT</sub>} </code> Ein Block wird nicht wie bei einer Anweisung mit einem Semikolon abgeschlossen (Das angehängte Semikolon wäre dann eine separate leere Anweisung!). <br /> Ein Block hat blockweite Sichtbarkeit (siehe [[Programmieren in C/C++: Grundlagen#Blockweite Sichtbarkeit | Blockweite Sichtbarkeit]]), so dass hier definierte Variablen nur hier gültig sind. Deklarationen sind ebenfalls nur in dem Block gültig. <syntaxhighlight lang="C"> for(..) Anweisung; //For-Schleife führt nur diese eine Anweisung aus for(…) {Block} //For-Schleife führt Block (als eine Anweisung) aus if(..) Anweisung; else Anweisung; //IF-Anweisung führt nur 'eine' //Anweisung aus if(..) {Block} else {Block} //IF-Anweisung führt Block aus if( ) {Block}; else {Block}; //Semikolon ist eine separate //Leer-Anweisung, so dass else //nicht zur IF-Anweisung zugeordnet //werden kann (2 Anweisungen vor Else) void foo(void) { int var1; { //Block innerhalb von Block als Strukturierungswerkzeug int var2; struct xyz{int x,y,z}; //Defintion eines Datentyps im Block struct xyz var3; } struct xyz var4; //KO, Datentyp hier nicht mehr bekannt } </syntaxhighlight> Die GNU-C Reference (nicht C++) erlaubt es, Funktionen innerhalb von Blöcken (und damit auch innerhalb von Funktionen) zu definieren. Diese innere Funktion steht dann nur in diesem Block zur Verfügung und kann ergänzend auf Variablen des umgebenden Blockes zugreifen: <syntaxhighlight lang="C"> void foo(void) { { int label=1; //Funktion innerhalb einer Funktion void dummy(void){ label++; //Zugriff auf Variablen des umschließenden Blockes } dummy(); //Aufruf der nur in diesem Block gültigen Funktion } dummy(); //KO, Funktion hier nicht mehr gültig } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void foo(void) { { int label=1; //Funktion innerhalb einer Funktion void dummy(void){ label++; //Zugriff auf Variablen des umschließenden Blockes } dummy(); //Aufruf der nur in diesem Block gültigen Funktion } dummy(); //KO, Funktion hier nicht mehr gültig } int main(int argc,char *argv[]) { foo(); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * '''Blöcke können/sollten als Strukturierungswerk genutzt werden. Dem Leser von Source Code kann auf dieser Weise vermittelt werden, dass diese Anweisungen 'zusammen' zu lesen sind.''' * Im Gegensatz zu Java, in welchem innerhalb eines Blockes kein Variablenname genutzt werden darf, die außerhalb des Blockes existiert, ist dies in C erlaubt. Die äußere Variable steht damit innerhalb des Blockes nicht mehr im Zugriff. :<syntaxhighlight lang="C"> int a=3; int main(void){ int a=7; //Globale Variable ist ab hier nicht mehr sichtbar/zugreifbar { int a=9; //Innere Variable überdeckt äußere Variable } } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int a=3; int main(int argc,char *argv[]) { printf("a=%d\n",a); int a=7; //Globale Variable ist ab hier nicht mehr sichtbar/zugreifbar printf("a=%d\n",a); { int a=9; //Innere Variable überdeckt äußere Variable printf("a=%d\n",a); } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Embedded Statement === Embedded Statements sind eine GNU-C Erweiterung (siehe [https://www.gnu.org/software/gnu-c-manual/gnu-c-manual.html GNU-C-Manual 3.18]). Da sie vom Autor als sehr nützlich angesehen wird und auch von diversen Compilern und auch in C++ unterstützt wird, wird diese hier beschrieben. Ein Block fasst mehrere Anweisungen zu einer Anweisung zusammen, hat jedoch kein Rückgabewert. Ein Embedded-Statement entspricht einem Block mit der Ergänzung, dass dieser einen Rückgabewert hat, so dass ein Embedded-Statement überall dort eingesetzt werden kann, wo eine Expression erwartet wird. <code> Syntax: ({Declaration-or-statement-list<sub>OPT</sub>}) </code> Der Rückgabewert wird nicht über eine return-Anweisung angegeben, sondern entstammt aus der letzten Anweisung innerhalb der Liste: <syntaxhighlight lang="C"> int var; var={int par=7;} //KO Block hat keine Rückgabewert. var=({int par=7; par++; par;}); //OK Embedded-Statement hat einen //Rückgabewert, der sich aus der //letzten Anweisung 'Par;' ergibt //Hier 8. </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int var; var={int par=7;} //KO Block hat keine Rückgabewert. var=({int par=7; par++; par;}); //OK Embedded-Statement hat einen //Rückgabewert, der sich aus der //letzten Anweisung 'Par;' ergibt //Hier 8. printf("var=%d\n",var); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Ein Embedded-Statement ähnelt folglich einem Funktionsaufruf mit dem Unterschied, dass a) in der Tat kein Funktionsaufruf stattfindet und b) der Rückgabewert nicht mit return, sondern über die letzte Anweisung zurückgegeben wird. Der Anwendungsfall ist dort zu finden, wo eine Expression erwartet wird und mehrere Anweisungen zum Ermitteln der Expression notwendig sind: <syntaxhighlight lang="C"> int var1=8; int b=({int d=var1++;d>10?10:d;}); if( ({int d=b;b=var1;b=d;}) > 1) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int var1=8; int b=({int d=var1++;d>10?10:d;}); if( ({int d=b;b=var1;b=d;}) > 1) printf("Bedingung erfüllt"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * Ein Embedded-Statement ist insbesondere bei Nutzung von Makros (siehe Kap [[Programmieren in C/C++: Präprozessor | Präprozessor]]) hilfreich * Mittels eines Embedded-Statement kann eine anonyme Funktion/Lambdafunktion dargestellt werden: <syntaxhighlight lang="C"> void test(int (*fptr)(int),int arr[10]) { for(int lauf=0;lauf<10;lauf++) arr[lauf]=fptr(arr[lauf]); } int main(int argc, char *argv[]) { int arr[]={1,2,3,4,5,6,7,8,9,10}; //Aufruf mit einer anonymen Funktion test( ({int func(int a) {return a%2?a:0;} ; func;}) ,arr); } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void test(int (*fptr)(int),int arr[10]) { for(int lauf=0;lauf<10;lauf++) arr[lauf]=fptr(arr[lauf]); } int main(int argc, char *argv[]) { int arr[]={1,2,3,4,5,6,7,8,9,10}; //Aufruf mit einer anonymen Funktion test( ({int func(int a) {printf("Called:%d\n",a);return a%2?a:0;} ; func;}) ,arr); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Funktionen / Prozeduren == Funktionen/Prozeduren sind ein Strukturierungsmerkmal, so dass Teile der Funktionalität des Programmes wiederverwendbar sind. C/C++ unterscheidet nicht zwischen Funktionen (haben einen Rückgabewert, können damit in Ausdrücken verwendet werden) und Prozeduren (haben keine Rückgabewert, resp. Rückgabetyp void).<br/> Mit jedem Aufruf einer Funktion wird für den zugehörigen Block ein eigener Stack-Kontext angelegt, so dass Funktionen sich selbst aufrufen können (Rekursion). Jeder Funktionsinstanz hat somit seinen eigenen lokalen Variablenbereich, teilen sich jedoch die globalen und die statisch lokalen Variablen.<br /> Mit dem Aufruf einer Funktion können Parameter übergeben werden, wobei die Übergabeparameter vom Aufrufer (Caller) durch den Aufruf in die lokalen Variablen des Aufgerufenen (Callee) kopiert/zugewiesen werden (Call by Value). Wird ein Zeiger übergeben, hat der Callee über die Dereferenzierung des Zeigers die Möglichkeit, die Variablen des Caller zu verändern (Call by Reference) (siehe Kap. [[Programmieren in C/C++: Zeiger #Zeiger bei Funktionsaufrufen | Zeiger:Zeiger bei Funktionsaufrufen).]]). Hinweise: * Die Klammerung hinter dem Funktionsnamen (<code>foo()</code>) zeigt an, dass es sich um einen Funktionsaufruf (Verzweigung der Programmausführung zu der Startadresse der Funktion) handelt :<syntaxhighlight lang="C"> void foo(void) {printf("foo called");}; foo(); //Klammern hinter dem Funktionsnamen bedeuten Aufruf der Funktion </syntaxhighlight> * Die Nutzung des Funktionsnamens ohne Klammerung (<code>foo</code>) gibt die Startadresse der Funktion zurück. Die Startadresse kann in einem Zeiger auf Funktionen gespeichert werden (siehe Kap. [[Programmieren in C/C++: Zeiger#Zeiger auf Funktionen | Zeiger:Zeiger auf Funktionen]]). :<syntaxhighlight lang="C"> void foo(void) {printf("foo called");}; void (*fptr)(void)=foo; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void foo(void) { printf("foo called"); }; int main(int argc, char *argv[]) { void (*fptr)(void)=foo; fptr(); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Deklaration/Definition vor dem ersten Aufruf der Funktion 'notwendig', damit Compiler die Übergabeparameter entsprechend bereitstellt und ggf. eine implizite Typkonvertierung durchführt (dito Rückgabewert). Die Angabe der Variablennamen können bei der Deklaration entfallen * Die fehlende Angabe der Übergabeparameter bedeutet in C (nicht C++), dass diese Funktion mit beliebigen Übergabeparametern aufgerufen werden kann und der Compiler keine Typprüfung durchführt: :<syntaxhighlight lang="C"> int func() {...} //kann wie folgt aufgerufen werden func(); func(4); func("hallo Welt",4.7); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void func() { printf("foo called\n"); }; int main(int argc, char *argv[]) { func(); func(4); func("hallo Welt",4.7); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} :→ unbedingt vermeiden<br /> :Hat die Funktion keinen Übergabewert, so wird dies in C mit void gekennzeichnet * In C++ bedeutet die Schreibweise ohne Datentypbeschreibung, dass keine Parameter erwartet werden * In der Parameterliste von Funktionen dient in der GNU-C Spezifikation das Semikolon zum Trennen zwischen Deklaration von Übergabeparameter und den Übergabeparametern. Alle Übergabewerte links vom Semikolon sind (Forward)deklarationen: :<syntaxhighlight lang="C"> void test1(int a; int b,int a) { // Forward; Parameter printf("a=%d b=%d\n",a,b); } //Aufruf test1(3,7); //a=7 b=3 //Sinnvoll im Umgang mit Variable Length Arrays void test2(int dim; const char str[dim], int dim); //Aufruf test2("hallo",6); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void test1(int a; int b,int a) { // Forward; Parameter printf("a=%d b=%d\n",a,b); } //Sinnvoll im Umgang mit Variable Length Arrays void test2(int dim; const char str[dim], int dim) { printf("dim=%d\n",dim); } int main(int argc, char *argv[]) { //Aufrufe test1(3,7); //a=7 b=3 test2("hallo",6); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Return-Anweisung === Mit der Return-Anweisung wird eine Funktion (vorzeitig) beendet. Der optionale Parameter dient der Angabe des Rückgabewertes der Funktion an den Aufrufer. Der Datentyp des Parameters ergibt sich aus dem Rückgabedatentyp der Funktion. <code> Syntax: return expression<sub>OPT</sub> </code> Der Rückgabewert expresion sagt aus, dass hier nicht nur Konstanten oder Variablen stehen können, sondern beliebige Ausdrücke erlaubt sind. Der resultierende Datentyp des Ausdruckes muss letztendlich dem Rückgabedatentyp der Funktion entsprechen: <syntaxhighlight lang="C"> int foo(double a, double b) { return (int)(a*a+b*b); } </syntaxhighlight> Hinweise: * Bei nicht void-Funktionen ist eine return-Anweisung mit einer Expression entsprechend dem Datentyp der Funktion zwingend notwendig: :<syntaxhighlight lang="C"> int func(void) { return 5.1; //Datentyp wird zuvor int konvertiert } double a=func(); //int wird in double konvertiert </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int func(void) { return 5.1; //Datentyp wird zuvor int konvertiert } int main(int argc, char *argv[]) { double a=func(); //int wird in double konvertiert printf("a=%f\n",a); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Bei einer void-Funktion ist die return-Anweisung ohne Expression optional. Hier entspricht der schließende Block der Return-Anweisung :<syntaxhighlight lang="C"> void func(char *str) { if(str==NULL) return; printf("%s",str); } </syntaxhighlight> Sollen mehr als ein Rückgabewert an den Aufrufer zurückgegeben werden so empfiehlt sich: * die Rückgabewerte in einer Struktur zu packen (siehe [[Programmieren in C/C++: Datentypen#Verbundtyp Struktur/Klasse (nur C++) |Datentypen:Verbundtyp Struktur/Klasse (nur C++)]]) * die Rückgabewerte über die Aufrufparameter als Call-by-Reference zu übergeben (siehe [[Programmieren in C/C++: Zeiger#Zeiger bei Funktionsaufrufen | Zeiger:Zeiger bei Funktionsaufrufen]]) ==== Rückgabewert aus Datentypsicht ==== Aus Datentypsicht kann der Funktionsname inkl. den Parameter(n) in einem Ausdruck mit dem Datentyp des Rückgabewertes der Funktion ausgetauscht werden: <syntaxhighlight lang="C"> int foo(void) {return 4711;} int var; var=1+foo(); //Aus Datentypsicht (int)=(int)+(int) </syntaxhighlight> Daraus ergibt sich, dass bei Arrays/Strukturen/Unions direkt auf einzelne Komponenten zugegriffen werden kann, ohne diese zuvor einer Variablen zuzuweisen: <syntaxhighlight lang="C"> struct xyz{int x,y,z;}; struct xyz foo(int par) { struct xyz var; var.x=var.y=var.z=par; return var; } if(foo(12).x == 12) printf("Identisch\n"); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct xyz{int x,y,z;}; struct xyz foo(int par) { struct xyz var; var.x=var.y=var.z=par; return var; } int main(int argc, char *argv[]) { if(foo(12).x == 12) printf("Identisch\n"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} ==== Fehlerrückgabe ==== Viele Funktionen können unter gewissen Umständen nicht korrekt ausgeführt werden. Z.B. aufgrund dessen, dass: * der benötigter Speicher vom Heap nicht bereitgestellt werden kann * Übergabeparameter außerhalb des zulässigen Bereiches liegen * angeforderte Ressource (Datei, Geräte, …) nicht vorhanden/verfügbar sind Solche Fälle gilt es dem Aufrufer mitzuteilen, da in diesen Fällen die vom Aufrufer geforderte Funktionalität nicht erfüllt ist und der Aufrufer ggf. nicht weiterarbeiten kann. Zur Mitteilung des Fehlers sollte vorrangig der Rückgabewerte genutzt werden. (auch wenn in C++ mit Exception eine Alternative hierzu bereitsteht) <syntaxhighlight lang="C"> char *strdup(char *src) { char *dst; if((dst=malloc(strlen(src)+1))==NULL) return NULL; strcpy(dst,src); return dst; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> #include <string.h> char *strdup1(char *src) { char *dst; if((dst=malloc(strlen(src)+1))==NULL) return NULL; strcpy(dst,src); return dst; } int main(int argc, char *argv[]) { char *dup=strdup1("hallo"); if(dup == NULL) printf("Fehler\n"); else printf("dup='%s'\n",dup); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Die Standard-C Library-Funktionen geben in diesem Fall zumeist ein -1 (Rückgabewert Ganzzahl) oder einen NULL-Zeiger (Rückgabewert Zeiger) zurück. Der genaue Fehlergrund ist dann ergänzend in der globalen Variablen errno gespeichert. Mittels der Standard-C Funktion strerror() kann die Zahl in einen für den Anwender/Programmierer lesbaren String umgewandelt werden (die GNU-C Library Funktion printf() bietet ergänzend den Conversion Spezifier %m als alternative Ausgabemöglichkeit an): <syntaxhighlight lang="C"> #include <errno.h> int var; if(-1==scanf("%d",&var) ) printf("Es wurde keine Zahl erkannt\n"); int ret=open("/etc/ptmp",O_WRONLY|O_CREAT|O_EXCL, S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH); if(-1==ret) printf("open failed() with %s\n",strerror(errno)); if(-1==ret) printf("open failed() with %m (nur glibc)\n"); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <fcntl.h> #include <string.h> #include <errno.h> int main(int argc, char *argv[]) { int var; if(-1==scanf("%d",&var) ) printf("Es wurde keine Zahl erkannt\n"); int ret=open("/etc/ptmp",O_WRONLY{{!}}O_CREAT{{!}}O_EXCL, S_IRUSR{{!}}S_IWUSR{{!}}S_IRGRP{{!}}S_IROTH); if(-1==ret) printf("open failed() with %s\n",strerror(errno)); if(-1==ret) printf("open failed() with %m (nur glibc)\n"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} '''Für eine sauber Programmierung sollte diese Methodik generell angewendet werden.''' Jede Funktion, welche Fehlschlagen kann, teilt dies per Rückgabewert dem Aufrufer mit. Der Rückgabewert einer jeden Funktion wird vom Aufrufer kontrolliert. === Main-Funktion === Mit Start der Anwendung übergibt das Betriebssystem die Kontrolle an die Anwendung und führt dort die Funktion main aus. Als Übergabe- und Rückgabeparameter sind folgende Varianten erlaubt: <syntaxhighlight lang="C"> int main(void) { } int main(int argc, char *argv[]) { } </syntaxhighlight> Mit dem Start der Anwendung kann, wie bei jedem Funktionsaufruf, Parameter an den startenden Prozess übergeben werden. Als Parameter können Strings übergeben werden, welche in Form eines Arrays von Strings übergeben werden. Im Parameter argc sind die Anzahl der Strings enthalten. Im Parameter argv[x] sind die einzelnen Strings enthalten. Sofern vorhanden ist im ersten String der Programmname/Aufrufname der Anwendung enthalten: <syntaxhighlight lang="C"> int main(int argc, char *argv[]) { //Variante 1: Darstellung des Inhaltes des Arrays von Strings for(int lauf=0;lauf < argc; lauf++) printf("%d.Parameter: '%s'\n",lauf,argv[lauf]); //Variante 2: Darstellung des Inhaltes des Arrays von Strings (void)argv; //Wird hier nicht benötigt for(char **str=argv;*str!=NULL;str++) printf("Parameter: '%s'\n",*str); return EXIT_SUCCESS; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int max_width=0; int ret; //Variante 1: Darstellung des Inhaltes des Arrays von Strings for(int lauf=0;lauf < argc; lauf++) { ret=printf("%d.Parameter: '%s'\n",lauf,argv[lauf]); max_width=ret>max_width ? ret : max_width; } //Trennzeichen drucken char term[max_width]; memset(term,'-',max_width); printf("%.*s\n",max_width-1,term); //Variante 2: Darstellung des Inhaltes des Arrays von Strings (void)argv; //Wird hier nicht benötigt for(char **str=argv;*str!=NULL;str++) printf("Parameter: '%s'\n",*str); return EXIT_SUCCESS; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Im Compiler-Explorer können die Parameter im Executor unter 'Execution Arguments', getrennt mit Leerzeichen eingegeben werden. Wird die Funktion main beendet, entweder über die return Anweisung oder den Aufruf der exit() Funktion, wird die Kontrolle zurück an den startenden Prozess (zumeist Shell) gegeben. Über den Rückgabewert wird im Allgemeinen dem Aufrufer der Fehlerstatus mitgeteilt (EXIT_SUCCESS oder 0 bedeutet fehlerfreie , EXIT_FAILURE oder ungleich 0 fehlerhafte Ausführung). Der Start der Anwendung kann als Funktionsaufruf angesehen werden, welchen einen Wert an den Aufrufer zurückliefert. Hinweise: * Der Return-Wert der main-Funktion kann mit >>echo $? in der Bash abgefragt werden * Mittels <code>exit(int status)</code> kann das Programm an jeder Stelle innerhalb des Programms beendet werden. <code>status</code> entspricht dann der expression der return Anweisung von main === Inline Funktion === Wie der Name inline andeutet, ist die Intention von Inline, dass die aufgerufen Funktion Bestandteil der aufrufenden Funktion ist. Die aufgerufene Funktion soll somit im Kontext des Aufrufers ausgeführt werden, so dass kein eigener Stack bereitgestellt werden muss. Der Start der Funktion kann somit schneller erfolgen: <code> inline int foo(void) { } </code> Das Inline erfolgt durch den Compiler (und nicht durch den Linker). Damit das inline funktioniert, muss die zu inlinende Funktion vor dem Aufruf definiert sein, d.h. sie muss in derselben C-Datei enthalten sein [C11 6.7.4]. Hinweis: * Das 'inlinen' von Funktionen über die eigene Objektdatei hinweg erfolgt in C/C++ über Link Time Optimization (LTO). Hierzu fügt der Compiler den Zwischencode mit in die Objektdatei, so dass der Linker das 'inlinen' vollziehen kann (siehe {{w|lang=en|Interprocedural_optimization| Interprocedural Optimization}}) === Variadic Function / Ellipsis Punctuator === Mit dem Ellipsis Puncturator '…' kann in Funktionsdefinitionen angegebenen werden, dass anstatt der … Anweisung, beliebig viele Parameter/Argumente übergeben werden können. Dies wird unter anderen in der printf() Anweisung genutzt: <syntaxhighlight lang="C"> int printf(const char *fmt, ... ); </syntaxhighlight> Die wie folgt aufgerufen werden kann: <syntaxhighlight lang="C"> printf("Hello World"); //es folgt kein Parameter printf("%d",100); //es folgt ein Parameter vom Datentyp int printf("%f",1.1); //es folgt ein Parameter vom Datentyp double printf(conststr,1,2,3,"xyz") //Ohne Worte </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { printf("Hello World\n"); //es folgt kein Parameter printf("%d\n",100); //es folgt ein Parameter vom Datentyp int printf("%f\n",1.1); //es folgt ein Parameter vom Datentyp double const char *conststr="%d %x %c '%s'\n"; printf(conststr,1,2,33,"xyz"); //Ohne Worte return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Der übergebenen Datentype der Parameter wird der aufgerufenen Funktion nicht mitgeteilt! Einzig werden bei Aufruf der variadischen Funktion so viel Bytes auf den Stack gelegt, wie der Datentyp der einzelnen Übergabeparameter groß ist: :<code>int --> 4 Byte</code> :<code>double --> 8 Bytes</code> :<code>Zeiger --> 4/8 Byte</code> Damit die aufgerufene Funktion die fehlende Datentypinformation dennoch mitgeteilt bekommt, muss dies am Beispiel der <code>printf</code> Funktion über den Format-String erfolgen: <syntaxhighlight lang="C"> int vari; printf("%d",vari); //%d erwartet einen Integer Übergabeparameter (4-Byte) size_t vars; printf(" %zu %d ", vars, vari); // %zu zur Mitteilung, dass anstatt //integer nun size_t als Datentyp übergeben wird //und somit anstatt 4 Bytes 8 Bytes vom Stack genommen werden </syntaxhighlight> <code>printf()</code> entnimmt entsprechend der Datentypbeschreibung im Formatstring die passende Anzahl an Bytes vom Stack. Da der Compiler für die optionalen Parameter nicht den Zieldatentyp kennt, erlaubt die C-Spezifikation als Übergabedatentypen hier nur die Grunddatentypen <code>signed int, unsigned int, long, long long, double</code> und <code>Zeiger</code>. Entspricht der übergebene Parameter nicht einen dieser Datentypen, so wird er mittels implizit Cast entsprechend nachfolgender Tabelle gewandelt [C11 6.5.2.2 Default Argument Promotions]: {| class="wikitable" |- ! Ausgangstyp !! Umwandlungstyp |- | char, signed char, short || int |- | unsigned char, unsigned short || unsigned int |- | float || double |- | Alle anderen Datentypen || bleiben erhalten |} Bspw.: <syntaxhighlight lang="C"> signed char varc=-1; float varf =0.1; printf("%d %f",varc, varf); //varc wird beim Aufruf nach int konvertiert! //varf wird beim Aufruf nach double konvertiert! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { signed char varc=-1; float varf =0.1; printf("%d %f",varc, varf); //varc wird beim Aufruf nach int konvertiert! //varf wird beim Aufruf nach double konvertiert! //Zur Darstellung der besagten Konvertierung siehe rechtes Fenster return 0; } | execCompilerOptions=-Wall| h=g }} Öffnen im Compiler Explorer] }} Zum Umgang mit dem variadischen Parameter stellt C die Funktionen <code>va_start(), va_arg(), va_copy()</code> und <code>va_end()</code> bereit. Auf Grundlage des dazugehörigen Datentyps <code>va_list</code> können variadische Parameter auch an Unterfunktionen weitergereicht werden (bspw vprintf()). Dieses Thema bedingt jedoch genaue Kenntnisse vom Umgang mit dem Stack und ist nicht Bestandteil dieser Vorlesung. == Variable Length Array (VLA) == Im Normalfall ergibt sich die Anzahl der Elemente eines Arrays aus einer Konstanten, so dass der Compiler zur Compilezeit passend Speicher reserviert (siehe Kap. [[Programmieren in C/C++: Array | Array]]): <syntaxhighlight lang="C"> int arr[4]; //Compiler reserviert für Variable arr //4*sizeof(int) Speicherplatz </syntaxhighlight> Bei Variable Lenght Array wird die Arraydimension nicht über eine Konstante, sondern über eine Variable oder einen Ausdruck angegeben. D.h. die tatsächliche Dimension des Arrays ergibt sich erst zum Ausführungszeitpunkt der Definition: <syntaxhighlight lang="C"> void foo(size_t n) { int arr[n*2+1]; //Arraydimension ergibt sich zum Ausführungszeitpunkt n++; //Nachträgliches Ändern von n ändert nicht //die Größe des Arrays! } </syntaxhighlight> Ein Variable Length Array kann nur als lokale Variable oder als Übergabeparameter definiert werden (wobei im letzteren Fall kein Speicher hiermit reserviert wird). Eine Initialisierung eines VLA's mit der Definition ist nicht möglich, d.h. nach der Definition beinhaltet das Array 'zufällige' Werte. Es empfiehlt sich daher, diese bspw. mit memset händisch zu initialisieren (siehe auch Kap [[Programmieren in C/C++: Array#Initialisierung | Array:Initialisierung]]): <syntaxhighlight lang="C"> void foo(size_t n) { char str[n]; memset(str,0,n*sizeof(char)); //Array mit 0 füllen </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> void foo(size_t n) { char str[n]; memset(str,0,n*sizeof(char)); //Array mit 0 füllen for(size_t lauf=0;lauf<n;lauf++) printf("str[%zu]=%d\n",lauf,str[lauf]); } int main(int argc, char *argv[]) { foo(4); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Mittels sizeof kann weiterhin der Speicherbedarf ermittelt werden, wobei sizeof mit einem VLA als Argument kein Konstantenausdruck ist. Stattdessen wird die Größe zur Laufzeit ermittelt: <syntaxhighlight lang="C"> void foo(size_t n) { int arr[n*2+1]; //VLA size_t size; size=sizeof(arr); //sizeof(arr) entspricht einem Funktionsaufruf //welcher die Speichergröße des VLA's ermittelt </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void foo(size_t n) { int arr[n*2+1]; //VLA size_t size; size=sizeof(arr); //sizeof(arr) entspricht einem Funktionsaufruf //welcher die Speichergröße des VLA's ermittelt printf("size=%zu\n",size); } int main(int argc, char *argv[]) { foo(5); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} VLA wurden erstmals in C mit C99 eingeführt. In C11 wurden VLA's als optional eingestuft und mit C23 zurück auf notwendig gesetzt. In C++ sind VLA's nicht definiert, werden jedoch vom GCC Compiler unterstützt. Als alternativen Datentyp wird hier std::array empfohlen. Hinweis: * VLA sind nicht direkt in einem Switch-Case Block definierbar. Wird hier ein VLA benötigt, so muss hierzu ein Block erzeugt werden: :<syntaxhighlight lang="C"> switch(value) { case 1: char arr1[value]; //Compilerfehler, da bei value!=1 kein Speicherplatz //für das VLA reserviert wird break; case 2: { char arr2[value]; //OK } break; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int value=argc; switch(value) { case 1: char arr1[value]; //Compilerfehler, da bei value!=1 kein Speicherplatz //für das VLA reserviert wird break; case 2: { char arr2[value]; //OK } break; } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Operatoren == In der Programmiersprache C sind folgende Punctuators [C11 6.4.6] definiert: <syntaxhighlight> [ ] ( ) { } . -> ++ -- & * + - ~ ! / % << >> < > <= >= == != ^ | && || ? : ; ... = *= /= %= += -= <<= >>= &= ^= |= , # ## <: :> <% %> %: %:%: </syntaxhighlight> Die Funktionalitäten sind identisch zu Java. Aufgrund des Datentyps Zeiger gibt es in C ergänzend den Punctuator <code>-></code> (siehe Kap [[Programmieren in C/C++: Datentypen#Verbundtyp Struktur/Klasse (nur C++)|Datentypen:Verbundtyp Struktur/Klasse (nur C++)]]). Der Präprozessor bedingt die beiden Punctuatoren <code>#</code> und <code>##</code> (siehe Kap [[Programmieren in C/C++: Präprozessor | Präprozessor]]). Die letzten 6 Punctuators <code><: :> <% %> %: %:%:</code> werden zu <code>[ ] { } # ##</code> ersetzt. Sie sind für Computersysteme gedacht, welche keine ALTGR-Taste besitzen.<br /> Java kennt ergänzend den <code>>>></code> Operatoren, welcher in C über den normalen Schiebebefehl und den zugrundeliegenden Datentyp gesteuert wird. Wie in Java sind einige Punctuators vom Kontext abhängig und haben damit unterschiedliche Funktionalitäten: <syntaxhighlight> ++ → (Postfix) ++ vs. ++(Präfix) -- → (Postfix) -- vs. --(Präfix) +/- → Vorzeichen vs. Addition/Subtraktion () → Funktionsaufruf() vs. Befehlsbestandteil if() vs. Priorisierung </syntaxhighlight> Für den Umgang mit dem Datentyp Zeiger besitzen einige Punctuatoren ergänzende Funktionalitäten (siehe Kap [[Programmieren in C/C++: Zeiger| Zeiger]]): <syntaxhighlight> & → Bitweises UND: Anwendung: Ganzahlausdruck & Ganzahlausdruck & → Adressoperator: Anwendung: &Variable * → Multiplikation Anwendung: Ganzahl-/Gleitkommaausdruck * Ganzahl-/Gleitkommaausdruck * → Datentyp Zeiger Anwendung: Datentyp * Variablenname; * → Dereferenzierung: Anwendung: * Zeiger </syntaxhighlight> Punctuatoren, welche von Java abweichende / ergänzende Funktionalitäten haben, werden nachfolgend gesondert beschrieben. Sind in einer Anweisung mehrere Operatoren enthalten, so hängt die Abarbeitungsreihenfolge von der Rangfolge/Priorität der Operatoren ab (siehe [[C-Programmierung: _Liste_der_Operatoren_nach_Priorität| C-Programmierung:Liste der Operatoren nach Priorität]]).<br /> Die Rangfolge ist identisch zu Java, wobei C mehr Operatoren kennt. Generell empfiehlt sich, lieber eine Klammer zu viel als zu wenig zusetzen. Klammern haben die höchste Priorität. === Zuweisungs-Operator === Die Zuweisung (<code>=</code>-Operator, assignment expression) weist dem L-Value den R-Value zu. Ergänzend dient der L-Value als Rückgabewert des Operators, so dass das Ergebnis der Zuweisung weiter genutzt werden kann. Die Abarbeitungsreihenfolge ist von rechts nach links (R-L Assoziativität). Wird der 'letzte' Rückgabewert nicht verwendet, so wird dieser verworfen (siehe Kap. [[Programmieren in C/C++: Grundlagen#Discarded Value | Discarded Value]]).<br /> Beispiel: <syntaxhighlight lang="C"> a=7; //Zuweisung a=b=7; //Erste Zuweisung (b=7) hat einen Rückgabewert, welcher im //Anschluss a zugewiesen wird if(a=7) //Variablen a wird der Wert 7 zugewiesen. Der Rückgabewert //der Zuweisung wird im Anschluss auf True oder False geprüft if(7=a) //Besser, da aufgrund der fehlerhafter Zuweisung ein //Compilerfehler geworfen wird x*=y=z //entspricht x=x*(y=z) a=b=d+7; //entspricht a=(b=(d+7)) a=b==c; //a bekommt das boolesche Ergebnis der Vergleichsoperation //zugewiesen </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a,b,c=3,d=4; int x,y,z; a=7; //Zuweisung a=b=7; //Erste Zuweisung (b=7) hat einen Rückgabewert, welcher im //Anschluss a zugewiesen wird if(a=7) //Variablen a wird der Wert 7 zugewiesen. Der Rückgabewert ; //der Zuweisung wird im Anschluss auf True oder False geprüft if(7=a) //Besser, da aufgrund der fehlerhafter Zuweisung ein ; //Compilerfehler geworfen wird x*=y=z; //entspricht x=x*(y=z) a=b=d+7; //entspricht a=(b=(d+7)) a=b==c; //a bekommt das boolesche Ergebnis der Vergleichsoperation //zugewiesen return 0; return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * Auf beiden Seiten der Zuweisung muss der identische Datentyp stehen. Wenn andernfalls eine implizite Typkonvertierung nicht möglich ist, gibt der Compiler einen Fehler aus: :<syntaxhighlight lang="C"> int a = 7.3; //implizite Typkonvertierung double b=a+3; //Implizite Typkonvertierung der Intergeraddition nach double float c=(float)a+(float)3; //Explizite Typkonvertierung char *d=a; //Compilerfehler, da Integerwert nicht implizit in einen //Zeiger konvertiert werden kann </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a = 7.3; //implizite Typkonvertierung double b=a+3; //Implizite Typkonvertierung der Intergeraddition nach double float c=(float)a+(float)3; //Explizite Typkonvertierung char *d=a; //Compilerfehler, da Integerwert nicht implizit in einen //Zeiger konvertiert werden kann //Zur Darstellung der besagten Konvertierung siehe rechtes Fenster (void)b; (void)c; (void)d; return 0; } | execCompilerOptions=-Wall| h=g }} Öffnen im Compiler Explorer] }} * Bei der Parameterübergabe beim Funktionsaufruf wird ebenfalls indirekt der Zuweisungsoperator angewendet. Die Parameter des Aufrufers werden per Zuweisung den lokalen Variablen der aufgerufenen Funktion zugewiesen :<syntaxhighlight lang="C"> void func(int a, float b) { printf("a=%d b=%f",a,b); } int x=4; float y=5.0; func(x,y); //der Inhalt der Variablen x wird der lokalen Variable a //(a=x) und der Inhalt der Variablen y der lokalen Variablen b //(b=y) zugewiesen. func(y,x); //Dito, mit der Ergänzung, dass eine implizite Typkonvertierung //stattfindet (a=(int)y) und (b=(float)x). </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void func(int a, float b) { printf("a=%d b=%f",a,b); } int main(int argc, char *argv[]) { int x=4; float y=5.0; func(x,y); //der Inhalt der Variablen x wird der lokalen Variable a //(a=x) und der Inhalt der Variablen y der lokalen Variablen b //(b=y) zugewiesen. func(y,x); //Dito, mit der Ergänzung, dass eine implizite Typkonvertierung //stattfindet (a=(int)y) und (b=(float)x). //Zur Darstellung der besagten Konvertierung siehe rechtes Fenster return 0; } | execCompilerOptions=-Wall| h=g }} Öffnen im Compiler Explorer] }} === Komma-Operator === Der Komma-Operator erlaubt es, zwei Ausdrücke auszuführen, wo nur einer erlaubt wäre. Die Ergebnisse aller durch diesen Operator verknüpften Ausdrücke, außer dem letzten werden verworfen. Der letzte Ausdruck dient als Rückgabewert. Folgendes gilt es bei der Nutzung des Komma-Operators zu beachten: * Der Komma-Operator wird von links nach rechts ausgewertet * Das Komma selbst stellt eine Sequence Point dar (siehe Kap [[Programmieren in C/C++: Grundlagen#Sequence Point|Sequence Point]]) * An Stellen, wo das Komma zum Syntax gehört (z.B. Trennung der Übergabeparameter bei der Funktionsdefinition und beim Funktionsaufruf, Trennung von Variablen bei der Variablendefinition/-deklaration, Trennung der enum Konstanten) muss der Ausdruck ergänzend geklammert werden, wenn der Komma-Operator gefordert ist * Der Komma-Operator hat von allen Operatoren die niedrigste Priorität/Rangfolge, so dass dieser Operator als letztes 'ausgewertet' wird Beispiel: <syntaxhighlight lang="C"> int a=(5,3); //5 wird verworfen, 3 dient als Rückgabewert, so dass //a den Wert 3 erhält. int b=5,3; //KO, da Komma Bestandteil der Definition ist int c=1,d=2,e=3; int f=(c+=2,a+a); //c um zwei erhöht, a+a in f int g= c+=2,a+a; //KO, da Komma Bestandteil der Defintion ist void func(int value){} func(1); //Funktion wird mit dem Wert 1 aufgerufen func(1,2); //KO, da Komma Bestandteil des Funktionsaufrufes ist func((1,2)); //Funktion wird mit dem Wert 2 aufgerufen int arr[12]; arr[3,4]=1; //3 wird verworfen, 4 dient als Index für das Array </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void func(int value){ printf("func called with %d\n",value); } int main(int argc, char *argv[]) { int a=(5,3); //5 wird verworfen, 3 dient als Rückgabewert, so dass //a den Wert 3 erhält. int b=5,3; //KO, da Komma Bestandteil der Definition ist printf("a=%d\n",a); int c=1,d=2,e=3; printf("c=%d,d=%d,e=%d\n",c,d,e); int f=(c+=2,a+a); //c um zwei erhöht, a+a in f printf("c=%d,f=%d\n",c,f); int g= c+=2,a+a; //KO, da Komma Bestandteil der Defintion ist func(1); //Funktion wird mit dem Wert 1 aufgerufen func(1,2); //KO, da Komma Bestandteil des Funktionsaufrufes ist func((1,2)); //Funktion wird mit dem Wert 2 aufgerufen int arr[12]; arr[3,4]=1; //3 wird verworfen, 4 dient als Index für das Array return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} 'Sinnvolle' Anwendungsbeispiele: * Bei For-Schleifen, so dass mehrere Variablen initialisiert und mehrere Variablen mit jedem Schleifendurchlauf geändert werden können: :<syntaxhighlight lang="C"> int sum,lauf; int arr[]={5,4,3,2,1}; for(sum=100,lauf=5 ; lauf ; lauf--,sum+=arr[lauf]); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int sum,lauf; int arr[]={5,4,3,2,1}; for(sum=100,lauf=5 ; lauf ; lauf--,sum+=arr[lauf]) printf("sum=%d lauf=%d\n",sum,lauf); printf("sum=%d\n",sum); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Bei der Return-Anweisung, bei welcher zur Darstellung der Zusammengehörigkeit mehrere Aktionen ausgeführt werden sollen: :<syntaxhighlight lang="C"> return errno=EINVAL,-1; return printf("Fehler"),-1; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <errno.h> int foo(void) { return errno=EINVAL,-1; } int far(void) { return printf("Fehler\n"),-1; } int main(int argc, char *argv[]) { printf("foo()=%d\n",foo()); printf("far()=%d\n",far()); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * An Stellen, wo nur eine Anweisung erlaubt ist (und man zu faul ist, einen Block zu öffnen) :<syntaxhighlight lang="C"> if(…) y=2,z=3; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int y=0,z=0; if(1) y=2,z=3; printf("y=%d z=%d\n",y,z); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * In vielen Ländern wird das Komma zur Darstellung von Gleitkommazahlen genutzt. Wird versehentlicher Weise dies in C/C++ übernommen, so führt dies zu einem unerwarteten Verhalten: :<syntaxhighlight lang="C"> double var; var=5.3; //Variable wird mit 5.3 initialisiert var=5,3; //KO, da Komma Bestandteil der Defintion ist var=(5,3); //Variable wird mit 3 initialisiert </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { double var; var=5.3; //Variable wird mit 5.3 initialisiert printf("var=%f\n",var); var=5,3; //KO, da Komma Bestandteil der Defintion ist var=(5,3); //Variable wird mit 3 initialisiert printf("var=%f\n",var); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === ?-Operator / Conditional-Operator === Operator mit 3 Operanden, welcher in Abhängigkeit des ersten Operanden den zweiten oder dritten Operanden zurückgibt. <code> Syntax: Logical-OR-expression ? expression : condition-expression </code> Entspricht der if()-Anweisung, wobei der ? Operator als solches einen Wert zurückgibt! Expression wird nur ausgewertet, wenn der erste Operand true ist. Andernfalls wird nur condition-expression ausgeführt. Der zurückgegebene Datentyp ergibt sich aus der Expression resp. Condition-expression. Beide sollten somit vom identischen Datentyp sein. Folgendes gilt es bei der Nutzung des ?-Operators zu beachten * Der Datentyp Expression und condition-Expression muss identisch sein <syntaxhighlight lang="C"> int a=5; a=a > 10 ? "String" : 4; //KO, "String" ist vom Datentyp (char*) und // 4 ist vom Datentyp (int). </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a=5; a=a > 10 ? "String" : 4; //KO, "String" ist vom Datentyp (char*) und // 4 ist vom Datentyp (int). return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Nach der GNU-C Reference kann der mittlere Operand fehlen, in diesem Fall wird stattdessen das Ergebnis des linken Operanden dort eingesetzt (siehe https://gcc.gnu.org/onlinedocs/gcc/Conditionals.html#Conditionals) <syntaxhighlight lang="C"> int a=13; int b=a>10 ? : 0; //wenn a > 10 wird true, andernfalls false zurückgegeben </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a=13; int b=a>10 ? : 0; //wenn a > 10 wird true, andernfalls false zurückgegeben printf("b=%d\n",b); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Sollen innerhalb von condition-expression mehrere (durch Komma getrennte) Anweisungen enthalten sein, so sind diese zu Klammern! Andernfalls bedingt die niedrige Priorität des Komma-Operators ein anders Verhalten, als erwartet. <syntaxhighlight lang="C"> int a=7,max=5; max=a>max ? a : max; //Alles bestens int var0,var1,var2; var0=a>5 ? a++,5:6,a=1; //das zweite Komma wird als separate Anweisung //ausgeführt und kommt somit immer zur //Ausführung var1=(a>5 ? a++,5:6),a=1; //durch Klammerung klare Abgrenzung var2= a>5 ? a++,5 : (6,a=1); //durch Klammerung klare Abgrenzung </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a=7; int max=5; max=a>max ? a : max; //Alles bestens printf("max=%d\n",max); int var0,var1,var2; var0=a>5 ? a++,5:6,a=1; //das zweite Komma wird als separate Anweisung //ausgeführt und kommt somit immer zur //Ausführung printf("var0=%d a=%d\n",var0,a); var1=(a>5 ? a++,5:6),a=1; //durch Klammerung klare Abgrenzung printf("var1=%d a=%d\n",var1,a); var2= a>5 ? a++,5 : (6,a=1); //durch Klammerung klare Abgrenzung printf("var2=%d a=%d\n",var2,a); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Die Nutzung des ?-Operators empfiehlt sich an diversen Stellen: * Bei Makros :<syntaxhighlight lang="C"> #define MAX(a,b) (a>b?a:b) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #define MAX(a,b) (a>b?a:b) int main(int argc, char *argv[]) { printf("MAX(4,5)=%d\n",MAX(4,5)); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Beim Fehlerhandling :<syntaxhighlight lang="C"> char *str=strstr("hallo123","lox"); //Ausgabe von str nur, wenn Suche erfolgreich (str!=NULL) war printf("%s",str!=NULL?str : "(not found)" ); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char *str=strstr("hallo123","lox"); //Ausgabe von str nur, wenn Suche erfolgreich (str!=NULL) war printf("%s",str!=NULL?str : "(not found)" ); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Prüfen, ob eine Funktion erfolgreich ausgeführt wurde, bevor eine weitere Funktion ausgeführt wird <syntaxhighlight lang="C"> int ret; ret=init1(); //im Fehlerfreien gibt init1() 0 zurück ret=ret?:init2(); //Aufruf von init2() nur wenn ret==0 ist //andernfalls wird ret zurückgegeben </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int init1(void) { printf("init1() called\n"); return 0; } int init2(void) { printf("init2() called\n"); return 0; } int main(int argc, char *argv[]) { int ret; ret=init1(); //im Fehlerfreien gibt init1() 0 zurück ret=ret?:init2(); //Aufruf von init2() nur wenn Ret==0 ist //andernfalls wird Ret zurückgegeben return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Logische Verknüpfungen === Alle logischen Operationen nutzen als Operanden Ganzzahlen ,Gleitkommazahlen oder Zeiger. Der Operand wird als false angesehen, wenn der Operand 0, 0.0 oder NULL ist. Andernfalls als true. Das Ergebnis ist immer vom Datentyp int und hat den Wert von 0 oder 1. <code>Syntax: Expression && Expression</code><br /> <code>Syntax: Expression || Expression</code><br /> <code>Syntax: ! Expression</code><br/> Bei der logischen UND und ODER Verknüpfung wird zuerst der linke Ausdruck ausgewertet (Operator ist ein Sequence Point). Der rechte Ausdruck wird nur ausgeführt, wenn: * bei der logischen UND Verknüpfung der linke Ausdruck TRUE ergab * bei der logische OR Verknüpfung der linke Ausdruck FALSE ergab Andernfalls steht das Ergebnis schon mit der Auswertung des linken Operanden fest.<br /> In der theoretischen Informatik wird dies 'Non-strict-evaluation' genannt, bei welcher der Rückgabewert feststeht, bevor alle Ausdrücke bearbeitet worden sind. Beispiel für das Verhalten des Ausbleibens der Auswertung des zweiten Operators: <syntaxhighlight lang="C"> int a=0,b=0; //a=-1; //Als alternativer Startwert if(++a || ++a) b=1; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=0,b=0; //a=-1; //Als alternativer Startwert if(++a {{!}}{{!}} ++a) b=1; printf("a=%d b=%d\n",a,b); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Diese Funktionalität ist insbesondere beim Umgang mit Fehlern vorteilhaft: * Prüfen, ob eine Variable einen gültigen Wert hat, bevor sie weiterverwendet wird <syntaxhighlight lang="C"> char *str = strstr("hallo123","la"); if(str!=NULL && strlen(str) ) printf("Len = %ld",strlen(str)); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char *str = strstr("hallo123","la"); if(str!=NULL && strlen(str) ) printf("Len = %ld",strlen(str)); else printf("Kein Substring im String gefunden\n"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Prüfen, ob eine Funktion erfolgreich ausgeführt wurde, bevor eine weitere Funktion aufgerufen wird: <syntaxhighlight lang="C"> int ret; ret=init1(); //Bei erfolgreicher Initialisierung wird 1 zurückgegeben ret=ret && init2(); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int init1(void) { printf("init1() called\n"); return 1; } int init2(void) { printf("init1() called\n"); return 1; } int main(int argc, char *argv[]) { int ret; ret=init1(); //Bei erfolgreicher Initialisierung wird 1 zurückgegeben ret=ret && init2(); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Bitweise Verknüpfungen === Alle bitweisen Operationen nutzen als Operanden Ganzzahlen. Bei vorzeichenbehafteten Zahlen ist das Ergebnis nach [C11 6.5] Implementierungsabhängig, wobei das Vorzeichenbit zumeist als eigenständiges Bit angesehen wird und bei UND/ODER/EXOR als normales BIT betrachtet wird. <code>Syntax: Ganzzahl & Ganzzahl → Bitweise UND Operation</code><br /> <code>Syntax: Ganzzahl | Ganzzahl → Bitweise ODER Operation</code><br /> <code>Syntax: Ganzzahl ^ Ganzzahl → Bitweise EXOR Operation</code><br /> <code>Syntax: ~ Ganzzahl → Bitweise Negierung</code><br /> <code>Syntax: Ganzzahl >> additive-expression</code><br /> <code>Syntax: Ganzzahl << additive-expression</code><br /> Mittels des Schiebeoperators können Ganzzahlen um additive-expression bitweise nach Links <code><<</code> oder Rechts <code>>></code> verschoben werden. Der resultierende Datentyp ergibt sich aus dem linken Operanden. Der rechte Operand muss positiv und kleiner gleich der Bitbreite des linken Operanden sein. Andernfalls ist das Ergebnis implementierungsspezifisch. Nach [C11 6.5.7] ist das Ergebnis der Schiebeoperation implementierungsspezifisch, wenn der linke Operand eine negative vorzeichenbehaftete Zahl ist. In der Regel wendet der Compiler jedoch folgende Schiebeoperation an: * Logisches Schieben (zu füllende Bit-Stellen werden mit 0 aufgefüllt), wenn der linke Operand eine vorzeichenlose Zahl ist * Arithmetisches Schieben (zu füllende Bit-Stelle beim Rechtsschieben wird mit dem Vorzeichenbit aufgefüllt), wenn der linke Operand eine vorzeichenbehaftete Zahl ist. Hiermit wird das Vorzeichen beibehalten, so dass eine negative Zahl nach dem Schieben weiterhin negativ ist (In Java erfolgt dies durch den >>> - Operator) Hinweis: * Ein Schieben um eine Stelle nach rechts entspricht einer Division durch 2 * Ein Schieben um eine Stelle nach links entspricht einer Multiplikation mit 2 === sizeof-Operator === Der sizeof-Operator dient zur Ermittlung des Speicherbedarfs (in Bytes) einer Variablen/eines Datentyps. <code>Syntax: sizeof (type-name)</code><br /> <code>Syntax: sizeof unary-expression</code><br /> Als Argument für den Sizeof-Operator kann wahlweise ein Datentyp, eine Variable oder ein Ausdruck genutzt werden. Sizeof gilt als Konstantenausdruck, d.h. seine Berechnung erfolgt durch den Compiler, sodass: * sizeof zur Initialisierung von globalen Variablen genutzt werden :<syntaxhighlight lang="C"> struct xyz{int x,y,z;}; size_t size=sizeof(struct xyz); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct xyz{int x,y,z;}; size_t size=sizeof(struct xyz); //3*sizeof(int)=12 int main(int argc, char *argv[]) { printf("size=%zu\n",size); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * bei einem Ausdruck dieser nicht ausgeführt wird, sondern nur der resultierende Datentyp bestimmt wird und dessen Größe zurückgegeben :<syntaxhighlight lang="C"> short var=4711; size_t size=sizeof var++; //var=4711, size=2 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { short var=4711; size_t size=sizeof var++; //var=4711, size=2 printf("size=%zu var=%d\n",size,var); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Der resultierende Datentyp des Rückgabewertes ist size_t. Es empfiehlt sich, den sizeof-Operator mit Klammern zu nutzen, andernfalls wird im Falle eines Ausdruckes der Speicherbedarf des linken Operanden angegeben: <syntaxhighlight lang="C"> size_t size; short var; size=sizeof var+0; //size=2, da sizeof auf var angewendet wird size=sizeof(var+0); //size=4, da sizoeof auf den resultierenden datentyp //angewendet wird </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { size_t size; short var=0; size=sizeof var+0; //size=2, da sizeof auf var angewendet wird printf("size=%zu var=%d\n",size,var); size=sizeof(var+0); //size=4, da sizoeof auf den resultierenden datentyp //angewendet wird printf("size=%zu var=%d\n",size,var); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * sizeof angewendet auf char gibt immer den Wert 1 zurück. * sizeof ist nicht auf Operanden vom Typ Funktion, void, Felder ohne Größenangabe und Bitfelder anwendbar * wird sizeof auf ein VLA angewendet, so entspricht sizeof nicht mehr einen Konstantenausdruck, sondern einem Funktionsaufruf :<syntaxhighlight lang="C"> void foo(int n) { int arr[n]; size_t size=sizeof(arr); //Speicherbedarf ist kein Konstantenausdruck //sondern wird zur Laufzeit berechnet </syntaxhighlight> * Sizeof entspricht nicht strlen(), da sizeof den für die Variable reservierten Speicherbereich zurückgibt und nicht wie strlen() den Inhalt des Speicher hinsichtlich des Stringendezeichens auswertet. :<syntaxhighlight lang="C"> char string[100]="Test"; printf("%zu\n",sizeof(string)); //100 printf("%zu\n",strlen(string)); //4 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char string[100]="Test"; printf("%zu\n",sizeof(string)); //100 printf("%zu\n",strlen(string)); //4 return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Anweisungen == === If-Anweisung === <code>Syntax: if (expression) statement</code><br /> <code>Syntax: if (expression) statement else statement</code><br /> Das Ergebnis des Ausdruckes (Ganzzahl, Gleitkommazahl oder Zeiger) wird auf ungleich 0, 0.0 oder NULL getestet. Trifft dies zu, so wird statement ausgeführt. Andernfalls wird das else statement ausgeführt, sofern vorhanden. Sollen mehrere Anweisungen ausgeführt werden, so sind diese mittels Block zusammenzufassen (diesen dann bitte nicht mit ; abschließen). Beispiel: <syntaxhighlight lang="C"> if(a==1) if(a=1) //Erst Zuweisung, dann prüfen der Rückgabe der Zuweisung if(a) //entspricht a!=0 if(printf("hallo")<0) //prüfen, ob printf() fehlschlägt if( ({int dummy=a;a=b;b=dummy;})==6) if(a=7) //Zuweisung! if(7=a) //KO, Eine Konstante kann kein L-Value sein if(7==a) {printf("a ist 7");}; //Semikolon hinter Blocksope ist eine zweite else //Anweisung, so dass die ELSE Anweisung nicht {printf("Compilerfehler");};//zur IF-Anwesigung zugeordnet werden kann. </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=1,b=2; if(a==1) printf("a==1\n"); if(a=1) //Erst Zuweisung, dann prüfen der Rückgabe der Zuweisung printf("a=1\n"); if(a) //entspricht a!=0 printf("a\n"); if(printf("hallo\n")<0) //prüfen, ob printf() fehlschlägt printf("printf()\n"); if( ({int dummy=a;a=b;b=dummy;})==6) printf("({...})\n"); if(a=7) //Zuweisung! printf("a=7\n"); if(7=a) //KO, Eine Konstante kann kein L-Value sein ; if(7==a) {printf("a ist 7");}; //Semikolon hinter Blocksope ist eine zweite else //Anweisung, so dass die ELSE Anweisung nicht {printf("Compilerfehler");};//zur IF-Anwesigung zugeordnet werden kann. return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Bei der Anweisung <code>if(a==7)</code> finden aus syntaktischer Sicht zwei Aktionen statt. Zunächst wird geprüft, ob a gleich 7 ist. Dieser Vergleich liefert true(=1) oder false(=0) zurück. Die If-Anweisung prüft im Anschluss, ob das Argument true oder false ist. === For-Anweisung === <code>Syntax: for(Initialisierungsteil<sub>OPT</sub> ; Test<sub>OPT</sub> ; Fortsetzung<sub>OPT</sub>) Statement</code> Die For-Anweisung wird vom Compiler wie folgt umgesetzt: <poem> '''Initialisierungsteil'''<sub>OPT</sub> Goto Next Goon: //Continue-Anweisung entspricht goto Continue //Break-Anweisung entspricht goto Break; '''Statement''' Continue: '''Fortsetzung'''<sub>OPT</sub> Next: if('''Test'''<sub>OPT</sub>) goto Goon Break: </poem> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> int main(int argc, char *argv[]) { int lauf; int summe; for(summe=lauf=0;lauf<20;lauf++) summe+=lauf; printf("summe=%d\n",summe); //Initialisierungsteil summe=lauf=0; goto Next; Goon: //Continue-Anweisung entspricht goto Continue //Break-Anweisung entspricht goto Break; //Statement summe+=lauf; Continue: __attribute__((unused)) //Fortsetzung lauf++; Next: //if(TestOPT) goto Goon if(lauf<20) goto Goon; Break: __attribute__((unused)) printf("summe=%d\n",summe); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Die einzelne Elemente haben folgende Bedeutung/Besonderheiten: ;Initialisierungsteil: Zum Initialisieren von Schleifenvariablen, wird einmalig mit Beginn der FOR-Anweisung ausgeführt. :* kann Leer sein, dann erfolgt keine Initialisierung :* Ab C99: Hier kann eine lokale Variable definiert werden, welche nur innerhalb dieser For-Anweisung gültig ist ;Testteil: Hierin wird vor jedem Schleifendurchlauf geprüft, ob die Schleifenbedingung erfüllt ist. Wenn Bedingung nicht erfüllt ist (Ganzzahl, Gleitkommazahl oder Zeiger gleich 0,0.0 oder NULL), wird die For-Schleife beendet. :* Kann leer sein, dann wird dieser Teil als true angesehen ;Fortsetzungsteil: Wird nach jeden Schleifendurchlauf ausgeführt. In der Regel sollte hier die Schleifenvariable aktualisiert werden :* Kann leer sein ;Statement: In der Schleife auszuführender Ausdruck :* Sollen mehrere Ausdrücke ausgeführt werden, so sind diese in einem Block zusammen zu fassen. :Ergänzende Anweisungen innerhalb des Statements/Block :* 'continue' zum Fortsetzen des Schleifendurchlaufes, d.h. Sprung zum Fortsetzungs-Teil :* 'break', zum Beenden des Schleifendurchlaufes Beispiele: * For-Schleife mit lokaler Schleifenvariable :<syntaxhighlight lang="C"> char string[]="hallo"; for(size_t lauf=0; lauf < strlen(string); lauf++) //Schleife ist Suboptimal, da in jedem Durchlauf die Funktion //strlen() aufgerufen wird! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <time.h> struct timespec diff_timespec(const struct timespec *minuend, const struct timespec *subtrahend ) { struct timespec diff = { .tv_sec = minuend->tv_sec - subtrahend->tv_sec, .tv_nsec = minuend->tv_nsec - subtrahend->tv_nsec}; //Sekundenüberlauf? if (diff.tv_nsec < 0) { diff.tv_nsec += 1000000000; diff.tv_sec--; } return diff; } int main(int argc, char *argv[]) { char string1[10000]; char string2[10000]; memset(string1,'a',sizeof(string1)); memset(string2,'a',sizeof(string2)); string1[sizeof(string1)-1]=0; string2[sizeof(string2)-1]=0; struct timespec start1,stop1; struct timespec start2,stop2; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start1); size_t sum1=0; for(size_t lauf=0; lauf < strlen(string1); lauf++) sum1++; //Schleife ist Suboptimal, da in jedem Durchlauf die Funktion //strlen() aufgerufen wird! clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop1); clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start2); size_t sum2=0; size_t count2=strlen(string2); for(size_t lauf=0; lauf < count2; lauf++) sum2++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop2); stop1=diff_timespec(&stop1,&start1); stop2=diff_timespec(&stop2,&start2); printf("Slow: Sum1=%zu Time=%lds %ldns\n",sum1,stop1.tv_sec,stop1.tv_nsec); printf("Fast: Sum2=%zu Time=%lds %ldns\n",sum2,stop2.tv_sec,stop2.tv_nsec); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Schleife mit Break-Anweisung :<syntaxhighlight lang="C"> char dest[5]; char src[10]="HalloWelt"; for(size_t lauf=0; src[lauf]!=0; lauf++) { if(lauf >= sizeof(dest)) break; dest[lauf]=src[lauf]; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char dest[5]; char src[10]="HalloWelt"; for(size_t lauf=0; src[lauf]!=0; lauf++) { printf("lauf=%zu\n",lauf); if(lauf >= sizeof(dest)) break; dest[lauf]=src[lauf]; } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Schleife, bei welcher die gesamte Aktion innerhalb der For-Anweisung ausgeführt wird :<syntaxhighlight lang="C"> char dest[5]; char src[10]="HalloWelt"; for(size_t l=0; src[l]!=0 && l <sizeof(dest); printf("l=%zu\n",l),dest[l]=src[l],l++); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char dest[5]; char src[10]="HalloWelt"; for(size_t l=0;src[l]!=0 && l <sizeof(dest); printf("l=%zu\n",l),dest[l]=src[l],l++); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Schleifenvariable muss keine Zählvariable sein :<syntaxhighlight lang="C"> int zahl=0b100010; int bits=0; for(int mask=0b10000000; mask!=0; mask>>=1 ) bits+= zahl & mask ? 1 : 0; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int zahl=0b100010; int bits=0; for(int mask=0b10000000; mask!=0; mask>>=1 ) bits+= zahl & mask ? 1 : 0; printf("Anzahl Einsen in %b = %d\n",zahl,bits); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Zeiger als Schleifenvariable :<syntaxhighlight lang="C"> char src[]="hallo"; char dst[strlen(src)+1]; char *s,*d; for(s=src,d=dst; *s; ) *d++=*s++; *d=0; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char src[]="hallo"; char dst[strlen(src)+1]; char *s,*d; for(s=src,d=dst; *s; ) *d++=*s++; *d=0; printf("src='%s' dst='%s'\n",src,dst); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Zur Geschwindigkeitsoptimierung sollten im Test- und Fortsetzungsteil keine Funktionsaufrufe mit Werten enthalten sein, die sich innerhalb der Schleife nicht ändern: :<syntaxhighlight lang="C"> for(size_t lauf=0;lauf<strlen("hallo");lauf++) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <time.h> struct timespec diff_timespec(const struct timespec *minuend, const struct timespec *subtrahend ) { struct timespec diff = { .tv_sec = minuend->tv_sec - subtrahend->tv_sec, .tv_nsec = minuend->tv_nsec - subtrahend->tv_nsec}; //Sekundenüberlauf? if (diff.tv_nsec < 0) { diff.tv_nsec += 1000000000; diff.tv_sec--; } return diff; } int main(int argc, char *argv[]) { char string1[10000]; char string2[10000]; memset(string1,'a',sizeof(string1)); memset(string2,'a',sizeof(string2)); string1[sizeof(string1)-1]=0; string2[sizeof(string2)-1]=0; struct timespec start1,stop1; struct timespec start2,stop2; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start1); size_t sum1=0; for(size_t lauf=0; lauf < strlen(string1); lauf++) sum1++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop1); clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start2); size_t sum2=0; size_t count2=strlen(string2); for(size_t lauf=0; lauf < count2; lauf++) sum2++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop2); stop1=diff_timespec(&stop1,&start1); stop2=diff_timespec(&stop2,&start2); printf("Slow: Sum1=%zu Time=%lds %ldns\n",sum1,stop1.tv_sec,stop1.tv_nsec); printf("Fast: Sum2=%zu Time=%lds %ldns\n",sum2,stop2.tv_sec,stop2.tv_nsec); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Zur Geschwindigkeitssteigerung sollte im Testteil auf 0 abgefragt werden, d.h. die Schleifenvariable dekrementiert werden :<syntaxhighlight lang="C"> for(int lauf=700000;lauf;lauf--) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <time.h> struct timespec diff_timespec(const struct timespec *minuend, const struct timespec *subtrahend ) { struct timespec diff = { .tv_sec = minuend->tv_sec - subtrahend->tv_sec, .tv_nsec = minuend->tv_nsec - subtrahend->tv_nsec}; //Sekundenüberlauf? if (diff.tv_nsec < 0) { diff.tv_nsec += 1000000000; diff.tv_sec--; } return diff; } int main(int argc, char *argv[]) { char string1[10000]; char string2[10000]; memset(string1,'a',sizeof(string1)); memset(string2,'a',sizeof(string2)); string1[sizeof(string1)-1]=0; string2[sizeof(string2)-1]=0; struct timespec start1,stop1; struct timespec start2,stop2; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start1); size_t sum1=0; for(ssize_t lauf=700000000;lauf;lauf--) sum1++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop1); clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start2); size_t sum2=0; for(ssize_t lauf=0;lauf<700000000;lauf++) sum2++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop2); stop1=diff_timespec(&stop1,&start1); stop2=diff_timespec(&stop2,&start2); printf("Slow: Sum1=%zu Time=%lds %ldns\n",sum1,stop1.tv_sec,stop1.tv_nsec); printf("Fast: Sum2=%zu Time=%lds %ldns\n",sum2,stop2.tv_sec,stop2.tv_nsec); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Alternativ zu einer Laufvariablen empfiehlt sich die Nutzung von Pointer als Schleifenvariable; :<syntaxhighlight lang="C"> for(char *ptr=str; *ptr; ptr++); </syntaxhighlight> === While-Anweisung === <code>Syntax: while(expression) Statement </code><br /> <code>Syntax: do Statement while(expression);</code><br /> Die While-Anweisungen werden vom Compiler wie folgt umgesetzt: {| class="wikitable" ! while()-Anweisung !! do while()-Anweisung |- | <poem> Continue: if(!'''expression''') goto Break //Break-Anweisung entspricht // goto Break; //Continue-Anweisung entspr. // goto Continue; '''Statement''' goto Continue Break: </poem> || <poem> GoOn: //Break-Anweisung entspr. // goto Break //Continue-Anweisung ent. // goto Continue '''Statement''' Continue: if('''expression''') goto GoOn Break: </poem> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> int main(int argc, char *argv[]) { int lauf; int summe; lauf=summe=0; while(lauf<10) { if(lauf>=5) break; lauf++; if(lauf<3) continue; summe+=lauf; } printf("summe=%d\n",summe); lauf=summe=0; Continue1: if(!(lauf<10)) goto Break1; //Break-Anweisung entspricht // goto Break; //Continue-Anweisung entspr. // goto Continue; //Statement if(lauf>=5) { goto Break1; } lauf++; if(lauf<3) goto Continue1; summe+=lauf; goto Continue1; Break1: printf("summe=%d\n",summe); lauf=summe=0; do { lauf++; if(lauf>5) break; if(lauf<3) continue; summe+=lauf; } while(lauf<10); printf("summe=%d\n",summe); lauf=summe=0; GoOn2: //Break-Anweisung entspr. // goto Break //Continue-Anweisung ent. // goto Continue //Statement lauf++; if(lauf>5) goto Break2; if(lauf<3) goto Continue2; summe+=lauf; Continue2: if(lauf<10) goto GoOn2; Break2: __attribute__((unused)); printf("summe=%d\n",summe); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Folgendes gilt es bei der Nutzung der While-Anweisung zu beachten: * Soll mehr als ein Statement innerhalb der While-Schleife ausgeführt werden, so sind diese in einem Block zu schreiben * Statement kann eine Leeranweisung (gekennzeichnet durch ein Semikolon) sein :<syntaxhighlight lang="C"> while(1); do ; while(1); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int lauf1=1000; while(lauf1--); int lauf2=1000; do ; while(lauf2--); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Bei der do-While-Schleife ist das abschließende Semikolon Bestandteil des Befehls * expression muss eine Ganzzahl, Gleitkommazahl oder Zeiger zurückgeben, der bei False (0, 0.0 oder NULL) die Schleife beendet. Beispiele: * Endlosschleife :<syntaxhighlight lang="C"> while(1) {} </syntaxhighlight> * Schleife zum Durchlaufen eines String :<syntaxhighlight lang="C"> char str[]="string"; char *ptr=str; while(*ptr++); size_t len=ptr-str-1; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char str[]="string"; char *ptr=str; while(*ptr++); size_t len=ptr-str-1; printf("Stringlänge=%zu\n",len); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Switch-Anweisung === <code>Syntax: switch(expression) statement</code><br /> <code>Syntax: statement:= case constant-expression: statement<sub>opt</sub> default: statement<sub>opt</sub></code><br /> Die Switch-Anweisung entspricht einer verschachtelten If-Anweisung, mit der Besonderheit, dass der auszuführende Code nicht im If-Zweig stattfindet, sondern dort ein goto zum eigentlichen Code enthalten ist: {| class="wikitable" ! Switch-Anweisung !! Compilerumsetzung |- |<syntaxhighlight lang="C"> switch(a) { case 1: int a=7; //Code break; case 2: printf("%d",a); case 3: { int a; //Code } case 4 ... 8: default: //Code } </syntaxhighlight> ||<poem> if(a==1) goto label1; else if(a==2) goto label2; else goto label_default; //------------------- label1: //Code goto label_break; label2: //Code label_default: goto label_break; label_break: </poem> |} Folgendes gilt es bei der Nutzung der Switch-Anweisung zu beachten: * <code>Expression</code> muss zu einer Ganzzahl (int, short, char, long, long long) oder enum (entspricht einer Ganzzahl) ausgewertet werden * <code>constant-expression</code> muss eine Ganzzahl-Konstante oder ein Enumelement sein. Sie darf nicht doppelt im Block vorkommen. Der genaue Datentyp ergibt sich aus dem Datentyp der <code>expression</code> * Lt. Spezifikation ist ein nur <code>statement</code> hinter der switch-Anweisung erlaubt, so dass nur ein <code>case</code> Fall oder der <code>default</code> Fall bedient werden kann::<syntaxhighlight lang="C"> int var=1; switch(var) case 1: printf("hallo"); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int var=1; switch(var) case 1: printf("hallo"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Die geschweifte Klammer der <code>switch</code>-Anweisung erzeugt einen Block, so dass a) hier mehrere <code>case</code>-Fälle und b) hierin definierte Variablen innerhalb des gesamten Blocks zur Verfügung stehen (sind somit nicht <code>case</code> abhängig). Die <code>case</code> Anweisung ist nichts anderes als eine Sprungmarken (welche durch die switch-Anweisung angesprungen wird) so dass der Initialisierungsteil der lokalen Variablen übersprungen / nicht ausgeführt werden kann: :<syntaxhighlight lang="C"> switch(a) { int a=3; //Variable in gesamten Block gültig case 1: int b=3; //Variabe in gesamten Block gültig printf("%d %d",a,b); //a undefiniert, b=3 break; case 2: printf("%d %d",a,b); //a und b undefiniert break; case 3: { //Block, so dass Variable int a=4711; //nur in diesem CASE gültig ist break; } } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=1; switch(a) { int a=3; //Variable in gesamten Block gültig case 1: int b=3; //Variabe in gesamten Block gültig printf("a=%d b=%d",a,b); //a undefiniert, b=3 break; case 2: printf("%d %d",a,b); //a und b undefiniert break; case 3: { //Block, so dass Variable int a=4711; //nur in diesem CASE gültig ist (void)a; break; } } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * GNU-C (siehe [https://www.gnu.org/software/c-intro-and-ref/manual/html_node/switch-Statement.html Switch-Statement]) erlaubt ergänzend zur Angabe einer Konstante die Angabe eines Wertebereiches: :<syntaxhighlight lang="C"> switch(a) { case 1 ... 8: //Leerzeichen zwischen den Konstanten zwingend notwendig //andernfalls wird der Punkt zur Konstante zugehörig //interpretiert (erzeugt dann eine Gleitpunktkonstante) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=2; switch(a) { case 1 ... 8: //Leerzeichen zwischen den Konstanten zwingend notwendig //andernfalls wird der Punkt zur Konstante zugehörig //interpretiert (erzeugt dann eine Gleitpunktkonstante) printf("a im Bereich von 1 bis 8\n"); break; } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * <code>break</code> ist optional. Mittels <code>break</code> wird an das Ende der Switch-Anweisung gesprungen. Wenn <code>break</code> weggelassen wird, wird die nachfolgende Anweisungen ausgeführt. Ggf. gibt der Compiler eine Warning aus. Mittels der GCC-Compiler-Anweisung __attribute__((fallthrough)); kann diese Warning unterdrückt werden: :<syntaxhighlight lang="C"> switch(a) { case 0: //ggf. Compiler-Warning __attribute__((fallthrough)); case 1: case 2: break; } </syntaxhighlight> * Ein Variable Length Array ist als Variable im Switch-Block direkt nicht erlaubt. Ist dies notwendig, so ist das VLA in einem inneren Block zu kapseln: :<syntaxhighlight lang="C"> switch(var) { case 1: int arr[var]; //KO break; case 2: { int arr[var]; //OK } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int var=1; switch(var) { case 1: int arr[var]; //KO break; case 2: { int arr[var]; //OK } } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Case - Anweisungen sind nichts anderes als Sprungmarken (Labels), so dass CASE-Anweisungen überall innerhalb des Switch-Blockes stehen können: :<syntaxhighlight lang="C"> int prime(int value) {return value+1;} void hallo(int var) { switch(var) { default: if(prime(var)) case 2: case 4: printf("%d",var); else { case 3: case 6: printf("%x",var); } case 7: printf("xyz"); } } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int prime(int value) { return value+1; } int main(int argc, char *argv[]) { int var=1; switch(var) { default: if(prime(var)) case 2: case 4: printf("%d",var); else { case 3: case 6: printf("%x",var); } case 7: printf("xyz"); } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} :oder anderen Anweisungen innerhalb des Switch-Blockes enthalten sein können: :<syntaxhighlight lang="C"> void send(register char *dst, register char *src, register size_t count) { register char unsigned n=(count+7)/8; switch(count%8) { case 0: do{ *dst = *src++; case 7: *dst = *src++; case 6: *dst = *src++; case 5: *dst = *src++; case 4: *dst = *src++; case 3: *dst = *src++; case 2: *dst = *src++; case 1: *dst = *src++; }while(--n>0); } } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <stdint.h> //fuer uintptr_t void send(register char *dst, register char *src, register size_t count) { register char unsigned n=(count+7)/8; switch(count%8) { case 0: do{ *dst = *src++; printf("%02hhx ",*dst); case 7: *dst = *src++; printf("%02hhx ",*dst); case 6: *dst = *src++; printf("%02hhx ",*dst); case 5: *dst = *src++; printf("%02hhx ",*dst); case 4: *dst = *src++; printf("%02hhx ",*dst); case 3: *dst = *src++; printf("%02hhx ",*dst); case 2: *dst = *src++; printf("%02hhx ",*dst); case 1: *dst = *src++; printf("%02hhx ",*dst); }while(--n>0); } } int main(int argc, char *argv[]) { char src[20]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}; char dst; send(&dst,src,20); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Eine Switch-Case Anweisung über Strings sind in C/C++ nicht möglich: :<syntaxhighlight lang="C"> switch(str) { case "hallo": return 1; case "du da": return 2; case "xyz": return 3; default: rReturn -1; } </syntaxhighlight> :Ein direkte Lösungsansatz ist die Nutzung von strcmp() zum Vergleichen von String. Da strcmp zeichenweise den String vergleicht, ist dieser Ansatz langsam. Alternativ bietet sich an, von allen String einen Hash-Wert zu berechnen und zunächst diesen Hash-Wert zu kontrollieren. Da der Hash-Wert nicht eindeutig ist, muss ergänzend ein strcmp() erfolgen: :<syntaxhighlight lang="C"> char *str="hallo"; switch(HASH_LAUFZEIT(str)) { case HASH_COMPILEZEIT('d','u'): if(!strcmp(str,"du")) printf("Case \"du\":\n"); break; case HASH_COMPILEZEIT('h','a','l','l','o'): if(!strcmp(str,"hallo")) printf("Case \"hallo\"\n"); else if(!strcmp(str,"xyz")) printf("String='xyz'\n"); break; default: return -1; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <stdint.h> //Lösungsansatz von: https://stackoverflow.com/questions/2826559/compile-time-preprocessor-hashing-of-string #define H1(s,i,x) (x*65599u+(uint8_t)s[(i)<strlen(s)?strlen(s)-1-(i):strlen(s)]) #define H4(s,i,x) H1(s,i,H1(s,i+1,H1(s,i+2,H1(s,i+3,x)))) #define H16(s,i,x) H4(s,i,H4(s,i+4,H4(s,i+8,H4(s,i+12,x)))) #define H64(s,i,x) H16(s,i,H16(s,i+16,H16(s,i+32,H16(s,i+48,x)))) #define H256(s,i,x) H64(s,i,H64(s,i+64,H64(s,i+128,H64(s,i+192,x)))) #define HASH(s) ((uint32_t)(H256(s,0,0)^(H256(s,0,0)>>16))) #define HASH_LAUFZEIT(s) (H256(s,0,0)) //Eigener Lösungsatz zur Umsetzung des vorherigen HASH-Algorithmus //so dass dieser zur Compilezeit berechnet werden kann //Was fehlt ist die abschließende EXOR berechnung! //Problem war, dass die Array-Dereferenzierung nicht zur Compilezeit //aufelöst werden kann #define HH0(a,x) (x*65599u+a) #define HH1(a) HH0(a,HH0(0,HH0(0,HH0(0,0)))) #define HH2(a,b) HH0(b,HH0(a,HH0(0,HH0(0,0)))) #define HH3(a,b,c) HH0(c,HH0(b,HH0(a,HH0(0,0)))) #define HH4(a,b,c,d) HH0(d,HH0(c,HH0(b,HH0(a,0)))) #define HH4x(a,b,c,d,x) HH0(d,HH0(c,HH0(b,HH0(a,x)))) #define HH5(a,b,c,d,e) HH4x(b,c,d,e,HH4x(0,0,0,a,0)) #define HH6(a,b,c,d,e,f) HH4x(c,d,e,f,HH4x(0,0,a,b,0)) #define HH7(a,b,c,d,e,f,g) HH4x(d,e,f,g,HH4x(0,a,b,c,0)) #define HH8(a,b,c,d,e,f,g,h) HH4x(e,f,g,h,HH4x(a,b,c,d,0)) #define HH9(a,b,c,d,e,f,g,h,i) HH4x(f,g,h,i,HH4x(b,c,d,e,HH4x(0,0,0,a,0))) #define HH10(a,b,c,d,e,f,g,h,i,j) HH4x(g,h,i,j,HH4x(c,d,e,f,HH4x(0,0,a,b,0))) #define HH11(a,b,c,d,e,f,g,h,i,j,k) HH4x(h,i,j,k,HH4x(d,e,f,g,HH4x(0,a,b,c,0))) #define HH12(a,b,c,d,e,f,g,h,i,j,k,l) HH4x(i,j,k,l,HH4x(e,f,g,h,HH4x(a,b,c,d,0))) #define HH13(a,b,c,d,e,f,g,h,i,j,k,l,m) HH4x(j,k,l,m,HH4x(f,g,h,i,HH4x(b,c,d,e,HH4x(0,0,0,a,0)))) #define HH14(a,b,c,d,e,f,g,h,i,j,k,l,m,n) HH4x(k,l,m,n,HH4x(g,h,i,j,HH4x(c,d,e,f,HH4x(0,0,a,b,0)))) #define HH15(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) HH4x(l,m,n,o,HH4x(h,i,j,k,HH4x(d,e,f,g,HH4x(0,a,b,c,0)))) #define HH16(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) HH4x(m,n,o,p,HH4x(i,j,k,l,HH4x(e,f,g,h,HH4x(a,b,c,d,0)))) #define EIGHTEENTH_ARGUMENT(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, \ a11,a12,a13,a14,a15,a16,a17,a18, ...) a18 #define CONCAT(c,d) c ## d #define CONCATI(a,b) CONCAT(a,b) #define HASH_COMPILEZEIT(...) CONCATI(HH , EIGHTEENTH_ARGUMENT(dummy, ## __VA_ARGS__, \ 16,15,14,13,12,11,10,9, 8, 7, 6, 5, 4, 3, 2, 1, 0))(__VA_ARGS__) //Lösungsansatz basierend auf: https://renenyffenegger.ch/notes/development/languages/C-C-plus-plus/preprocessor/macros/__VA_ARGS__/count-arguments #define COUNT_ARGUMENTS(...) EIGHTEENTH_ARGUMENT(dummy, ## __VA_ARGS__, \ 16,15,14,13,12,11,10,9, 8, 7, 6, 5, 4, 3, 2, 1, 0) int main(int argc, char *argv[]) { char *str="hallo"; switch(HASH_LAUFZEIT(str)) { case HASH_COMPILEZEIT('d','u'): if(!strcmp(str,"du")) printf("Case \"du\":\n"); break; case HASH_COMPILEZEIT('h','a','l','l','o'): if(!strcmp(str,"hallo")) printf("Case \"hallo\"\n"); else if(!strcmp(str,"xyz")) printf("String='xyz'\n"); break; default: return -1; } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} :Siehe:[https://benhoyt.com/writings/hash-table-in-c/ Hash Table in C] == Label + Goto == === Label === <code>Syntax: name:</code><br /> Labels dienen zur Kennzeichnung einer Anweisung, so dass die Programmausführung an dieser Stelle fortgesetzt, resp. mit einer GOTO-Anweisung angesprungen werden kann. Ein Label ist durch den folgenden Doppelpunkt gekennzeichnet. Dem Label muss eine Anweisung folgen, welches auch eine Leeranweisung (Semikolon) sein kann. Folgendes gilt es bei der Nutzung von Labels zu beachten: * Ein Label entspricht der Speicheradresse des der Label-Anweisung folgenden Anweisung * Bei nicht genutzten Labels (mit goto nicht angesprungene Labels) gibt der Compiler eine Warning aus. Diese kann beim GCC-Compiler mit __attribute__((unused)) unterdrückt werden * die Case- und die Default-Anweisung aus der Switch-Anweisung entspricht einem Label <br /> Labels hat eine funktionsweite Sichtbarkeit (siehe Kap [[#Gültigkeit/Sichtbarkeit von Variablen| Gültigkeit/Sichtbarkeit von Variablen]]). Dies bedeutet, dass das: * Labels nur innerhalb einer Funktion gültig ist * Labels einen von Variablen/Funktionen/Datentypen unabhängigen Namensraum haben * Kein Prototyp für ein Label notwendig ist, wenn es bei Nutzung über goto noch nicht gesetzt worden ist, also nach vorne gesprungen wird === goto === <code>Syntax: goto label;</code><br /> Mit der Goto-Anweisung wird die Programmausführung an der mit <code>label</code> gekennzeichneten Stelle fortgesetzt. Folgendes gilt es bei der Nutzung von goto zu beachten: * Mit einer <code>goto</code> Anweisung kann an eine beliebige Steller innerhalb der '''identischen''' Funktion gesprungen werden. Es kann nicht zu einem Label in einer anderen Funktion gesprungen werden (hierzu ist <code>setjmp()</code> und <code>longjmp()</code> zu nutzen) * Mit der Goto Anweisung kann gleichermaßen in einen Block hinein, als auch herausgesprungen werden: :<syntaxhighlight lang="C"> goto first_time; for(;;) { if(a>10) goto last_time: first_time: a++; } last_time: ; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=0; goto first_time; for(;;) { printf("a=%d\n",a); if(a>10) goto last_time; first_time: a++; } last_time: ; //Leeranweisung wäre hier nicht nötig return 0; //da dem Label ein return folgt! } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Wird mit der <code>goto</code> Anweisung der Initialisierungsteil einer Variablen übersprungen, so ist zwar die Variable existent, beinhaltet aber nicht ihren Initialisierungswert Beispiel: <syntaxhighlight lang="C"> goto label1; if(a==3) { label2: printf("True\n"); } else label1: { printf("False\n"); } if(a==3) goto label2; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=3; goto label1; if(a==3) { label2: printf("True\n"); a++; } else label1: { printf("False\n"); } if(a==3) goto label2; return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * In Java gibt es das Schlüsselwort goto, welches aber ohne Funktion ist. Es gibt jedoch Labels, die mit "break label" angesprungen werden können === Anwendungsbeispiele === Prinzipiell sind Goto-Anweisungen zu vermeiden. In einigen Anwendungsfällen erweist sich goto als nützlich: * Nutzung nur einer <code>return</code> Anweisung in einer Funktionen :<syntaxhighlight lang="C"> #include <unistd.h> int input(int hdl,size_t buflen) { int rc=-1; unsigned char packettype; if(read(hdl,&packettype,1) != 1) goto exit; unsigned short packetlen; if(read(hdl,&packetlen,2) != 2) goto exit; if((1+packetlen) > buflen) { rc=-2; goto exit; } rc=packetlen; exit: return rc; } </syntaxhighlight> * Konstruktor mit mehreren Initialisierungsteilen :<syntaxhighlight lang="C"> int main(int argc,char *argv[]) { enum {INIT_2,INIT_1,INIT_START} fortschritt=INIT_START; int *ptr1; int *ptr2; if(!(ptr1=malloc(10))) goto end; fortschritt=INIT_1; if(!(ptr2=malloc(20))) goto end; fortschritt=INIT_2; // ... end: switch(fortschritt) { case INIT_2: free(ptr2); __attribute__((fallthrough)); case INIT_1: free(ptr1); __attribute__((fallthrough)); case INIT_START: } return (int)fortschritt; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { enum {INIT_2,INIT_1,INIT_START} fortschritt=INIT_START; int *ptr1; int *ptr2; if(!(ptr1=malloc(10))) goto end; fortschritt=INIT_1; if(!(ptr2=malloc(20))) goto end; fortschritt=INIT_2; // ... end: switch(fortschritt) { case INIT_2: free(ptr2); __attribute__((fallthrough)); case INIT_1: free(ptr1); __attribute__((fallthrough)); case INIT_START: } return (int)fortschritt; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Abbruch einer verschachtelten Schleife :<syntaxhighlight lang="C"> int arr[10][10]; size_t zeile; size_t spalte; for(zeile=0;zeile<10;zeile++) for(spalte=0;spalte<0;spalte++) if(arr[zeile][spalte]==0) goto label_end; label_end: if((zeile==0) && (spalte==0)) printf("Nichts gefunden"); else printf("Gefunden an %zu %zu",zeile,spalte); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int arr[10][10]; size_t zeile; size_t spalte; for(zeile=0;zeile<10;zeile++) for(spalte=0;spalte<0;spalte++) if(arr[zeile][spalte]==0) goto label_end; label_end: if((zeile==0) && (spalte==0)) printf("Nichts gefunden"); else printf("Gefunden an %zu %zu",zeile,spalte); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Sonstiges == === ??-Trigraphs === Zeichenfolge bestehend aus 3 Zeichen beginnend mit 2 Fragezeichen. Die beiden Fragezeichen entsprechen einem ESCAPE-Operator (siehe Kap [[#Char-Konstanten|Char-Konstanten]]), welcher das nachfolgende Zeichen durch ein anderes ASCII Zeichen ersetzt. Die Ersetzung findet auch innerhalb von Strings statt.<br /> Trigraphs wurden früher genutzt, als die ALTGR Taste noch nicht üblich war. <syntaxhighlight> ??< → { ??> → } ??( → [ ??) → ] ??/ → \ ??! → | ??' → ^ ??- → ~ ??= → # </syntaxhighlight> Bei neuer C Varianten muss zur Nutzung von Trigraphs der Compiler mittels -trigraphs aktiviert werden. <noinclude> {{Navigation zurückhochvor buch |zurücklink=Programmieren in C/C++: Toolchain/Entwicklungsumgebung |zurücktext=Toolchain/Entwicklungsumgebung |hochlink=Programmieren in C/C++ |hochtext=Inhaltsverzeichnis |vorlink=Programmieren in C/C++: Datentypen |vortext=Datentypen}} </noinclude> n4l50hwdbulem24ibnhb353w5jay4o1 1090602 1090558 2026-09-09T08:37:23Z D. Justen 102048 Abarbeitungsreihenfolge vorsorglich hier eingefügt. Vorsorglich, da gesamtes Kapitel im Laufe des Tages aktualisiert wird 1090602 wikitext text/x-wiki <noinclude> {{Navigation zurückhochvor buch |zurücklink=Programmieren in C/C++: Toolchain/Entwicklungsumgebung |zurücktext=Toolchain/Entwicklungsumgebung |hochlink=Programmieren in C/C++ |hochtext=Inhaltsverzeichnis |vorlink=Programmieren in C/C++: Datentypen |vortext=Datentypen}} </noinclude> <!-- Falls du ein automatisch erstelltes Inhaltsverzeichnis nicht willst, ersetze das nachfolgende TOC durch NOTOC --> <!-- Einklammerung mit noinclude, damit dieses nicht in der Druckversion erscheint --> <noinclude>__TOC__</noinclude> Die Programmiersprache C/C++ beinhaltet mehrere Sprachen/ Syntaxen: * C-Syntax * Präprozessor-Syntax * Printf/Scanf Formatstring Syntax * Terminal Emulation * Compiler/Linker Anweisungen Letztere beiden werden nur rudimentär in dieser Vorlesung/diesem Skript behandelt. Alle anderen sind Bestandteil dieser Vorlesung. In diesem Kapitel sollen zunächst allgemeine Eigenschaften der Sprache, der grundlegende Syntax und die Kontrollstrukturen erklärt werden. Bei vielen Erklärungen sind Code-Beispiele vorhanden. Da man aus Fehlern am meisten lernt, sind zum Teil auch negative Beispiele enthalten. Für ein besseres Verständnis empfiehlt es sich, Code-Beispiele selbst nachzuvollziehen.<br /> Sofern sich die Eigenschaften auf eine bestimmte C-/C++- oder Compiler-Version beziehen, wird dies gesondert vermerkt. == Zeichensatz == Der Syntax von C nutzt die unteren 128 Zeichen des ASCII Zeichensatzes. Da UTF-8 in den ersten 128 Zeichen deckungsgleich zu ASCII ist, kann auch dieser zur Erstellung des Source Codes genutzt werden. Zeichen außerhalb dieses gültigen Zeichensatzes können folglich nur in Strings oder Kommentaren vorkommen. Werden Zeichen außerhalb der unteren 128 Zeichen in Strings genutzt, so gilt Folgendes zu berücksichtigen: * Die String-Funktionalitäten der Standard-C Library gehen von dem regulären ASCII Zeichensatz aus, so dass z.B. die Suche, der Vergleich oder die Konvertierung fehlschlagen kann * Strings werden oftmals in Verbindung mit printf() genutzt, d.h. auf der Standardausgabe ausgegeben. Der verwendete Zeichensatz sollte hier identisch zum verwendeten Zeichensatz der Terminal-Emulation sein! == Kommentarzeichen == Kommentare dienen dazu, den Source Code mit zusätzlichen Hinweisen zu versehen, so dass die Intension der Anweisungen sichtbar wird. Kommentarzeichen werden durch den Compiler vor dem eigentlichen Übersetzungsdurchlauf entfernt und durch ein Leerzeichen ersetzt [C11 6.4.9]. Innerhalb von Strings wird nicht nach Kommentarzeichen gesucht. <code> Syntax: /* */ </code> Blockkommentar zum Kommentieren eines Bereiches, auch über mehrere Zeilen hinweg. Dieses Kommentarzeichen kann nicht verschachtelt werden, d.h. '*/' beendet die Kommentierung, unabhängig von der Anzahl der zuvor geöffneten Kommentierungen! <code> Syntax: // </code> Zeilenkommentar zum Kommentieren bis zum Zeilenende (wurde in der Programmiersprache BCPL definiert, aber nicht von C, sondern erst von C++ übernommen). Sollen größere Bereiche auskommentiert werden, so empfiehlt sich die Nutzung der Präprozessoranweisung #if 0 ... #endif. Beispiele: <syntaxhighlight lang="C"> /* Blockkommentar mit zwei öffnenden Klammern /* über mehrere Zeilen, nicht verschachtelt */ //Zeilenkommentar /* Kleiner Bereich zum auskommentieren */ #if 0 Großer Bereich zum auskommentieren #endif </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> /* Blockkommentar mit zwei öffnenden Klammern /* über mehrere Zeilen, nicht verschachtelt Compiler-Warning nur aufgrund des Compiler-Schalters -Wall! */ //Zeilenkommentar /* Kleiner Bereich zum auskommentieren */ #if 0 Großer Bereich zum auskommentieren #endif int main(int argc,char *argv[]) { return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Namenskonventionen == Folgende Regeln gelten bzgl. der Benennung von Variablen und Funktionen: * Variablen und Funktionsnamen können aus Buchstaben, Zahlen und dem Unterstrich bestehen. Sie müssen mit einem Buchstaben oder einem Unterstrich beginnen * Seit C95 können weitere Zeichen aus dem Universal Coded Character Set (UCS) genutzt werden [C11 D.1] * C ist Case sensitiv, d.h. es wird zwischen Groß- und Kleinbuchstaben unterschieden * Schlüsselwörter können nicht für Variablen/Funktionsnamen/Datentypen genutzt werden Namenskonventionen von Libraryfunktionen: * In C (und C++) sind Schlüsselwörter und Standardlibraryfunktionen zumeist in Kleinbuchstaben geschrieben. In der C-Standardlibrary werden oftmals verkürzte Ausdrücke (z.B. isalnum() (zum Testen ob ein Zeichen ein Buchstaben oder ein Digit ist) und in C++ der Unterstrich als Worttrenner (z.b. out_of_range) genutzt * Makros (siehe Kap.[[Programmieren in C/C++: Präprozessor | Präprozessor]]) werden per Konvention in GROSSBUCHSTABEN und ggf. mit Unterstrich als Worttrenner geschrieben. * Namen beginnend mit doppelten Unterstrich oder beginnend mit einem Unterstrich gefolgt von einem Großbuchstaben (z.B. __LINE__ _Reserved) sind für den Compiler und der Standard-C-Library vorbehalten und sollten im eigenen Programm nicht benutzt werden. == Zeilenfortsetzung == Mit dem Backslash Operator (gefolgt von einem Zeilenende) kann eine Zeile in der nächsten Zeile fortgesetzt werden. Der Compiler löscht das \-Zeichen mit anschließendem Zeilenende und ersetzt dies durch nichts. Dies ist insbesondere bei Anweisungen notwendig, die am Ende der Zeile abgeschlossen sein müssen (z.B. Strings, Makros). Beispiele: <syntaxhighlight lang="c"> char str1[]="Strings müssen am Ende abgeschlossen sein so dass dies ein Fehler ist"; char str2[]="Dies\ ist ein Test"; //Vorsicht, führende Leerzeichen vor 'ist' //bleiben erhalten! /*mehrzeiliges Makro*/ #define MAX(a,b) (a>b?\ b: \ a) //Dies ist ein Zeilenkommentar \ welcher in dieser Zeile fortgesetzt wird /\ * dies ist ein Blockkommentar*\ / //hinter der Zeilenfortsetzung darf nur ein CR/LF folgen #define MAX2(a,b) \ //so dass hier kein Kommentar folgen darf a>b?a:b </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> char str1[]="Strings müssen am Ende abgeschlossen sein so dass dies ein Fehler ist"; char str2[]="Dies\ ist ein Test"; //Vorsicht, führende Leerzeichen vor 'ist' //bleiben erhalten! /*mehrzeiliges Makro*/ #define MAX(a,b) (a>b?\ b: \ a) //Dies ist ein Zeilenkommentar \ welcher in dieser Zeile fortgesetzt wird /\ * dies ist ein Blockkommentar*\ / //hinter der Zeilenfortsetzung darf nur ein CR/LF folgen #define MAX2(a,b) \ //so dass hier kein Kommentar folgen darf a>b?a:b int main(int argc,char *argv[]) { return 0; } | execCompilerOptions=| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Innerhalb von Char-Literatoren und Strings wird '\' als Escape-Operator genutzt, welche das '\' und ein oder mehrere folgende Zeichen ersetzt (siehe Kap.[[Programmieren in C/C++: Grundlagen#Literale/Konstanten | Grundlagen:Literale/Konstanten]]). Daher darf hinter Backslash als Zeilenfortsetzungszeichen kein weiteres Zeichen folgen. == Gültigkeit/Sichtbarkeit von Variablen == Vorrangig in der objektorientierten Programmierung werden mit Namensräumen Objekte und deren Methoden/Attribute in einer Art Baumstruktur strukturiert. Dies ermöglicht eine eindeutige Ansprache von Variablen/Objekte, aber auch eine doppelte Verwendung von Methoden-/Attributnamen in unterschiedlichen Namensräumen. Ergänzend zu den Namensräumen kann mit public/private/proteced eine Zugriffsbeschränkung von Methoden/Attributen definiert werden. Die Programmiersprache C unterstützt keinen Namensraum. Zugriffsmodifikatoren werden indirekt über Header-Dateien getätigt. Hinsichtlich der Gültigkeit/Sichtbarkeit unterscheidet C folgende Bereiche [C11 6.2.1]: * Funktionen (Function Scope) * Datei (File Scope) * Block (Block Scope) * Funktionsparameter in Prototypen (Function Prototype Scope) Innerhalb eines Gültigkeitsbereiches dürfen Variablen-/Funktions-/Datentypnamen nicht doppelt genutzt werden.<br /> In der Programmiersprache C++ sind weitere Scope wie z.B. Class Scope, Enumationation Scope und ergänzend das Konzept von Namensräumen vorhanden (Beschreibung folgt). === Funktionsweite Sichtbarkeit === Eine Label-Definition (als Sprungmarke für die goto-Anweisungen) erfolgt immer mit funktionsweiter Sichtbarkeit/Gültigkeit. Die genaue Beschreibung dieses Sichtbarkeitstyps erfolgt im Rahmen des Kapitels [[Programmieren in C/C++: Grundlagen #Label + Goto|Grundlagen:Label+Goto]]. === Dateiweite Sichtbarkeit === Erfolgt eine Funktion-/Variablen-/Datentyp-Definition außerhalb eines Block-Scopes oder von Funktionsparameter, so sind diese innerhalb der gesamten Datei und bei Funktionen/Variablen ergänzend Projektweit (für alle Objektdateien) sichtbar/gültig (=&nbsp;global) (In der C-Spec unter dem Stichwort 'Linkage' beschrieben, siehe Kapitel [[Programmieren in C/C++: DatentypeSpecifier#Internal/External Linkage| DatentypeSpecifier:Internal/External Linkage]]). Alle globalen Funktionen/Variablen können von allen Dateien aus genutzt/zugegriffen werden (sofern sie zuvor deklariert wurden).<br /> Beispiel: {| class="wikitable" |- ! Datei1.c !! Datei2.c |- | <syntaxhighlight lang="C"> //Deklaration von func(), //welche in Datei2.c definiert wird extern void func(void); //Definition der Variablen global int global=0; int main(void) { func(); global++; return 0; } </syntaxhighlight> || <syntaxhighlight lang="C"> //Deklaration von global, //welche in Datei1.c definiert wird extern int global; //Definition der Funktion func() void func(void) { global++; } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Deklaration von func(), //welche in Datei2.c definiert wird extern void func(void); //Definition der Variablen global int global=0; int main(void) { func(); global++; printf("global=%d\n",global); return 0; } | datei2_c=#include <stdio.h> //Deklaration von global, //welche in example.c definiert wird extern int global; //Definition der Funktion func() void func(void) { global++; printf("func() called\n"); } | execCompilerOptions=-Wall datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Wird das Schlüsselwort 'static' der Variablen/Funktionsdefinition vorangestellt, so wird die Sichtbarkeit/Gültigkeit auf Dateiweit eingeschränkt. Variablen/Funktionen können nur innerhalb der (Objekt-) Datei genutzt werden und sind für anderen (Objekt-)Dateien unsichtbar. (Siehe Kap. [[Programmieren in C/C++: DatentypeSpecifier#Internal/External Linkage|DatentypeSpecifier:Internal/External Linkage]] Internal/External Linkage) {| class="wikitable" |- ! Datei1.c !! Datei2.c |- | <syntaxhighlight lang="C"> //Dateiweite Sichtbarkeit von var1 static int var1; int main(void) { var1++; return 0; } </syntaxhighlight> || <syntaxhighlight lang="C"> //Dateiweite Sichtbarkeit von var1 static int var1; void func(void) { static int var2; //Vorsicht, static // hat hier eine andere Bedeutung var1++; } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Dateiweite Sichtbarkeit von var1 static int var1; int main(void) { var1++; printf("example.c:var1=%d\n",var1); void func(void); //Prototyp für func() func(); return 0; } | datei2_c=#include <stdio.h> //Dateiweite Sichtbarkeit von var1 static int var1; void func(void) { static int var2; //Vorsicht, static // hat hier eine andere Bedeutung var1++; printf("datei2.c:var1=%d\n",var1); } | execCompilerOptions=datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Projektweite Gültigkeit bedeutet insbesondere, dass keine doppelten Benennung von Variablen/Funktionen/Datentypen innerhalb des gesamten Projektes erlaubt sind, d.h. alle Variablen/Funktionennamen über alle Dateien/Librarys eindeutig sein müssen.<br> Beispiel 1: {| class="wikitable" |- ! Datei1.c !! Datei.2 |- | <syntaxhighlight lang="C"> #include <stdio.h> int a=1; int main(int argc,char *argv[]) { printf("Hello World %d",a); void dummy(void); //Deklaration von Dummy dummy(); return 0; }</syntaxhighlight> || <syntaxhighlight lang="C"> #include <stdio.h> int a=7; void dummy(void) { printf("Hello Again %d\n",a); } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int a=1; int main(int argc,char *argv[]) { printf("Hello World %d",a); void dummy(void); //Deklaration von Dummy dummy(); return 0; } | datei2_c=#include <stdio.h> #include <stdio.h> int a=7; void dummy(void) { printf("Hello Again %d\n",a); } | execCompilerOptions=datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Der Linker meldet beim Zusammenfügen der Objekt-Dateien, dass die Variable a bereits woanders definiert sei (multiple definition of `a';)! Beispiel 2: <syntaxhighlight lang="C"> #include <stdio.h> //fuer printf() size_t stderr int printf=7; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int printf=7; int main(int argc,char *argv[]) { return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hier meldet der Compiler eine Fehlermeldung, da das Symbol printf zu einen als Variable und zum anderen als Funktion (innerhalb der inkludierten Datei stdio.h beschrieben) genutzt wird ('printf' redeclared as different kind of symbol). === Blockweite Sichtbarkeit === Erfolgt eine Funktion-/Variablen-/Datentyp Definition innerhalb einer Funktion, als Funktionsparameter oder eines Blockes, so sind diese nur innerhalb des Blockes sichtbar/gültig (=Lokale Variable). Blöcke können verschachtelt sein, so dass das bei identischer Namensgebung innere Definitionen Vorrang haben. Ebenso haben Blockdefinitionen Vorrang vor Datei-/Projektdefinitionen (überdecken diese): {| class="wikitable" |- ! Datei1.c !! Datei2.c |- | <syntaxhighlight lang="C"> int main(void) { int var2; //var2 ist nur innerhalb //von main() sichtbar struct xyz //Datentyp ist nur innerhalb {int x,y,z;};//von main() //sichtbar/gültig extern void func(void); //Deklaration //ist nur innerhalb von //main() sichtbar/gültig func(); } void foo(void) { struct xyz var_xyz; //Fehler, da //Datentypedefinition hier nicht mehr //gültig ist! func(); //Fehler, da Deklaration //hier nicht mehr gültig ist } </syntaxhighlight> || <syntaxhighlight lang="C"> #include <stdio.h> void func(void) { int var2=1; //var2 ist //nur innerhalb von //func() sichtbar { int var2=2; //var2 ist nur innerhalb //dieses Blockes sichtbar printf("%d\n",var2); } printf("%d\n",var2); } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(void) { int var2; //var2 ist nur innerhalb //von main() sichtbar struct xyz //Datentyp ist nur innerhalb {int x,y,z;};//von main() //sichtbar/gültig extern void func(void); //Deklaration //ist nur innerhalb von //main() sichtbar/gültig func(); } void foo(void) { struct xyz var_xyz; //Fehler, da //Datentypedefinition hier nicht mehr //gültig ist! func(); //Fehler, da Deklaration //hier nicht mehr gültig ist } | datei2_c=#include <stdio.h> void func(void) { int var2=1; //var2 ist //nur innerhalb von //func() sichtbar { int var2=2; //var2 ist nur innerhalb //dieses Blockes sichtbar printf("%d\n",var2); } printf("%d\n",var2); } | execCompilerOptions=-Wall datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Sichtbarkeit von Funktionsparameter in Protypen === Soll eine Funktion aufgerufen werden, die zuvor nicht definiert wurde, so ist ein Prototyp/(Forward)deklaration der Funktion notwendig (siehe nachfolgendes Kapitel). Die Parameterliste dieses Prototyps hat seinen eigenen Gültigkeitsbereich.<br/> Beispiel: <syntaxhighlight lang="C"> int a; //a im File Scope int func(int a, int b); //a und b im Function Prototyp scope </syntaxhighlight> Hinweis: * Bei Prototypen ist die Angabe von Variablenname nicht notwendig. Die alleinige Angabe des Datentyps ist ausreichend === Zuordnung der Gültigkeitsbereiche zu globalen/lokalen Variablen === Zum einfacheren Verständnis wird im Skript von folgenden Begrifflichkeiten gesprochen: * '''Globale''' Variablen-/Funktionen-/Datentypdefinitionen → Projektweite Sichtbarkeit/Gültigkeit * '''Statisch globale''' Variable/Funktionen → Dateiweite Sichtbarkeit/Gültigkeit * '''Lokale''' Variablen/Funktionen/Funktionsparameter/Datentypen → Nur innerhalb des zugehörigen Blockes sichtbare/gültig * '''Statisch lokale''' Variablen → Nur innerhalb der Funktion sichtbar/gültig, mit der Besonderheit, dass die Gültigkeit über der Laufzeit der Funktion gilt (siehe Kap. [[Programmieren in C/C++: DatentypeSpecifier#Static Storage Class Specifier|DatentypeSpecifier:Static Storage Class Specifier]]) === Speicherzuweisung === Für die einzelnen Gültigkeitsbereiche werden im Speicher (und auch in der Objekt-Datei) unterschiedliche Speicherbereiche (Segmente) vorgehalten, d.h. der Compiler teilt den Speicher in unterschiedliche Bereiche auf und weist den Variablen/Funktionen in Abhängigkeit der Gültigkeit/Sichtbarkeit unterschiedliche Speicherbereiche zu! [[File:Zuordnung von Inhalten eines C-Programms zu Speicherbereichen (Segmenten).png|thumb|Zuordnung von Inhalten eines C-Programms zu Speicherbereichen (Segmenten)]] Zur Ermöglichung von Rekursion werden lokale Variable auf dem Stack gehandelt. Mit Aufruf einer Funktion oder öffnen eines neuen Block-Scopes wird Speicher auf dem Stack reserviert, der bei Beenden des Scopes wieder freigegeben wird. Die Speicheradresse von lokalen Variablen ist somit nicht Fix, sondern hängt von der Aufrufhierarchie ab! Globale und statisch globale Variablen werden nicht auf dem Stack gehalten, sondern bekommen einen 'festen' Speicherbereich (hier DATA/BSS/RODATA) während der gesamten Laufzeit des Programms zugewiesen. Die Adresse dieser Variablen sind somit konstant. Das genutzte Speichersegment von globalen Variablen hängen von der Art der Variablen ab. Initialisierte Variablen werden im DATA-Segment gesammelt, welcher mit dem Initialisierungswert der Variablen initialisiert wird. Nicht initialisierte globale Variablen landen im BSS-Segment, so dass diese mit Programmstart durch Füllen dieses Blockes mit 0 auf 0 gesetzt werden. Konstante globale Variablen werden im RODATA-Segment gehalten. Über das Betriebssystem kann dieser Speicherbereich auf nur Lesbar gesetzt werden. Dynamische Speicheranforderungen, resp. Speicher, dessen Gültigkeit über die Laufzeit einer Funktion hinausgeht, wird im Heap gesammelt. Für die Verwaltung dieses Speichers ist der Programmierer zuständig. Entsprechend globalen Variablen wird für Funktionen ebenfalls ein eigener Speicherbereich (TEXT Segment) vorgesehen. Im Gegensatz zu Variablen, wo im Speicher der dazugehörige Inhalt gespeichert ist, ist der Speicherinhalt von Funktionen die Maschinenanweisungen. Die Speicheradresse der Funktionen sind konstant. Hinweis: * Die Speicheradresse von sowohl globalen und statisch globalen Variablen als auch von Funktionen ist konstant und ändert sich während der Laufzeit des Programms nicht. Die Adressvergabe dieser Variablen und Funktionen erfolgt somit nicht zur Laufzeit sondern durch die Toolchain (hier der Linker). * Dieses Konzept ist allgemeingültig, gilt nicht nur für die Programmiersprache C/C++ == Definition/Deklaration(Prototyp) == Der C-Compiler ist ein Single-Pass Compiler (siehe Kap [[Programmieren in C/C++: Einführung/Literatur#Arbeitsweise eines Compilers | Einführung/Literatur:Arbeitsweise eines Compilers ]]), d.h. für den Übersetzungsvorgang wird der Quellcode einmalig eingelesen und von vorne nach hinten abgearbeitet. Dies bedingt, dass keine Vorwärtsbezüge im Quelltext enthalten sein dürfen: * keine Variable genutzt werden kann, die erst später definiert wird (da der Compiler in Abhängigkeit des Datentyps (den er dann noch nicht kennt) keine entsprechende Maschinensprachebefehle erzeugen kann) * keine Funktion aufgerufen werden kann, die erst später definiert wird (da der Compiler nicht weiß, welcher Datentyp die Übergabewerte haben und folglich keine Maschinensprachebefehle zur Konvertierung und Übergabe der Variablen erzeugen kann) * kein Datentyp genutzt werden kann (struct, union, enum, typedef), welcher erst später definiert wird (da der Compiler nicht weiß, wieviel Speicher er für die Variable reservieren muss) Eine Lösungsvariante dieser Problematik ist, im Quellcode alle Variablen/Funktionen/Datentypen/Makros zu definieren, bevor diese erstmalig genutzt werden (Funktion main() steht dann folglich am Ende des Quellcodes): <syntaxhighlight lang="C"> void foo(void) { //foo() wird vor dem ersten Aufruf definiert //Hier kein Zugriff auf var möglich! //Hier kein Zugriff auf Datentyp uchar möglich! } int var; //var wird vor dem ersten Aufruf definiert typedef unsigned char uchar; //Definition des Datentyps uchar int main(void) { foo(); //da zuvor definiert kann diese Funktion hier aufgerufen werden var++; //dito } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void foo(void) { //foo() wird vor dem ersten Aufruf definiert var++; //Hier kein Zugriff auf var möglich! uchar xyz;//Hier kein Zugriff auf Datentyp uchar möglich! } int var; //var wird vor dem ersten Aufruf definiert typedef unsigned char uchar; //Definition des Datentyps uchar int main(int argc, char *argv[]) { foo(); //da zuvor definiert kann diese Funktion hier aufgerufen werden var++; //dito } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Sollen globale Funktionen/Variablen in Datei1.c genutzt werden, die in Datei2.c definiert sind, so schlägt diese Vorgehensweise fehl. Um auch dieses zu ermöglichen, bietet C die Möglichkeiten von Prototypen/Deklarationen an. Diese teilt dem Compiler mit, wie im späteren Ablauf die Variable, die Funktion definiert wird, bzw. dass es diesen Datentyp geben wird: {| class="wikitable" |- ! Datei1.c !! Datei2.c |- | <syntaxhighlight lang="C"> //Prototyp für Variable var extern int var; //Prototyp für Funktion foo void foo(void); int main(int argc, char *argv[]) { foo(); //Compiler kann aufgrund var++; //der Prototypen diese //Aufruf in Maschinen- //sprachebefehle umsetzen } </syntaxhighlight> || <syntaxhighlight lang="C"> //Definition der Variablen var int var; //Definition der Funktion foo void foo(void) { } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Prototyp für Variable var extern int var; //Prototyp für Funktion foo void foo(void); int main(int argc, char *argv[]) { foo(); //Compiler kann aufgrund var++; //der Prototypen diese //Aufruf in Maschinen- //sprachebefehle umsetzen } | datei2_c=#include <stdio.h> //Definition der Variablen var int var; //Definition der Funktion foo void foo(void) { } | execCompilerOptions=-Wall datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Innerhalb der C-Spezifikation werden für den Umgang mit dieser Problematik die Begriffe 'Declaration' und 'Definition' genutzt. Da diese Begriffe jedoch nicht klar abgegrenzt werden und auch für viele weitere Aspekte genutzt werden, sollen in diesem Skript in Anlehnung an den Wikipedia Artikel {{w|Deklaration (Programmierung)|Deklaration (Programmierung)}} (im Absatz zur Programmiersprache C/C++) die Begriffe Definition/Deklaration wie folgt genutzt werden: ;Definition: entspricht der Belegung/Reservierung von Speicherplatz :* Bei der Definition einer Variablen wird hiermit Speicherplatz entsprechend dem Datentyp der Variable belegt: :<syntaxhighlight lang="C"> int var1; //entsprechend der Größe des Datentyps int wird //Speicherplatz für die Variable var1 reserviert int var2=4711; //Dito, ergänzend wird dieser Speicherplatz mit dem //Wert 4711 initialisiert </syntaxhighlight> :* Bei einer Funktion wird Speicherplatz zur Aufnahme der Maschinenbefehle belegt: :<syntaxhighlight lang="C"> void foo(void) { //Die Anweisungen in den geschweiften Klammern //werden in Maschinenbefehle übersetzt. D.h. die //Funktion foo() belegt Speicher, dessen Inhalt //die Maschinensprachebefehle sind } </syntaxhighlight> :* Ergänzend wird der Begriff Definition auch in Verbindung mit der Definition von neuen Datentypen genutzt! ;Deklaration/Prototyp: ist die Mitteilung an den Compiler, wie diese Variable/Funktion an einer späteren Stelle im Source-Code oder in einer anderen Source-Datei definiert wird. Auf Grundlage dieser 'vorab' Information kann der Compiler die passenden Maschinensprachebefehle für den Zugriff/Aufruf auf die Variablen/Funktion einsetzen: :<syntaxhighlight lang="C"> extern int var1; //Deklaration von var1 extern void foo(void); //Deklaration von foo() void foo(void); //Deklaration von foo() </syntaxhighlight><br /> Insbesondere bei dem Umgang mit der Deklaration gilt es Folgendes zu berücksichtigen: * Deklarationen werden entweder: :* am Anfang einer C-Datei geschrieben, so dass Funktionen/Variablen im Zugriff stehen, die erst später in der C-Datei definiert werden (entspricht dann der Private Anweisung in anderen Sprachen) :* in Header-Dateien geschrieben, so dass diese Variable/Funktionen für alle sichtbar sind, welche diese Header-Datei einbinden (entspricht der Public Anweisung in anderen Sprachen) * Deklarationen von Funktionen werden in der C-Spec als (function) Prototyp bezeichnet und sind dadurch gekennzeichnet, dass diese mit einem Semikolon abgeschlossen sind. Der Specifier 'extern' ist hier optional und sagt eigentlich aus, dass diese Funktion external Linkage besitzt (siehe [[Programmieren in C/C++:_DatentypeSpecifier#Internal/External Linkage | DatentypeSpecifier:Internal/External Linkage]]). Die Benennung der Parametervariablen sind gleichermaßen optional: :<syntaxhighlight lang="C"> extern int foo(int var1, float var2); //Deklaration extern int foo(int , float ); //Deklaration int foo(int var1, float var2); //Deklaration + external Linkage int foo(int , float ); //Deklaration + external Linkage </syntaxhighlight> * Für globale Variablen gibt es keine (Variablen) Prototype. Stattdessen muss zur Bekanntgabe des Datentyps der Specifier 'extern' vorangestellt werden, mit welchen ergänzend zum Ausdruck gebracht wird, das diese Variable external Linkage und damit globale Gültigkeit hat (siehe Kap [[Programmieren in C/C++: DatentypeSpecifier# Extern - Storage Class Specifier| DatentypeSpecifier:Extern - Storage Class Specifier]]). Da die Deklaration einzig zur Bestimmung der Zugriffsmethoden auf Maschinenspracheebene genutzt wird, können diese keine Initialisierungswerte enthalten: :<syntaxhighlight lang="C"> extern int var1; extern int var2=7; //KO Deklarationen können keine //Initialisierungswerte haben </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> extern int foo; extern int foo=7; int main(int argc, char *argv[]) { return foo; } int foo=7;| execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Deklarationen von statisch globalen, lokalen und statisch lokalen Variablen nicht möglich sind: :<syntaxhighlight lang="C"> extern static int glob; //keine Deklaration von statisch globalen //Variablen möglich int main(int argc, char *argv[]) { extern int var; //Deklaration bezieht sich auf eine globale //Variable, die nicht definiert ist extern static int lok; printf("%d %d\n",var,lok); int var; static int lok; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> extern static int glob; //keine Deklaration von statisch globalen //Variablen möglich int main(int argc, char *argv[]) { extern int var; //Deklaration bezieht sicht auf eine globale //Variable, die nicht definiert ist extern static int lok; printf("%d %d\n",var,lok); int var; static int lok; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Deklarationen für identische Variablen/Funktionen können beliebig oft erfolgen, sofern der Datentyp identisch ist: :<syntaxhighlight lang="C"> extern int var; extern int var; //OK, doppelt Deklaration mit identischen Datentyp extern unsigned int var; //KO, Doppelte Deklaration mit unterschiedlichen // Datentyp </syntaxhighlight> * Sofern eine Deklaration und eine Definition in der identischen Datei erfolgen überprüft der Compiler, ob Deklaration und Definition identisch sind. Es empfiehlt sich, die eigene Header-Datei (in welcher die Deklaration normalerweise enthalten ist) zu inkludieren: :{| class="wikitable" |- ! Datei1.c !! Datei1.h |- | <syntaxhighlight lang="C"> //Include der eigenen Header-Datei #include "datei1.h" int var1; //Definition von var1 short var2; //Definition von var2 int var3; //Private Variable //da kein Prototyp //im Header vorhanden void func(void) { } </syntaxhighlight> || <syntaxhighlight lang="C"> extern int var1; //Deklaration extern char var2; //KO, da Deklaration //von Definition //abweicht void func(int); //KO, da Deklaration //von Definition //abweicht </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Include der eigenen Header-Datei #include "example.h" int var1; //Definition von var1 short var2; //Definition von var2 int var3; //Private Variable //da kein Prototyp //im Header vorhanden void func(void) { } int main(int argc, char *argv[]) { return 0; } | example_h= extern int var1; //Deklaration extern char var2; //KO, da Deklaration //von Definition //abweicht void func(int); //KO, da Deklaration //von Definition //abweicht | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Innerhalb einer Datei kann eine Variable identischen Datentyps mehrmals definiert werden (bei identischen Initialisierungswert). Diese Definitionen werden vom Compiler als eine Definition angesehen. Wenn jedoch eine identische Variable in unterschiedlichen Dateien definiert wird, so legt jede Datei eine eigene unabhängige Variable an, welche dann beim Zusammenführen der Objektdateien durch den Linker zu Fehler führt. Da Header-Datei zumeist in mehrere C-Dateien inkludiert werden, sind Definitionen in Header-Dateien 'verboten'. * Deklarationen innerhalb eines Block-Scopes oder eines Function Prototyp Scopes sind nur in diesen Bereich gültig. == Grundlegende Datentypen und Typsicherheit == Die Programmiersprache C kennt folgende grundlegende Datentypen (siehe Kap. [[Programmieren in C/C++: Datentypen | Datentypen]]). Von jedem Datentyp kann ein Zeiger angelegt werden: {| class="wikitable" |- ! Datentyp !! Bsp. für Datentyp !! Bsp. für Zeiger auf Datentyp |- | Ganzzahl || <syntaxhighlight lang="C"> char var; int var; short int var; long int var; long long int var; </syntaxhighlight> || <syntaxhighlight lang="C"> char *ptr; int *ptr; short int *ptr; long int *ptr; long long int *ptr; </syntaxhighlight> |- | Gleitkommazahl || <syntaxhighlight lang="C"> double var; float var; long double var; </syntaxhighlight> || <syntaxhighlight lang="C"> double *ptr; float *ptr; long double *ptr; </syntaxhighlight> |- | Funktionen || <syntaxhighlight lang="C"> void func(void) {} </syntaxhighlight> || <syntaxhighlight lang="C"> void (*pfunc)(void); </syntaxhighlight> |- | Arrays || <syntaxhighlight lang="C"> int arr[10]; float arr[3][3]; </syntaxhighlight> || <syntaxhighlight lang="C"> int (*parr); float (*parr)[3]; void (*pfunc[5])(void); </syntaxhighlight> |- | Strukturen/Unions || <syntaxhighlight lang="C"> struct xyz {int x,y,z}; union abc {int a,b,c}; </syntaxhighlight> || <syntaxhighlight lang="C"> struct xyz *ptr; union abc *ptr; </syntaxhighlight> |- | Aufzählungstyp || <syntaxhighlight lang="C"> enum abc {A,B,C}; </syntaxhighlight> || <syntaxhighlight lang="C"> enum abc *ptr; </syntaxhighlight> |- | Boolescher Datentyp || <syntaxhighlight lang="C"> _Bool var; </syntaxhighlight> || <syntaxhighlight lang="C"> _Bool *ptr; </syntaxhighlight> |- | Komplexe Zahlen || <syntaxhighlight lang="C"> _Complex var; </syntaxhighlight> || <syntaxhighlight lang="C"> _Complex *ptr; </syntaxhighlight> |} C/C++ unterscheidet zwischen vorzeichenbehafteten <code>signed</code> und vorzeichenlosen <code>unsigned</code> ganzzahligen Datentypen. Vorzeichenlose Datentypen können nur positive Zahlen incl. der 0 aufnehmen (Anwendungsbereich bspw. Speicheradressen/Arrayindexe, welche nicht negativ sein können). Deren max. Zahlenwert ergibt sich aus der Datenbreite N des Datentyps 2<sup>N</sup>-1. Ein Vergleich eines vorzeichenlosen Datentyps mit ≥ 0 ist somit immer TRUE: <syntaxhighlight lang="C"> unsigned char var=0; if(var >= 0) //Bedingung ist immer erfüllt, so dass printf("Bedingung erfüllt"); //dieser ggf. vom Compiler wegoptimiert wird! for(var=10; var>=0; var--); //Endlosschleife! 0 dekrementiert ergibt 255 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> int main(int argc,char *argv[]) { unsigned char var=0; if(var >= 0) //Bedingung ist immer erfüllt, so dass printf("Bedingung erfüllt\n"); //dieser ggf. vom Compiler wegoptimiert wird! //Beim Öfffnen des Compiler-Fensters ist die IF-Anweisung nicht farblich //hervorgehoben. Dies bedeutet, dass diese Zeile wegoptimiert wurde und folglich //kein Maschinencode für diese Anweisung erzeugt wurde for(var=10; var>=0; var--) //Endlosschleife! 0 dekrementiert ergibt 255 printf("%u ",var),fflush(stdout); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Vorzeichenlose Datentypen halbieren den verfügbaren Zahlenbereich und 'weisen' dem oberen Wertebereich den negativen Zahlen zu.<br> Wird ein ganzzahliger Datentyp ohne Angabe des Vorzeichentyps (signedness) definiert, so ist diese vorzeichenbehaftet. Bei vorzeichenlosen Variablen muss explizit <code>unsigned</code> vorangestellt werden. Die Voranstellung von <code>signed</code> ist optional. Einzige Ausnahme stellt der Datentyp char dar. Hier gibt die Spezifikation keine default signedness vor, so dass bei Nutzung dieses Datentyps zur Aufnahme von Zahlen immer signed oder unsigned vorangestellt werden sollte!<br> Innerhalb des Formatstrings bei den printf()/scanf() Anweisungen '''muss''' die signedness vom Programmierer händisch berücksichtigt werden. Die Formatanweisung %d und %i interpretieren die übergebenen Zahl als vorzeichenbehaftete Zahl. Soll eine vorzeichenlose Zahl ausgegeben werden, so muss %u verwendet werden: <syntaxhighlight lang="C"> signed int vari=-10; unsigned int varu=3000000000; printf("vari=%d varu=%u",vari,varu); //Korrekt printf("vari=%u varu=%i",vari,varu); //Falsche Werteausgaben! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> int main(int argc,char *argv[]) { signed int vari=-10; unsigned int varu=3000000000; printf("vari=%12d varu=%12u\n",vari,varu); //Korrekt printf("vari=%12u varu=%12i\n",vari,varu); //Falsche Werteausgaben! return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Mit der Definition (dem Anlegen) einer Variablen eines Datentyps wird Speicher entsprechend der Größe des Datentyps reserviert. Optional kann dieser Speicher initialisiert werden. Über den Datentyp wird ausgesagt, wie der Inhalt des Speichers zu interpretieren ist: <syntaxhighlight lang="C"> char var1; //Speicherplatzreservierung von 1 Byte //Inhalt der Speicherstelle wird als Zahl interpretiert //(Hinweis: ASCII-Zeichen sind Zahlen) double var2=47.11; //Speicherplatzreservierung von 8 Byte //Inhalt der Speicherstellen wird als Gleitkommazahl //interpretiert (bestehend aus je einer Ganzzahl für //Mantisse und Exponent) short arr[10]; //Speicherplatzreservierung von 10*2 Byte //Inhalt der 10 Speicherstellen werden als Ganzzahl //interpretiert </syntaxhighlight> Die Funktionalität der Operatoren hängt vom Datentyp der Operanden ab. Der Plus-Operator angewendet auf ganzzahlige Operanden führt eine Ganzzahl Addition aus, angewendet auf gleitkomma Operanden eine Gleitkomma Addition. Ist einer der Operanden ein Zeiger, so wird eine Zeigeraddition angewendet. Für andere Datentypen ist der Plus-Operator nicht definiert, so dass der Compiler einen Fehler wirft. '''Bei der Betrachtung eines Ausdruckes sollte dem genutzten Datentypen folglich eine besondere Aufmerksamkeit zuteil werden''': <syntaxhighlight lang="C"> int vari=47; vari+12; //(int) + (int) → Ganzzahladdition float varf=12.3; 3.1415F+varf; //(float) + (float) → Gleitkommaaddition int *ptr=&vari; ptr+3; //(int *) + (int) → Zeigeraddition int arr[3]; arr+3; //(int (*)) + (int) → Zeigeraddition </syntaxhighlight> Das Ergebnis einer Operation hat ebenfalls einen Datentyp. Eine Ganzzahl Addition gibt bspw. als Ergebnis einen Ganzahl Datentyp zurück, eine Gleitkomma Addtition einen Gleitkomma Datentyp und ein Vergleichsoperator den Datentyp _Bool: <syntaxhighlight lang="C"> int vari1=47; int vari2=11; vari1 + 12 + vari2; //((int)+(int)+(int))→((int)+(int))→(int) 40 < vari1 < 50; //((int)<(int)<(int))→((_Bool=int)<(int))→(_Bool=int) </syntaxhighlight> Wie Operatoren haben auch Funktionen Operanden (in Form von Übergabeparameter). Das Ergebnis eines Funktionsaufrufes wird ebenfalls in Form eines Datentyps zurückgegeben: <syntaxhighlight lang="C"> float add(int par1,par2) {return par1+par2;} int vari1=47; int vari2=11; vari1 + add(var2,12); //(int)+((int),(int)→(float))→(int)+(float)→(float) </syntaxhighlight> Wird auf einen Operator gleichermaßen ein vorzeichenbehafteter und ein vorzeichenloser Operand angewendet, so kann es zu unerwarteten Konvertierungsproblemen führen: <syntaxhighlight lang="C"> unsigned char varu=12; signed char vars=-12; float varf; varf = varu + vars; if(vars < varu) </syntaxhighlight> Sind die Datentypen der Operanden nicht 'kompatibel', so 'passt' der Compiler die Datentypen im Falle von Ganzahl und Gleitkomadatentypen per impliziter Regel an (siehe Kap. [[Programmieren in C/C++: Datentypen#Implizite Typumwandlung | Datentypen:Implizite Typumwandlung]]). Über explizite Typumwandlung (siehe Kap.[[Programmieren in C/C++: Datentypen# Explizite Typumwandlung|Datentypen:Explizite Typumwandlung]]) kann ein Datentyp z.T. in einen anderen Datentyp gewandelt werden. In allen anderen Fällen ist C Typsicher, d.h. der Compiler gibt zumindest eine Warning aus, wenn die Datentypen nicht identisch sind und der Compiler keine implizite Regel anwenden kann. Tipp: * Compiler gibt bei Fehlermeldung oftmals die erwarteten und die vorhandenen Datentyp an. Wenn solch eine Fehlermeldung kommt, sollten sie sich a) überlegen, was wollten sie syntaktisch geschrieben haben und b) was haben sie in der Tat geschrieben. Ein Google nach einer Lösung des Compilerproblems löst zumeist nicht das Problem, sondern umgeht es! Hinweis: * Ein guter Programmierer sollte die Datentypen so wählen, dass: :* die Datentypen zum Inhalt und zum Wertebereiches passen :* keine Datentypkonvertierungen notwendig sind : andernfalls besteht die Gefahr, dass hiermit Laufzeitfehler einprogrammiert werden. * Wenn Datentypkonvertierungen notwendig sind, sollte die explizite Konvertierung genutzt werden == Abhängigkeiten bzgl. Rechnerarchitektur == Kenngrößen von Prozessoren sind unter anderem die Anzahl der Bits für den Datentransport und für Arithmetisch-/Logische-Operationen (→ Datenbreite) und die Anzahl der Bits für die Adressierung des Speichers (→ Adressierungsbreite). Die Datenbreite sagt dabei aus, welche max. Datenbreite ein Maschinenbefehl (zumeist in einem Taktzyklus) transportieren/berechnen kann. Werden programmtechnisch größere Datenbreiten benötigt, bedingt dies, dass hierzu mehrere Maschinenbefehle notwendig sind. Wenn kleinere Datenbreiten notwendig sind, so wird oftmals das Ergebnis abgeschnitten (sofern der Prozessor keine Befehle für den Umgang mit kleineren Datentyp beherrscht): {| class="wikitable" |- ! 32-Bit Datentransport/Operation<br /> bei 32-Bit Datenbreite ! 64-Bit Datentransport/Operation<br /> bei 32-Bit Datenbreite ! 16-Bit Datentransport/Operation<br /> bei 32-Bit Datenbreite |- | <syntaxhighlight lang="C"> int32_t a32,b32; </syntaxhighlight> || <syntaxhighlight lang="C"> int64_t a64,b64; </syntaxhighlight> || <syntaxhighlight lang="C"> int16_t a16,b16; </syntaxhighlight> |- | <syntaxhighlight lang="asm"> // a32=b32; mov eax,b32 mov a32,eax </syntaxhighlight> || <syntaxhighlight lang="asm"> // a64=b64; mov eax ,b64 mov edx ,b64+4 mov a64 ,eax mov a64+4,edx </syntaxhighlight> || <syntaxhighlight lang="asm"> //a16=b16; movz eax,b16 mov a16,ax </syntaxhighlight> |- | <syntaxhighlight lang="asm"> // a32=a32+b32; mov edx, a32 mov eax, b32 add eax, edx mov a32, eax </syntaxhighlight> || <syntaxhighlight lang="asm"> // a64=a64+b64; mov ecx , a64 mov ebx , a64+4 mov eax , b64 mov edx , b64+4 add eax , ecx adc edx , ebx mov a64 , eax mov a64+4, edx </syntaxhighlight> || <syntaxhighlight lang="asm"> // a16=16+b16; movzx eax, a16 mov edx, eax movzx eax, b16 add eax, edx mov a16, ax </syntaxhighlight> |} Die Adressierungsbreite gibt an, mit welcher Bitbreite der Speicher adressiert werden kann: * Bei einem 32-Bit System können 2<sup>32</sup>=4.294.967.295=4Gi&nbsp;Bytes/Speicherstellen adressiert werden * Bei einem 16-Bit System können 2<sup>16</sup>=65.536=64Ki&nbsp;Bytes/Speicherstellen adressiert werden * Bei einem 64-Bit System können 2<sup>64</sup>=18.446.744.073.709.551.616 =16Ei ~18Exa&nbsp;Bytes/Speicherstellen adressiert werden Waren die Datenbreite und die Adressierungsbreite bei den ersten Prozessoren noch unterschiedlich, so sind diese heutzutage zumeist identisch. Bei einem 32-Bit Prozessor bedeutet dies, dass dieser max. 4Gi&nbsp;Bytes Speicherstellenstellen adressieren kann und Maschinenbefehle für den Datentransport und die Berechnung von 32-Bit Datenworten beinhaltet. Die Datenbreite und auch die Adressierungsbereite haben direkten Einfluss auf die Programmiersprache: * Wird defaultmäßig mit größerer Datenbreite gerechnet, als der Prozessor 'von Hause' aus unterstützt, so werden die erzeugten Maschinenprogramme größer und langsamer (Umgedreht bedeutet dies jedoch nicht, dass die Maschinenprogramme kleiner und schneller werden) * Die max. Größe von Verbunddatentypen und Arrays ergibt sich aus der Adressierungsbreite des Prozessors Die Intention der Programmiersprache C/C++ ist, die Prozessorarchitektur optimal zu nutzen. Dementsprechend sind diverse Eigenschaften der Sprache nicht fest spezifiziert, sondern von der Rechnerarchitektur abhängig. === Integer Datentyp === Intention von C/C++ ist, dass der Umgang mit dem Grunddatentyp 'int' möglichst direkt in einen Maschinensprachebefehl umgesetzt werden kann.<br /> Bei einem 16-Bit Prozessor hat der Datentyp int daher eine Breite von 16-Bit und bei einem 32-Bit Prozessor eine Breite von 32-Bit (siehe Kap [[Programmieren in C/C++: Datentypen # Ganzzahlige Datentypen|Datentypen:Ganzahl Datentypen]]). Über vorangestellte Qualifier kann dieser Grunddatentyp verkleinert/vergrößert werden. === Integer Arithmetik === Ganzzahlen haben nur einen begrenzten Wertebereich. Wird dieser bspw. durch eine Addition überschritten (d.h. das Rechenergebnis benötigt zur Darstellung mehr Stellen, als der Datentyp 'hergibt'), so gibt es zwei Vorgehensweisen: * Arithmetischer Überlauf (siehe {{w|arithmetischer Überlauf}}): Die nicht speicherfähigen Stellen werden verworfen, so dass i.d.R. ein falsches Ergebnis erzeugt wird! :Beispiel: :<syntaxhighlight lang="C"> unsigned char a=254,b=3,c; c=a+b; //c ist (254+3)%256=1 c=a*b; //c ist (254*3)%256=250 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { unsigned char a=254,b=3,c1,c2; c1=a+b; //c ist (254+3)%256=1 c2=a*b; //c ist (254*3)%256=250 printf("c1=%hhu c2=%hhu\n",c1,c2); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Sättigungsarithmetik (siehe {{w|Sättigungsarithmetik}}): Alle Operationen laufen innerhalb eines festen Intervalls ab, so dass Überläufe und Unterläufe auf dieses Intervall begrenzt werden: :Beispiel: :<syntaxhighlight lang="C"> unsigned char a=254,b=3,c; c=a+b; //c ist MAX((254+3),255)=255 c=a*b; //c ist MAX((254*3),255)=255 </syntaxhighlight> Die Spezifikation von C macht bezüglich der zu nutzenden Methodik keine Vorgaben, so dass das Handling von der ALU des Prozessors abhängt. Aus Komplexitäts- und Geschwindigkeitsgründen ist dies zumeist der arithmetische Überlauf. Nur bei Spezialprozessoren (z.B. DSP Digital Signal Processor) kommt z.T. die Sättigungsarithmetik zum Einsatz. === Gleitkomma Datentyp und Arithmetik === Für den Umgang mit Gleitkommazahlen bieten einige Prozessoren spezielle Recheneinheiten ({{w|Gleitkommaeinheit}} Floating Point Units FPU) an. Sowohl die Darstellung von Gleitkommazahlen als auch das Verhalten bei Überlauf/Unterlauf ist damit Herstellerabhängig. Um auch diese Einheiten effektiv nutzen zu können, ist die C/C++ Spezifikation in diesem Bereich ebenfalls sehr offen. === Max. Speicherbedarf von Variablen === Die maximale Größe von Arrays/Strukturen/Unions ist in C/C++ von der zugrundeliegenden Rechnerarchitektur abhängig: <syntaxhighlight lang="C"> char a[100000]; //Speicherbedarf=100.000*1Byte=100.000 Bytes //Bei 16-Bit Architektur KO //Ab 32-Bit Architektur OK struct size_16 { char a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_256 { struct size_16 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_4096 { struct size_256 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_65536 { struct size_4096 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_65536 var65536; //Speicherbedarf=65536 Bytes //Bei 16-Architektur KO //Ab 32-Architektur OK </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Zur Darstellung bitte Compiler-Fenster öffnen //und dort den CC65-Compiler für den 6502 Prozessor auswählen char a[100000]; //Speicherbedarf=100.000*1Byte=100.000 Bytes //Bei 16-Bit Architektur KO //Ab 32-Bit Architektur OK struct size_16 { char a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_256 { struct size_16 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_4096 { struct size_256 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_65536 { struct size_4096 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_65536 var65536; //Speicherbedarf=65536 Bytes //Bei 16-Architektur KO //Ab 32-Architektur OK int main(int argc,char *argv[]) { return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Im Falle von globalen Variablen erzeugt der Compiler/Linker eine Fehlermeldung. Werden von diesen Datentypen Variablen als lokale Variablen angelegt, so erzeugt dies zur Laufzeit einen Stackoverflow. === Zeigervariable === Eine Zeigervariable ist eine Variable, die eine Speicheradresse speichert. Die Größe dieses Datentyps hängt von der Adressierungsbreite des Prozessors ab. Unabhängig von dem Datentyp, auf den die Zeigervariable zeigt, ergibt sich folgende Breite: * 4-Byte bei einer 32-Bit Rechnerarchitektur * 8-Byte bei einer 64-Bit Rechnerarchitektur * 2-Byte bei einer 16-Bit Rechnerarchitektur === Datentyp size_t === Die maximale Größe von Arrays/Strukturen/Unions ist in C von der zugrundeliegenden Rechnerarchitektur abhängig. Sie ergibt sich aus der Adressierungsbreite. Da die Datenbreite des Datentyps int zumeist kleiner als die Adressierungsbreite ist, existiert in C/C++ der vorzeichenlose Datentyp size_t.<br /> Alle Funktionen, welche den Speicherbedarf übergeben bekommen, bzw. zurückgeben (bspw. strlen(), memcpy(), sizeof()) , nutzen den Datentyp size_t: <syntaxhighlight lang="C"> //Prototypen size_t strlen(char *str); //Die max. Stringlänge ist durch den //adressierbaren Speicher vorgegeben void *malloc(size_t size); void *memcpy(void *dest, const void *src, size_t n); </syntaxhighlight> Der Datentyp size_t ist in der Header-Datei stddef.h der Standard-C-Library per typedef gesetzt. Im Normalfall muss diese Header-Datei nicht explizit inkludiert werden, da bei Nutzung von z.B. strlen() diese bereits durch die Header-Datei string.h inkludiert wird: <syntaxhighlight lang="C"> typedef unsigned long long size_t; //Bei einer 64-Bit Rechnerarchitektur </syntaxhighlight> Hinweis: * Der Datentyp size_t ist immer ein vorzeichenloser Datentyp (es gibt keine negativen Speicheradressen). * Mit dem Datentype ssize_t wird eine vorzeichenbehaftete Variante zur Verfügung gestellt, welche hilfreich ist, wenn Speicheradresse subtrahiert werden sollen. * Soll der Wert vom Datentyp size_t mittels printf() ausgegeben werden, so ist der 'Length Modifier' z und der 'Conversion Specifier' u zu nutzen: :<syntaxhighlight lang="C"> size_t var=strlen("String"); printf("%zu",var); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc,char *argv[]) { size_t var=strlen("String"); printf("%zu",var); printf("%d",var); //Hier sollte es eine Compiler-Warning geben! return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Boolescher-Datentype/Operatoren == Ursprünglich gab es den booleschen Datentyp in der Programmiersprache C nicht. Mit C99 wurde zwar der Datentyp <code>_Bool</code> eingeführt, dies änderte jedoch nicht den Umgang mit Anweisungen und Operatoren, die einen booleschen Datentyp erwarten/zurückgeben! An allen Stellen, an denen ein boolescher Datentyp erwartet wird (z.B. IF-Abfrage, bei booleschen Operationen) wird der Datentyp Ganzzahl, Gleitkommazahl oder Zeiger erwartet (= Scalar-Type) und ausgewertet. Der hierin gespeicherte Zahlenwert sagt aus, ob diese Zahl als True oder False zu interpretieren ist: * False, wenn Ganzzahl gleich 0 oder Gleitkommazahl gleich 0.0 oder Zeiger gleich NULL * True, wenn Ganzzahl ungleich 0 oder Gleitkommazahl ungleich 0.0 oder Zeiger ungleich NULL Beispiel: <syntaxhighlight lang="C"> int a=3; double b=0.0; int *ptr=&a; while(1); if(a) {} for( ; b && ptr ; ); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=3; double b=0.0; int *ptr=&a; while(0); if(a) {} for( ; b && ptr ; ) {} return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Operatoren, welchen einen booleschen Wert zurückliefern (Vergleichs-Operatoren und Boolesche-Operatoren), liefern ein Integer-Datentyp zurück: * (int)0 für False * (int)1 für True Beispiel: <syntaxhighlight lang="C"> int a=3; int b= (a==3); //b=1 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=3; int b= (a==3); //b=1 printf("%d",b); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} In den if()/for()/while() Anweisungen ist folglich kein explizites Konvertieren eines Ganzzahl-/Gleitkomma-/Zeigerwertes mittels des Vergleichs-Operators in einen Booleschen Wert notwendig: <syntaxhighlight lang="C"> int a; double b; if(a) //entspricht if(a!=0) if(!b) //entspricht if(b==0.0) while(1) //entspricht while(True) for(int lauf=1; lauf ; lauf--); </syntaxhighlight> Umgedreht kann ein boolescher Wert oder auch das Ergebnis einer booleschen Operation direkt mit einer Ganzzahl- oder Gleitkommazahl verknüpft werden: <syntaxhighlight lang="C"> int a=3,b=2; a=a+1 && 7 << 3 & a==3; if( a==1 & b==2) if(3 < a < 9) //Vorsicht, die Schreibweise lässt ein //anderes Verhalten erwarten! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=3,b=2; a=a+1 && 7 << 3 & a==3; printf("%d\n",a); if(a==1 & b==2) printf("true\n"); else printf("false\n"); if(3 < a < 9) if( (a==1) & (b==2)) printf("true\n"); else printf("false\n"); return 0; } | execCompilerOptions=| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Mit C99 wurde der Datentyp <code>_Bool</code> eingeführt. Dieser entspricht weiterhin einem Integerdatentyp mit der Besonderheit, dass beim Zuweisen eines Wertes dieses auf true oder false geprüft wird und Variablen dieses Datentyps nur die Werte 0 oder 1 annehmen können: <syntaxhighlight lang="C"> _Bool var1=12; printf("var1=%d\n",var1); //→ 1 float var2=13.2; var1=var2; printf("var1=%d\n",var1); //→ 1 var1--; //Post/Pre Inkrement/Dekrement in C++ nicht auf Datentyp bool! möglich printf("var1=%s\n",var1?"true(1)":"false(0)"); //→ false </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { _Bool var1=12; printf("var1=%d\n",var1); //→ 1 float var2=13.2; var1=var2; printf("var1=%d\n",var1); //→ 1 var1--; //Post/Pre Inkrement/Dekrement in C++ nicht auf Datentyp bool! printf("var1=%s\n",var1?"true(1)":"false(0)"); //→ false return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Für den einfacheren Umgang mit dem 'neuen' Datentyp wurde in der Header-Datei <code>stdbool.h</code> die Makros <code>true</code> (als Austauschwert für die Ganzzahl 1) und <code>false</code> (als Austauschwert für die Ganzahl 0) definiert. Ergänzend wird hier der Datentyp <code>bool</code> als Alias auf <code>_Bool</code> gesetzt. <syntaxhighlight lang="C"> #include <stdbool.h> bool foo(int par,int min,int max) { if((par >= min) && (par <= max)) return true; else return false; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdbool.h> bool foo(int par,int min,int max) { if((par >= min) && (par <= max)) return true; else return false; } int main(int argc,char *argv[]) { foo(4,3,6); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * In C++ gibt es anstatt des Datentypes <code>_Bool</code> den Datentyp <code>bool</code>. Auch sind die beiden Konstanten <code>true</code> und <code>false</code> ohne zusätzliches Einbinden der Header-Datei vorhanden. Der weitere Umgang ist jedoch identisch zu C. == Literale/Konstanten == Zahlenwerte und Strings im Source-Code werden vom Compiler in binäre Zahlen umgerechnet. Über der Schreibweise/Syntax der Literale/Konstanten wird dem Compiler gesagt, in welchem Zahlenformat die Zahl auf Source-Code Ebene beschrieben ist und welchem Datentyp sie entspricht. Unabhängig wie die Konstanten im Source-Code beschrieben sind, werden die Zahlen intern als binäre Zahlen gespeichert. Beispiele, wie die Zahlen intern gespeichert werden: <syntaxhighlight lang="C"> int var=17; //0000 0000 0000 0000 0000 0000 0001 0001 short var=0x307;// 0000 0011 0000 0111 char var=017; // 0000 1111 int var=-1; //1111 1111 1111 1111 1111 1111 1111 1111 float var=0.0; //0000 0000 0000 0000 0000 0000 0000 0000 float var=1.0; //0011 1111 1000 0000 0000 0000 0000 0000 </syntaxhighlight> === Ganzzahl-Konstanten === Im Allgemeinen ordnet der Compiler einer numerischen, ganzzahligen Konstanten den kleinstmöglichen Datentyp beginnend vom Datentyp integer zu. Sobald der Wert der Konstanten den Wertebereich von integer übersteigt, wird der nächst größere passende Datentyp gewählt. Ergänzend gilt, dass alle Ganzzahl-Konstanten als vorzeichenbehaftete Ganzzahl-Konstanten angesehen werden!<br /> Beispiele für integer Konstanten: <pre> 123 +123 -123 → Formal wird das Minus als Operator angesehen und die positive Zahl 123 negiert 0x123 → Konstante ist in hexadezimaler Schreibweise notiert 0123 → Konstante ist in oktaler Schreibweise notiert 0b011 → Konstante ist in binärer Schreibweise notiert nicht offizieller C-Syntax, wird aber von vielen Compiler unterstützt ab C23-Spezifikation offiziell im C-Syntax enthalten! 6'432'108 → Tausendertrenner Nur in C++ Spezifikation enthalten ab C23-Spezifikation auch im C-Syntax enthalten. 5123123123 → Wertebereich größer als 2^31 so dass automatisch zum nächst größeren Datentyp konvertiert wird </pre> Mit den Suffixen L/l und LL/ll kann der Datentyp long und long long erzwungen werden: <pre> 12L → Konstante wird in eine long Integer Konstante konvertiert 4711LL → Konstante wird in eine Long Long Konstante konvertiert </pre> Mit dem Suffix U/u kann die Konstante explizit auf unsigned gesetzt werden: <pre> 12U → Konstante wird als vorzeichenlose Zahl gesepeichert 4711ULL → Konstante wird in eine vorzeichenlose Long Long Konstante konvertiert </pre> === Char-Konstanten === In einfachen Anführungsstrichen geschriebene ASCII Zeichen werden entsprechend der {{w|American Standard Code for Information Interchange | ASCII-Tabelle}} als Zahlenwert (Datentyp int) dargestellt: <pre> 'A' → Integerkonstante 65 'a' → Integerkonstante 97 … </pre> Über den {{w|Escape-Sequenz|Escape-Operator}} (Zeichen Backslash '\') wird das/die dem ESCAPE Operator folgende Zeichen gesondert interpretiert. Die im Source-Code erhaltene Zeichenfolge wird im Computerprogramm als ein Zahlenwert (Datentyp int) gespeichert. Dies ist u.A. zur Darstellung von ' und " aber auch zur Darstellung der unteren 32 Zeichen der ASCII Tabelle notwendig (Siehe auch {{w|Steuerzeichen}}) <pre> ESCAPE Integer- → Bedeutung / (Terminal)funktionalität Sequence konstante '\0' = 0 → 0 Character = Stringendezeichen '\a' = 7 → Bell (erzeugt auf dem Terminal einen Ton) '\b' = 8 → Backspace (Bewegt den Cursor um eine Position nach links) '\t' = 9 → Horizontal Tab (Bewegt den Curso auf die nächste horizontale Tabulatorposition, Abstand ist Terminalspezifisch) '\n' = 10 → NewLine (Zeilenvorschub) '\v' = 11 → Vertial Tab '\r' = 13 → Carriage Return (Wagenrücklauf, Bewegt den Cursor an den Zeilenanfang) '\"' = 34 → Double Quote '\'' = 39 → Single Quote '\?' = 63 → Question mark '\\' = 92 → Backslash '\f' = 12 → FormFeed (Erzeugt auf dem Terminal/Drucker einen Seitenvorschub) '\ooo' = 0ooo → Oktal, wobei o Digits von 0..7 sein müssen '\xdd' = 0xdd → Hexadezimal, wobei d Digits von 0..9 A..F sein müssen '\udddd' Unicode mit 4 Digits '\Udddddddd' Unicode mit 8 Digits </pre> Beispiel <syntaxhighlight lang="C"> 'A' == 65 == '\101' == '\x41' == '\u0041' == '\U00000041' </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { //Programmiersprache wurde auf C++ gesetzt if('A' == 65) printf("'A' == 65\n"); if('A' == '\101') printf("'A' == '\\101'\n"); if('A' == '\x41') printf("'A' == '\\x41'\n"); if('A' == '\u0041') printf("'A' == '\\u0041'\n"); if('A' == '\U00000041') printf("'A' == '\\U00000041'\n"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true| lang=c++ }} Öffnen im Compiler Explorer] }} Über Prefixe können alternative Zieldatentypen/Konvertierungen erzwungen werden: <pre> u'b' → unicode 16 (nur C++) U'b' → unicode 32 (nur C++) L'b' → wchar_t </pre> Hinweis * Die ASCII-Tabelle basiert auf einer 7-Bit Zeichenkodierung, so dass bspw. die Umlaute 'ä', 'ö' und 'ü' dort nicht kodiert sind. Sollen auch diese Zeichen genutzt werden, so empfiehlt sich der Datentyp wchar_t === Gleitkommakonstanten === Alle Gleitkommakonstanten sind ohne weitere Angaben vom Datentyp double! <pre> 555.12 555. → 555.0 .1 → 0.1 4e2 → 400.0 0x22.11p13 → Konstante in Hexadezimalen Schreibweise (ab C99) </pre> Über Suffixe kann ein alternativer Datentyp erzwungen werden: <pre> 3.0F → Datentyp float 3.0l → Datentyp long double </pre> Hinweis: * Aufgrund der unterschiedlichen Basis zwischen dem menschlichen Zehner-System und dem computerinternen Binär-System entstehen insbesondere bei den Nachkommastellen Rundungsfehler. Die Konstante 0.1f wird durch die Wandlung intern als 1.00000001490116119384765625e-1 dargestellt * Die C-Spec verlangt, dass die binäre Repräsentation von Gleitkommazahlen zur Laufzeit (z.B. durch die Funktion atof() strtod() scanf("%f")) identisch zur der zur Compilezeit ist. Beispiel: :<syntaxhighlight lang="C"> if(3.14==atof("3.14")) printf("muss erfüllt sein"); //3.14 wird vom Compiler in ein Binärwert gewandelt //Der String "3.14" wird zur Laufzeit mittels atof in ein Binärwert gewandelt //Beide Wandlungsergebnisse müssen identisch sein </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { if(3.14==atof("3.14")) printf("muss erfüllt sein\n"); //3.14 wird vom Compiler in ein Binärwert gewandelt //Der String "3.14" wird zur Laufzeit mittels atof in ein Binärwert gewandelt //Beide Wandlungsergebnisse müssen identisch sein printf("Intern wird 3.14 wie folgt dargestellt %14.20f",3.14); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Konstanten Ausdrücke === Ergänzend zu den Zahlenwerten werden auch Ausdrücke durch den Compiler ausgewertet. Als Voraussetzung für die Ausdrücke gilt, dass alle Operatoren Literale/Konstante sein müssen, so dass der Compiler die Berechnung durchführen kann. Als Operatoren können alle im normalem Syntax erlaubten Operatoren (z.B.: +,-,*,/,&,&&,|,||,>>,<<,==,!=) genutzt werden.<br /> Beispiel: <syntaxhighlight lang="C"> int var1=7*3+5; → wird vom Compiler durch 26 ersetzt int var2=(4710+(8-1))&-8; → wird vom Compiler durch 4712 ersetzt var1=4*4*var1+77*(77%3); → wird vom Compiler durch 16 * var1 + 154 ersetzt </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { int var1=7*3+5; //→ wird vom Compiler durch 26 ersetzt int var2; var2=(4710+(8-1))&-8; //→ wird vom Compiler durch 4712 ersetzt var1=4*4*var1+77*(77%3); //→ wird vom Compiler durch var1 * 16 + 154 ersetzt return 0; } | execCompilerOptions=-Wall| h=g| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Konform zur C-Spezifikation bieten einige Compiler weitere Operatoren aus der math.h Library an (z.B. sin(), cos(), ...). Bestehen die Aufrufparameter aus Konstanten, so ersetzt der Compiler den Ausdruck durch die 'Ergebnis'-Konstante: :<syntaxhighlight lang="C"> int var3=sin(1.0)*10; →wird vom Compiler durch 8 ersetzt </syntaxhighlight> * Konstanten Ausdrücke werden durch den Präprozessor ausgewertet, so dass dieser die Ergebnisse ebenfalls nutzen kann: :<syntaxhighlight lang="C"> #define BUF_SIZE 512 #if (BUF_SIZE & (BUF_SIZE -1)) != 0 #endif </syntaxhighlight> === String Konstanten === Stringkonstanten erzeugen ein Array von Characters. Mit dem abschließenden Hochkommata wird das Array um ein Stringendezeichen ergänzt: <pre> "abc" → (char []) {'a','b','c','\0'} </pre> Adjacent Strings Konstanten werden vom Compiler zu einer String-Kontante zusammengefasst, so dass nur ein Stringendezeichen vorhanden ist: <pre> "xxx" "yyy" → (char []) {'x','x','x','y','y','y','\0'} </pre> Über Prefixe können alternative Zieldatentypen/Konvertierungen erzwungen werden: <pre> L"string" → (wchar_t[7]){L's',L't',L'r' …) </pre> Über Postfixes können in C++ Objekte erzeugt werden: <pre> "string"s → erzeugt einen String vom Datentyp std::string "string"sw → Erzeugt einen String vom Datentyp std::string_view </pre> String Konstanten werden Compilerintern über unnamed Variablen realisiert, welche als globale Variable angelegt werden und per default const sind: <syntaxhighlight lang="C"> printf("Wert=%d",4); //entspricht const char unnamed1[]="Wert=%d"; printf(unnamed1,4); //String Konstanten sind per Default Konstant char *str="hallo"; //Typkonflikt!, da "hallo" vom Datentyp const char[] ist str[0]='H'; //Laufzeitfehler, da nun schreibender Zugriff auf im //Readonly Speicher angelegt Variable. </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { printf("Wert=%d\n",4); //entspricht const char unnamed1[]="Wert=%d\n"; printf(unnamed1,4); fflush(stdout); //Zur Darstellung der Ausgabe, da nachfolgend //das Programm abstürzt und die gepufferte Ausgabe //nicht zur Anzeige gebracht wird //String Konstanten sind per Default Konstant char *str="hallo"; //Typkonflikt!, da "hallo" vom Datentyp const char[] ist str[0]='H'; //Laufzeitfehler, da nun schreibender Zugriff auf im //Readonly Speicher angelegt Variable. return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Für doppelte String Konstanten wird nur einmal Speicher reserviert: <syntaxhighlight lang="C"> const char *str1="hallo"; const char *str2="hallo"; if(str1==str2) printf("Identische Startadressen"); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { const char *str1="hallo"; const char *str2="hallo"; if(str1==str2) printf("Identische Startadressen"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Initialisierungsliste / Compound Literal == Arrays, Strukturen und Unions bestehen zumeist aus mehreren Elementen. Zur Initialisierung solcher Variablen werden die Initialisierungswerte in geschweiften Klammern als Initialisierungsliste zusammengefasst. <code> Syntax: {Initialisierungsliste} </code> Für eine Initialisierungsliste wird kein Speicher vorgehalten. Vielmehr wird bei der Variablendefinition die Variable direkt mit dem Inhalt der Liste initialisiert. Der Datentyp der Initialisierungsliste ergibt sich aus dem Datentyp der zu initialisierenden Variable: <syntaxhighlight lang="C"> int arr[5] = { 1,2,3,4,5 }; struct xyz { int x,y,z;}; //Definition einer Struktur struct xyz var = { 1,2,3 }; </syntaxhighlight> Wird der Initialisierungsliste ein Datentyp in runden Klammern vorangestellt, so wird hiermit eine 'unnamend' Variable/Objekt, ein Compound Literal erstellt: <code> Syntax: (type) {Initialisierungsliste} </code> Ein Compound Literal entspricht einer anonymen Variablen des angegebenen Datentyps. Wie bei einer normalen Variablendefinition wird hier ebenfalls eine Variable angelegt und diese mit den Initialisierungswerten initialisiert. Im Unterschied zu einer normalen Variable kann auf solch eine Variable im Nachgang nicht mehr zugegriffen werden. Der Rückgabewert eines Compound Literals entspricht somit dem einer Variablen.</br> Compound Literale bieten sich überall dort an, wo Variablen nur für einen einmaligen Zweck angelegt werden (bspw. bei der Parameterübergabe von Funktionen): <syntaxhighlight lang="C"> struct point {int x; int y;}; drawline((struct point){1,2},(struct point){2,3}); printarray((int []){1,2,3,4}); //entsprechen struct point unnamed1={1,2},unnamed2={2,3}; drawline(unnamed1,unnamed2); int unnamed3[]={1,2,3,4}; printarray(unnamed3); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct point {int x,y;}; void drawline(struct point start,struct point end) { printf("Linie von (%d,%d) nach (%d,%d)\n",start.x,start.y,end.x,end.y); } void printarray(int arr[4]) { printf("[ "); for(size_t idx=0;idx<4;idx++) printf("%d ",arr[idx]); printf("]\n"); } #include <stdlib.h> int main(int argc,char *argv[]) { struct point {int x; int y;}; drawline((struct point){1,2},(struct point){2,3}); printarray((int []){1,2,3,4}); //entsprechen struct point unnamed1={1,2},unnamed2={2,3}; drawline(unnamed1,unnamed2); int unnamed3[]={1,2,3,4}; printarray(unnamed3); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Über den Adressoperator kann auch die Adresse der anonymen Variablen ermittelt werden. In diesem Falle ist dann der Gültigkeitsbereich/-dauer des Compound Literals zu berücksichtigen. Wird eine Compound Literals außerhalb eines Block-Scopes angelegt, so entspricht sie einer globalen Variable, andernfalls einer lokalen Variablen. Außerhalb des Gültigkeitsbereiches verliert die Adresse auf solch eine Variable ihre Gültigkeit: <syntaxhighlight lang="C"> drawlinep( &(struct point){1,2},&(struct point){2,3}); //entspricht struct point unnamed1={1,2},unnamed2={2,3}; drawlinep( &unnamed1, &unnamed2); struct point1, *point2; { //Block-Scope, zwecks Darstellung von lokalen Variablen point1= (struct point){1,2}; //Compound Literal entspricht hier //Initialisierungswert für point1 point2=&(struct point){3,4}; //Compound Literal ist nur in diesem //Block gültig drawlinep(&point1 /*OK*/, point2 /*OK*/); } drawlinep(&point1 /*OK*/, point2 /*KO*/); //Zeiger zeigt auf nicht mehr //gültigen Speicherbereich </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct point {int x,y;}; void drawlinep(struct point *start,struct point *end) { printf("Linie von (%d,%d) nach (%d,%d)\n",start->x,start->y,end->x,end->y); } #include <stdlib.h> int main(int argc,char *argv[]) { drawlinep( &(struct point){1,2},&(struct point){2,3}); //entspricht struct point unnamed1={1,2},unnamed2={2,3}; drawlinep( &unnamed1, &unnamed2); struct point point1, *point2; { //Block-Scope, zwecks Darstellung von lokalen Variablen point1= (struct point){1,2}; //Compound Literal entspricht hier //Initialisierungswert für point1 point2=&(struct point){3,4}; //Compound Literal ist nur in diesem //Block gültig drawlinep(&point1 /*OK*/, point2 /*OK*/); } drawlinep(&point1 /*OK*/, point2 /*KO*/); //Zeiger zeigt auf nicht mehr //gültigen Speicherbereich } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * Compound-Literal sind per Default keine Konstanten, können also zur Laufzeit geändert werden (siehe Kap. [[Programmieren in C/C++: DatentypeSpecifier#Const Type Qualifier|DatentypeSpecifier:Const Type Qualifier]]): :<syntaxhighlight lang="C"> float *arr=(float []){1.1,2.2,3.3}; //Kein Typkonflikt arr[0]=47.11; //Änderung des 'Konstanten' arr[0] ist möglich </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { float *arr=(float []){1.1,2.2,3.3}; //Kein Typkonflikt arr[0]=47.11; //Änderung des 'Konstanten' arr[0] ist möglich return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Die geschweiften Klammern <code>{ }</code> sind nicht mit dem Block-Operator (siehe [[Programmieren in C/C++: Grundlagen#Block / Compound-Statement | Block / Compound-Statement]]) zu verwechseln. Werden die geschweiften Klammern bei der Initialisierung von Variablen genutzt, dann beschreibt der Inhalt der geschweiften Klammern eine Initialisierungsliste. Wird diesen ein Datentyp vorangestellt, dann wird hiermit eine Compound Literal definiert. == Variableninitialisierung == Mit der Definition einer Variable kann diese optional initialisiert werden. Der tatsächliche Zeitpunkt der Variableninitialisierung (zur Laufzeit oder zur Compilezeit) und damit die Ausführung der Initialisierung (Maschinensprachebefehle oder Speichervorbelegung) hängt von der Gültigkeit/Sichtbarkeit der Variablen ab(siehe [[Programmieren in C/C++: Grundlagen#Gültigkeit/Sichtbarkeit von Variablen| Gültigkeit/Sichtbarkeit von Variablen]]). === Globale + Static lokale Variablen === Globale und statisch globale Variablen werden in einem während der Laufzeit des Programms festen Speicherbereich gehalten. Zum Startzeitpunkt des Programms ist der Speicherplatz solch einer Variable mit dem Initialisierungswert gefüllt, so das bei erstmaliger Nutzung dieser Variablen diese ihre Initialisierungswerte enthalten. Die Belegung des Speicherplatzes erfolgt durch den Compiler, so dass als Initialisierungswerte / Inhalt der Initialisierungsliste nur Konstanten oder Konstanten-Ausdrücke (siehe [[Programmieren in C/C++: Grundlagen#Literale/Konstanten | Literale/Konstanten]]) erlaubt sind: <syntaxhighlight lang="C"> int g=1; //Speicherstelle der Variable g wird //mit 1 belegt short array[3]={1,1+1, sin(0.0)}; //Speicherstellen des Arrays wird //mit 1, 2 und 0 (Funktion sin() wird zur //Compilezeit ausgeführt) belegt </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> double sin(double); //DJ: Include-Anweisung in wikibooks schlägt fehlt int g=1; //Speicherstelle der Variable g wird //mit 1 belegt short array[3]={1,1+1, sin(0.0)}; //Speicherstellen des Arrays wird //mit 1, 2 und 0 (Funktion sin() wird zur //Compilezeit ausgeführt) belegt int main(int argc,char *argv[]) { printf("%hd %hd %hd\n",array[0],array[1],array[2]); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Nicht initialisierte globale und static lokale Variablen werden mit 0 initialisiert! D.h. die Speicherstellen dieser Variablen werden mit dem Wert 0 vorbelegt:: <syntaxhighlight lang="C"> int f; //f hat den Wert 0 double arr[10]; //Alle Elemente von arr werden mit 0.0 initialisiert! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int f; //f hat den Wert 0 double arr[10]; //Alle Elemente von arr werden mit 0.0 initialisiert! int main(int argc,char *argv[]) { printf("f=%d\n",f); printf("%f %f %f\n",arr[0],arr[1],arr[2]); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Lokale Variable === Der Speicherplatz für lokale Variable wird auf dem Stack zur Verfügung gestellt. Mit jedem öffnenden Block-Scope wird Speicher für die innerhalb dies Block-Scopes vorhandenen Variablen vom Stack nach dem LIFO Prinzip reserviert und mit der Variablendefinition Maschinencode zur Initialisierung der Speicherstellen ausgeführt (sofern Variable einen Initialisierungswert hat): <syntaxhighlight lang="C"> { //Öffnende Klammer erzeugt Maschinencode zur Speicherreservierung //von 4 Bytes (für int) und 8 Bytes (für double) int var1=12; //erzeugt Maschinencode zur Initialisierung //der ersten 4 Byte mit dem Wert 12 double var2=sin(f); //erzeugte Maschinencode, welche zunächst //die Funktion sin() mit dem Übergabewert f //aufruft und dessen Rückgabewert in die //nächsten 8 Byte des reservierten Speichers //kopiert ... { //siehe zuvor int var3=var1; //siehe zuvor double var4=var2+var1; } //siehe nachfolgenden } //Freigabe des zuvor reservierten Speichers </syntaxhighlight> Dies gilt auch für Funktionsaufrufe. Mit der öffnenden geschweiften Funktionsklammer wird ebenfalls Speicher reserviert: <syntaxhighlight lang="C"> void foo(int par) { //Öffnende Funktionsklammer erzeugt Maschinencode zur Speicherreservierung //von 4 Bytes (für (Übergabe)Variable par und 4 Bytes für Variable var int var; //Da keine Initialisierung vorhanden ist wird auch //kein Maschinencode zur Initialisierung ausgeführt { //Öffnende Klammer erzeugt Maschinencode zur Speicherreservierung //von 4 Byte für Variable x int x; ... </syntaxhighlight> Aufgrund der mit der Initialisierung bedingten Erzeugung von Maschinencode können die Initialisierungswerte/Inhalte der Initialisierungsliste bei lokalen Variablen aus beliebigen Ausdrücken bestehen und müssen keine Konstanten oder Konstanten Ausdrücke sein: <syntaxhighlight lang="C"> void foo(float f,float g) { float summe=f+g; //Initialisierungswerte float arr[3] = {f+f,g-f,sin(f)}; //werden zur Laufzeit berechnet } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> #include <math.h> //fuer sinf() void foo(float f,float g) { float summe=f+g; //Initialisierungswerte float arr[3] = {f+f,g-f,sinf(f)}; //werden zur Laufzeit berechnet printf("%f\n",(double)summe); printf("%f %f %f\n",(double)arr[0],(double)arr[1],(double)arr[2]); } int main(int argc,char *argv[]) { foo(3,4); return 0; } | execCompilerOptions=-Wall -lm| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Dieser Maschinencode wird jedes Mal ausgeführt, wenn die dazugehörige Anweisung abgearbeitet wird und bedingt dementsprechend Rechenzeit. Zehnmaliges Ausführen einer Funktion oder zehnmaliges Öffnen eines Block-Scopes innerhalb einer For-Schleife führt zur zehnmaligen Ausführung der oben genannten Sachverhalte: <syntaxhighlight lang="C"> void foo(int); void var(void) { for(int lauf=10; lauf>0; lauf--) { //zehnmaliges Reservieren von Speicher int var=lauf*2; //zehnmalige Initialisierung foo(var); } //Freigabe des Speichers } void foo(int par) { //zehnmaliges Reservieren von Speicher int var=12; //zehnmalige Initialisierung } //Freigabe des Speichers </syntaxhighlight> Nicht initialisierte lokale Variablen werden nicht initialisiert, d.h. keine zusätzlichen Maschinenbefehle zum Initialisieren erzeugt. Der Variablenwert entspricht dann einem 'Zufallswert' oder korrekter gesagt dem Inhalt der Variablen, welcher zuvor der Speicherstelle zugewiesen war: <syntaxhighlight lang="C"> int first(void) { int var_first=7; return var_first; } int second(void) { int var_second; //Variable var_second bekommt den identischen return var_second; //Speicherbereich wie var_first zugwiesen //und damit auch dessen zuletzt gültigen Wert } int main(int argc, char *argv[]) { int var1=first(); //var1 beinhaltet Wert 7 int var2=second(); //var2 beinhaltet Wert 7 printf("var_foo=%d\n",var1); printf("var_far=%d\n",var2); return 0; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> int first(void) { int var_first=7; return var_first; } int second(void) { int var_second; //Variable var_second bekommt den identischen return var_second; //Speicherbereich wie var_first zugwiesen //(und damit auch dessen zuletzt gültigen Wert) } int main(int argc, char *argv[]) { printf("%d\n",second()); //Zufallswert (0, da Stack mit 0 initialisiert ist) printf("%d\n",first()); //Stack belegen printf("%d\n",second()); //Zufallswert (7, da Speicherstelle zuvor mit 7 return 0; //belegt wurde) } | execCompilerOptions=| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Wird eine Variableninitialisierung mit einer switch oder goto Anweisung übersprungen, so wird zwar die Variable angelegt (Speicherplatz reserviert), jedoch die Maschinenbefehle zur Initialisierung dieser Variablen nicht ausgeführt (siehe auch [[Programmieren in C/C++: Grundlagen# Switch-Anweisung|Switch-Anweisung]] und [[Programmieren in C/C++: Grundlagen# Label + Goto|Label + Goto]]). Die Variable enthält dann einen Zufallswert: <syntaxhighlight lang="C"> switch(value) { case 0: int lok=7; printf("%d",lok); //OK, lok beinhaltet den Wert 7 break; default: printf("%d",lok); //KO, Variable lok vorhanden, //aber nicht initialisiert. D.h. Ausgabe einer break; //Zufallszahl } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> void foo(int value) { switch(value) { case 0: int lok=7; printf("%d\n",lok); //OK, lok beinhaltet den Wert 7 break; default: printf("%d\n",lok); //KO, Variable lok vorhanden, //aber nicht initialisiert. D.h. Ausgabe einer break; //Zufallszahl } } void far(void) { int var1=4711; int var2=1799; printf("Marke: %d, Erscheinungsjahr: %d\n",var1,var2); } int main(int argc,char *argv[]) { foo(2); //Zufallswert (0, da Stack mit 0 initialisiert ist) foo(0); //Initialisierungswert far(); //Stack belegen foo(2); //Zufallswert return 0; } | execCompilerOptions=| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Bei erstmaligem Funktionsaufruf kann eine nicht initialisierten lokale Variablen den Wert 0 beinhalten (Stackframe wird mit Programmstart auf 0 gesetzt). Beim nächsten Aufruf der Funktion ist zumeist die Speicherstelle der lokalen Variablen mit anderen Werten gefüllt worden, so dass nun ein anderer 'Zufallswert' als 'Initialisierungswert' enthalten ist === C++ === In C++ ist ergänzend die Initialisierung einer Variablen über () möglich. Bei Objekten wird hierüber der zugehörige Konstruktor aufgerufen. Bei primitiven Datentypen entspricht der Wert in den Klammern dem Initialisierungswert: <syntaxhighlight lang="C++"> int variable(10); //Bei primitiven Datentype entspricht dies //int variable=10; struct test { int a; test(int par) {a=par;} //Konstruktor der Struktur test }; struct test test(4); //Konstruktor test(int par) wird aufgerufen struct test test(4,5); //KO, kein passender Konstruktor vorhanden </syntaxhighlight> === Sonstiges === Folgende weitere Sachverhalten gilt es bzgl. Variableninitialisierung zu berücksichtigen: * Nach C-Spezifikation ist eine Initialisierung von Variablen nicht notwendig. Es liegt folglich kein Fehler vor, wenn auf eine nicht initialisierte Variable lesend zugegriffen wird. Ungeachtet der C-Spezifikation überprüft der Compiler mit dem Schalter '-Wall' diesen Sachverhalt und gibt eine Warning aus * Deklarationen/Prototypen können keinen Initialisierungswert enthalten <syntaxhighlight lang="C++"> extern int var=7; //Fehlerhaft </syntaxhighlight> * Const und lokale Static Variablen sollten initialisiert werden, auch wenn C in diesem Fall keinen Fehler meldet! <syntaxhighlight lang="C++"> const int konstante; //Syntaktisch OK, Initialisierungswert fraglich! static int statisch; </syntaxhighlight> == Anweisung (Statement) & Expression == Eine Anweisung (Statement) stellt entsprechend dem Wikipedia Artikel {{w|Anweisung_(Programmierung) | Anweisung}} ''"ein in der Syntax einer Programmiersprache formulierte einzelne Vorschrift dar, die im Rahmen der Abarbeitung des Programms auszuführen ist"''. Entsprechend der C-Spezifikation [C11 6.8] kann eine Anweisung aus: : labled-statement: Eine Sprungmarke für die Switch- und die Goto-Anweisung : compound-statement: siehe nachfolgendes Kapitel : expression-statement: siehe nachfolgendes Kapitel : selection-statement: Eine if() oder switch() Anweisung : iteration-statement: Eine while(), do while() oder eine for() Anweisung : jump-statement: Eine goto, break, continue oder return Anweisung Die einzelnen Statements können dabei aus weiteren Statements bestehen. === Ausdruck (Expression) === Entsprechend der C-Spezifikation [C11 6.5] ist ein Ausdruck eine Folge von Operatoren und Operanden, die die Berechnung eines Werts angibt, ein Objekt oder eine Funktion bezeichnet, Nebenwirkungen erzeugt oder eine Kombination davon ausführt. Die Wertberechnungen der Operanden eines Operators werden vor der Wertberechnung des Ergebnisses des Operators sequenziert (siehe auch {{w|lang=en|Expression_(computer_science)|Expression}}). Beispiele: <syntaxhighlight lang="C"> a=sqrt(a*a+b*b); //Ausdruck mit Nebenwirkungen int func(int par) { a++; return par*2;} b=func(1)*func(2); //Ausdruck mit undefinierten Verhalten a=++a + 1; a=for(lauf=10;lauf>0;lauf--); //for-Anweisung ist kein Ausdruck //d.h. liefert keinen Wert zurück </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> double sqrt(double); //DJ: Include-Anweisung in wikibooks schlägt fehlt int a=0; int func(int par) { a++; return par*2; } int main(int argc,char *argv[]) { int a=4,b=7; a=sqrt(a*a+b*b); //Ausdruck mit Nebenwirkungen b=func(1)*func(2); //Globale Variable a wird geändert! //Ausdruck mit undefinierten Verhalten a=++a + 1; //Kein Ausdruck a=for(lauf=10;lauf>0;lauf--); //for-Anweisung ist kein Ausdruck //d.h. liefert keinen Wert zurück return 0; } | execCompilerOptions=-Wall -lm| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Discarded Value === Discarded Value sind Ausdrücke, dessen Ergebnisse nicht verwendet werden (also keiner Variablen zugewiesen werden). Ergebnisse von Ausdrücken, die nicht verwendet werden, führen nicht zu einer Fehlermeldung: <syntaxhighlight lang="C"> int a=7; a; //Variable a wird gelesen, der Wert jedoch verworfen 7; //Konstante wird verworfen a+7; //Ergebnis wird Berechnet und verworfen printf("hallo"); //Printf hat einen Rückgabewert, dessen Wert verworfen wird </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=7; a; //Variable a wird gelesen, der Wert jedoch verworfen 7; //Konstante wird verworfen a+7; //Ergebnis wird Berechnet und verworfen printf("hallo"); //Printf hat einen Rückgabewert, dessen Wert verworfen wird return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * Soll bewusst der Rückgabewert verworfen werden, so kann/sollte mit dem explizten Cast auf (void) der Rückgabewert explizit 'verworfen' werden. Dies ist u.A. hilfreich bei Variablen, die (noch) nicht benutzt werden und der Compiler die Warning "unused Variable" ausgibt: :<syntaxhighlight lang="C"> (void)a; //Zur Vermeidung von Compiler-Warnings "Unused Variable" (void)(a+7); //hier eine explizte 'Ansage' der Verwerfung des Wertes (void)func(); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int func(void) { return 4711; } int main(int argc,char *argv[]) { int a; (void)a; //Zur Vermeidung von Compiler-Warnings "Unsued Variable" (void)(a+7); //hier eine explizte 'Ansage' der Verwerfung des Wertes (void)func(); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Mit der Anweisung <nowiki>[[nodiscard]]</nowiki> (ab C++17, ab C23) wird der Compiler angewiesen, dass der Aufrufer einer Funktion mit Rückgabewert der Rückgabewert entgegenzunehmen ist. Wird der Rückgabewert verworfen, so gibt der Compiler eine Fehlermeldung aus: :<syntaxhighlight lang="C"> [[nodiscard]] int Client(int socket); Client(5); ////Fehlermeldung, da Rückgabewert nicht verwendet wird </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> [[nodiscard]] int Client(int socket) { return socket+1; } int Server(int socket) { return socket+1; } int main(int argc,char *argv[]) { Server(5); //keine Fehlermeldung Client(5); //Fehlermeldung, da Rückgabewert nicht verwendet wird return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Java kennt Dicarded Values nicht. Ausnahme, es handelt sich um einen Funktionsaufruf, dessen Rückgabewert nicht genutzt wird. === Sequence Point === Ein Sequenzpunkt (u.A. das abschließende Semikolon am Ende der Anweisung) ist nach dem Wikipedia Artikel {{w|lang=en|Sequence_point|Sequence Point}} definiert als der Punkt in der Ausführung eines Computerprogramms, an dem garantiert ist, dass alle Nebenwirkungen früherer Bewertungen durchgeführt wurden und noch keine Nebenwirkungen von nachfolgenden Bewertungen durchgeführt wurden.<br /> Sequenzpunkte sind beispielsweise dann von Interesse, wenn dieselbe Variable innerhalb eines einzelnen Ausdrucks mehr als einmal geändert wird und die Ausführungsreihenfolge der Operationen nicht sauber spezifiziert ist.<br /> Ein oft zitiertes Beispiel ist der C-Ausdruck 'i=i++;'. Der Sequence Point garantiert, dass alle Operationen (hier Zuweisung und Postinkrement) ausgeführt sind. Jedoch ist die Ausführungsreihenfolge dieser beiden Operationen nicht spezifiziert. In Abhängigkeit des Zeitpunktes der Ausführung des Postinkrementes (vor oder nach der Zuweisung) kann i unterschiedliche Werte annehmen. In C und C++ führt die Auswertung eines solchen Ausdrucks zu undefiniertem Verhalten. Andere Sprachen, wie z. B. C#, definieren den Vorrang des Zuweisungs- und des Inkrementoperators so, dass das Ergebnis des Ausdrucks i=i++ garantiert ist.<br/> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int i=5; i=i++; printf("%d",i); //Gerne anderen Compiler auswählen, z.B. x86-64 icc... return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Weitere Sequence Points: * Beim ?-Operator stellt sowohl das ? als auch der : ein Sequenz Point dar. Zunächst muss der linke Ausdruck vollständig bearbeitet werden, bevor einer der beiden Bedingungen bearbeitet wird * Bei der logischen UND / ODER Funktion stellen der Operator ein Sequenz Point dar. Erst wird der linke Operand vollständig ausgeführt und ausgewertet, bevor (ggf.) der rechte Operand ausgewertet wird (siehe [[Programmieren in C/C++: Grundlagen#Logische Verknüpfungen | Logische Verknüpfungen]]) * Beim Komma-Operator stellen der Komma ein Sequence-Point dar (siehe [[Programmieren in C/C++: Grundlagen#Komma-Operator | Komma-Operator]]) • und weitere (siehe Appendix der C-Spec) Operationen, bei denen die Ausführungsreihenfolge nicht spezifiziert ist: * Bei Funktionsaufrufen ist die Abarbeitungsreihenfolge der Parameter nicht spezifiziert, so dass bspw.: :<syntaxhighlight lang="C"> //Aufrufruf einer Funktion, deren Parameter sich aus Funktionsaufrufen //ergeben (*pf[f1()]) (f2(), f3() + f4()); //pf -> Array von Funktionszeigern //Die Funktionen f1,f2,f3 und f4 können in einer beliebigen Reihenfolge //aufgerufen werden </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int f1(void) { printf("f1 called\n"); return 1; } int f2(void) { printf("f2 called\n"); return 2; } int f3(void) { printf("f3 called\n"); return 3; } int f4(void) { printf("f4 called\n"); return 4; } void func1(int par1,int par2) { printf("func1(%d,%d) called\n",par1,par2); } void func2(int par1,int par2) { printf("func2(%d,%d) called\n",par1,par2); } int main(int argc,char *argv[]) { void (*pf[2])(int,int)={func1,func2}; //Aufrufruf einer Funktion, deren Parameter sich aus Funktionsaufrufen //ergeben (*pf[f1()]) (f2(), f3() + f4()); //pf -> Array von Funktionszeigern //Die Funktionen f1,f2,f3 und f4 können in einer beliebigen Reihenfolge //aufgerufen werden //Gerne anderen Compiler auswählen, z.B. x86-64 icc... return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Per Postinkrement/-dekrement Operator sagt aus, dass für die eigentliche Operation der Wert der Variablen genutzt wird und im Anschluss die Variable erhöht / erniedrigt werden soll. Nach C-Spezifikation [C11 6.5.2.4] muss dies spätestens vor dem nächsten Sequence Point erfolgt sein. Der genaue Zeitpunkt innerhalb des Sequence Points ist jedoch nicht vorgegeben: :<syntaxhighlight lang="C"> int a=7; int b=a++ + a; //Ergebnis Abhängig, ob das Postinkrement vor der Addition //oder als letztes ausgeführt wird. a=a++ + 1; //dito </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=7; int b=a++ + a; //Ergebnis Abhängig, ob das Postinkrement vor der Addition //oder als letztes ausgeführt wird. a=a++ + 1; //dito printf("a=%d b=%d\n",a,b); //Gerne anderen Compiler auswählen, z.B. x86-64 icc... return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Abarbeitungsreihenfolgen / Prioritäten === Die Abarbeitungsreihenfolge der Operatoren wird durch die Prioritätenliste/Rangfolge (siehe [[C-Programmierung: _Liste_der_Operatoren_nach_Priorität| C-Programmierung:Liste der Operatoren nach Priorität]]) vorgegeben. Operatoren mit höherer Priorität werden vor Operatoren mit niedriger Priorität ausgeführt: <syntaxhighlight lang="C"> //Der Ausdruck c = sizeof(x) + ++a / 3; //wird aufgrund der Prioritäten wie folgt ausgewertet: c= (sizeof(x)) + ( (++a) / 3); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=2; int c; int x=0; c = sizeof(x) + ++a / 3; printf("a=%d c=%d\n",a,c); //Wird aufgrund der Prioritäten wie folgt ausgewertet: a=2; c= (sizeof(x)) + ( (++a) / 3); printf("a=%d c=%d\n",a,c); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Bei identischer Priorität ergibt sich die Abarbeitungsreihenfolge aus der Assoziativität (L-R oder R-L): <syntaxhighlight lang="C"> a=33 / 5 / 2; //Wird aufgrund der Assoziativität wie folgt ausgewertet. //a= (33 / 5) / 2; //und damit zu 3 und nicht zu 16 (bei 33 / (5/2)) ausgewertet. a = b = c = d*2; //→ a=(b=(c=(d*2))); a = b = 1+c = d; //→ a=(b=((1+c)=d)); //Compilerfehler, da //1+c kein lvalue ist </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a; a=33 / 5 / 2; printf("a=%d\n",a); //Wird aufgrund der Assoziativität wie folgt ausgewertet. //a= (33 / 5) / 2 printf("a=%d\n",a); //und damit zu 3 und nicht zu 16 (bei 33 / (5/2)) ausgewertet. int b,c,d=8; a = b = c = d*2; //→ a=(b=(c=(d*2))); printf("a=%d b=%d c=%d d=%d\n",a,b,c,d); a = b = 1+c = d; //→ a=(b=((1+c)=d)); //Compilerfehler, da //1+c kein lvalue ist return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Block / Compound-Statement === Ein Block oder Compound-Statement fasst Vereinbarungen und Anweisungen zu 'einer' Anweisung/Statement zusammen. Es kann überall dort eingesetzt werden, wo nur eine Anweisung erlaubt ist. <code> Syntax: {Declaration-or-statement-list/textsuperscript<sub>OPT</sub>} </code> Ein Block wird nicht wie bei einer Anweisung mit einem Semikolon abgeschlossen (Das angehängte Semikolon wäre dann eine separate leere Anweisung!). <br /> Ein Block hat blockweite Sichtbarkeit (siehe [[Programmieren in C/C++: Grundlagen#Blockweite Sichtbarkeit | Blockweite Sichtbarkeit]]), so dass hier definierte Variablen nur hier gültig sind. Deklarationen sind ebenfalls nur in dem Block gültig. <syntaxhighlight lang="C"> for(..) Anweisung; //For-Schleife führt nur diese eine Anweisung aus for(…) {Block} //For-Schleife führt Block (als eine Anweisung) aus if(..) Anweisung; else Anweisung; //IF-Anweisung führt nur 'eine' //Anweisung aus if(..) {Block} else {Block} //IF-Anweisung führt Block aus if( ) {Block}; else {Block}; //Semikolon ist eine separate //Leer-Anweisung, so dass else //nicht zur IF-Anweisung zugeordnet //werden kann (2 Anweisungen vor Else) void foo(void) { int var1; { //Block innerhalb von Block als Strukturierungswerkzeug int var2; struct xyz{int x,y,z}; //Defintion eines Datentyps im Block struct xyz var3; } struct xyz var4; //KO, Datentyp hier nicht mehr bekannt } </syntaxhighlight> Die GNU-C Reference (nicht C++) erlaubt es, Funktionen innerhalb von Blöcken (und damit auch innerhalb von Funktionen) zu definieren. Diese innere Funktion steht dann nur in diesem Block zur Verfügung und kann ergänzend auf Variablen des umgebenden Blockes zugreifen: <syntaxhighlight lang="C"> void foo(void) { { int label=1; //Funktion innerhalb einer Funktion void dummy(void){ label++; //Zugriff auf Variablen des umschließenden Blockes } dummy(); //Aufruf der nur in diesem Block gültigen Funktion } dummy(); //KO, Funktion hier nicht mehr gültig } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void foo(void) { { int label=1; //Funktion innerhalb einer Funktion void dummy(void){ label++; //Zugriff auf Variablen des umschließenden Blockes } dummy(); //Aufruf der nur in diesem Block gültigen Funktion } dummy(); //KO, Funktion hier nicht mehr gültig } int main(int argc,char *argv[]) { foo(); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * '''Blöcke können/sollten als Strukturierungswerk genutzt werden. Dem Leser von Source Code kann auf dieser Weise vermittelt werden, dass diese Anweisungen 'zusammen' zu lesen sind.''' * Im Gegensatz zu Java, in welchem innerhalb eines Blockes kein Variablenname genutzt werden darf, die außerhalb des Blockes existiert, ist dies in C erlaubt. Die äußere Variable steht damit innerhalb des Blockes nicht mehr im Zugriff. :<syntaxhighlight lang="C"> int a=3; int main(void){ int a=7; //Globale Variable ist ab hier nicht mehr sichtbar/zugreifbar { int a=9; //Innere Variable überdeckt äußere Variable } } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int a=3; int main(int argc,char *argv[]) { printf("a=%d\n",a); int a=7; //Globale Variable ist ab hier nicht mehr sichtbar/zugreifbar printf("a=%d\n",a); { int a=9; //Innere Variable überdeckt äußere Variable printf("a=%d\n",a); } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Embedded Statement === Embedded Statements sind eine GNU-C Erweiterung (siehe [https://www.gnu.org/software/gnu-c-manual/gnu-c-manual.html GNU-C-Manual 3.18]). Da sie vom Autor als sehr nützlich angesehen wird und auch von diversen Compilern und auch in C++ unterstützt wird, wird diese hier beschrieben. Ein Block fasst mehrere Anweisungen zu einer Anweisung zusammen, hat jedoch kein Rückgabewert. Ein Embedded-Statement entspricht einem Block mit der Ergänzung, dass dieser einen Rückgabewert hat, so dass ein Embedded-Statement überall dort eingesetzt werden kann, wo eine Expression erwartet wird. <code> Syntax: ({Declaration-or-statement-list<sub>OPT</sub>}) </code> Der Rückgabewert wird nicht über eine return-Anweisung angegeben, sondern entstammt aus der letzten Anweisung innerhalb der Liste: <syntaxhighlight lang="C"> int var; var={int par=7;} //KO Block hat keine Rückgabewert. var=({int par=7; par++; par;}); //OK Embedded-Statement hat einen //Rückgabewert, der sich aus der //letzten Anweisung 'Par;' ergibt //Hier 8. </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int var; var={int par=7;} //KO Block hat keine Rückgabewert. var=({int par=7; par++; par;}); //OK Embedded-Statement hat einen //Rückgabewert, der sich aus der //letzten Anweisung 'Par;' ergibt //Hier 8. printf("var=%d\n",var); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Ein Embedded-Statement ähnelt folglich einem Funktionsaufruf mit dem Unterschied, dass a) in der Tat kein Funktionsaufruf stattfindet und b) der Rückgabewert nicht mit return, sondern über die letzte Anweisung zurückgegeben wird. Der Anwendungsfall ist dort zu finden, wo eine Expression erwartet wird und mehrere Anweisungen zum Ermitteln der Expression notwendig sind: <syntaxhighlight lang="C"> int var1=8; int b=({int d=var1++;d>10?10:d;}); if( ({int d=b;b=var1;b=d;}) > 1) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int var1=8; int b=({int d=var1++;d>10?10:d;}); if( ({int d=b;b=var1;b=d;}) > 1) printf("Bedingung erfüllt"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * Ein Embedded-Statement ist insbesondere bei Nutzung von Makros (siehe Kap [[Programmieren in C/C++: Präprozessor | Präprozessor]]) hilfreich * Mittels eines Embedded-Statement kann eine anonyme Funktion/Lambdafunktion dargestellt werden: <syntaxhighlight lang="C"> void test(int (*fptr)(int),int arr[10]) { for(int lauf=0;lauf<10;lauf++) arr[lauf]=fptr(arr[lauf]); } int main(int argc, char *argv[]) { int arr[]={1,2,3,4,5,6,7,8,9,10}; //Aufruf mit einer anonymen Funktion test( ({int func(int a) {return a%2?a:0;} ; func;}) ,arr); } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void test(int (*fptr)(int),int arr[10]) { for(int lauf=0;lauf<10;lauf++) arr[lauf]=fptr(arr[lauf]); } int main(int argc, char *argv[]) { int arr[]={1,2,3,4,5,6,7,8,9,10}; //Aufruf mit einer anonymen Funktion test( ({int func(int a) {printf("Called:%d\n",a);return a%2?a:0;} ; func;}) ,arr); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Funktionen / Prozeduren == Funktionen/Prozeduren sind ein Strukturierungsmerkmal, so dass Teile der Funktionalität des Programmes wiederverwendbar sind. C/C++ unterscheidet nicht zwischen Funktionen (haben einen Rückgabewert, können damit in Ausdrücken verwendet werden) und Prozeduren (haben keine Rückgabewert, resp. Rückgabetyp void).<br/> Mit jedem Aufruf einer Funktion wird für den zugehörigen Block ein eigener Stack-Kontext angelegt, so dass Funktionen sich selbst aufrufen können (Rekursion). Jeder Funktionsinstanz hat somit seinen eigenen lokalen Variablenbereich, teilen sich jedoch die globalen und die statisch lokalen Variablen.<br /> Mit dem Aufruf einer Funktion können Parameter übergeben werden, wobei die Übergabeparameter vom Aufrufer (Caller) durch den Aufruf in die lokalen Variablen des Aufgerufenen (Callee) kopiert/zugewiesen werden (Call by Value). Wird ein Zeiger übergeben, hat der Callee über die Dereferenzierung des Zeigers die Möglichkeit, die Variablen des Caller zu verändern (Call by Reference) (siehe Kap. [[Programmieren in C/C++: Zeiger #Zeiger bei Funktionsaufrufen | Zeiger:Zeiger bei Funktionsaufrufen).]]). Hinweise: * Die Klammerung hinter dem Funktionsnamen (<code>foo()</code>) zeigt an, dass es sich um einen Funktionsaufruf (Verzweigung der Programmausführung zu der Startadresse der Funktion) handelt :<syntaxhighlight lang="C"> void foo(void) {printf("foo called");}; foo(); //Klammern hinter dem Funktionsnamen bedeuten Aufruf der Funktion </syntaxhighlight> * Die Nutzung des Funktionsnamens ohne Klammerung (<code>foo</code>) gibt die Startadresse der Funktion zurück. Die Startadresse kann in einem Zeiger auf Funktionen gespeichert werden (siehe Kap. [[Programmieren in C/C++: Zeiger#Zeiger auf Funktionen | Zeiger:Zeiger auf Funktionen]]). :<syntaxhighlight lang="C"> void foo(void) {printf("foo called");}; void (*fptr)(void)=foo; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void foo(void) { printf("foo called"); }; int main(int argc, char *argv[]) { void (*fptr)(void)=foo; fptr(); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Deklaration/Definition vor dem ersten Aufruf der Funktion 'notwendig', damit Compiler die Übergabeparameter entsprechend bereitstellt und ggf. eine implizite Typkonvertierung durchführt (dito Rückgabewert). Die Angabe der Variablennamen können bei der Deklaration entfallen * Die fehlende Angabe der Übergabeparameter bedeutet in C (nicht C++), dass diese Funktion mit beliebigen Übergabeparametern aufgerufen werden kann und der Compiler keine Typprüfung durchführt: :<syntaxhighlight lang="C"> int func() {...} //kann wie folgt aufgerufen werden func(); func(4); func("hallo Welt",4.7); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void func() { printf("foo called\n"); }; int main(int argc, char *argv[]) { func(); func(4); func("hallo Welt",4.7); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} :→ unbedingt vermeiden<br /> :Hat die Funktion keinen Übergabewert, so wird dies in C mit void gekennzeichnet * In C++ bedeutet die Schreibweise ohne Datentypbeschreibung, dass keine Parameter erwartet werden * In der Parameterliste von Funktionen dient in der GNU-C Spezifikation das Semikolon zum Trennen zwischen Deklaration von Übergabeparameter und den Übergabeparametern. Alle Übergabewerte links vom Semikolon sind (Forward)deklarationen: :<syntaxhighlight lang="C"> void test1(int a; int b,int a) { // Forward; Parameter printf("a=%d b=%d\n",a,b); } //Aufruf test1(3,7); //a=7 b=3 //Sinnvoll im Umgang mit Variable Length Arrays void test2(int dim; const char str[dim], int dim); //Aufruf test2("hallo",6); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void test1(int a; int b,int a) { // Forward; Parameter printf("a=%d b=%d\n",a,b); } //Sinnvoll im Umgang mit Variable Length Arrays void test2(int dim; const char str[dim], int dim) { printf("dim=%d\n",dim); } int main(int argc, char *argv[]) { //Aufrufe test1(3,7); //a=7 b=3 test2("hallo",6); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Return-Anweisung === Mit der Return-Anweisung wird eine Funktion (vorzeitig) beendet. Der optionale Parameter dient der Angabe des Rückgabewertes der Funktion an den Aufrufer. Der Datentyp des Parameters ergibt sich aus dem Rückgabedatentyp der Funktion. <code> Syntax: return expression<sub>OPT</sub> </code> Der Rückgabewert expresion sagt aus, dass hier nicht nur Konstanten oder Variablen stehen können, sondern beliebige Ausdrücke erlaubt sind. Der resultierende Datentyp des Ausdruckes muss letztendlich dem Rückgabedatentyp der Funktion entsprechen: <syntaxhighlight lang="C"> int foo(double a, double b) { return (int)(a*a+b*b); } </syntaxhighlight> Hinweise: * Bei nicht void-Funktionen ist eine return-Anweisung mit einer Expression entsprechend dem Datentyp der Funktion zwingend notwendig: :<syntaxhighlight lang="C"> int func(void) { return 5.1; //Datentyp wird zuvor int konvertiert } double a=func(); //int wird in double konvertiert </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int func(void) { return 5.1; //Datentyp wird zuvor int konvertiert } int main(int argc, char *argv[]) { double a=func(); //int wird in double konvertiert printf("a=%f\n",a); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Bei einer void-Funktion ist die return-Anweisung ohne Expression optional. Hier entspricht der schließende Block der Return-Anweisung :<syntaxhighlight lang="C"> void func(char *str) { if(str==NULL) return; printf("%s",str); } </syntaxhighlight> Sollen mehr als ein Rückgabewert an den Aufrufer zurückgegeben werden so empfiehlt sich: * die Rückgabewerte in einer Struktur zu packen (siehe [[Programmieren in C/C++: Datentypen#Verbundtyp Struktur/Klasse (nur C++) |Datentypen:Verbundtyp Struktur/Klasse (nur C++)]]) * die Rückgabewerte über die Aufrufparameter als Call-by-Reference zu übergeben (siehe [[Programmieren in C/C++: Zeiger#Zeiger bei Funktionsaufrufen | Zeiger:Zeiger bei Funktionsaufrufen]]) ==== Rückgabewert aus Datentypsicht ==== Aus Datentypsicht kann der Funktionsname inkl. den Parameter(n) in einem Ausdruck mit dem Datentyp des Rückgabewertes der Funktion ausgetauscht werden: <syntaxhighlight lang="C"> int foo(void) {return 4711;} int var; var=1+foo(); //Aus Datentypsicht (int)=(int)+(int) </syntaxhighlight> Daraus ergibt sich, dass bei Arrays/Strukturen/Unions direkt auf einzelne Komponenten zugegriffen werden kann, ohne diese zuvor einer Variablen zuzuweisen: <syntaxhighlight lang="C"> struct xyz{int x,y,z;}; struct xyz foo(int par) { struct xyz var; var.x=var.y=var.z=par; return var; } if(foo(12).x == 12) printf("Identisch\n"); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct xyz{int x,y,z;}; struct xyz foo(int par) { struct xyz var; var.x=var.y=var.z=par; return var; } int main(int argc, char *argv[]) { if(foo(12).x == 12) printf("Identisch\n"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} ==== Fehlerrückgabe ==== Viele Funktionen können unter gewissen Umständen nicht korrekt ausgeführt werden. Z.B. aufgrund dessen, dass: * der benötigter Speicher vom Heap nicht bereitgestellt werden kann * Übergabeparameter außerhalb des zulässigen Bereiches liegen * angeforderte Ressource (Datei, Geräte, …) nicht vorhanden/verfügbar sind Solche Fälle gilt es dem Aufrufer mitzuteilen, da in diesen Fällen die vom Aufrufer geforderte Funktionalität nicht erfüllt ist und der Aufrufer ggf. nicht weiterarbeiten kann. Zur Mitteilung des Fehlers sollte vorrangig der Rückgabewerte genutzt werden. (auch wenn in C++ mit Exception eine Alternative hierzu bereitsteht) <syntaxhighlight lang="C"> char *strdup(char *src) { char *dst; if((dst=malloc(strlen(src)+1))==NULL) return NULL; strcpy(dst,src); return dst; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> #include <string.h> char *strdup1(char *src) { char *dst; if((dst=malloc(strlen(src)+1))==NULL) return NULL; strcpy(dst,src); return dst; } int main(int argc, char *argv[]) { char *dup=strdup1("hallo"); if(dup == NULL) printf("Fehler\n"); else printf("dup='%s'\n",dup); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Die Standard-C Library-Funktionen geben in diesem Fall zumeist ein -1 (Rückgabewert Ganzzahl) oder einen NULL-Zeiger (Rückgabewert Zeiger) zurück. Der genaue Fehlergrund ist dann ergänzend in der globalen Variablen errno gespeichert. Mittels der Standard-C Funktion strerror() kann die Zahl in einen für den Anwender/Programmierer lesbaren String umgewandelt werden (die GNU-C Library Funktion printf() bietet ergänzend den Conversion Spezifier %m als alternative Ausgabemöglichkeit an): <syntaxhighlight lang="C"> #include <errno.h> int var; if(-1==scanf("%d",&var) ) printf("Es wurde keine Zahl erkannt\n"); int ret=open("/etc/ptmp",O_WRONLY|O_CREAT|O_EXCL, S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH); if(-1==ret) printf("open failed() with %s\n",strerror(errno)); if(-1==ret) printf("open failed() with %m (nur glibc)\n"); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <fcntl.h> #include <string.h> #include <errno.h> int main(int argc, char *argv[]) { int var; if(-1==scanf("%d",&var) ) printf("Es wurde keine Zahl erkannt\n"); int ret=open("/etc/ptmp",O_WRONLY{{!}}O_CREAT{{!}}O_EXCL, S_IRUSR{{!}}S_IWUSR{{!}}S_IRGRP{{!}}S_IROTH); if(-1==ret) printf("open failed() with %s\n",strerror(errno)); if(-1==ret) printf("open failed() with %m (nur glibc)\n"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} '''Für eine sauber Programmierung sollte diese Methodik generell angewendet werden.''' Jede Funktion, welche Fehlschlagen kann, teilt dies per Rückgabewert dem Aufrufer mit. Der Rückgabewert einer jeden Funktion wird vom Aufrufer kontrolliert. === Main-Funktion === Mit Start der Anwendung übergibt das Betriebssystem die Kontrolle an die Anwendung und führt dort die Funktion main aus. Als Übergabe- und Rückgabeparameter sind folgende Varianten erlaubt: <syntaxhighlight lang="C"> int main(void) { } int main(int argc, char *argv[]) { } </syntaxhighlight> Mit dem Start der Anwendung kann, wie bei jedem Funktionsaufruf, Parameter an den startenden Prozess übergeben werden. Als Parameter können Strings übergeben werden, welche in Form eines Arrays von Strings übergeben werden. Im Parameter argc sind die Anzahl der Strings enthalten. Im Parameter argv[x] sind die einzelnen Strings enthalten. Sofern vorhanden ist im ersten String der Programmname/Aufrufname der Anwendung enthalten: <syntaxhighlight lang="C"> int main(int argc, char *argv[]) { //Variante 1: Darstellung des Inhaltes des Arrays von Strings for(int lauf=0;lauf < argc; lauf++) printf("%d.Parameter: '%s'\n",lauf,argv[lauf]); //Variante 2: Darstellung des Inhaltes des Arrays von Strings (void)argv; //Wird hier nicht benötigt for(char **str=argv;*str!=NULL;str++) printf("Parameter: '%s'\n",*str); return EXIT_SUCCESS; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int max_width=0; int ret; //Variante 1: Darstellung des Inhaltes des Arrays von Strings for(int lauf=0;lauf < argc; lauf++) { ret=printf("%d.Parameter: '%s'\n",lauf,argv[lauf]); max_width=ret>max_width ? ret : max_width; } //Trennzeichen drucken char term[max_width]; memset(term,'-',max_width); printf("%.*s\n",max_width-1,term); //Variante 2: Darstellung des Inhaltes des Arrays von Strings (void)argv; //Wird hier nicht benötigt for(char **str=argv;*str!=NULL;str++) printf("Parameter: '%s'\n",*str); return EXIT_SUCCESS; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Im Compiler-Explorer können die Parameter im Executor unter 'Execution Arguments', getrennt mit Leerzeichen eingegeben werden. Wird die Funktion main beendet, entweder über die return Anweisung oder den Aufruf der exit() Funktion, wird die Kontrolle zurück an den startenden Prozess (zumeist Shell) gegeben. Über den Rückgabewert wird im Allgemeinen dem Aufrufer der Fehlerstatus mitgeteilt (EXIT_SUCCESS oder 0 bedeutet fehlerfreie , EXIT_FAILURE oder ungleich 0 fehlerhafte Ausführung). Der Start der Anwendung kann als Funktionsaufruf angesehen werden, welchen einen Wert an den Aufrufer zurückliefert. Hinweise: * Der Return-Wert der main-Funktion kann mit >>echo $? in der Bash abgefragt werden * Mittels <code>exit(int status)</code> kann das Programm an jeder Stelle innerhalb des Programms beendet werden. <code>status</code> entspricht dann der expression der return Anweisung von main === Inline Funktion === Wie der Name inline andeutet, ist die Intention von Inline, dass die aufgerufen Funktion Bestandteil der aufrufenden Funktion ist. Die aufgerufene Funktion soll somit im Kontext des Aufrufers ausgeführt werden, so dass kein eigener Stack bereitgestellt werden muss. Der Start der Funktion kann somit schneller erfolgen: <code> inline int foo(void) { } </code> Das Inline erfolgt durch den Compiler (und nicht durch den Linker). Damit das inline funktioniert, muss die zu inlinende Funktion vor dem Aufruf definiert sein, d.h. sie muss in derselben C-Datei enthalten sein [C11 6.7.4]. Hinweis: * Das 'inlinen' von Funktionen über die eigene Objektdatei hinweg erfolgt in C/C++ über Link Time Optimization (LTO). Hierzu fügt der Compiler den Zwischencode mit in die Objektdatei, so dass der Linker das 'inlinen' vollziehen kann (siehe {{w|lang=en|Interprocedural_optimization| Interprocedural Optimization}}) === Variadic Function / Ellipsis Punctuator === Mit dem Ellipsis Puncturator '…' kann in Funktionsdefinitionen angegebenen werden, dass anstatt der … Anweisung, beliebig viele Parameter/Argumente übergeben werden können. Dies wird unter anderen in der printf() Anweisung genutzt: <syntaxhighlight lang="C"> int printf(const char *fmt, ... ); </syntaxhighlight> Die wie folgt aufgerufen werden kann: <syntaxhighlight lang="C"> printf("Hello World"); //es folgt kein Parameter printf("%d",100); //es folgt ein Parameter vom Datentyp int printf("%f",1.1); //es folgt ein Parameter vom Datentyp double printf(conststr,1,2,3,"xyz") //Ohne Worte </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { printf("Hello World\n"); //es folgt kein Parameter printf("%d\n",100); //es folgt ein Parameter vom Datentyp int printf("%f\n",1.1); //es folgt ein Parameter vom Datentyp double const char *conststr="%d %x %c '%s'\n"; printf(conststr,1,2,33,"xyz"); //Ohne Worte return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Der übergebenen Datentype der Parameter wird der aufgerufenen Funktion nicht mitgeteilt! Einzig werden bei Aufruf der variadischen Funktion so viel Bytes auf den Stack gelegt, wie der Datentyp der einzelnen Übergabeparameter groß ist: :<code>int --> 4 Byte</code> :<code>double --> 8 Bytes</code> :<code>Zeiger --> 4/8 Byte</code> Damit die aufgerufene Funktion die fehlende Datentypinformation dennoch mitgeteilt bekommt, muss dies am Beispiel der <code>printf</code> Funktion über den Format-String erfolgen: <syntaxhighlight lang="C"> int vari; printf("%d",vari); //%d erwartet einen Integer Übergabeparameter (4-Byte) size_t vars; printf(" %zu %d ", vars, vari); // %zu zur Mitteilung, dass anstatt //integer nun size_t als Datentyp übergeben wird //und somit anstatt 4 Bytes 8 Bytes vom Stack genommen werden </syntaxhighlight> <code>printf()</code> entnimmt entsprechend der Datentypbeschreibung im Formatstring die passende Anzahl an Bytes vom Stack. Da der Compiler für die optionalen Parameter nicht den Zieldatentyp kennt, erlaubt die C-Spezifikation als Übergabedatentypen hier nur die Grunddatentypen <code>signed int, unsigned int, long, long long, double</code> und <code>Zeiger</code>. Entspricht der übergebene Parameter nicht einen dieser Datentypen, so wird er mittels implizit Cast entsprechend nachfolgender Tabelle gewandelt [C11 6.5.2.2 Default Argument Promotions]: {| class="wikitable" |- ! Ausgangstyp !! Umwandlungstyp |- | char, signed char, short || int |- | unsigned char, unsigned short || unsigned int |- | float || double |- | Alle anderen Datentypen || bleiben erhalten |} Bspw.: <syntaxhighlight lang="C"> signed char varc=-1; float varf =0.1; printf("%d %f",varc, varf); //varc wird beim Aufruf nach int konvertiert! //varf wird beim Aufruf nach double konvertiert! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { signed char varc=-1; float varf =0.1; printf("%d %f",varc, varf); //varc wird beim Aufruf nach int konvertiert! //varf wird beim Aufruf nach double konvertiert! //Zur Darstellung der besagten Konvertierung siehe rechtes Fenster return 0; } | execCompilerOptions=-Wall| h=g }} Öffnen im Compiler Explorer] }} Zum Umgang mit dem variadischen Parameter stellt C die Funktionen <code>va_start(), va_arg(), va_copy()</code> und <code>va_end()</code> bereit. Auf Grundlage des dazugehörigen Datentyps <code>va_list</code> können variadische Parameter auch an Unterfunktionen weitergereicht werden (bspw vprintf()). Dieses Thema bedingt jedoch genaue Kenntnisse vom Umgang mit dem Stack und ist nicht Bestandteil dieser Vorlesung. == Variable Length Array (VLA) == Im Normalfall ergibt sich die Anzahl der Elemente eines Arrays aus einer Konstanten, so dass der Compiler zur Compilezeit passend Speicher reserviert (siehe Kap. [[Programmieren in C/C++: Array | Array]]): <syntaxhighlight lang="C"> int arr[4]; //Compiler reserviert für Variable arr //4*sizeof(int) Speicherplatz </syntaxhighlight> Bei Variable Lenght Array wird die Arraydimension nicht über eine Konstante, sondern über eine Variable oder einen Ausdruck angegeben. D.h. die tatsächliche Dimension des Arrays ergibt sich erst zum Ausführungszeitpunkt der Definition: <syntaxhighlight lang="C"> void foo(size_t n) { int arr[n*2+1]; //Arraydimension ergibt sich zum Ausführungszeitpunkt n++; //Nachträgliches Ändern von n ändert nicht //die Größe des Arrays! } </syntaxhighlight> Ein Variable Length Array kann nur als lokale Variable oder als Übergabeparameter definiert werden (wobei im letzteren Fall kein Speicher hiermit reserviert wird). Eine Initialisierung eines VLA's mit der Definition ist nicht möglich, d.h. nach der Definition beinhaltet das Array 'zufällige' Werte. Es empfiehlt sich daher, diese bspw. mit memset händisch zu initialisieren (siehe auch Kap [[Programmieren in C/C++: Array#Initialisierung | Array:Initialisierung]]): <syntaxhighlight lang="C"> void foo(size_t n) { char str[n]; memset(str,0,n*sizeof(char)); //Array mit 0 füllen </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> void foo(size_t n) { char str[n]; memset(str,0,n*sizeof(char)); //Array mit 0 füllen for(size_t lauf=0;lauf<n;lauf++) printf("str[%zu]=%d\n",lauf,str[lauf]); } int main(int argc, char *argv[]) { foo(4); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Mittels sizeof kann weiterhin der Speicherbedarf ermittelt werden, wobei sizeof mit einem VLA als Argument kein Konstantenausdruck ist. Stattdessen wird die Größe zur Laufzeit ermittelt: <syntaxhighlight lang="C"> void foo(size_t n) { int arr[n*2+1]; //VLA size_t size; size=sizeof(arr); //sizeof(arr) entspricht einem Funktionsaufruf //welcher die Speichergröße des VLA's ermittelt </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void foo(size_t n) { int arr[n*2+1]; //VLA size_t size; size=sizeof(arr); //sizeof(arr) entspricht einem Funktionsaufruf //welcher die Speichergröße des VLA's ermittelt printf("size=%zu\n",size); } int main(int argc, char *argv[]) { foo(5); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} VLA wurden erstmals in C mit C99 eingeführt. In C11 wurden VLA's als optional eingestuft und mit C23 zurück auf notwendig gesetzt. In C++ sind VLA's nicht definiert, werden jedoch vom GCC Compiler unterstützt. Als alternativen Datentyp wird hier std::array empfohlen. Hinweis: * VLA sind nicht direkt in einem Switch-Case Block definierbar. Wird hier ein VLA benötigt, so muss hierzu ein Block erzeugt werden: :<syntaxhighlight lang="C"> switch(value) { case 1: char arr1[value]; //Compilerfehler, da bei value!=1 kein Speicherplatz //für das VLA reserviert wird break; case 2: { char arr2[value]; //OK } break; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int value=argc; switch(value) { case 1: char arr1[value]; //Compilerfehler, da bei value!=1 kein Speicherplatz //für das VLA reserviert wird break; case 2: { char arr2[value]; //OK } break; } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Operatoren == In der Programmiersprache C sind folgende Punctuators [C11 6.4.6] definiert: <syntaxhighlight> [ ] ( ) { } . -> ++ -- & * + - ~ ! / % << >> < > <= >= == != ^ | && || ? : ; ... = *= /= %= += -= <<= >>= &= ^= |= , # ## <: :> <% %> %: %:%: </syntaxhighlight> Die Funktionalitäten sind identisch zu Java. Aufgrund des Datentyps Zeiger gibt es in C ergänzend den Punctuator <code>-></code> (siehe Kap [[Programmieren in C/C++: Datentypen#Verbundtyp Struktur/Klasse (nur C++)|Datentypen:Verbundtyp Struktur/Klasse (nur C++)]]). Der Präprozessor bedingt die beiden Punctuatoren <code>#</code> und <code>##</code> (siehe Kap [[Programmieren in C/C++: Präprozessor | Präprozessor]]). Die letzten 6 Punctuators <code><: :> <% %> %: %:%:</code> werden zu <code>[ ] { } # ##</code> ersetzt. Sie sind für Computersysteme gedacht, welche keine ALTGR-Taste besitzen.<br /> Java kennt ergänzend den <code>>>></code> Operatoren, welcher in C über den normalen Schiebebefehl und den zugrundeliegenden Datentyp gesteuert wird. Wie in Java sind einige Punctuators vom Kontext abhängig und haben damit unterschiedliche Funktionalitäten: <syntaxhighlight> ++ → (Postfix) ++ vs. ++(Präfix) -- → (Postfix) -- vs. --(Präfix) +/- → Vorzeichen vs. Addition/Subtraktion () → Funktionsaufruf() vs. Befehlsbestandteil if() vs. Priorisierung </syntaxhighlight> Für den Umgang mit dem Datentyp Zeiger besitzen einige Punctuatoren ergänzende Funktionalitäten (siehe Kap [[Programmieren in C/C++: Zeiger| Zeiger]]): <syntaxhighlight> & → Bitweises UND: Anwendung: Ganzahlausdruck & Ganzahlausdruck & → Adressoperator: Anwendung: &Variable * → Multiplikation Anwendung: Ganzahl-/Gleitkommaausdruck * Ganzahl-/Gleitkommaausdruck * → Datentyp Zeiger Anwendung: Datentyp * Variablenname; * → Dereferenzierung: Anwendung: * Zeiger </syntaxhighlight> Punctuatoren, welche von Java abweichende / ergänzende Funktionalitäten haben, werden nachfolgend gesondert beschrieben. Sind in einer Anweisung mehrere Operatoren enthalten, so hängt die Abarbeitungsreihenfolge von der Rangfolge/Priorität der Operatoren ab (siehe [[C-Programmierung: _Liste_der_Operatoren_nach_Priorität| C-Programmierung:Liste der Operatoren nach Priorität]]).<br /> Die Rangfolge ist identisch zu Java, wobei C mehr Operatoren kennt. Generell empfiehlt sich, lieber eine Klammer zu viel als zu wenig zusetzen. Klammern haben die höchste Priorität. === Zuweisungs-Operator === Die Zuweisung (<code>=</code>-Operator, assignment expression) weist dem L-Value den R-Value zu. Ergänzend dient der L-Value als Rückgabewert des Operators, so dass das Ergebnis der Zuweisung weiter genutzt werden kann. Die Abarbeitungsreihenfolge ist von rechts nach links (R-L Assoziativität). Wird der 'letzte' Rückgabewert nicht verwendet, so wird dieser verworfen (siehe Kap. [[Programmieren in C/C++: Grundlagen#Discarded Value | Discarded Value]]).<br /> Beispiel: <syntaxhighlight lang="C"> a=7; //Zuweisung a=b=7; //Erste Zuweisung (b=7) hat einen Rückgabewert, welcher im //Anschluss a zugewiesen wird if(a=7) //Variablen a wird der Wert 7 zugewiesen. Der Rückgabewert //der Zuweisung wird im Anschluss auf True oder False geprüft if(7=a) //Besser, da aufgrund der fehlerhafter Zuweisung ein //Compilerfehler geworfen wird x*=y=z //entspricht x=x*(y=z) a=b=d+7; //entspricht a=(b=(d+7)) a=b==c; //a bekommt das boolesche Ergebnis der Vergleichsoperation //zugewiesen </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a,b,c=3,d=4; int x,y,z; a=7; //Zuweisung a=b=7; //Erste Zuweisung (b=7) hat einen Rückgabewert, welcher im //Anschluss a zugewiesen wird if(a=7) //Variablen a wird der Wert 7 zugewiesen. Der Rückgabewert ; //der Zuweisung wird im Anschluss auf True oder False geprüft if(7=a) //Besser, da aufgrund der fehlerhafter Zuweisung ein ; //Compilerfehler geworfen wird x*=y=z; //entspricht x=x*(y=z) a=b=d+7; //entspricht a=(b=(d+7)) a=b==c; //a bekommt das boolesche Ergebnis der Vergleichsoperation //zugewiesen return 0; return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * Auf beiden Seiten der Zuweisung muss der identische Datentyp stehen. Wenn andernfalls eine implizite Typkonvertierung nicht möglich ist, gibt der Compiler einen Fehler aus: :<syntaxhighlight lang="C"> int a = 7.3; //implizite Typkonvertierung double b=a+3; //Implizite Typkonvertierung der Intergeraddition nach double float c=(float)a+(float)3; //Explizite Typkonvertierung char *d=a; //Compilerfehler, da Integerwert nicht implizit in einen //Zeiger konvertiert werden kann </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a = 7.3; //implizite Typkonvertierung double b=a+3; //Implizite Typkonvertierung der Intergeraddition nach double float c=(float)a+(float)3; //Explizite Typkonvertierung char *d=a; //Compilerfehler, da Integerwert nicht implizit in einen //Zeiger konvertiert werden kann //Zur Darstellung der besagten Konvertierung siehe rechtes Fenster (void)b; (void)c; (void)d; return 0; } | execCompilerOptions=-Wall| h=g }} Öffnen im Compiler Explorer] }} * Bei der Parameterübergabe beim Funktionsaufruf wird ebenfalls indirekt der Zuweisungsoperator angewendet. Die Parameter des Aufrufers werden per Zuweisung den lokalen Variablen der aufgerufenen Funktion zugewiesen :<syntaxhighlight lang="C"> void func(int a, float b) { printf("a=%d b=%f",a,b); } int x=4; float y=5.0; func(x,y); //der Inhalt der Variablen x wird der lokalen Variable a //(a=x) und der Inhalt der Variablen y der lokalen Variablen b //(b=y) zugewiesen. func(y,x); //Dito, mit der Ergänzung, dass eine implizite Typkonvertierung //stattfindet (a=(int)y) und (b=(float)x). </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void func(int a, float b) { printf("a=%d b=%f",a,b); } int main(int argc, char *argv[]) { int x=4; float y=5.0; func(x,y); //der Inhalt der Variablen x wird der lokalen Variable a //(a=x) und der Inhalt der Variablen y der lokalen Variablen b //(b=y) zugewiesen. func(y,x); //Dito, mit der Ergänzung, dass eine implizite Typkonvertierung //stattfindet (a=(int)y) und (b=(float)x). //Zur Darstellung der besagten Konvertierung siehe rechtes Fenster return 0; } | execCompilerOptions=-Wall| h=g }} Öffnen im Compiler Explorer] }} === Komma-Operator === Der Komma-Operator erlaubt es, zwei Ausdrücke auszuführen, wo nur einer erlaubt wäre. Die Ergebnisse aller durch diesen Operator verknüpften Ausdrücke, außer dem letzten werden verworfen. Der letzte Ausdruck dient als Rückgabewert. Folgendes gilt es bei der Nutzung des Komma-Operators zu beachten: * Der Komma-Operator wird von links nach rechts ausgewertet * Das Komma selbst stellt eine Sequence Point dar (siehe Kap [[Programmieren in C/C++: Grundlagen#Sequence Point|Sequence Point]]) * An Stellen, wo das Komma zum Syntax gehört (z.B. Trennung der Übergabeparameter bei der Funktionsdefinition und beim Funktionsaufruf, Trennung von Variablen bei der Variablendefinition/-deklaration, Trennung der enum Konstanten) muss der Ausdruck ergänzend geklammert werden, wenn der Komma-Operator gefordert ist * Der Komma-Operator hat von allen Operatoren die niedrigste Priorität/Rangfolge, so dass dieser Operator als letztes 'ausgewertet' wird Beispiel: <syntaxhighlight lang="C"> int a=(5,3); //5 wird verworfen, 3 dient als Rückgabewert, so dass //a den Wert 3 erhält. int b=5,3; //KO, da Komma Bestandteil der Definition ist int c=1,d=2,e=3; int f=(c+=2,a+a); //c um zwei erhöht, a+a in f int g= c+=2,a+a; //KO, da Komma Bestandteil der Defintion ist void func(int value){} func(1); //Funktion wird mit dem Wert 1 aufgerufen func(1,2); //KO, da Komma Bestandteil des Funktionsaufrufes ist func((1,2)); //Funktion wird mit dem Wert 2 aufgerufen int arr[12]; arr[3,4]=1; //3 wird verworfen, 4 dient als Index für das Array </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void func(int value){ printf("func called with %d\n",value); } int main(int argc, char *argv[]) { int a=(5,3); //5 wird verworfen, 3 dient als Rückgabewert, so dass //a den Wert 3 erhält. int b=5,3; //KO, da Komma Bestandteil der Definition ist printf("a=%d\n",a); int c=1,d=2,e=3; printf("c=%d,d=%d,e=%d\n",c,d,e); int f=(c+=2,a+a); //c um zwei erhöht, a+a in f printf("c=%d,f=%d\n",c,f); int g= c+=2,a+a; //KO, da Komma Bestandteil der Defintion ist func(1); //Funktion wird mit dem Wert 1 aufgerufen func(1,2); //KO, da Komma Bestandteil des Funktionsaufrufes ist func((1,2)); //Funktion wird mit dem Wert 2 aufgerufen int arr[12]; arr[3,4]=1; //3 wird verworfen, 4 dient als Index für das Array return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} 'Sinnvolle' Anwendungsbeispiele: * Bei For-Schleifen, so dass mehrere Variablen initialisiert und mehrere Variablen mit jedem Schleifendurchlauf geändert werden können: :<syntaxhighlight lang="C"> int sum,lauf; int arr[]={5,4,3,2,1}; for(sum=100,lauf=5 ; lauf ; lauf--,sum+=arr[lauf]); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int sum,lauf; int arr[]={5,4,3,2,1}; for(sum=100,lauf=5 ; lauf ; lauf--,sum+=arr[lauf]) printf("sum=%d lauf=%d\n",sum,lauf); printf("sum=%d\n",sum); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Bei der Return-Anweisung, bei welcher zur Darstellung der Zusammengehörigkeit mehrere Aktionen ausgeführt werden sollen: :<syntaxhighlight lang="C"> return errno=EINVAL,-1; return printf("Fehler"),-1; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <errno.h> int foo(void) { return errno=EINVAL,-1; } int far(void) { return printf("Fehler\n"),-1; } int main(int argc, char *argv[]) { printf("foo()=%d\n",foo()); printf("far()=%d\n",far()); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * An Stellen, wo nur eine Anweisung erlaubt ist (und man zu faul ist, einen Block zu öffnen) :<syntaxhighlight lang="C"> if(…) y=2,z=3; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int y=0,z=0; if(1) y=2,z=3; printf("y=%d z=%d\n",y,z); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * In vielen Ländern wird das Komma zur Darstellung von Gleitkommazahlen genutzt. Wird versehentlicher Weise dies in C/C++ übernommen, so führt dies zu einem unerwarteten Verhalten: :<syntaxhighlight lang="C"> double var; var=5.3; //Variable wird mit 5.3 initialisiert var=5,3; //KO, da Komma Bestandteil der Defintion ist var=(5,3); //Variable wird mit 3 initialisiert </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { double var; var=5.3; //Variable wird mit 5.3 initialisiert printf("var=%f\n",var); var=5,3; //KO, da Komma Bestandteil der Defintion ist var=(5,3); //Variable wird mit 3 initialisiert printf("var=%f\n",var); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === ?-Operator / Conditional-Operator === Operator mit 3 Operanden, welcher in Abhängigkeit des ersten Operanden den zweiten oder dritten Operanden zurückgibt. <code> Syntax: Logical-OR-expression ? expression : condition-expression </code> Entspricht der if()-Anweisung, wobei der ? Operator als solches einen Wert zurückgibt! Expression wird nur ausgewertet, wenn der erste Operand true ist. Andernfalls wird nur condition-expression ausgeführt. Der zurückgegebene Datentyp ergibt sich aus der Expression resp. Condition-expression. Beide sollten somit vom identischen Datentyp sein. Folgendes gilt es bei der Nutzung des ?-Operators zu beachten * Der Datentyp Expression und condition-Expression muss identisch sein <syntaxhighlight lang="C"> int a=5; a=a > 10 ? "String" : 4; //KO, "String" ist vom Datentyp (char*) und // 4 ist vom Datentyp (int). </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a=5; a=a > 10 ? "String" : 4; //KO, "String" ist vom Datentyp (char*) und // 4 ist vom Datentyp (int). return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Nach der GNU-C Reference kann der mittlere Operand fehlen, in diesem Fall wird stattdessen das Ergebnis des linken Operanden dort eingesetzt (siehe https://gcc.gnu.org/onlinedocs/gcc/Conditionals.html#Conditionals) <syntaxhighlight lang="C"> int a=13; int b=a>10 ? : 0; //wenn a > 10 wird true, andernfalls false zurückgegeben </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a=13; int b=a>10 ? : 0; //wenn a > 10 wird true, andernfalls false zurückgegeben printf("b=%d\n",b); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Sollen innerhalb von condition-expression mehrere (durch Komma getrennte) Anweisungen enthalten sein, so sind diese zu Klammern! Andernfalls bedingt die niedrige Priorität des Komma-Operators ein anders Verhalten, als erwartet. <syntaxhighlight lang="C"> int a=7,max=5; max=a>max ? a : max; //Alles bestens int var0,var1,var2; var0=a>5 ? a++,5:6,a=1; //das zweite Komma wird als separate Anweisung //ausgeführt und kommt somit immer zur //Ausführung var1=(a>5 ? a++,5:6),a=1; //durch Klammerung klare Abgrenzung var2= a>5 ? a++,5 : (6,a=1); //durch Klammerung klare Abgrenzung </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a=7; int max=5; max=a>max ? a : max; //Alles bestens printf("max=%d\n",max); int var0,var1,var2; var0=a>5 ? a++,5:6,a=1; //das zweite Komma wird als separate Anweisung //ausgeführt und kommt somit immer zur //Ausführung printf("var0=%d a=%d\n",var0,a); var1=(a>5 ? a++,5:6),a=1; //durch Klammerung klare Abgrenzung printf("var1=%d a=%d\n",var1,a); var2= a>5 ? a++,5 : (6,a=1); //durch Klammerung klare Abgrenzung printf("var2=%d a=%d\n",var2,a); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Die Nutzung des ?-Operators empfiehlt sich an diversen Stellen: * Bei Makros :<syntaxhighlight lang="C"> #define MAX(a,b) (a>b?a:b) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #define MAX(a,b) (a>b?a:b) int main(int argc, char *argv[]) { printf("MAX(4,5)=%d\n",MAX(4,5)); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Beim Fehlerhandling :<syntaxhighlight lang="C"> char *str=strstr("hallo123","lox"); //Ausgabe von str nur, wenn Suche erfolgreich (str!=NULL) war printf("%s",str!=NULL?str : "(not found)" ); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char *str=strstr("hallo123","lox"); //Ausgabe von str nur, wenn Suche erfolgreich (str!=NULL) war printf("%s",str!=NULL?str : "(not found)" ); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Prüfen, ob eine Funktion erfolgreich ausgeführt wurde, bevor eine weitere Funktion ausgeführt wird <syntaxhighlight lang="C"> int ret; ret=init1(); //im Fehlerfreien gibt init1() 0 zurück ret=ret?:init2(); //Aufruf von init2() nur wenn ret==0 ist //andernfalls wird ret zurückgegeben </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int init1(void) { printf("init1() called\n"); return 0; } int init2(void) { printf("init2() called\n"); return 0; } int main(int argc, char *argv[]) { int ret; ret=init1(); //im Fehlerfreien gibt init1() 0 zurück ret=ret?:init2(); //Aufruf von init2() nur wenn Ret==0 ist //andernfalls wird Ret zurückgegeben return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Logische Verknüpfungen === Alle logischen Operationen nutzen als Operanden Ganzzahlen ,Gleitkommazahlen oder Zeiger. Der Operand wird als false angesehen, wenn der Operand 0, 0.0 oder NULL ist. Andernfalls als true. Das Ergebnis ist immer vom Datentyp int und hat den Wert von 0 oder 1. <code>Syntax: Expression && Expression</code><br /> <code>Syntax: Expression || Expression</code><br /> <code>Syntax: ! Expression</code><br/> Bei der logischen UND und ODER Verknüpfung wird zuerst der linke Ausdruck ausgewertet (Operator ist ein Sequence Point). Der rechte Ausdruck wird nur ausgeführt, wenn: * bei der logischen UND Verknüpfung der linke Ausdruck TRUE ergab * bei der logische OR Verknüpfung der linke Ausdruck FALSE ergab Andernfalls steht das Ergebnis schon mit der Auswertung des linken Operanden fest.<br /> In der theoretischen Informatik wird dies 'Non-strict-evaluation' genannt, bei welcher der Rückgabewert feststeht, bevor alle Ausdrücke bearbeitet worden sind. Beispiel für das Verhalten des Ausbleibens der Auswertung des zweiten Operators: <syntaxhighlight lang="C"> int a=0,b=0; //a=-1; //Als alternativer Startwert if(++a || ++a) b=1; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=0,b=0; //a=-1; //Als alternativer Startwert if(++a {{!}}{{!}} ++a) b=1; printf("a=%d b=%d\n",a,b); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Diese Funktionalität ist insbesondere beim Umgang mit Fehlern vorteilhaft: * Prüfen, ob eine Variable einen gültigen Wert hat, bevor sie weiterverwendet wird <syntaxhighlight lang="C"> char *str = strstr("hallo123","la"); if(str!=NULL && strlen(str) ) printf("Len = %ld",strlen(str)); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char *str = strstr("hallo123","la"); if(str!=NULL && strlen(str) ) printf("Len = %ld",strlen(str)); else printf("Kein Substring im String gefunden\n"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Prüfen, ob eine Funktion erfolgreich ausgeführt wurde, bevor eine weitere Funktion aufgerufen wird: <syntaxhighlight lang="C"> int ret; ret=init1(); //Bei erfolgreicher Initialisierung wird 1 zurückgegeben ret=ret && init2(); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int init1(void) { printf("init1() called\n"); return 1; } int init2(void) { printf("init1() called\n"); return 1; } int main(int argc, char *argv[]) { int ret; ret=init1(); //Bei erfolgreicher Initialisierung wird 1 zurückgegeben ret=ret && init2(); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Bitweise Verknüpfungen === Alle bitweisen Operationen nutzen als Operanden Ganzzahlen. Bei vorzeichenbehafteten Zahlen ist das Ergebnis nach [C11 6.5] Implementierungsabhängig, wobei das Vorzeichenbit zumeist als eigenständiges Bit angesehen wird und bei UND/ODER/EXOR als normales BIT betrachtet wird. <code>Syntax: Ganzzahl & Ganzzahl → Bitweise UND Operation</code><br /> <code>Syntax: Ganzzahl | Ganzzahl → Bitweise ODER Operation</code><br /> <code>Syntax: Ganzzahl ^ Ganzzahl → Bitweise EXOR Operation</code><br /> <code>Syntax: ~ Ganzzahl → Bitweise Negierung</code><br /> <code>Syntax: Ganzzahl >> additive-expression</code><br /> <code>Syntax: Ganzzahl << additive-expression</code><br /> Mittels des Schiebeoperators können Ganzzahlen um additive-expression bitweise nach Links <code><<</code> oder Rechts <code>>></code> verschoben werden. Der resultierende Datentyp ergibt sich aus dem linken Operanden. Der rechte Operand muss positiv und kleiner gleich der Bitbreite des linken Operanden sein. Andernfalls ist das Ergebnis implementierungsspezifisch. Nach [C11 6.5.7] ist das Ergebnis der Schiebeoperation implementierungsspezifisch, wenn der linke Operand eine negative vorzeichenbehaftete Zahl ist. In der Regel wendet der Compiler jedoch folgende Schiebeoperation an: * Logisches Schieben (zu füllende Bit-Stellen werden mit 0 aufgefüllt), wenn der linke Operand eine vorzeichenlose Zahl ist * Arithmetisches Schieben (zu füllende Bit-Stelle beim Rechtsschieben wird mit dem Vorzeichenbit aufgefüllt), wenn der linke Operand eine vorzeichenbehaftete Zahl ist. Hiermit wird das Vorzeichen beibehalten, so dass eine negative Zahl nach dem Schieben weiterhin negativ ist (In Java erfolgt dies durch den >>> - Operator) Hinweis: * Ein Schieben um eine Stelle nach rechts entspricht einer Division durch 2 * Ein Schieben um eine Stelle nach links entspricht einer Multiplikation mit 2 === sizeof-Operator === Der sizeof-Operator dient zur Ermittlung des Speicherbedarfs (in Bytes) einer Variablen/eines Datentyps. <code>Syntax: sizeof (type-name)</code><br /> <code>Syntax: sizeof unary-expression</code><br /> Als Argument für den Sizeof-Operator kann wahlweise ein Datentyp, eine Variable oder ein Ausdruck genutzt werden. Sizeof gilt als Konstantenausdruck, d.h. seine Berechnung erfolgt durch den Compiler, sodass: * sizeof zur Initialisierung von globalen Variablen genutzt werden :<syntaxhighlight lang="C"> struct xyz{int x,y,z;}; size_t size=sizeof(struct xyz); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct xyz{int x,y,z;}; size_t size=sizeof(struct xyz); //3*sizeof(int)=12 int main(int argc, char *argv[]) { printf("size=%zu\n",size); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * bei einem Ausdruck dieser nicht ausgeführt wird, sondern nur der resultierende Datentyp bestimmt wird und dessen Größe zurückgegeben :<syntaxhighlight lang="C"> short var=4711; size_t size=sizeof var++; //var=4711, size=2 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { short var=4711; size_t size=sizeof var++; //var=4711, size=2 printf("size=%zu var=%d\n",size,var); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Der resultierende Datentyp des Rückgabewertes ist size_t. Es empfiehlt sich, den sizeof-Operator mit Klammern zu nutzen, andernfalls wird im Falle eines Ausdruckes der Speicherbedarf des linken Operanden angegeben: <syntaxhighlight lang="C"> size_t size; short var; size=sizeof var+0; //size=2, da sizeof auf var angewendet wird size=sizeof(var+0); //size=4, da sizoeof auf den resultierenden datentyp //angewendet wird </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { size_t size; short var=0; size=sizeof var+0; //size=2, da sizeof auf var angewendet wird printf("size=%zu var=%d\n",size,var); size=sizeof(var+0); //size=4, da sizoeof auf den resultierenden datentyp //angewendet wird printf("size=%zu var=%d\n",size,var); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * sizeof angewendet auf char gibt immer den Wert 1 zurück. * sizeof ist nicht auf Operanden vom Typ Funktion, void, Felder ohne Größenangabe und Bitfelder anwendbar * wird sizeof auf ein VLA angewendet, so entspricht sizeof nicht mehr einen Konstantenausdruck, sondern einem Funktionsaufruf :<syntaxhighlight lang="C"> void foo(int n) { int arr[n]; size_t size=sizeof(arr); //Speicherbedarf ist kein Konstantenausdruck //sondern wird zur Laufzeit berechnet </syntaxhighlight> * Sizeof entspricht nicht strlen(), da sizeof den für die Variable reservierten Speicherbereich zurückgibt und nicht wie strlen() den Inhalt des Speicher hinsichtlich des Stringendezeichens auswertet. :<syntaxhighlight lang="C"> char string[100]="Test"; printf("%zu\n",sizeof(string)); //100 printf("%zu\n",strlen(string)); //4 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char string[100]="Test"; printf("%zu\n",sizeof(string)); //100 printf("%zu\n",strlen(string)); //4 return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Anweisungen == === If-Anweisung === <code>Syntax: if (expression) statement</code><br /> <code>Syntax: if (expression) statement else statement</code><br /> Das Ergebnis des Ausdruckes (Ganzzahl, Gleitkommazahl oder Zeiger) wird auf ungleich 0, 0.0 oder NULL getestet. Trifft dies zu, so wird statement ausgeführt. Andernfalls wird das else statement ausgeführt, sofern vorhanden. Sollen mehrere Anweisungen ausgeführt werden, so sind diese mittels Block zusammenzufassen (diesen dann bitte nicht mit ; abschließen). Beispiel: <syntaxhighlight lang="C"> if(a==1) if(a=1) //Erst Zuweisung, dann prüfen der Rückgabe der Zuweisung if(a) //entspricht a!=0 if(printf("hallo")<0) //prüfen, ob printf() fehlschlägt if( ({int dummy=a;a=b;b=dummy;})==6) if(a=7) //Zuweisung! if(7=a) //KO, Eine Konstante kann kein L-Value sein if(7==a) {printf("a ist 7");}; //Semikolon hinter Blocksope ist eine zweite else //Anweisung, so dass die ELSE Anweisung nicht {printf("Compilerfehler");};//zur IF-Anwesigung zugeordnet werden kann. </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=1,b=2; if(a==1) printf("a==1\n"); if(a=1) //Erst Zuweisung, dann prüfen der Rückgabe der Zuweisung printf("a=1\n"); if(a) //entspricht a!=0 printf("a\n"); if(printf("hallo\n")<0) //prüfen, ob printf() fehlschlägt printf("printf()\n"); if( ({int dummy=a;a=b;b=dummy;})==6) printf("({...})\n"); if(a=7) //Zuweisung! printf("a=7\n"); if(7=a) //KO, Eine Konstante kann kein L-Value sein ; if(7==a) {printf("a ist 7");}; //Semikolon hinter Blocksope ist eine zweite else //Anweisung, so dass die ELSE Anweisung nicht {printf("Compilerfehler");};//zur IF-Anwesigung zugeordnet werden kann. return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Bei der Anweisung <code>if(a==7)</code> finden aus syntaktischer Sicht zwei Aktionen statt. Zunächst wird geprüft, ob a gleich 7 ist. Dieser Vergleich liefert true(=1) oder false(=0) zurück. Die If-Anweisung prüft im Anschluss, ob das Argument true oder false ist. === For-Anweisung === <code>Syntax: for(Initialisierungsteil<sub>OPT</sub> ; Test<sub>OPT</sub> ; Fortsetzung<sub>OPT</sub>) Statement</code> Die For-Anweisung wird vom Compiler wie folgt umgesetzt: <poem> '''Initialisierungsteil'''<sub>OPT</sub> Goto Next Goon: //Continue-Anweisung entspricht goto Continue //Break-Anweisung entspricht goto Break; '''Statement''' Continue: '''Fortsetzung'''<sub>OPT</sub> Next: if('''Test'''<sub>OPT</sub>) goto Goon Break: </poem> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> int main(int argc, char *argv[]) { int lauf; int summe; for(summe=lauf=0;lauf<20;lauf++) summe+=lauf; printf("summe=%d\n",summe); //Initialisierungsteil summe=lauf=0; goto Next; Goon: //Continue-Anweisung entspricht goto Continue //Break-Anweisung entspricht goto Break; //Statement summe+=lauf; Continue: __attribute__((unused)) //Fortsetzung lauf++; Next: //if(TestOPT) goto Goon if(lauf<20) goto Goon; Break: __attribute__((unused)) printf("summe=%d\n",summe); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Die einzelne Elemente haben folgende Bedeutung/Besonderheiten: ;Initialisierungsteil: Zum Initialisieren von Schleifenvariablen, wird einmalig mit Beginn der FOR-Anweisung ausgeführt. :* kann Leer sein, dann erfolgt keine Initialisierung :* Ab C99: Hier kann eine lokale Variable definiert werden, welche nur innerhalb dieser For-Anweisung gültig ist ;Testteil: Hierin wird vor jedem Schleifendurchlauf geprüft, ob die Schleifenbedingung erfüllt ist. Wenn Bedingung nicht erfüllt ist (Ganzzahl, Gleitkommazahl oder Zeiger gleich 0,0.0 oder NULL), wird die For-Schleife beendet. :* Kann leer sein, dann wird dieser Teil als true angesehen ;Fortsetzungsteil: Wird nach jeden Schleifendurchlauf ausgeführt. In der Regel sollte hier die Schleifenvariable aktualisiert werden :* Kann leer sein ;Statement: In der Schleife auszuführender Ausdruck :* Sollen mehrere Ausdrücke ausgeführt werden, so sind diese in einem Block zusammen zu fassen. :Ergänzende Anweisungen innerhalb des Statements/Block :* 'continue' zum Fortsetzen des Schleifendurchlaufes, d.h. Sprung zum Fortsetzungs-Teil :* 'break', zum Beenden des Schleifendurchlaufes Beispiele: * For-Schleife mit lokaler Schleifenvariable :<syntaxhighlight lang="C"> char string[]="hallo"; for(size_t lauf=0; lauf < strlen(string); lauf++) //Schleife ist Suboptimal, da in jedem Durchlauf die Funktion //strlen() aufgerufen wird! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <time.h> struct timespec diff_timespec(const struct timespec *minuend, const struct timespec *subtrahend ) { struct timespec diff = { .tv_sec = minuend->tv_sec - subtrahend->tv_sec, .tv_nsec = minuend->tv_nsec - subtrahend->tv_nsec}; //Sekundenüberlauf? if (diff.tv_nsec < 0) { diff.tv_nsec += 1000000000; diff.tv_sec--; } return diff; } int main(int argc, char *argv[]) { char string1[10000]; char string2[10000]; memset(string1,'a',sizeof(string1)); memset(string2,'a',sizeof(string2)); string1[sizeof(string1)-1]=0; string2[sizeof(string2)-1]=0; struct timespec start1,stop1; struct timespec start2,stop2; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start1); size_t sum1=0; for(size_t lauf=0; lauf < strlen(string1); lauf++) sum1++; //Schleife ist Suboptimal, da in jedem Durchlauf die Funktion //strlen() aufgerufen wird! clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop1); clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start2); size_t sum2=0; size_t count2=strlen(string2); for(size_t lauf=0; lauf < count2; lauf++) sum2++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop2); stop1=diff_timespec(&stop1,&start1); stop2=diff_timespec(&stop2,&start2); printf("Slow: Sum1=%zu Time=%lds %ldns\n",sum1,stop1.tv_sec,stop1.tv_nsec); printf("Fast: Sum2=%zu Time=%lds %ldns\n",sum2,stop2.tv_sec,stop2.tv_nsec); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Schleife mit Break-Anweisung :<syntaxhighlight lang="C"> char dest[5]; char src[10]="HalloWelt"; for(size_t lauf=0; src[lauf]!=0; lauf++) { if(lauf >= sizeof(dest)) break; dest[lauf]=src[lauf]; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char dest[5]; char src[10]="HalloWelt"; for(size_t lauf=0; src[lauf]!=0; lauf++) { printf("lauf=%zu\n",lauf); if(lauf >= sizeof(dest)) break; dest[lauf]=src[lauf]; } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Schleife, bei welcher die gesamte Aktion innerhalb der For-Anweisung ausgeführt wird :<syntaxhighlight lang="C"> char dest[5]; char src[10]="HalloWelt"; for(size_t l=0; src[l]!=0 && l <sizeof(dest); printf("l=%zu\n",l),dest[l]=src[l],l++); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char dest[5]; char src[10]="HalloWelt"; for(size_t l=0;src[l]!=0 && l <sizeof(dest); printf("l=%zu\n",l),dest[l]=src[l],l++); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Schleifenvariable muss keine Zählvariable sein :<syntaxhighlight lang="C"> int zahl=0b100010; int bits=0; for(int mask=0b10000000; mask!=0; mask>>=1 ) bits+= zahl & mask ? 1 : 0; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int zahl=0b100010; int bits=0; for(int mask=0b10000000; mask!=0; mask>>=1 ) bits+= zahl & mask ? 1 : 0; printf("Anzahl Einsen in %b = %d\n",zahl,bits); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Zeiger als Schleifenvariable :<syntaxhighlight lang="C"> char src[]="hallo"; char dst[strlen(src)+1]; char *s,*d; for(s=src,d=dst; *s; ) *d++=*s++; *d=0; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char src[]="hallo"; char dst[strlen(src)+1]; char *s,*d; for(s=src,d=dst; *s; ) *d++=*s++; *d=0; printf("src='%s' dst='%s'\n",src,dst); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Zur Geschwindigkeitsoptimierung sollten im Test- und Fortsetzungsteil keine Funktionsaufrufe mit Werten enthalten sein, die sich innerhalb der Schleife nicht ändern: :<syntaxhighlight lang="C"> for(size_t lauf=0;lauf<strlen("hallo");lauf++) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <time.h> struct timespec diff_timespec(const struct timespec *minuend, const struct timespec *subtrahend ) { struct timespec diff = { .tv_sec = minuend->tv_sec - subtrahend->tv_sec, .tv_nsec = minuend->tv_nsec - subtrahend->tv_nsec}; //Sekundenüberlauf? if (diff.tv_nsec < 0) { diff.tv_nsec += 1000000000; diff.tv_sec--; } return diff; } int main(int argc, char *argv[]) { char string1[10000]; char string2[10000]; memset(string1,'a',sizeof(string1)); memset(string2,'a',sizeof(string2)); string1[sizeof(string1)-1]=0; string2[sizeof(string2)-1]=0; struct timespec start1,stop1; struct timespec start2,stop2; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start1); size_t sum1=0; for(size_t lauf=0; lauf < strlen(string1); lauf++) sum1++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop1); clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start2); size_t sum2=0; size_t count2=strlen(string2); for(size_t lauf=0; lauf < count2; lauf++) sum2++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop2); stop1=diff_timespec(&stop1,&start1); stop2=diff_timespec(&stop2,&start2); printf("Slow: Sum1=%zu Time=%lds %ldns\n",sum1,stop1.tv_sec,stop1.tv_nsec); printf("Fast: Sum2=%zu Time=%lds %ldns\n",sum2,stop2.tv_sec,stop2.tv_nsec); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Zur Geschwindigkeitssteigerung sollte im Testteil auf 0 abgefragt werden, d.h. die Schleifenvariable dekrementiert werden :<syntaxhighlight lang="C"> for(int lauf=700000;lauf;lauf--) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <time.h> struct timespec diff_timespec(const struct timespec *minuend, const struct timespec *subtrahend ) { struct timespec diff = { .tv_sec = minuend->tv_sec - subtrahend->tv_sec, .tv_nsec = minuend->tv_nsec - subtrahend->tv_nsec}; //Sekundenüberlauf? if (diff.tv_nsec < 0) { diff.tv_nsec += 1000000000; diff.tv_sec--; } return diff; } int main(int argc, char *argv[]) { char string1[10000]; char string2[10000]; memset(string1,'a',sizeof(string1)); memset(string2,'a',sizeof(string2)); string1[sizeof(string1)-1]=0; string2[sizeof(string2)-1]=0; struct timespec start1,stop1; struct timespec start2,stop2; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start1); size_t sum1=0; for(ssize_t lauf=700000000;lauf;lauf--) sum1++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop1); clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start2); size_t sum2=0; for(ssize_t lauf=0;lauf<700000000;lauf++) sum2++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop2); stop1=diff_timespec(&stop1,&start1); stop2=diff_timespec(&stop2,&start2); printf("Slow: Sum1=%zu Time=%lds %ldns\n",sum1,stop1.tv_sec,stop1.tv_nsec); printf("Fast: Sum2=%zu Time=%lds %ldns\n",sum2,stop2.tv_sec,stop2.tv_nsec); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Alternativ zu einer Laufvariablen empfiehlt sich die Nutzung von Pointer als Schleifenvariable; :<syntaxhighlight lang="C"> for(char *ptr=str; *ptr; ptr++); </syntaxhighlight> === While-Anweisung === <code>Syntax: while(expression) Statement </code><br /> <code>Syntax: do Statement while(expression);</code><br /> Die While-Anweisungen werden vom Compiler wie folgt umgesetzt: {| class="wikitable" ! while()-Anweisung !! do while()-Anweisung |- | <poem> Continue: if(!'''expression''') goto Break //Break-Anweisung entspricht // goto Break; //Continue-Anweisung entspr. // goto Continue; '''Statement''' goto Continue Break: </poem> || <poem> GoOn: //Break-Anweisung entspr. // goto Break //Continue-Anweisung ent. // goto Continue '''Statement''' Continue: if('''expression''') goto GoOn Break: </poem> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> int main(int argc, char *argv[]) { int lauf; int summe; lauf=summe=0; while(lauf<10) { if(lauf>=5) break; lauf++; if(lauf<3) continue; summe+=lauf; } printf("summe=%d\n",summe); lauf=summe=0; Continue1: if(!(lauf<10)) goto Break1; //Break-Anweisung entspricht // goto Break; //Continue-Anweisung entspr. // goto Continue; //Statement if(lauf>=5) { goto Break1; } lauf++; if(lauf<3) goto Continue1; summe+=lauf; goto Continue1; Break1: printf("summe=%d\n",summe); lauf=summe=0; do { lauf++; if(lauf>5) break; if(lauf<3) continue; summe+=lauf; } while(lauf<10); printf("summe=%d\n",summe); lauf=summe=0; GoOn2: //Break-Anweisung entspr. // goto Break //Continue-Anweisung ent. // goto Continue //Statement lauf++; if(lauf>5) goto Break2; if(lauf<3) goto Continue2; summe+=lauf; Continue2: if(lauf<10) goto GoOn2; Break2: __attribute__((unused)); printf("summe=%d\n",summe); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Folgendes gilt es bei der Nutzung der While-Anweisung zu beachten: * Soll mehr als ein Statement innerhalb der While-Schleife ausgeführt werden, so sind diese in einem Block zu schreiben * Statement kann eine Leeranweisung (gekennzeichnet durch ein Semikolon) sein :<syntaxhighlight lang="C"> while(1); do ; while(1); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int lauf1=1000; while(lauf1--); int lauf2=1000; do ; while(lauf2--); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Bei der do-While-Schleife ist das abschließende Semikolon Bestandteil des Befehls * expression muss eine Ganzzahl, Gleitkommazahl oder Zeiger zurückgeben, der bei False (0, 0.0 oder NULL) die Schleife beendet. Beispiele: * Endlosschleife :<syntaxhighlight lang="C"> while(1) {} </syntaxhighlight> * Schleife zum Durchlaufen eines String :<syntaxhighlight lang="C"> char str[]="string"; char *ptr=str; while(*ptr++); size_t len=ptr-str-1; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char str[]="string"; char *ptr=str; while(*ptr++); size_t len=ptr-str-1; printf("Stringlänge=%zu\n",len); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Switch-Anweisung === <code>Syntax: switch(expression) statement</code><br /> <code>Syntax: statement:= case constant-expression: statement<sub>opt</sub> default: statement<sub>opt</sub></code><br /> Die Switch-Anweisung entspricht einer verschachtelten If-Anweisung, mit der Besonderheit, dass der auszuführende Code nicht im If-Zweig stattfindet, sondern dort ein goto zum eigentlichen Code enthalten ist: {| class="wikitable" ! Switch-Anweisung !! Compilerumsetzung |- |<syntaxhighlight lang="C"> switch(a) { case 1: int a=7; //Code break; case 2: printf("%d",a); case 3: { int a; //Code } case 4 ... 8: default: //Code } </syntaxhighlight> ||<poem> if(a==1) goto label1; else if(a==2) goto label2; else goto label_default; //------------------- label1: //Code goto label_break; label2: //Code label_default: goto label_break; label_break: </poem> |} Folgendes gilt es bei der Nutzung der Switch-Anweisung zu beachten: * <code>Expression</code> muss zu einer Ganzzahl (int, short, char, long, long long) oder enum (entspricht einer Ganzzahl) ausgewertet werden * <code>constant-expression</code> muss eine Ganzzahl-Konstante oder ein Enumelement sein. Sie darf nicht doppelt im Block vorkommen. Der genaue Datentyp ergibt sich aus dem Datentyp der <code>expression</code> * Lt. Spezifikation ist ein nur <code>statement</code> hinter der switch-Anweisung erlaubt, so dass nur ein <code>case</code> Fall oder der <code>default</code> Fall bedient werden kann::<syntaxhighlight lang="C"> int var=1; switch(var) case 1: printf("hallo"); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int var=1; switch(var) case 1: printf("hallo"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Die geschweifte Klammer der <code>switch</code>-Anweisung erzeugt einen Block, so dass a) hier mehrere <code>case</code>-Fälle und b) hierin definierte Variablen innerhalb des gesamten Blocks zur Verfügung stehen (sind somit nicht <code>case</code> abhängig). Die <code>case</code> Anweisung ist nichts anderes als eine Sprungmarken (welche durch die switch-Anweisung angesprungen wird) so dass der Initialisierungsteil der lokalen Variablen übersprungen / nicht ausgeführt werden kann: :<syntaxhighlight lang="C"> switch(a) { int a=3; //Variable in gesamten Block gültig case 1: int b=3; //Variabe in gesamten Block gültig printf("%d %d",a,b); //a undefiniert, b=3 break; case 2: printf("%d %d",a,b); //a und b undefiniert break; case 3: { //Block, so dass Variable int a=4711; //nur in diesem CASE gültig ist break; } } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=1; switch(a) { int a=3; //Variable in gesamten Block gültig case 1: int b=3; //Variabe in gesamten Block gültig printf("a=%d b=%d",a,b); //a undefiniert, b=3 break; case 2: printf("%d %d",a,b); //a und b undefiniert break; case 3: { //Block, so dass Variable int a=4711; //nur in diesem CASE gültig ist (void)a; break; } } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * GNU-C (siehe [https://www.gnu.org/software/c-intro-and-ref/manual/html_node/switch-Statement.html Switch-Statement]) erlaubt ergänzend zur Angabe einer Konstante die Angabe eines Wertebereiches: :<syntaxhighlight lang="C"> switch(a) { case 1 ... 8: //Leerzeichen zwischen den Konstanten zwingend notwendig //andernfalls wird der Punkt zur Konstante zugehörig //interpretiert (erzeugt dann eine Gleitpunktkonstante) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=2; switch(a) { case 1 ... 8: //Leerzeichen zwischen den Konstanten zwingend notwendig //andernfalls wird der Punkt zur Konstante zugehörig //interpretiert (erzeugt dann eine Gleitpunktkonstante) printf("a im Bereich von 1 bis 8\n"); break; } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * <code>break</code> ist optional. Mittels <code>break</code> wird an das Ende der Switch-Anweisung gesprungen. Wenn <code>break</code> weggelassen wird, wird die nachfolgende Anweisungen ausgeführt. Ggf. gibt der Compiler eine Warning aus. Mittels der GCC-Compiler-Anweisung __attribute__((fallthrough)); kann diese Warning unterdrückt werden: :<syntaxhighlight lang="C"> switch(a) { case 0: //ggf. Compiler-Warning __attribute__((fallthrough)); case 1: case 2: break; } </syntaxhighlight> * Ein Variable Length Array ist als Variable im Switch-Block direkt nicht erlaubt. Ist dies notwendig, so ist das VLA in einem inneren Block zu kapseln: :<syntaxhighlight lang="C"> switch(var) { case 1: int arr[var]; //KO break; case 2: { int arr[var]; //OK } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int var=1; switch(var) { case 1: int arr[var]; //KO break; case 2: { int arr[var]; //OK } } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Case - Anweisungen sind nichts anderes als Sprungmarken (Labels), so dass CASE-Anweisungen überall innerhalb des Switch-Blockes stehen können: :<syntaxhighlight lang="C"> int prime(int value) {return value+1;} void hallo(int var) { switch(var) { default: if(prime(var)) case 2: case 4: printf("%d",var); else { case 3: case 6: printf("%x",var); } case 7: printf("xyz"); } } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int prime(int value) { return value+1; } int main(int argc, char *argv[]) { int var=1; switch(var) { default: if(prime(var)) case 2: case 4: printf("%d",var); else { case 3: case 6: printf("%x",var); } case 7: printf("xyz"); } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} :oder anderen Anweisungen innerhalb des Switch-Blockes enthalten sein können: :<syntaxhighlight lang="C"> void send(register char *dst, register char *src, register size_t count) { register char unsigned n=(count+7)/8; switch(count%8) { case 0: do{ *dst = *src++; case 7: *dst = *src++; case 6: *dst = *src++; case 5: *dst = *src++; case 4: *dst = *src++; case 3: *dst = *src++; case 2: *dst = *src++; case 1: *dst = *src++; }while(--n>0); } } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <stdint.h> //fuer uintptr_t void send(register char *dst, register char *src, register size_t count) { register char unsigned n=(count+7)/8; switch(count%8) { case 0: do{ *dst = *src++; printf("%02hhx ",*dst); case 7: *dst = *src++; printf("%02hhx ",*dst); case 6: *dst = *src++; printf("%02hhx ",*dst); case 5: *dst = *src++; printf("%02hhx ",*dst); case 4: *dst = *src++; printf("%02hhx ",*dst); case 3: *dst = *src++; printf("%02hhx ",*dst); case 2: *dst = *src++; printf("%02hhx ",*dst); case 1: *dst = *src++; printf("%02hhx ",*dst); }while(--n>0); } } int main(int argc, char *argv[]) { char src[20]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}; char dst; send(&dst,src,20); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Eine Switch-Case Anweisung über Strings sind in C/C++ nicht möglich: :<syntaxhighlight lang="C"> switch(str) { case "hallo": return 1; case "du da": return 2; case "xyz": return 3; default: rReturn -1; } </syntaxhighlight> :Ein direkte Lösungsansatz ist die Nutzung von strcmp() zum Vergleichen von String. Da strcmp zeichenweise den String vergleicht, ist dieser Ansatz langsam. Alternativ bietet sich an, von allen String einen Hash-Wert zu berechnen und zunächst diesen Hash-Wert zu kontrollieren. Da der Hash-Wert nicht eindeutig ist, muss ergänzend ein strcmp() erfolgen: :<syntaxhighlight lang="C"> char *str="hallo"; switch(HASH_LAUFZEIT(str)) { case HASH_COMPILEZEIT('d','u'): if(!strcmp(str,"du")) printf("Case \"du\":\n"); break; case HASH_COMPILEZEIT('h','a','l','l','o'): if(!strcmp(str,"hallo")) printf("Case \"hallo\"\n"); else if(!strcmp(str,"xyz")) printf("String='xyz'\n"); break; default: return -1; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <stdint.h> //Lösungsansatz von: https://stackoverflow.com/questions/2826559/compile-time-preprocessor-hashing-of-string #define H1(s,i,x) (x*65599u+(uint8_t)s[(i)<strlen(s)?strlen(s)-1-(i):strlen(s)]) #define H4(s,i,x) H1(s,i,H1(s,i+1,H1(s,i+2,H1(s,i+3,x)))) #define H16(s,i,x) H4(s,i,H4(s,i+4,H4(s,i+8,H4(s,i+12,x)))) #define H64(s,i,x) H16(s,i,H16(s,i+16,H16(s,i+32,H16(s,i+48,x)))) #define H256(s,i,x) H64(s,i,H64(s,i+64,H64(s,i+128,H64(s,i+192,x)))) #define HASH(s) ((uint32_t)(H256(s,0,0)^(H256(s,0,0)>>16))) #define HASH_LAUFZEIT(s) (H256(s,0,0)) //Eigener Lösungsatz zur Umsetzung des vorherigen HASH-Algorithmus //so dass dieser zur Compilezeit berechnet werden kann //Was fehlt ist die abschließende EXOR berechnung! //Problem war, dass die Array-Dereferenzierung nicht zur Compilezeit //aufelöst werden kann #define HH0(a,x) (x*65599u+a) #define HH1(a) HH0(a,HH0(0,HH0(0,HH0(0,0)))) #define HH2(a,b) HH0(b,HH0(a,HH0(0,HH0(0,0)))) #define HH3(a,b,c) HH0(c,HH0(b,HH0(a,HH0(0,0)))) #define HH4(a,b,c,d) HH0(d,HH0(c,HH0(b,HH0(a,0)))) #define HH4x(a,b,c,d,x) HH0(d,HH0(c,HH0(b,HH0(a,x)))) #define HH5(a,b,c,d,e) HH4x(b,c,d,e,HH4x(0,0,0,a,0)) #define HH6(a,b,c,d,e,f) HH4x(c,d,e,f,HH4x(0,0,a,b,0)) #define HH7(a,b,c,d,e,f,g) HH4x(d,e,f,g,HH4x(0,a,b,c,0)) #define HH8(a,b,c,d,e,f,g,h) HH4x(e,f,g,h,HH4x(a,b,c,d,0)) #define HH9(a,b,c,d,e,f,g,h,i) HH4x(f,g,h,i,HH4x(b,c,d,e,HH4x(0,0,0,a,0))) #define HH10(a,b,c,d,e,f,g,h,i,j) HH4x(g,h,i,j,HH4x(c,d,e,f,HH4x(0,0,a,b,0))) #define HH11(a,b,c,d,e,f,g,h,i,j,k) HH4x(h,i,j,k,HH4x(d,e,f,g,HH4x(0,a,b,c,0))) #define HH12(a,b,c,d,e,f,g,h,i,j,k,l) HH4x(i,j,k,l,HH4x(e,f,g,h,HH4x(a,b,c,d,0))) #define HH13(a,b,c,d,e,f,g,h,i,j,k,l,m) HH4x(j,k,l,m,HH4x(f,g,h,i,HH4x(b,c,d,e,HH4x(0,0,0,a,0)))) #define HH14(a,b,c,d,e,f,g,h,i,j,k,l,m,n) HH4x(k,l,m,n,HH4x(g,h,i,j,HH4x(c,d,e,f,HH4x(0,0,a,b,0)))) #define HH15(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) HH4x(l,m,n,o,HH4x(h,i,j,k,HH4x(d,e,f,g,HH4x(0,a,b,c,0)))) #define HH16(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) HH4x(m,n,o,p,HH4x(i,j,k,l,HH4x(e,f,g,h,HH4x(a,b,c,d,0)))) #define EIGHTEENTH_ARGUMENT(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, \ a11,a12,a13,a14,a15,a16,a17,a18, ...) a18 #define CONCAT(c,d) c ## d #define CONCATI(a,b) CONCAT(a,b) #define HASH_COMPILEZEIT(...) CONCATI(HH , EIGHTEENTH_ARGUMENT(dummy, ## __VA_ARGS__, \ 16,15,14,13,12,11,10,9, 8, 7, 6, 5, 4, 3, 2, 1, 0))(__VA_ARGS__) //Lösungsansatz basierend auf: https://renenyffenegger.ch/notes/development/languages/C-C-plus-plus/preprocessor/macros/__VA_ARGS__/count-arguments #define COUNT_ARGUMENTS(...) EIGHTEENTH_ARGUMENT(dummy, ## __VA_ARGS__, \ 16,15,14,13,12,11,10,9, 8, 7, 6, 5, 4, 3, 2, 1, 0) int main(int argc, char *argv[]) { char *str="hallo"; switch(HASH_LAUFZEIT(str)) { case HASH_COMPILEZEIT('d','u'): if(!strcmp(str,"du")) printf("Case \"du\":\n"); break; case HASH_COMPILEZEIT('h','a','l','l','o'): if(!strcmp(str,"hallo")) printf("Case \"hallo\"\n"); else if(!strcmp(str,"xyz")) printf("String='xyz'\n"); break; default: return -1; } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} :Siehe:[https://benhoyt.com/writings/hash-table-in-c/ Hash Table in C] == Label + Goto == === Label === <code>Syntax: name:</code><br /> Labels dienen zur Kennzeichnung einer Anweisung, so dass die Programmausführung an dieser Stelle fortgesetzt, resp. mit einer GOTO-Anweisung angesprungen werden kann. Ein Label ist durch den folgenden Doppelpunkt gekennzeichnet. Dem Label muss eine Anweisung folgen, welches auch eine Leeranweisung (Semikolon) sein kann. Folgendes gilt es bei der Nutzung von Labels zu beachten: * Ein Label entspricht der Speicheradresse des der Label-Anweisung folgenden Anweisung * Bei nicht genutzten Labels (mit goto nicht angesprungene Labels) gibt der Compiler eine Warning aus. Diese kann beim GCC-Compiler mit __attribute__((unused)) unterdrückt werden * die Case- und die Default-Anweisung aus der Switch-Anweisung entspricht einem Label <br /> Labels hat eine funktionsweite Sichtbarkeit (siehe Kap [[#Gültigkeit/Sichtbarkeit von Variablen| Gültigkeit/Sichtbarkeit von Variablen]]). Dies bedeutet, dass das: * Labels nur innerhalb einer Funktion gültig ist * Labels einen von Variablen/Funktionen/Datentypen unabhängigen Namensraum haben * Kein Prototyp für ein Label notwendig ist, wenn es bei Nutzung über goto noch nicht gesetzt worden ist, also nach vorne gesprungen wird === goto === <code>Syntax: goto label;</code><br /> Mit der Goto-Anweisung wird die Programmausführung an der mit <code>label</code> gekennzeichneten Stelle fortgesetzt. Folgendes gilt es bei der Nutzung von goto zu beachten: * Mit einer <code>goto</code> Anweisung kann an eine beliebige Steller innerhalb der '''identischen''' Funktion gesprungen werden. Es kann nicht zu einem Label in einer anderen Funktion gesprungen werden (hierzu ist <code>setjmp()</code> und <code>longjmp()</code> zu nutzen) * Mit der Goto Anweisung kann gleichermaßen in einen Block hinein, als auch herausgesprungen werden: :<syntaxhighlight lang="C"> goto first_time; for(;;) { if(a>10) goto last_time: first_time: a++; } last_time: ; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=0; goto first_time; for(;;) { printf("a=%d\n",a); if(a>10) goto last_time; first_time: a++; } last_time: ; //Leeranweisung wäre hier nicht nötig return 0; //da dem Label ein return folgt! } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Wird mit der <code>goto</code> Anweisung der Initialisierungsteil einer Variablen übersprungen, so ist zwar die Variable existent, beinhaltet aber nicht ihren Initialisierungswert Beispiel: <syntaxhighlight lang="C"> goto label1; if(a==3) { label2: printf("True\n"); } else label1: { printf("False\n"); } if(a==3) goto label2; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=3; goto label1; if(a==3) { label2: printf("True\n"); a++; } else label1: { printf("False\n"); } if(a==3) goto label2; return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * In Java gibt es das Schlüsselwort goto, welches aber ohne Funktion ist. Es gibt jedoch Labels, die mit "break label" angesprungen werden können === Anwendungsbeispiele === Prinzipiell sind Goto-Anweisungen zu vermeiden. In einigen Anwendungsfällen erweist sich goto als nützlich: * Nutzung nur einer <code>return</code> Anweisung in einer Funktionen :<syntaxhighlight lang="C"> #include <unistd.h> int input(int hdl,size_t buflen) { int rc=-1; unsigned char packettype; if(read(hdl,&packettype,1) != 1) goto exit; unsigned short packetlen; if(read(hdl,&packetlen,2) != 2) goto exit; if((1+packetlen) > buflen) { rc=-2; goto exit; } rc=packetlen; exit: return rc; } </syntaxhighlight> * Konstruktor mit mehreren Initialisierungsteilen :<syntaxhighlight lang="C"> int main(int argc,char *argv[]) { enum {INIT_2,INIT_1,INIT_START} fortschritt=INIT_START; int *ptr1; int *ptr2; if(!(ptr1=malloc(10))) goto end; fortschritt=INIT_1; if(!(ptr2=malloc(20))) goto end; fortschritt=INIT_2; // ... end: switch(fortschritt) { case INIT_2: free(ptr2); __attribute__((fallthrough)); case INIT_1: free(ptr1); __attribute__((fallthrough)); case INIT_START: } return (int)fortschritt; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { enum {INIT_2,INIT_1,INIT_START} fortschritt=INIT_START; int *ptr1; int *ptr2; if(!(ptr1=malloc(10))) goto end; fortschritt=INIT_1; if(!(ptr2=malloc(20))) goto end; fortschritt=INIT_2; // ... end: switch(fortschritt) { case INIT_2: free(ptr2); __attribute__((fallthrough)); case INIT_1: free(ptr1); __attribute__((fallthrough)); case INIT_START: } return (int)fortschritt; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Abbruch einer verschachtelten Schleife :<syntaxhighlight lang="C"> int arr[10][10]; size_t zeile; size_t spalte; for(zeile=0;zeile<10;zeile++) for(spalte=0;spalte<0;spalte++) if(arr[zeile][spalte]==0) goto label_end; label_end: if((zeile==0) && (spalte==0)) printf("Nichts gefunden"); else printf("Gefunden an %zu %zu",zeile,spalte); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int arr[10][10]; size_t zeile; size_t spalte; for(zeile=0;zeile<10;zeile++) for(spalte=0;spalte<0;spalte++) if(arr[zeile][spalte]==0) goto label_end; label_end: if((zeile==0) && (spalte==0)) printf("Nichts gefunden"); else printf("Gefunden an %zu %zu",zeile,spalte); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Sonstiges == === ??-Trigraphs === Zeichenfolge bestehend aus 3 Zeichen beginnend mit 2 Fragezeichen. Die beiden Fragezeichen entsprechen einem ESCAPE-Operator (siehe Kap [[#Char-Konstanten|Char-Konstanten]]), welcher das nachfolgende Zeichen durch ein anderes ASCII Zeichen ersetzt. Die Ersetzung findet auch innerhalb von Strings statt.<br /> Trigraphs wurden früher genutzt, als die ALTGR Taste noch nicht üblich war. <syntaxhighlight> ??< → { ??> → } ??( → [ ??) → ] ??/ → \ ??! → | ??' → ^ ??- → ~ ??= → # </syntaxhighlight> Bei neuer C Varianten muss zur Nutzung von Trigraphs der Compiler mittels -trigraphs aktiviert werden. <noinclude> {{Navigation zurückhochvor buch |zurücklink=Programmieren in C/C++: Toolchain/Entwicklungsumgebung |zurücktext=Toolchain/Entwicklungsumgebung |hochlink=Programmieren in C/C++ |hochtext=Inhaltsverzeichnis |vorlink=Programmieren in C/C++: Datentypen |vortext=Datentypen}} </noinclude> fo55n4wqlybeb0sfzk7w3900dklwyy1 1090608 1090602 2026-09-09T09:51:41Z D. Justen 102048 Link geändert 1090608 wikitext text/x-wiki <noinclude> {{Navigation zurückhochvor buch |zurücklink=Programmieren in C/C++: Toolchain/Entwicklungsumgebung |zurücktext=Toolchain/Entwicklungsumgebung |hochlink=Programmieren in C/C++ |hochtext=Inhaltsverzeichnis |vorlink=Programmieren in C/C++: Datentypen |vortext=Datentypen}} </noinclude> <!-- Falls du ein automatisch erstelltes Inhaltsverzeichnis nicht willst, ersetze das nachfolgende TOC durch NOTOC --> <!-- Einklammerung mit noinclude, damit dieses nicht in der Druckversion erscheint --> <noinclude>__TOC__</noinclude> Die Programmiersprache C/C++ beinhaltet mehrere Sprachen/ Syntaxen: * C-Syntax * Präprozessor-Syntax * Printf/Scanf Formatstring Syntax * Terminal Emulation * Compiler/Linker Anweisungen Letztere beiden werden nur rudimentär in dieser Vorlesung/diesem Skript behandelt. Alle anderen sind Bestandteil dieser Vorlesung. In diesem Kapitel sollen zunächst allgemeine Eigenschaften der Sprache, der grundlegende Syntax und die Kontrollstrukturen erklärt werden. Bei vielen Erklärungen sind Code-Beispiele vorhanden. Da man aus Fehlern am meisten lernt, sind zum Teil auch negative Beispiele enthalten. Für ein besseres Verständnis empfiehlt es sich, Code-Beispiele selbst nachzuvollziehen.<br /> Sofern sich die Eigenschaften auf eine bestimmte C-/C++- oder Compiler-Version beziehen, wird dies gesondert vermerkt. == Zeichensatz == Der Syntax von C nutzt die unteren 128 Zeichen des ASCII Zeichensatzes. Da UTF-8 in den ersten 128 Zeichen deckungsgleich zu ASCII ist, kann auch dieser zur Erstellung des Source Codes genutzt werden. Zeichen außerhalb dieses gültigen Zeichensatzes können folglich nur in Strings oder Kommentaren vorkommen. Werden Zeichen außerhalb der unteren 128 Zeichen in Strings genutzt, so gilt Folgendes zu berücksichtigen: * Die String-Funktionalitäten der Standard-C Library gehen von dem regulären ASCII Zeichensatz aus, so dass z.B. die Suche, der Vergleich oder die Konvertierung fehlschlagen kann * Strings werden oftmals in Verbindung mit printf() genutzt, d.h. auf der Standardausgabe ausgegeben. Der verwendete Zeichensatz sollte hier identisch zum verwendeten Zeichensatz der Terminal-Emulation sein! == Kommentarzeichen == Kommentare dienen dazu, den Source Code mit zusätzlichen Hinweisen zu versehen, so dass die Intension der Anweisungen sichtbar wird. Kommentarzeichen werden durch den Compiler vor dem eigentlichen Übersetzungsdurchlauf entfernt und durch ein Leerzeichen ersetzt [C11 6.4.9]. Innerhalb von Strings wird nicht nach Kommentarzeichen gesucht. <code> Syntax: /* */ </code> Blockkommentar zum Kommentieren eines Bereiches, auch über mehrere Zeilen hinweg. Dieses Kommentarzeichen kann nicht verschachtelt werden, d.h. '*/' beendet die Kommentierung, unabhängig von der Anzahl der zuvor geöffneten Kommentierungen! <code> Syntax: // </code> Zeilenkommentar zum Kommentieren bis zum Zeilenende (wurde in der Programmiersprache BCPL definiert, aber nicht von C, sondern erst von C++ übernommen). Sollen größere Bereiche auskommentiert werden, so empfiehlt sich die Nutzung der Präprozessoranweisung #if 0 ... #endif. Beispiele: <syntaxhighlight lang="C"> /* Blockkommentar mit zwei öffnenden Klammern /* über mehrere Zeilen, nicht verschachtelt */ //Zeilenkommentar /* Kleiner Bereich zum auskommentieren */ #if 0 Großer Bereich zum auskommentieren #endif </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> /* Blockkommentar mit zwei öffnenden Klammern /* über mehrere Zeilen, nicht verschachtelt Compiler-Warning nur aufgrund des Compiler-Schalters -Wall! */ //Zeilenkommentar /* Kleiner Bereich zum auskommentieren */ #if 0 Großer Bereich zum auskommentieren #endif int main(int argc,char *argv[]) { return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Namenskonventionen == Folgende Regeln gelten bzgl. der Benennung von Variablen und Funktionen: * Variablen und Funktionsnamen können aus Buchstaben, Zahlen und dem Unterstrich bestehen. Sie müssen mit einem Buchstaben oder einem Unterstrich beginnen * Seit C95 können weitere Zeichen aus dem Universal Coded Character Set (UCS) genutzt werden [C11 D.1] * C ist Case sensitiv, d.h. es wird zwischen Groß- und Kleinbuchstaben unterschieden * Schlüsselwörter können nicht für Variablen/Funktionsnamen/Datentypen genutzt werden Namenskonventionen von Libraryfunktionen: * In C (und C++) sind Schlüsselwörter und Standardlibraryfunktionen zumeist in Kleinbuchstaben geschrieben. In der C-Standardlibrary werden oftmals verkürzte Ausdrücke (z.B. isalnum() (zum Testen ob ein Zeichen ein Buchstaben oder ein Digit ist) und in C++ der Unterstrich als Worttrenner (z.b. out_of_range) genutzt * Makros (siehe Kap.[[Programmieren in C/C++: Präprozessor | Präprozessor]]) werden per Konvention in GROSSBUCHSTABEN und ggf. mit Unterstrich als Worttrenner geschrieben. * Namen beginnend mit doppelten Unterstrich oder beginnend mit einem Unterstrich gefolgt von einem Großbuchstaben (z.B. __LINE__ _Reserved) sind für den Compiler und der Standard-C-Library vorbehalten und sollten im eigenen Programm nicht benutzt werden. == Zeilenfortsetzung == Mit dem Backslash Operator (gefolgt von einem Zeilenende) kann eine Zeile in der nächsten Zeile fortgesetzt werden. Der Compiler löscht das \-Zeichen mit anschließendem Zeilenende und ersetzt dies durch nichts. Dies ist insbesondere bei Anweisungen notwendig, die am Ende der Zeile abgeschlossen sein müssen (z.B. Strings, Makros). Beispiele: <syntaxhighlight lang="c"> char str1[]="Strings müssen am Ende abgeschlossen sein so dass dies ein Fehler ist"; char str2[]="Dies\ ist ein Test"; //Vorsicht, führende Leerzeichen vor 'ist' //bleiben erhalten! /*mehrzeiliges Makro*/ #define MAX(a,b) (a>b?\ b: \ a) //Dies ist ein Zeilenkommentar \ welcher in dieser Zeile fortgesetzt wird /\ * dies ist ein Blockkommentar*\ / //hinter der Zeilenfortsetzung darf nur ein CR/LF folgen #define MAX2(a,b) \ //so dass hier kein Kommentar folgen darf a>b?a:b </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> char str1[]="Strings müssen am Ende abgeschlossen sein so dass dies ein Fehler ist"; char str2[]="Dies\ ist ein Test"; //Vorsicht, führende Leerzeichen vor 'ist' //bleiben erhalten! /*mehrzeiliges Makro*/ #define MAX(a,b) (a>b?\ b: \ a) //Dies ist ein Zeilenkommentar \ welcher in dieser Zeile fortgesetzt wird /\ * dies ist ein Blockkommentar*\ / //hinter der Zeilenfortsetzung darf nur ein CR/LF folgen #define MAX2(a,b) \ //so dass hier kein Kommentar folgen darf a>b?a:b int main(int argc,char *argv[]) { return 0; } | execCompilerOptions=| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Innerhalb von Char-Literatoren und Strings wird '\' als Escape-Operator genutzt, welche das '\' und ein oder mehrere folgende Zeichen ersetzt (siehe Kap.[[Programmieren in C/C++: Grundlagen#Literale/Konstanten | Grundlagen:Literale/Konstanten]]). Daher darf hinter Backslash als Zeilenfortsetzungszeichen kein weiteres Zeichen folgen. == Gültigkeit/Sichtbarkeit von Variablen == Vorrangig in der objektorientierten Programmierung werden mit Namensräumen Objekte und deren Methoden/Attribute in einer Art Baumstruktur strukturiert. Dies ermöglicht eine eindeutige Ansprache von Variablen/Objekte, aber auch eine doppelte Verwendung von Methoden-/Attributnamen in unterschiedlichen Namensräumen. Ergänzend zu den Namensräumen kann mit public/private/proteced eine Zugriffsbeschränkung von Methoden/Attributen definiert werden. Die Programmiersprache C unterstützt keinen Namensraum. Zugriffsmodifikatoren werden indirekt über Header-Dateien getätigt. Hinsichtlich der Gültigkeit/Sichtbarkeit unterscheidet C folgende Bereiche [C11 6.2.1]: * Funktionen (Function Scope) * Datei (File Scope) * Block (Block Scope) * Funktionsparameter in Prototypen (Function Prototype Scope) Innerhalb eines Gültigkeitsbereiches dürfen Variablen-/Funktions-/Datentypnamen nicht doppelt genutzt werden.<br /> In der Programmiersprache C++ sind weitere Scope wie z.B. Class Scope, Enumationation Scope und ergänzend das Konzept von Namensräumen vorhanden (Beschreibung folgt). === Funktionsweite Sichtbarkeit === Eine Label-Definition (als Sprungmarke für die goto-Anweisungen) erfolgt immer mit funktionsweiter Sichtbarkeit/Gültigkeit. Die genaue Beschreibung dieses Sichtbarkeitstyps erfolgt im Rahmen des Kapitels [[Programmieren in C/C++: Grundlagen #Label + Goto|Grundlagen:Label+Goto]]. === Dateiweite Sichtbarkeit === Erfolgt eine Funktion-/Variablen-/Datentyp-Definition außerhalb eines Block-Scopes oder von Funktionsparameter, so sind diese innerhalb der gesamten Datei und bei Funktionen/Variablen ergänzend Projektweit (für alle Objektdateien) sichtbar/gültig (=&nbsp;global) (In der C-Spec unter dem Stichwort 'Linkage' beschrieben, siehe Kapitel [[Programmieren in C/C++: DatentypeSpecifier#Internal/External Linkage| DatentypeSpecifier:Internal/External Linkage]]). Alle globalen Funktionen/Variablen können von allen Dateien aus genutzt/zugegriffen werden (sofern sie zuvor deklariert wurden).<br /> Beispiel: {| class="wikitable" |- ! Datei1.c !! Datei2.c |- | <syntaxhighlight lang="C"> //Deklaration von func(), //welche in Datei2.c definiert wird extern void func(void); //Definition der Variablen global int global=0; int main(void) { func(); global++; return 0; } </syntaxhighlight> || <syntaxhighlight lang="C"> //Deklaration von global, //welche in Datei1.c definiert wird extern int global; //Definition der Funktion func() void func(void) { global++; } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Deklaration von func(), //welche in Datei2.c definiert wird extern void func(void); //Definition der Variablen global int global=0; int main(void) { func(); global++; printf("global=%d\n",global); return 0; } | datei2_c=#include <stdio.h> //Deklaration von global, //welche in example.c definiert wird extern int global; //Definition der Funktion func() void func(void) { global++; printf("func() called\n"); } | execCompilerOptions=-Wall datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Wird das Schlüsselwort 'static' der Variablen/Funktionsdefinition vorangestellt, so wird die Sichtbarkeit/Gültigkeit auf Dateiweit eingeschränkt. Variablen/Funktionen können nur innerhalb der (Objekt-) Datei genutzt werden und sind für anderen (Objekt-)Dateien unsichtbar. (Siehe Kap. [[Programmieren in C/C++: DatentypeSpecifier#Internal/External Linkage|DatentypeSpecifier:Internal/External Linkage]] Internal/External Linkage) {| class="wikitable" |- ! Datei1.c !! Datei2.c |- | <syntaxhighlight lang="C"> //Dateiweite Sichtbarkeit von var1 static int var1; int main(void) { var1++; return 0; } </syntaxhighlight> || <syntaxhighlight lang="C"> //Dateiweite Sichtbarkeit von var1 static int var1; void func(void) { static int var2; //Vorsicht, static // hat hier eine andere Bedeutung var1++; } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Dateiweite Sichtbarkeit von var1 static int var1; int main(void) { var1++; printf("example.c:var1=%d\n",var1); void func(void); //Prototyp für func() func(); return 0; } | datei2_c=#include <stdio.h> //Dateiweite Sichtbarkeit von var1 static int var1; void func(void) { static int var2; //Vorsicht, static // hat hier eine andere Bedeutung var1++; printf("datei2.c:var1=%d\n",var1); } | execCompilerOptions=datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Projektweite Gültigkeit bedeutet insbesondere, dass keine doppelten Benennung von Variablen/Funktionen/Datentypen innerhalb des gesamten Projektes erlaubt sind, d.h. alle Variablen/Funktionennamen über alle Dateien/Librarys eindeutig sein müssen.<br> Beispiel 1: {| class="wikitable" |- ! Datei1.c !! Datei.2 |- | <syntaxhighlight lang="C"> #include <stdio.h> int a=1; int main(int argc,char *argv[]) { printf("Hello World %d",a); void dummy(void); //Deklaration von Dummy dummy(); return 0; }</syntaxhighlight> || <syntaxhighlight lang="C"> #include <stdio.h> int a=7; void dummy(void) { printf("Hello Again %d\n",a); } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int a=1; int main(int argc,char *argv[]) { printf("Hello World %d",a); void dummy(void); //Deklaration von Dummy dummy(); return 0; } | datei2_c=#include <stdio.h> #include <stdio.h> int a=7; void dummy(void) { printf("Hello Again %d\n",a); } | execCompilerOptions=datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Der Linker meldet beim Zusammenfügen der Objekt-Dateien, dass die Variable a bereits woanders definiert sei (multiple definition of `a';)! Beispiel 2: <syntaxhighlight lang="C"> #include <stdio.h> //fuer printf() size_t stderr int printf=7; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int printf=7; int main(int argc,char *argv[]) { return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hier meldet der Compiler eine Fehlermeldung, da das Symbol printf zu einen als Variable und zum anderen als Funktion (innerhalb der inkludierten Datei stdio.h beschrieben) genutzt wird ('printf' redeclared as different kind of symbol). === Blockweite Sichtbarkeit === Erfolgt eine Funktion-/Variablen-/Datentyp Definition innerhalb einer Funktion, als Funktionsparameter oder eines Blockes, so sind diese nur innerhalb des Blockes sichtbar/gültig (=Lokale Variable). Blöcke können verschachtelt sein, so dass das bei identischer Namensgebung innere Definitionen Vorrang haben. Ebenso haben Blockdefinitionen Vorrang vor Datei-/Projektdefinitionen (überdecken diese): {| class="wikitable" |- ! Datei1.c !! Datei2.c |- | <syntaxhighlight lang="C"> int main(void) { int var2; //var2 ist nur innerhalb //von main() sichtbar struct xyz //Datentyp ist nur innerhalb {int x,y,z;};//von main() //sichtbar/gültig extern void func(void); //Deklaration //ist nur innerhalb von //main() sichtbar/gültig func(); } void foo(void) { struct xyz var_xyz; //Fehler, da //Datentypedefinition hier nicht mehr //gültig ist! func(); //Fehler, da Deklaration //hier nicht mehr gültig ist } </syntaxhighlight> || <syntaxhighlight lang="C"> #include <stdio.h> void func(void) { int var2=1; //var2 ist //nur innerhalb von //func() sichtbar { int var2=2; //var2 ist nur innerhalb //dieses Blockes sichtbar printf("%d\n",var2); } printf("%d\n",var2); } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(void) { int var2; //var2 ist nur innerhalb //von main() sichtbar struct xyz //Datentyp ist nur innerhalb {int x,y,z;};//von main() //sichtbar/gültig extern void func(void); //Deklaration //ist nur innerhalb von //main() sichtbar/gültig func(); } void foo(void) { struct xyz var_xyz; //Fehler, da //Datentypedefinition hier nicht mehr //gültig ist! func(); //Fehler, da Deklaration //hier nicht mehr gültig ist } | datei2_c=#include <stdio.h> void func(void) { int var2=1; //var2 ist //nur innerhalb von //func() sichtbar { int var2=2; //var2 ist nur innerhalb //dieses Blockes sichtbar printf("%d\n",var2); } printf("%d\n",var2); } | execCompilerOptions=-Wall datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Sichtbarkeit von Funktionsparameter in Protypen === Soll eine Funktion aufgerufen werden, die zuvor nicht definiert wurde, so ist ein Prototyp/(Forward)deklaration der Funktion notwendig (siehe nachfolgendes Kapitel). Die Parameterliste dieses Prototyps hat seinen eigenen Gültigkeitsbereich.<br/> Beispiel: <syntaxhighlight lang="C"> int a; //a im File Scope int func(int a, int b); //a und b im Function Prototyp scope </syntaxhighlight> Hinweis: * Bei Prototypen ist die Angabe von Variablenname nicht notwendig. Die alleinige Angabe des Datentyps ist ausreichend === Zuordnung der Gültigkeitsbereiche zu globalen/lokalen Variablen === Zum einfacheren Verständnis wird im Skript von folgenden Begrifflichkeiten gesprochen: * '''Globale''' Variablen-/Funktionen-/Datentypdefinitionen → Projektweite Sichtbarkeit/Gültigkeit * '''Statisch globale''' Variable/Funktionen → Dateiweite Sichtbarkeit/Gültigkeit * '''Lokale''' Variablen/Funktionen/Funktionsparameter/Datentypen → Nur innerhalb des zugehörigen Blockes sichtbare/gültig * '''Statisch lokale''' Variablen → Nur innerhalb der Funktion sichtbar/gültig, mit der Besonderheit, dass die Gültigkeit über der Laufzeit der Funktion gilt (siehe Kap. [[Programmieren in C/C++: DatentypeSpecifier#Static Storage Class Specifier|DatentypeSpecifier:Static Storage Class Specifier]]) === Speicherzuweisung === Für die einzelnen Gültigkeitsbereiche werden im Speicher (und auch in der Objekt-Datei) unterschiedliche Speicherbereiche (Segmente) vorgehalten, d.h. der Compiler teilt den Speicher in unterschiedliche Bereiche auf und weist den Variablen/Funktionen in Abhängigkeit der Gültigkeit/Sichtbarkeit unterschiedliche Speicherbereiche zu! [[File:Zuordnung von Inhalten eines C-Programms zu Speicherbereichen (Segmenten).png|thumb|Zuordnung von Inhalten eines C-Programms zu Speicherbereichen (Segmenten)]] Zur Ermöglichung von Rekursion werden lokale Variable auf dem Stack gehandelt. Mit Aufruf einer Funktion oder öffnen eines neuen Block-Scopes wird Speicher auf dem Stack reserviert, der bei Beenden des Scopes wieder freigegeben wird. Die Speicheradresse von lokalen Variablen ist somit nicht Fix, sondern hängt von der Aufrufhierarchie ab! Globale und statisch globale Variablen werden nicht auf dem Stack gehalten, sondern bekommen einen 'festen' Speicherbereich (hier DATA/BSS/RODATA) während der gesamten Laufzeit des Programms zugewiesen. Die Adresse dieser Variablen sind somit konstant. Das genutzte Speichersegment von globalen Variablen hängen von der Art der Variablen ab. Initialisierte Variablen werden im DATA-Segment gesammelt, welcher mit dem Initialisierungswert der Variablen initialisiert wird. Nicht initialisierte globale Variablen landen im BSS-Segment, so dass diese mit Programmstart durch Füllen dieses Blockes mit 0 auf 0 gesetzt werden. Konstante globale Variablen werden im RODATA-Segment gehalten. Über das Betriebssystem kann dieser Speicherbereich auf nur Lesbar gesetzt werden. Dynamische Speicheranforderungen, resp. Speicher, dessen Gültigkeit über die Laufzeit einer Funktion hinausgeht, wird im Heap gesammelt. Für die Verwaltung dieses Speichers ist der Programmierer zuständig. Entsprechend globalen Variablen wird für Funktionen ebenfalls ein eigener Speicherbereich (TEXT Segment) vorgesehen. Im Gegensatz zu Variablen, wo im Speicher der dazugehörige Inhalt gespeichert ist, ist der Speicherinhalt von Funktionen die Maschinenanweisungen. Die Speicheradresse der Funktionen sind konstant. Hinweis: * Die Speicheradresse von sowohl globalen und statisch globalen Variablen als auch von Funktionen ist konstant und ändert sich während der Laufzeit des Programms nicht. Die Adressvergabe dieser Variablen und Funktionen erfolgt somit nicht zur Laufzeit sondern durch die Toolchain (hier der Linker). * Dieses Konzept ist allgemeingültig, gilt nicht nur für die Programmiersprache C/C++ == Definition/Deklaration(Prototyp) == Der C-Compiler ist ein Single-Pass Compiler (siehe Kap [[Programmieren in C/C++: Einführung/Literatur#Arbeitsweise eines Compilers | Einführung/Literatur:Arbeitsweise eines Compilers ]]), d.h. für den Übersetzungsvorgang wird der Quellcode einmalig eingelesen und von vorne nach hinten abgearbeitet. Dies bedingt, dass keine Vorwärtsbezüge im Quelltext enthalten sein dürfen: * keine Variable genutzt werden kann, die erst später definiert wird (da der Compiler in Abhängigkeit des Datentyps (den er dann noch nicht kennt) keine entsprechende Maschinensprachebefehle erzeugen kann) * keine Funktion aufgerufen werden kann, die erst später definiert wird (da der Compiler nicht weiß, welcher Datentyp die Übergabewerte haben und folglich keine Maschinensprachebefehle zur Konvertierung und Übergabe der Variablen erzeugen kann) * kein Datentyp genutzt werden kann (struct, union, enum, typedef), welcher erst später definiert wird (da der Compiler nicht weiß, wieviel Speicher er für die Variable reservieren muss) Eine Lösungsvariante dieser Problematik ist, im Quellcode alle Variablen/Funktionen/Datentypen/Makros zu definieren, bevor diese erstmalig genutzt werden (Funktion main() steht dann folglich am Ende des Quellcodes): <syntaxhighlight lang="C"> void foo(void) { //foo() wird vor dem ersten Aufruf definiert //Hier kein Zugriff auf var möglich! //Hier kein Zugriff auf Datentyp uchar möglich! } int var; //var wird vor dem ersten Aufruf definiert typedef unsigned char uchar; //Definition des Datentyps uchar int main(void) { foo(); //da zuvor definiert kann diese Funktion hier aufgerufen werden var++; //dito } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void foo(void) { //foo() wird vor dem ersten Aufruf definiert var++; //Hier kein Zugriff auf var möglich! uchar xyz;//Hier kein Zugriff auf Datentyp uchar möglich! } int var; //var wird vor dem ersten Aufruf definiert typedef unsigned char uchar; //Definition des Datentyps uchar int main(int argc, char *argv[]) { foo(); //da zuvor definiert kann diese Funktion hier aufgerufen werden var++; //dito } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Sollen globale Funktionen/Variablen in Datei1.c genutzt werden, die in Datei2.c definiert sind, so schlägt diese Vorgehensweise fehl. Um auch dieses zu ermöglichen, bietet C die Möglichkeiten von Prototypen/Deklarationen an. Diese teilt dem Compiler mit, wie im späteren Ablauf die Variable, die Funktion definiert wird, bzw. dass es diesen Datentyp geben wird: {| class="wikitable" |- ! Datei1.c !! Datei2.c |- | <syntaxhighlight lang="C"> //Prototyp für Variable var extern int var; //Prototyp für Funktion foo void foo(void); int main(int argc, char *argv[]) { foo(); //Compiler kann aufgrund var++; //der Prototypen diese //Aufruf in Maschinen- //sprachebefehle umsetzen } </syntaxhighlight> || <syntaxhighlight lang="C"> //Definition der Variablen var int var; //Definition der Funktion foo void foo(void) { } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Prototyp für Variable var extern int var; //Prototyp für Funktion foo void foo(void); int main(int argc, char *argv[]) { foo(); //Compiler kann aufgrund var++; //der Prototypen diese //Aufruf in Maschinen- //sprachebefehle umsetzen } | datei2_c=#include <stdio.h> //Definition der Variablen var int var; //Definition der Funktion foo void foo(void) { } | execCompilerOptions=-Wall datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Innerhalb der C-Spezifikation werden für den Umgang mit dieser Problematik die Begriffe 'Declaration' und 'Definition' genutzt. Da diese Begriffe jedoch nicht klar abgegrenzt werden und auch für viele weitere Aspekte genutzt werden, sollen in diesem Skript in Anlehnung an den Wikipedia Artikel {{w|Deklaration (Programmierung)|Deklaration (Programmierung)}} (im Absatz zur Programmiersprache C/C++) die Begriffe Definition/Deklaration wie folgt genutzt werden: ;Definition: entspricht der Belegung/Reservierung von Speicherplatz :* Bei der Definition einer Variablen wird hiermit Speicherplatz entsprechend dem Datentyp der Variable belegt: :<syntaxhighlight lang="C"> int var1; //entsprechend der Größe des Datentyps int wird //Speicherplatz für die Variable var1 reserviert int var2=4711; //Dito, ergänzend wird dieser Speicherplatz mit dem //Wert 4711 initialisiert </syntaxhighlight> :* Bei einer Funktion wird Speicherplatz zur Aufnahme der Maschinenbefehle belegt: :<syntaxhighlight lang="C"> void foo(void) { //Die Anweisungen in den geschweiften Klammern //werden in Maschinenbefehle übersetzt. D.h. die //Funktion foo() belegt Speicher, dessen Inhalt //die Maschinensprachebefehle sind } </syntaxhighlight> :* Ergänzend wird der Begriff Definition auch in Verbindung mit der Definition von neuen Datentypen genutzt! ;Deklaration/Prototyp: ist die Mitteilung an den Compiler, wie diese Variable/Funktion an einer späteren Stelle im Source-Code oder in einer anderen Source-Datei definiert wird. Auf Grundlage dieser 'vorab' Information kann der Compiler die passenden Maschinensprachebefehle für den Zugriff/Aufruf auf die Variablen/Funktion einsetzen: :<syntaxhighlight lang="C"> extern int var1; //Deklaration von var1 extern void foo(void); //Deklaration von foo() void foo(void); //Deklaration von foo() </syntaxhighlight><br /> Insbesondere bei dem Umgang mit der Deklaration gilt es Folgendes zu berücksichtigen: * Deklarationen werden entweder: :* am Anfang einer C-Datei geschrieben, so dass Funktionen/Variablen im Zugriff stehen, die erst später in der C-Datei definiert werden (entspricht dann der Private Anweisung in anderen Sprachen) :* in Header-Dateien geschrieben, so dass diese Variable/Funktionen für alle sichtbar sind, welche diese Header-Datei einbinden (entspricht der Public Anweisung in anderen Sprachen) * Deklarationen von Funktionen werden in der C-Spec als (function) Prototyp bezeichnet und sind dadurch gekennzeichnet, dass diese mit einem Semikolon abgeschlossen sind. Der Specifier 'extern' ist hier optional und sagt eigentlich aus, dass diese Funktion external Linkage besitzt (siehe [[Programmieren in C/C++:_DatentypeSpecifier#Internal/External Linkage | DatentypeSpecifier:Internal/External Linkage]]). Die Benennung der Parametervariablen sind gleichermaßen optional: :<syntaxhighlight lang="C"> extern int foo(int var1, float var2); //Deklaration extern int foo(int , float ); //Deklaration int foo(int var1, float var2); //Deklaration + external Linkage int foo(int , float ); //Deklaration + external Linkage </syntaxhighlight> * Für globale Variablen gibt es keine (Variablen) Prototype. Stattdessen muss zur Bekanntgabe des Datentyps der Specifier 'extern' vorangestellt werden, mit welchen ergänzend zum Ausdruck gebracht wird, das diese Variable external Linkage und damit globale Gültigkeit hat (siehe Kap [[Programmieren in C/C++: DatentypeSpecifier# Extern - Storage Class Specifier| DatentypeSpecifier:Extern - Storage Class Specifier]]). Da die Deklaration einzig zur Bestimmung der Zugriffsmethoden auf Maschinenspracheebene genutzt wird, können diese keine Initialisierungswerte enthalten: :<syntaxhighlight lang="C"> extern int var1; extern int var2=7; //KO Deklarationen können keine //Initialisierungswerte haben </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> extern int foo; extern int foo=7; int main(int argc, char *argv[]) { return foo; } int foo=7;| execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Deklarationen von statisch globalen, lokalen und statisch lokalen Variablen nicht möglich sind: :<syntaxhighlight lang="C"> extern static int glob; //keine Deklaration von statisch globalen //Variablen möglich int main(int argc, char *argv[]) { extern int var; //Deklaration bezieht sich auf eine globale //Variable, die nicht definiert ist extern static int lok; printf("%d %d\n",var,lok); int var; static int lok; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> extern static int glob; //keine Deklaration von statisch globalen //Variablen möglich int main(int argc, char *argv[]) { extern int var; //Deklaration bezieht sicht auf eine globale //Variable, die nicht definiert ist extern static int lok; printf("%d %d\n",var,lok); int var; static int lok; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Deklarationen für identische Variablen/Funktionen können beliebig oft erfolgen, sofern der Datentyp identisch ist: :<syntaxhighlight lang="C"> extern int var; extern int var; //OK, doppelt Deklaration mit identischen Datentyp extern unsigned int var; //KO, Doppelte Deklaration mit unterschiedlichen // Datentyp </syntaxhighlight> * Sofern eine Deklaration und eine Definition in der identischen Datei erfolgen überprüft der Compiler, ob Deklaration und Definition identisch sind. Es empfiehlt sich, die eigene Header-Datei (in welcher die Deklaration normalerweise enthalten ist) zu inkludieren: :{| class="wikitable" |- ! Datei1.c !! Datei1.h |- | <syntaxhighlight lang="C"> //Include der eigenen Header-Datei #include "datei1.h" int var1; //Definition von var1 short var2; //Definition von var2 int var3; //Private Variable //da kein Prototyp //im Header vorhanden void func(void) { } </syntaxhighlight> || <syntaxhighlight lang="C"> extern int var1; //Deklaration extern char var2; //KO, da Deklaration //von Definition //abweicht void func(int); //KO, da Deklaration //von Definition //abweicht </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Include der eigenen Header-Datei #include "example.h" int var1; //Definition von var1 short var2; //Definition von var2 int var3; //Private Variable //da kein Prototyp //im Header vorhanden void func(void) { } int main(int argc, char *argv[]) { return 0; } | example_h= extern int var1; //Deklaration extern char var2; //KO, da Deklaration //von Definition //abweicht void func(int); //KO, da Deklaration //von Definition //abweicht | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Innerhalb einer Datei kann eine Variable identischen Datentyps mehrmals definiert werden (bei identischen Initialisierungswert). Diese Definitionen werden vom Compiler als eine Definition angesehen. Wenn jedoch eine identische Variable in unterschiedlichen Dateien definiert wird, so legt jede Datei eine eigene unabhängige Variable an, welche dann beim Zusammenführen der Objektdateien durch den Linker zu Fehler führt. Da Header-Datei zumeist in mehrere C-Dateien inkludiert werden, sind Definitionen in Header-Dateien 'verboten'. * Deklarationen innerhalb eines Block-Scopes oder eines Function Prototyp Scopes sind nur in diesen Bereich gültig. == Grundlegende Datentypen und Typsicherheit == Die Programmiersprache C kennt folgende grundlegende Datentypen (siehe Kap. [[Programmieren in C/C++: Datentypen | Datentypen]]). Von jedem Datentyp kann ein Zeiger angelegt werden: {| class="wikitable" |- ! Datentyp !! Bsp. für Datentyp !! Bsp. für Zeiger auf Datentyp |- | Ganzzahl || <syntaxhighlight lang="C"> char var; int var; short int var; long int var; long long int var; </syntaxhighlight> || <syntaxhighlight lang="C"> char *ptr; int *ptr; short int *ptr; long int *ptr; long long int *ptr; </syntaxhighlight> |- | Gleitkommazahl || <syntaxhighlight lang="C"> double var; float var; long double var; </syntaxhighlight> || <syntaxhighlight lang="C"> double *ptr; float *ptr; long double *ptr; </syntaxhighlight> |- | Funktionen || <syntaxhighlight lang="C"> void func(void) {} </syntaxhighlight> || <syntaxhighlight lang="C"> void (*pfunc)(void); </syntaxhighlight> |- | Arrays || <syntaxhighlight lang="C"> int arr[10]; float arr[3][3]; </syntaxhighlight> || <syntaxhighlight lang="C"> int (*parr); float (*parr)[3]; void (*pfunc[5])(void); </syntaxhighlight> |- | Strukturen/Unions || <syntaxhighlight lang="C"> struct xyz {int x,y,z}; union abc {int a,b,c}; </syntaxhighlight> || <syntaxhighlight lang="C"> struct xyz *ptr; union abc *ptr; </syntaxhighlight> |- | Aufzählungstyp || <syntaxhighlight lang="C"> enum abc {A,B,C}; </syntaxhighlight> || <syntaxhighlight lang="C"> enum abc *ptr; </syntaxhighlight> |- | Boolescher Datentyp || <syntaxhighlight lang="C"> _Bool var; </syntaxhighlight> || <syntaxhighlight lang="C"> _Bool *ptr; </syntaxhighlight> |- | Komplexe Zahlen || <syntaxhighlight lang="C"> _Complex var; </syntaxhighlight> || <syntaxhighlight lang="C"> _Complex *ptr; </syntaxhighlight> |} C/C++ unterscheidet zwischen vorzeichenbehafteten <code>signed</code> und vorzeichenlosen <code>unsigned</code> ganzzahligen Datentypen. Vorzeichenlose Datentypen können nur positive Zahlen incl. der 0 aufnehmen (Anwendungsbereich bspw. Speicheradressen/Arrayindexe, welche nicht negativ sein können). Deren max. Zahlenwert ergibt sich aus der Datenbreite N des Datentyps 2<sup>N</sup>-1. Ein Vergleich eines vorzeichenlosen Datentyps mit ≥ 0 ist somit immer TRUE: <syntaxhighlight lang="C"> unsigned char var=0; if(var >= 0) //Bedingung ist immer erfüllt, so dass printf("Bedingung erfüllt"); //dieser ggf. vom Compiler wegoptimiert wird! for(var=10; var>=0; var--); //Endlosschleife! 0 dekrementiert ergibt 255 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> int main(int argc,char *argv[]) { unsigned char var=0; if(var >= 0) //Bedingung ist immer erfüllt, so dass printf("Bedingung erfüllt\n"); //dieser ggf. vom Compiler wegoptimiert wird! //Beim Öfffnen des Compiler-Fensters ist die IF-Anweisung nicht farblich //hervorgehoben. Dies bedeutet, dass diese Zeile wegoptimiert wurde und folglich //kein Maschinencode für diese Anweisung erzeugt wurde for(var=10; var>=0; var--) //Endlosschleife! 0 dekrementiert ergibt 255 printf("%u ",var),fflush(stdout); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Vorzeichenlose Datentypen halbieren den verfügbaren Zahlenbereich und 'weisen' dem oberen Wertebereich den negativen Zahlen zu.<br> Wird ein ganzzahliger Datentyp ohne Angabe des Vorzeichentyps (signedness) definiert, so ist diese vorzeichenbehaftet. Bei vorzeichenlosen Variablen muss explizit <code>unsigned</code> vorangestellt werden. Die Voranstellung von <code>signed</code> ist optional. Einzige Ausnahme stellt der Datentyp char dar. Hier gibt die Spezifikation keine default signedness vor, so dass bei Nutzung dieses Datentyps zur Aufnahme von Zahlen immer signed oder unsigned vorangestellt werden sollte!<br> Innerhalb des Formatstrings bei den printf()/scanf() Anweisungen '''muss''' die signedness vom Programmierer händisch berücksichtigt werden. Die Formatanweisung %d und %i interpretieren die übergebenen Zahl als vorzeichenbehaftete Zahl. Soll eine vorzeichenlose Zahl ausgegeben werden, so muss %u verwendet werden: <syntaxhighlight lang="C"> signed int vari=-10; unsigned int varu=3000000000; printf("vari=%d varu=%u",vari,varu); //Korrekt printf("vari=%u varu=%i",vari,varu); //Falsche Werteausgaben! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> int main(int argc,char *argv[]) { signed int vari=-10; unsigned int varu=3000000000; printf("vari=%12d varu=%12u\n",vari,varu); //Korrekt printf("vari=%12u varu=%12i\n",vari,varu); //Falsche Werteausgaben! return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Mit der Definition (dem Anlegen) einer Variablen eines Datentyps wird Speicher entsprechend der Größe des Datentyps reserviert. Optional kann dieser Speicher initialisiert werden. Über den Datentyp wird ausgesagt, wie der Inhalt des Speichers zu interpretieren ist: <syntaxhighlight lang="C"> char var1; //Speicherplatzreservierung von 1 Byte //Inhalt der Speicherstelle wird als Zahl interpretiert //(Hinweis: ASCII-Zeichen sind Zahlen) double var2=47.11; //Speicherplatzreservierung von 8 Byte //Inhalt der Speicherstellen wird als Gleitkommazahl //interpretiert (bestehend aus je einer Ganzzahl für //Mantisse und Exponent) short arr[10]; //Speicherplatzreservierung von 10*2 Byte //Inhalt der 10 Speicherstellen werden als Ganzzahl //interpretiert </syntaxhighlight> Die Funktionalität der Operatoren hängt vom Datentyp der Operanden ab. Der Plus-Operator angewendet auf ganzzahlige Operanden führt eine Ganzzahl Addition aus, angewendet auf gleitkomma Operanden eine Gleitkomma Addition. Ist einer der Operanden ein Zeiger, so wird eine Zeigeraddition angewendet. Für andere Datentypen ist der Plus-Operator nicht definiert, so dass der Compiler einen Fehler wirft. '''Bei der Betrachtung eines Ausdruckes sollte dem genutzten Datentypen folglich eine besondere Aufmerksamkeit zuteil werden''': <syntaxhighlight lang="C"> int vari=47; vari+12; //(int) + (int) → Ganzzahladdition float varf=12.3; 3.1415F+varf; //(float) + (float) → Gleitkommaaddition int *ptr=&vari; ptr+3; //(int *) + (int) → Zeigeraddition int arr[3]; arr+3; //(int (*)) + (int) → Zeigeraddition </syntaxhighlight> Das Ergebnis einer Operation hat ebenfalls einen Datentyp. Eine Ganzzahl Addition gibt bspw. als Ergebnis einen Ganzahl Datentyp zurück, eine Gleitkomma Addtition einen Gleitkomma Datentyp und ein Vergleichsoperator den Datentyp _Bool: <syntaxhighlight lang="C"> int vari1=47; int vari2=11; vari1 + 12 + vari2; //((int)+(int)+(int))→((int)+(int))→(int) 40 < vari1 < 50; //((int)<(int)<(int))→((_Bool=int)<(int))→(_Bool=int) </syntaxhighlight> Wie Operatoren haben auch Funktionen Operanden (in Form von Übergabeparameter). Das Ergebnis eines Funktionsaufrufes wird ebenfalls in Form eines Datentyps zurückgegeben: <syntaxhighlight lang="C"> float add(int par1,par2) {return par1+par2;} int vari1=47; int vari2=11; vari1 + add(var2,12); //(int)+((int),(int)→(float))→(int)+(float)→(float) </syntaxhighlight> Wird auf einen Operator gleichermaßen ein vorzeichenbehafteter und ein vorzeichenloser Operand angewendet, so kann es zu unerwarteten Konvertierungsproblemen führen: <syntaxhighlight lang="C"> unsigned char varu=12; signed char vars=-12; float varf; varf = varu + vars; if(vars < varu) </syntaxhighlight> Sind die Datentypen der Operanden nicht 'kompatibel', so 'passt' der Compiler die Datentypen im Falle von Ganzahl und Gleitkomadatentypen per impliziter Regel an (siehe Kap. [[Programmieren in C/C++: Datentypen#Implizite Typumwandlung | Datentypen:Implizite Typumwandlung]]). Über explizite Typumwandlung (siehe Kap.[[Programmieren in C/C++: Datentypen# Explizite Typumwandlung|Datentypen:Explizite Typumwandlung]]) kann ein Datentyp z.T. in einen anderen Datentyp gewandelt werden. In allen anderen Fällen ist C Typsicher, d.h. der Compiler gibt zumindest eine Warning aus, wenn die Datentypen nicht identisch sind und der Compiler keine implizite Regel anwenden kann. Tipp: * Compiler gibt bei Fehlermeldung oftmals die erwarteten und die vorhandenen Datentyp an. Wenn solch eine Fehlermeldung kommt, sollten sie sich a) überlegen, was wollten sie syntaktisch geschrieben haben und b) was haben sie in der Tat geschrieben. Ein Google nach einer Lösung des Compilerproblems löst zumeist nicht das Problem, sondern umgeht es! Hinweis: * Ein guter Programmierer sollte die Datentypen so wählen, dass: :* die Datentypen zum Inhalt und zum Wertebereiches passen :* keine Datentypkonvertierungen notwendig sind : andernfalls besteht die Gefahr, dass hiermit Laufzeitfehler einprogrammiert werden. * Wenn Datentypkonvertierungen notwendig sind, sollte die explizite Konvertierung genutzt werden == Abhängigkeiten bzgl. Rechnerarchitektur == Kenngrößen von Prozessoren sind unter anderem die Anzahl der Bits für den Datentransport und für Arithmetisch-/Logische-Operationen (→ Datenbreite) und die Anzahl der Bits für die Adressierung des Speichers (→ Adressierungsbreite). Die Datenbreite sagt dabei aus, welche max. Datenbreite ein Maschinenbefehl (zumeist in einem Taktzyklus) transportieren/berechnen kann. Werden programmtechnisch größere Datenbreiten benötigt, bedingt dies, dass hierzu mehrere Maschinenbefehle notwendig sind. Wenn kleinere Datenbreiten notwendig sind, so wird oftmals das Ergebnis abgeschnitten (sofern der Prozessor keine Befehle für den Umgang mit kleineren Datentyp beherrscht): {| class="wikitable" |- ! 32-Bit Datentransport/Operation<br /> bei 32-Bit Datenbreite ! 64-Bit Datentransport/Operation<br /> bei 32-Bit Datenbreite ! 16-Bit Datentransport/Operation<br /> bei 32-Bit Datenbreite |- | <syntaxhighlight lang="C"> int32_t a32,b32; </syntaxhighlight> || <syntaxhighlight lang="C"> int64_t a64,b64; </syntaxhighlight> || <syntaxhighlight lang="C"> int16_t a16,b16; </syntaxhighlight> |- | <syntaxhighlight lang="asm"> // a32=b32; mov eax,b32 mov a32,eax </syntaxhighlight> || <syntaxhighlight lang="asm"> // a64=b64; mov eax ,b64 mov edx ,b64+4 mov a64 ,eax mov a64+4,edx </syntaxhighlight> || <syntaxhighlight lang="asm"> //a16=b16; movz eax,b16 mov a16,ax </syntaxhighlight> |- | <syntaxhighlight lang="asm"> // a32=a32+b32; mov edx, a32 mov eax, b32 add eax, edx mov a32, eax </syntaxhighlight> || <syntaxhighlight lang="asm"> // a64=a64+b64; mov ecx , a64 mov ebx , a64+4 mov eax , b64 mov edx , b64+4 add eax , ecx adc edx , ebx mov a64 , eax mov a64+4, edx </syntaxhighlight> || <syntaxhighlight lang="asm"> // a16=16+b16; movzx eax, a16 mov edx, eax movzx eax, b16 add eax, edx mov a16, ax </syntaxhighlight> |} Die Adressierungsbreite gibt an, mit welcher Bitbreite der Speicher adressiert werden kann: * Bei einem 32-Bit System können 2<sup>32</sup>=4.294.967.295=4Gi&nbsp;Bytes/Speicherstellen adressiert werden * Bei einem 16-Bit System können 2<sup>16</sup>=65.536=64Ki&nbsp;Bytes/Speicherstellen adressiert werden * Bei einem 64-Bit System können 2<sup>64</sup>=18.446.744.073.709.551.616 =16Ei ~18Exa&nbsp;Bytes/Speicherstellen adressiert werden Waren die Datenbreite und die Adressierungsbreite bei den ersten Prozessoren noch unterschiedlich, so sind diese heutzutage zumeist identisch. Bei einem 32-Bit Prozessor bedeutet dies, dass dieser max. 4Gi&nbsp;Bytes Speicherstellenstellen adressieren kann und Maschinenbefehle für den Datentransport und die Berechnung von 32-Bit Datenworten beinhaltet. Die Datenbreite und auch die Adressierungsbereite haben direkten Einfluss auf die Programmiersprache: * Wird defaultmäßig mit größerer Datenbreite gerechnet, als der Prozessor 'von Hause' aus unterstützt, so werden die erzeugten Maschinenprogramme größer und langsamer (Umgedreht bedeutet dies jedoch nicht, dass die Maschinenprogramme kleiner und schneller werden) * Die max. Größe von Verbunddatentypen und Arrays ergibt sich aus der Adressierungsbreite des Prozessors Die Intention der Programmiersprache C/C++ ist, die Prozessorarchitektur optimal zu nutzen. Dementsprechend sind diverse Eigenschaften der Sprache nicht fest spezifiziert, sondern von der Rechnerarchitektur abhängig. === Integer Datentyp === Intention von C/C++ ist, dass der Umgang mit dem Grunddatentyp 'int' möglichst direkt in einen Maschinensprachebefehl umgesetzt werden kann.<br /> Bei einem 16-Bit Prozessor hat der Datentyp int daher eine Breite von 16-Bit und bei einem 32-Bit Prozessor eine Breite von 32-Bit (siehe Kap [[Programmieren in C/C++: Datentypen # Ganzzahlige Datentypen|Datentypen:Ganzahl Datentypen]]). Über vorangestellte Qualifier kann dieser Grunddatentyp verkleinert/vergrößert werden. === Integer Arithmetik === Ganzzahlen haben nur einen begrenzten Wertebereich. Wird dieser bspw. durch eine Addition überschritten (d.h. das Rechenergebnis benötigt zur Darstellung mehr Stellen, als der Datentyp 'hergibt'), so gibt es zwei Vorgehensweisen: * Arithmetischer Überlauf (siehe {{w|arithmetischer Überlauf}}): Die nicht speicherfähigen Stellen werden verworfen, so dass i.d.R. ein falsches Ergebnis erzeugt wird! :Beispiel: :<syntaxhighlight lang="C"> unsigned char a=254,b=3,c; c=a+b; //c ist (254+3)%256=1 c=a*b; //c ist (254*3)%256=250 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { unsigned char a=254,b=3,c1,c2; c1=a+b; //c ist (254+3)%256=1 c2=a*b; //c ist (254*3)%256=250 printf("c1=%hhu c2=%hhu\n",c1,c2); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Sättigungsarithmetik (siehe {{w|Sättigungsarithmetik}}): Alle Operationen laufen innerhalb eines festen Intervalls ab, so dass Überläufe und Unterläufe auf dieses Intervall begrenzt werden: :Beispiel: :<syntaxhighlight lang="C"> unsigned char a=254,b=3,c; c=a+b; //c ist MAX((254+3),255)=255 c=a*b; //c ist MAX((254*3),255)=255 </syntaxhighlight> Die Spezifikation von C macht bezüglich der zu nutzenden Methodik keine Vorgaben, so dass das Handling von der ALU des Prozessors abhängt. Aus Komplexitäts- und Geschwindigkeitsgründen ist dies zumeist der arithmetische Überlauf. Nur bei Spezialprozessoren (z.B. DSP Digital Signal Processor) kommt z.T. die Sättigungsarithmetik zum Einsatz. === Gleitkomma Datentyp und Arithmetik === Für den Umgang mit Gleitkommazahlen bieten einige Prozessoren spezielle Recheneinheiten ({{w|Gleitkommaeinheit}} Floating Point Units FPU) an. Sowohl die Darstellung von Gleitkommazahlen als auch das Verhalten bei Überlauf/Unterlauf ist damit Herstellerabhängig. Um auch diese Einheiten effektiv nutzen zu können, ist die C/C++ Spezifikation in diesem Bereich ebenfalls sehr offen. === Max. Speicherbedarf von Variablen === Die maximale Größe von Arrays/Strukturen/Unions ist in C/C++ von der zugrundeliegenden Rechnerarchitektur abhängig: <syntaxhighlight lang="C"> char a[100000]; //Speicherbedarf=100.000*1Byte=100.000 Bytes //Bei 16-Bit Architektur KO //Ab 32-Bit Architektur OK struct size_16 { char a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_256 { struct size_16 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_4096 { struct size_256 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_65536 { struct size_4096 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_65536 var65536; //Speicherbedarf=65536 Bytes //Bei 16-Architektur KO //Ab 32-Architektur OK </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Zur Darstellung bitte Compiler-Fenster öffnen //und dort den CC65-Compiler für den 6502 Prozessor auswählen char a[100000]; //Speicherbedarf=100.000*1Byte=100.000 Bytes //Bei 16-Bit Architektur KO //Ab 32-Bit Architektur OK struct size_16 { char a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_256 { struct size_16 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_4096 { struct size_256 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_65536 { struct size_4096 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_65536 var65536; //Speicherbedarf=65536 Bytes //Bei 16-Architektur KO //Ab 32-Architektur OK int main(int argc,char *argv[]) { return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Im Falle von globalen Variablen erzeugt der Compiler/Linker eine Fehlermeldung. Werden von diesen Datentypen Variablen als lokale Variablen angelegt, so erzeugt dies zur Laufzeit einen Stackoverflow. === Zeigervariable === Eine Zeigervariable ist eine Variable, die eine Speicheradresse speichert. Die Größe dieses Datentyps hängt von der Adressierungsbreite des Prozessors ab. Unabhängig von dem Datentyp, auf den die Zeigervariable zeigt, ergibt sich folgende Breite: * 4-Byte bei einer 32-Bit Rechnerarchitektur * 8-Byte bei einer 64-Bit Rechnerarchitektur * 2-Byte bei einer 16-Bit Rechnerarchitektur === Datentyp size_t === Die maximale Größe von Arrays/Strukturen/Unions ist in C von der zugrundeliegenden Rechnerarchitektur abhängig. Sie ergibt sich aus der Adressierungsbreite. Da die Datenbreite des Datentyps int zumeist kleiner als die Adressierungsbreite ist, existiert in C/C++ der vorzeichenlose Datentyp size_t.<br /> Alle Funktionen, welche den Speicherbedarf übergeben bekommen, bzw. zurückgeben (bspw. strlen(), memcpy(), sizeof()) , nutzen den Datentyp size_t: <syntaxhighlight lang="C"> //Prototypen size_t strlen(char *str); //Die max. Stringlänge ist durch den //adressierbaren Speicher vorgegeben void *malloc(size_t size); void *memcpy(void *dest, const void *src, size_t n); </syntaxhighlight> Der Datentyp size_t ist in der Header-Datei stddef.h der Standard-C-Library per typedef gesetzt. Im Normalfall muss diese Header-Datei nicht explizit inkludiert werden, da bei Nutzung von z.B. strlen() diese bereits durch die Header-Datei string.h inkludiert wird: <syntaxhighlight lang="C"> typedef unsigned long long size_t; //Bei einer 64-Bit Rechnerarchitektur </syntaxhighlight> Hinweis: * Der Datentyp size_t ist immer ein vorzeichenloser Datentyp (es gibt keine negativen Speicheradressen). * Mit dem Datentype ssize_t wird eine vorzeichenbehaftete Variante zur Verfügung gestellt, welche hilfreich ist, wenn Speicheradresse subtrahiert werden sollen. * Soll der Wert vom Datentyp size_t mittels printf() ausgegeben werden, so ist der 'Length Modifier' z und der 'Conversion Specifier' u zu nutzen: :<syntaxhighlight lang="C"> size_t var=strlen("String"); printf("%zu",var); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc,char *argv[]) { size_t var=strlen("String"); printf("%zu",var); printf("%d",var); //Hier sollte es eine Compiler-Warning geben! return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Boolescher-Datentype/Operatoren == Ursprünglich gab es den booleschen Datentyp in der Programmiersprache C nicht. Mit C99 wurde zwar der Datentyp <code>_Bool</code> eingeführt, dies änderte jedoch nicht den Umgang mit Anweisungen und Operatoren, die einen booleschen Datentyp erwarten/zurückgeben! An allen Stellen, an denen ein boolescher Datentyp erwartet wird (z.B. IF-Abfrage, bei booleschen Operationen) wird der Datentyp Ganzzahl, Gleitkommazahl oder Zeiger erwartet (= Scalar-Type) und ausgewertet. Der hierin gespeicherte Zahlenwert sagt aus, ob diese Zahl als True oder False zu interpretieren ist: * False, wenn Ganzzahl gleich 0 oder Gleitkommazahl gleich 0.0 oder Zeiger gleich NULL * True, wenn Ganzzahl ungleich 0 oder Gleitkommazahl ungleich 0.0 oder Zeiger ungleich NULL Beispiel: <syntaxhighlight lang="C"> int a=3; double b=0.0; int *ptr=&a; while(1); if(a) {} for( ; b && ptr ; ); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=3; double b=0.0; int *ptr=&a; while(0); if(a) {} for( ; b && ptr ; ) {} return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Operatoren, welchen einen booleschen Wert zurückliefern (Vergleichs-Operatoren und Boolesche-Operatoren), liefern ein Integer-Datentyp zurück: * (int)0 für False * (int)1 für True Beispiel: <syntaxhighlight lang="C"> int a=3; int b= (a==3); //b=1 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=3; int b= (a==3); //b=1 printf("%d",b); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} In den if()/for()/while() Anweisungen ist folglich kein explizites Konvertieren eines Ganzzahl-/Gleitkomma-/Zeigerwertes mittels des Vergleichs-Operators in einen Booleschen Wert notwendig: <syntaxhighlight lang="C"> int a; double b; if(a) //entspricht if(a!=0) if(!b) //entspricht if(b==0.0) while(1) //entspricht while(True) for(int lauf=1; lauf ; lauf--); </syntaxhighlight> Umgedreht kann ein boolescher Wert oder auch das Ergebnis einer booleschen Operation direkt mit einer Ganzzahl- oder Gleitkommazahl verknüpft werden: <syntaxhighlight lang="C"> int a=3,b=2; a=a+1 && 7 << 3 & a==3; if( a==1 & b==2) if(3 < a < 9) //Vorsicht, die Schreibweise lässt ein //anderes Verhalten erwarten! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=3,b=2; a=a+1 && 7 << 3 & a==3; printf("%d\n",a); if(a==1 & b==2) printf("true\n"); else printf("false\n"); if(3 < a < 9) if( (a==1) & (b==2)) printf("true\n"); else printf("false\n"); return 0; } | execCompilerOptions=| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Mit C99 wurde der Datentyp <code>_Bool</code> eingeführt. Dieser entspricht weiterhin einem Integerdatentyp mit der Besonderheit, dass beim Zuweisen eines Wertes dieses auf true oder false geprüft wird und Variablen dieses Datentyps nur die Werte 0 oder 1 annehmen können: <syntaxhighlight lang="C"> _Bool var1=12; printf("var1=%d\n",var1); //→ 1 float var2=13.2; var1=var2; printf("var1=%d\n",var1); //→ 1 var1--; //Post/Pre Inkrement/Dekrement in C++ nicht auf Datentyp bool! möglich printf("var1=%s\n",var1?"true(1)":"false(0)"); //→ false </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { _Bool var1=12; printf("var1=%d\n",var1); //→ 1 float var2=13.2; var1=var2; printf("var1=%d\n",var1); //→ 1 var1--; //Post/Pre Inkrement/Dekrement in C++ nicht auf Datentyp bool! printf("var1=%s\n",var1?"true(1)":"false(0)"); //→ false return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Für den einfacheren Umgang mit dem 'neuen' Datentyp wurde in der Header-Datei <code>stdbool.h</code> die Makros <code>true</code> (als Austauschwert für die Ganzzahl 1) und <code>false</code> (als Austauschwert für die Ganzahl 0) definiert. Ergänzend wird hier der Datentyp <code>bool</code> als Alias auf <code>_Bool</code> gesetzt. <syntaxhighlight lang="C"> #include <stdbool.h> bool foo(int par,int min,int max) { if((par >= min) && (par <= max)) return true; else return false; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdbool.h> bool foo(int par,int min,int max) { if((par >= min) && (par <= max)) return true; else return false; } int main(int argc,char *argv[]) { foo(4,3,6); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * In C++ gibt es anstatt des Datentypes <code>_Bool</code> den Datentyp <code>bool</code>. Auch sind die beiden Konstanten <code>true</code> und <code>false</code> ohne zusätzliches Einbinden der Header-Datei vorhanden. Der weitere Umgang ist jedoch identisch zu C. == Literale/Konstanten == Zahlenwerte und Strings im Source-Code werden vom Compiler in binäre Zahlen umgerechnet. Über der Schreibweise/Syntax der Literale/Konstanten wird dem Compiler gesagt, in welchem Zahlenformat die Zahl auf Source-Code Ebene beschrieben ist und welchem Datentyp sie entspricht. Unabhängig wie die Konstanten im Source-Code beschrieben sind, werden die Zahlen intern als binäre Zahlen gespeichert. Beispiele, wie die Zahlen intern gespeichert werden: <syntaxhighlight lang="C"> int var=17; //0000 0000 0000 0000 0000 0000 0001 0001 short var=0x307;// 0000 0011 0000 0111 char var=017; // 0000 1111 int var=-1; //1111 1111 1111 1111 1111 1111 1111 1111 float var=0.0; //0000 0000 0000 0000 0000 0000 0000 0000 float var=1.0; //0011 1111 1000 0000 0000 0000 0000 0000 </syntaxhighlight> === Ganzzahl-Konstanten === Im Allgemeinen ordnet der Compiler einer numerischen, ganzzahligen Konstanten den kleinstmöglichen Datentyp beginnend vom Datentyp integer zu. Sobald der Wert der Konstanten den Wertebereich von integer übersteigt, wird der nächst größere passende Datentyp gewählt. Ergänzend gilt, dass alle Ganzzahl-Konstanten als vorzeichenbehaftete Ganzzahl-Konstanten angesehen werden!<br /> Beispiele für integer Konstanten: <pre> 123 +123 -123 → Formal wird das Minus als Operator angesehen und die positive Zahl 123 negiert 0x123 → Konstante ist in hexadezimaler Schreibweise notiert 0123 → Konstante ist in oktaler Schreibweise notiert 0b011 → Konstante ist in binärer Schreibweise notiert nicht offizieller C-Syntax, wird aber von vielen Compiler unterstützt ab C23-Spezifikation offiziell im C-Syntax enthalten! 6'432'108 → Tausendertrenner Nur in C++ Spezifikation enthalten ab C23-Spezifikation auch im C-Syntax enthalten. 5123123123 → Wertebereich größer als 2^31 so dass automatisch zum nächst größeren Datentyp konvertiert wird </pre> Mit den Suffixen L/l und LL/ll kann der Datentyp long und long long erzwungen werden: <pre> 12L → Konstante wird in eine long Integer Konstante konvertiert 4711LL → Konstante wird in eine Long Long Konstante konvertiert </pre> Mit dem Suffix U/u kann die Konstante explizit auf unsigned gesetzt werden: <pre> 12U → Konstante wird als vorzeichenlose Zahl gesepeichert 4711ULL → Konstante wird in eine vorzeichenlose Long Long Konstante konvertiert </pre> === Char-Konstanten === In einfachen Anführungsstrichen geschriebene ASCII Zeichen werden entsprechend der {{w|American Standard Code for Information Interchange | ASCII-Tabelle}} als Zahlenwert (Datentyp int) dargestellt: <pre> 'A' → Integerkonstante 65 'a' → Integerkonstante 97 … </pre> Über den {{w|Escape-Sequenz|Escape-Operator}} (Zeichen Backslash '\') wird das/die dem ESCAPE Operator folgende Zeichen gesondert interpretiert. Die im Source-Code erhaltene Zeichenfolge wird im Computerprogramm als ein Zahlenwert (Datentyp int) gespeichert. Dies ist u.A. zur Darstellung von ' und " aber auch zur Darstellung der unteren 32 Zeichen der ASCII Tabelle notwendig (Siehe auch {{w|Steuerzeichen}}) <pre> ESCAPE Integer- → Bedeutung / (Terminal)funktionalität Sequence konstante '\0' = 0 → 0 Character = Stringendezeichen '\a' = 7 → Bell (erzeugt auf dem Terminal einen Ton) '\b' = 8 → Backspace (Bewegt den Cursor um eine Position nach links) '\t' = 9 → Horizontal Tab (Bewegt den Curso auf die nächste horizontale Tabulatorposition, Abstand ist Terminalspezifisch) '\n' = 10 → NewLine (Zeilenvorschub) '\v' = 11 → Vertial Tab '\r' = 13 → Carriage Return (Wagenrücklauf, Bewegt den Cursor an den Zeilenanfang) '\"' = 34 → Double Quote '\'' = 39 → Single Quote '\?' = 63 → Question mark '\\' = 92 → Backslash '\f' = 12 → FormFeed (Erzeugt auf dem Terminal/Drucker einen Seitenvorschub) '\ooo' = 0ooo → Oktal, wobei o Digits von 0..7 sein müssen '\xdd' = 0xdd → Hexadezimal, wobei d Digits von 0..9 A..F sein müssen '\udddd' Unicode mit 4 Digits '\Udddddddd' Unicode mit 8 Digits </pre> Beispiel <syntaxhighlight lang="C"> 'A' == 65 == '\101' == '\x41' == '\u0041' == '\U00000041' </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { //Programmiersprache wurde auf C++ gesetzt if('A' == 65) printf("'A' == 65\n"); if('A' == '\101') printf("'A' == '\\101'\n"); if('A' == '\x41') printf("'A' == '\\x41'\n"); if('A' == '\u0041') printf("'A' == '\\u0041'\n"); if('A' == '\U00000041') printf("'A' == '\\U00000041'\n"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true| lang=c++ }} Öffnen im Compiler Explorer] }} Über Prefixe können alternative Zieldatentypen/Konvertierungen erzwungen werden: <pre> u'b' → unicode 16 (nur C++) U'b' → unicode 32 (nur C++) L'b' → wchar_t </pre> Hinweis * Die ASCII-Tabelle basiert auf einer 7-Bit Zeichenkodierung, so dass bspw. die Umlaute 'ä', 'ö' und 'ü' dort nicht kodiert sind. Sollen auch diese Zeichen genutzt werden, so empfiehlt sich der Datentyp wchar_t === Gleitkommakonstanten === Alle Gleitkommakonstanten sind ohne weitere Angaben vom Datentyp double! <pre> 555.12 555. → 555.0 .1 → 0.1 4e2 → 400.0 0x22.11p13 → Konstante in Hexadezimalen Schreibweise (ab C99) </pre> Über Suffixe kann ein alternativer Datentyp erzwungen werden: <pre> 3.0F → Datentyp float 3.0l → Datentyp long double </pre> Hinweis: * Aufgrund der unterschiedlichen Basis zwischen dem menschlichen Zehner-System und dem computerinternen Binär-System entstehen insbesondere bei den Nachkommastellen Rundungsfehler. Die Konstante 0.1f wird durch die Wandlung intern als 1.00000001490116119384765625e-1 dargestellt * Die C-Spec verlangt, dass die binäre Repräsentation von Gleitkommazahlen zur Laufzeit (z.B. durch die Funktion atof() strtod() scanf("%f")) identisch zur der zur Compilezeit ist. Beispiel: :<syntaxhighlight lang="C"> if(3.14==atof("3.14")) printf("muss erfüllt sein"); //3.14 wird vom Compiler in ein Binärwert gewandelt //Der String "3.14" wird zur Laufzeit mittels atof in ein Binärwert gewandelt //Beide Wandlungsergebnisse müssen identisch sein </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { if(3.14==atof("3.14")) printf("muss erfüllt sein\n"); //3.14 wird vom Compiler in ein Binärwert gewandelt //Der String "3.14" wird zur Laufzeit mittels atof in ein Binärwert gewandelt //Beide Wandlungsergebnisse müssen identisch sein printf("Intern wird 3.14 wie folgt dargestellt %14.20f",3.14); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Konstanten Ausdrücke === Ergänzend zu den Zahlenwerten werden auch Ausdrücke durch den Compiler ausgewertet. Als Voraussetzung für die Ausdrücke gilt, dass alle Operatoren Literale/Konstante sein müssen, so dass der Compiler die Berechnung durchführen kann. Als Operatoren können alle im normalem Syntax erlaubten Operatoren (z.B.: +,-,*,/,&,&&,|,||,>>,<<,==,!=) genutzt werden.<br /> Beispiel: <syntaxhighlight lang="C"> int var1=7*3+5; → wird vom Compiler durch 26 ersetzt int var2=(4710+(8-1))&-8; → wird vom Compiler durch 4712 ersetzt var1=4*4*var1+77*(77%3); → wird vom Compiler durch 16 * var1 + 154 ersetzt </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { int var1=7*3+5; //→ wird vom Compiler durch 26 ersetzt int var2; var2=(4710+(8-1))&-8; //→ wird vom Compiler durch 4712 ersetzt var1=4*4*var1+77*(77%3); //→ wird vom Compiler durch var1 * 16 + 154 ersetzt return 0; } | execCompilerOptions=-Wall| h=g| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Konform zur C-Spezifikation bieten einige Compiler weitere Operatoren aus der math.h Library an (z.B. sin(), cos(), ...). Bestehen die Aufrufparameter aus Konstanten, so ersetzt der Compiler den Ausdruck durch die 'Ergebnis'-Konstante: :<syntaxhighlight lang="C"> int var3=sin(1.0)*10; →wird vom Compiler durch 8 ersetzt </syntaxhighlight> * Konstanten Ausdrücke werden durch den Präprozessor ausgewertet, so dass dieser die Ergebnisse ebenfalls nutzen kann: :<syntaxhighlight lang="C"> #define BUF_SIZE 512 #if (BUF_SIZE & (BUF_SIZE -1)) != 0 #endif </syntaxhighlight> === String Konstanten === Stringkonstanten erzeugen ein Array von Characters. Mit dem abschließenden Hochkommata wird das Array um ein Stringendezeichen ergänzt: <pre> "abc" → (char []) {'a','b','c','\0'} </pre> Adjacent Strings Konstanten werden vom Compiler zu einer String-Kontante zusammengefasst, so dass nur ein Stringendezeichen vorhanden ist: <pre> "xxx" "yyy" → (char []) {'x','x','x','y','y','y','\0'} </pre> Über Prefixe können alternative Zieldatentypen/Konvertierungen erzwungen werden: <pre> L"string" → (wchar_t[7]){L's',L't',L'r' …) </pre> Über Postfixes können in C++ Objekte erzeugt werden: <pre> "string"s → erzeugt einen String vom Datentyp std::string "string"sw → Erzeugt einen String vom Datentyp std::string_view </pre> String Konstanten werden Compilerintern über unnamed Variablen realisiert, welche als globale Variable angelegt werden und per default const sind: <syntaxhighlight lang="C"> printf("Wert=%d",4); //entspricht const char unnamed1[]="Wert=%d"; printf(unnamed1,4); //String Konstanten sind per Default Konstant char *str="hallo"; //Typkonflikt!, da "hallo" vom Datentyp const char[] ist str[0]='H'; //Laufzeitfehler, da nun schreibender Zugriff auf im //Readonly Speicher angelegt Variable. </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { printf("Wert=%d\n",4); //entspricht const char unnamed1[]="Wert=%d\n"; printf(unnamed1,4); fflush(stdout); //Zur Darstellung der Ausgabe, da nachfolgend //das Programm abstürzt und die gepufferte Ausgabe //nicht zur Anzeige gebracht wird //String Konstanten sind per Default Konstant char *str="hallo"; //Typkonflikt!, da "hallo" vom Datentyp const char[] ist str[0]='H'; //Laufzeitfehler, da nun schreibender Zugriff auf im //Readonly Speicher angelegt Variable. return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Für doppelte String Konstanten wird nur einmal Speicher reserviert: <syntaxhighlight lang="C"> const char *str1="hallo"; const char *str2="hallo"; if(str1==str2) printf("Identische Startadressen"); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { const char *str1="hallo"; const char *str2="hallo"; if(str1==str2) printf("Identische Startadressen"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Initialisierungsliste / Compound Literal == Arrays, Strukturen und Unions bestehen zumeist aus mehreren Elementen. Zur Initialisierung solcher Variablen werden die Initialisierungswerte in geschweiften Klammern als Initialisierungsliste zusammengefasst. <code> Syntax: {Initialisierungsliste} </code> Für eine Initialisierungsliste wird kein Speicher vorgehalten. Vielmehr wird bei der Variablendefinition die Variable direkt mit dem Inhalt der Liste initialisiert. Der Datentyp der Initialisierungsliste ergibt sich aus dem Datentyp der zu initialisierenden Variable: <syntaxhighlight lang="C"> int arr[5] = { 1,2,3,4,5 }; struct xyz { int x,y,z;}; //Definition einer Struktur struct xyz var = { 1,2,3 }; </syntaxhighlight> Wird der Initialisierungsliste ein Datentyp in runden Klammern vorangestellt, so wird hiermit eine 'unnamend' Variable/Objekt, ein Compound Literal erstellt: <code> Syntax: (type) {Initialisierungsliste} </code> Ein Compound Literal entspricht einer anonymen Variablen des angegebenen Datentyps. Wie bei einer normalen Variablendefinition wird hier ebenfalls eine Variable angelegt und diese mit den Initialisierungswerten initialisiert. Im Unterschied zu einer normalen Variable kann auf solch eine Variable im Nachgang nicht mehr zugegriffen werden. Der Rückgabewert eines Compound Literals entspricht somit dem einer Variablen.</br> Compound Literale bieten sich überall dort an, wo Variablen nur für einen einmaligen Zweck angelegt werden (bspw. bei der Parameterübergabe von Funktionen): <syntaxhighlight lang="C"> struct point {int x; int y;}; drawline((struct point){1,2},(struct point){2,3}); printarray((int []){1,2,3,4}); //entsprechen struct point unnamed1={1,2},unnamed2={2,3}; drawline(unnamed1,unnamed2); int unnamed3[]={1,2,3,4}; printarray(unnamed3); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct point {int x,y;}; void drawline(struct point start,struct point end) { printf("Linie von (%d,%d) nach (%d,%d)\n",start.x,start.y,end.x,end.y); } void printarray(int arr[4]) { printf("[ "); for(size_t idx=0;idx<4;idx++) printf("%d ",arr[idx]); printf("]\n"); } #include <stdlib.h> int main(int argc,char *argv[]) { struct point {int x; int y;}; drawline((struct point){1,2},(struct point){2,3}); printarray((int []){1,2,3,4}); //entsprechen struct point unnamed1={1,2},unnamed2={2,3}; drawline(unnamed1,unnamed2); int unnamed3[]={1,2,3,4}; printarray(unnamed3); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Über den Adressoperator kann auch die Adresse der anonymen Variablen ermittelt werden. In diesem Falle ist dann der Gültigkeitsbereich/-dauer des Compound Literals zu berücksichtigen. Wird eine Compound Literals außerhalb eines Block-Scopes angelegt, so entspricht sie einer globalen Variable, andernfalls einer lokalen Variablen. Außerhalb des Gültigkeitsbereiches verliert die Adresse auf solch eine Variable ihre Gültigkeit: <syntaxhighlight lang="C"> drawlinep( &(struct point){1,2},&(struct point){2,3}); //entspricht struct point unnamed1={1,2},unnamed2={2,3}; drawlinep( &unnamed1, &unnamed2); struct point1, *point2; { //Block-Scope, zwecks Darstellung von lokalen Variablen point1= (struct point){1,2}; //Compound Literal entspricht hier //Initialisierungswert für point1 point2=&(struct point){3,4}; //Compound Literal ist nur in diesem //Block gültig drawlinep(&point1 /*OK*/, point2 /*OK*/); } drawlinep(&point1 /*OK*/, point2 /*KO*/); //Zeiger zeigt auf nicht mehr //gültigen Speicherbereich </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct point {int x,y;}; void drawlinep(struct point *start,struct point *end) { printf("Linie von (%d,%d) nach (%d,%d)\n",start->x,start->y,end->x,end->y); } #include <stdlib.h> int main(int argc,char *argv[]) { drawlinep( &(struct point){1,2},&(struct point){2,3}); //entspricht struct point unnamed1={1,2},unnamed2={2,3}; drawlinep( &unnamed1, &unnamed2); struct point point1, *point2; { //Block-Scope, zwecks Darstellung von lokalen Variablen point1= (struct point){1,2}; //Compound Literal entspricht hier //Initialisierungswert für point1 point2=&(struct point){3,4}; //Compound Literal ist nur in diesem //Block gültig drawlinep(&point1 /*OK*/, point2 /*OK*/); } drawlinep(&point1 /*OK*/, point2 /*KO*/); //Zeiger zeigt auf nicht mehr //gültigen Speicherbereich } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * Compound-Literal sind per Default keine Konstanten, können also zur Laufzeit geändert werden (siehe Kap. [[Programmieren in C/C++: DatentypeSpecifier#Const Type Qualifier|DatentypeSpecifier:Const Type Qualifier]]): :<syntaxhighlight lang="C"> float *arr=(float []){1.1,2.2,3.3}; //Kein Typkonflikt arr[0]=47.11; //Änderung des 'Konstanten' arr[0] ist möglich </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { float *arr=(float []){1.1,2.2,3.3}; //Kein Typkonflikt arr[0]=47.11; //Änderung des 'Konstanten' arr[0] ist möglich return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Die geschweiften Klammern <code>{ }</code> sind nicht mit dem Block-Operator (siehe [[Programmieren in C/C++: Grundlagen#Block / Compound-Statement | Block / Compound-Statement]]) zu verwechseln. Werden die geschweiften Klammern bei der Initialisierung von Variablen genutzt, dann beschreibt der Inhalt der geschweiften Klammern eine Initialisierungsliste. Wird diesen ein Datentyp vorangestellt, dann wird hiermit eine Compound Literal definiert. == Variableninitialisierung == Mit der Definition einer Variable kann diese optional initialisiert werden. Der tatsächliche Zeitpunkt der Variableninitialisierung (zur Laufzeit oder zur Compilezeit) und damit die Ausführung der Initialisierung (Maschinensprachebefehle oder Speichervorbelegung) hängt von der Gültigkeit/Sichtbarkeit der Variablen ab(siehe [[Programmieren in C/C++: Grundlagen#Gültigkeit/Sichtbarkeit von Variablen| Gültigkeit/Sichtbarkeit von Variablen]]). === Globale + Static lokale Variablen === Globale und statisch globale Variablen werden in einem während der Laufzeit des Programms festen Speicherbereich gehalten. Zum Startzeitpunkt des Programms ist der Speicherplatz solch einer Variable mit dem Initialisierungswert gefüllt, so das bei erstmaliger Nutzung dieser Variablen diese ihre Initialisierungswerte enthalten. Die Belegung des Speicherplatzes erfolgt durch den Compiler, so dass als Initialisierungswerte / Inhalt der Initialisierungsliste nur Konstanten oder Konstanten-Ausdrücke (siehe [[Programmieren in C/C++: Grundlagen#Literale/Konstanten | Literale/Konstanten]]) erlaubt sind: <syntaxhighlight lang="C"> int g=1; //Speicherstelle der Variable g wird //mit 1 belegt short array[3]={1,1+1, sin(0.0)}; //Speicherstellen des Arrays wird //mit 1, 2 und 0 (Funktion sin() wird zur //Compilezeit ausgeführt) belegt </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> double sin(double); //DJ: Include-Anweisung in wikibooks schlägt fehlt int g=1; //Speicherstelle der Variable g wird //mit 1 belegt short array[3]={1,1+1, sin(0.0)}; //Speicherstellen des Arrays wird //mit 1, 2 und 0 (Funktion sin() wird zur //Compilezeit ausgeführt) belegt int main(int argc,char *argv[]) { printf("%hd %hd %hd\n",array[0],array[1],array[2]); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Nicht initialisierte globale und static lokale Variablen werden mit 0 initialisiert! D.h. die Speicherstellen dieser Variablen werden mit dem Wert 0 vorbelegt:: <syntaxhighlight lang="C"> int f; //f hat den Wert 0 double arr[10]; //Alle Elemente von arr werden mit 0.0 initialisiert! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int f; //f hat den Wert 0 double arr[10]; //Alle Elemente von arr werden mit 0.0 initialisiert! int main(int argc,char *argv[]) { printf("f=%d\n",f); printf("%f %f %f\n",arr[0],arr[1],arr[2]); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Lokale Variable === Der Speicherplatz für lokale Variable wird auf dem Stack zur Verfügung gestellt. Mit jedem öffnenden Block-Scope wird Speicher für die innerhalb dies Block-Scopes vorhandenen Variablen vom Stack nach dem LIFO Prinzip reserviert und mit der Variablendefinition Maschinencode zur Initialisierung der Speicherstellen ausgeführt (sofern Variable einen Initialisierungswert hat): <syntaxhighlight lang="C"> { //Öffnende Klammer erzeugt Maschinencode zur Speicherreservierung //von 4 Bytes (für int) und 8 Bytes (für double) int var1=12; //erzeugt Maschinencode zur Initialisierung //der ersten 4 Byte mit dem Wert 12 double var2=sin(f); //erzeugte Maschinencode, welche zunächst //die Funktion sin() mit dem Übergabewert f //aufruft und dessen Rückgabewert in die //nächsten 8 Byte des reservierten Speichers //kopiert ... { //siehe zuvor int var3=var1; //siehe zuvor double var4=var2+var1; } //siehe nachfolgenden } //Freigabe des zuvor reservierten Speichers </syntaxhighlight> Dies gilt auch für Funktionsaufrufe. Mit der öffnenden geschweiften Funktionsklammer wird ebenfalls Speicher reserviert: <syntaxhighlight lang="C"> void foo(int par) { //Öffnende Funktionsklammer erzeugt Maschinencode zur Speicherreservierung //von 4 Bytes (für (Übergabe)Variable par und 4 Bytes für Variable var int var; //Da keine Initialisierung vorhanden ist wird auch //kein Maschinencode zur Initialisierung ausgeführt { //Öffnende Klammer erzeugt Maschinencode zur Speicherreservierung //von 4 Byte für Variable x int x; ... </syntaxhighlight> Aufgrund der mit der Initialisierung bedingten Erzeugung von Maschinencode können die Initialisierungswerte/Inhalte der Initialisierungsliste bei lokalen Variablen aus beliebigen Ausdrücken bestehen und müssen keine Konstanten oder Konstanten Ausdrücke sein: <syntaxhighlight lang="C"> void foo(float f,float g) { float summe=f+g; //Initialisierungswerte float arr[3] = {f+f,g-f,sin(f)}; //werden zur Laufzeit berechnet } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> #include <math.h> //fuer sinf() void foo(float f,float g) { float summe=f+g; //Initialisierungswerte float arr[3] = {f+f,g-f,sinf(f)}; //werden zur Laufzeit berechnet printf("%f\n",(double)summe); printf("%f %f %f\n",(double)arr[0],(double)arr[1],(double)arr[2]); } int main(int argc,char *argv[]) { foo(3,4); return 0; } | execCompilerOptions=-Wall -lm| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Dieser Maschinencode wird jedes Mal ausgeführt, wenn die dazugehörige Anweisung abgearbeitet wird und bedingt dementsprechend Rechenzeit. Zehnmaliges Ausführen einer Funktion oder zehnmaliges Öffnen eines Block-Scopes innerhalb einer For-Schleife führt zur zehnmaligen Ausführung der oben genannten Sachverhalte: <syntaxhighlight lang="C"> void foo(int); void var(void) { for(int lauf=10; lauf>0; lauf--) { //zehnmaliges Reservieren von Speicher int var=lauf*2; //zehnmalige Initialisierung foo(var); } //Freigabe des Speichers } void foo(int par) { //zehnmaliges Reservieren von Speicher int var=12; //zehnmalige Initialisierung } //Freigabe des Speichers </syntaxhighlight> Nicht initialisierte lokale Variablen werden nicht initialisiert, d.h. keine zusätzlichen Maschinenbefehle zum Initialisieren erzeugt. Der Variablenwert entspricht dann einem 'Zufallswert' oder korrekter gesagt dem Inhalt der Variablen, welcher zuvor der Speicherstelle zugewiesen war: <syntaxhighlight lang="C"> int first(void) { int var_first=7; return var_first; } int second(void) { int var_second; //Variable var_second bekommt den identischen return var_second; //Speicherbereich wie var_first zugwiesen //und damit auch dessen zuletzt gültigen Wert } int main(int argc, char *argv[]) { int var1=first(); //var1 beinhaltet Wert 7 int var2=second(); //var2 beinhaltet Wert 7 printf("var_foo=%d\n",var1); printf("var_far=%d\n",var2); return 0; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> int first(void) { int var_first=7; return var_first; } int second(void) { int var_second; //Variable var_second bekommt den identischen return var_second; //Speicherbereich wie var_first zugwiesen //(und damit auch dessen zuletzt gültigen Wert) } int main(int argc, char *argv[]) { printf("%d\n",second()); //Zufallswert (0, da Stack mit 0 initialisiert ist) printf("%d\n",first()); //Stack belegen printf("%d\n",second()); //Zufallswert (7, da Speicherstelle zuvor mit 7 return 0; //belegt wurde) } | execCompilerOptions=| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Wird eine Variableninitialisierung mit einer switch oder goto Anweisung übersprungen, so wird zwar die Variable angelegt (Speicherplatz reserviert), jedoch die Maschinenbefehle zur Initialisierung dieser Variablen nicht ausgeführt (siehe auch [[Programmieren in C/C++: Grundlagen# Switch-Anweisung|Switch-Anweisung]] und [[Programmieren in C/C++: Grundlagen# Label + Goto|Label + Goto]]). Die Variable enthält dann einen Zufallswert: <syntaxhighlight lang="C"> switch(value) { case 0: int lok=7; printf("%d",lok); //OK, lok beinhaltet den Wert 7 break; default: printf("%d",lok); //KO, Variable lok vorhanden, //aber nicht initialisiert. D.h. Ausgabe einer break; //Zufallszahl } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> void foo(int value) { switch(value) { case 0: int lok=7; printf("%d\n",lok); //OK, lok beinhaltet den Wert 7 break; default: printf("%d\n",lok); //KO, Variable lok vorhanden, //aber nicht initialisiert. D.h. Ausgabe einer break; //Zufallszahl } } void far(void) { int var1=4711; int var2=1799; printf("Marke: %d, Erscheinungsjahr: %d\n",var1,var2); } int main(int argc,char *argv[]) { foo(2); //Zufallswert (0, da Stack mit 0 initialisiert ist) foo(0); //Initialisierungswert far(); //Stack belegen foo(2); //Zufallswert return 0; } | execCompilerOptions=| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Bei erstmaligem Funktionsaufruf kann eine nicht initialisierten lokale Variablen den Wert 0 beinhalten (Stackframe wird mit Programmstart auf 0 gesetzt). Beim nächsten Aufruf der Funktion ist zumeist die Speicherstelle der lokalen Variablen mit anderen Werten gefüllt worden, so dass nun ein anderer 'Zufallswert' als 'Initialisierungswert' enthalten ist === C++ === In C++ ist ergänzend die Initialisierung einer Variablen über () möglich. Bei Objekten wird hierüber der zugehörige Konstruktor aufgerufen. Bei primitiven Datentypen entspricht der Wert in den Klammern dem Initialisierungswert: <syntaxhighlight lang="C++"> int variable(10); //Bei primitiven Datentype entspricht dies //int variable=10; struct test { int a; test(int par) {a=par;} //Konstruktor der Struktur test }; struct test test(4); //Konstruktor test(int par) wird aufgerufen struct test test(4,5); //KO, kein passender Konstruktor vorhanden </syntaxhighlight> === Sonstiges === Folgende weitere Sachverhalten gilt es bzgl. Variableninitialisierung zu berücksichtigen: * Nach C-Spezifikation ist eine Initialisierung von Variablen nicht notwendig. Es liegt folglich kein Fehler vor, wenn auf eine nicht initialisierte Variable lesend zugegriffen wird. Ungeachtet der C-Spezifikation überprüft der Compiler mit dem Schalter '-Wall' diesen Sachverhalt und gibt eine Warning aus * Deklarationen/Prototypen können keinen Initialisierungswert enthalten <syntaxhighlight lang="C++"> extern int var=7; //Fehlerhaft </syntaxhighlight> * Const und lokale Static Variablen sollten initialisiert werden, auch wenn C in diesem Fall keinen Fehler meldet! <syntaxhighlight lang="C++"> const int konstante; //Syntaktisch OK, Initialisierungswert fraglich! static int statisch; </syntaxhighlight> == Anweisung (Statement) & Expression == Eine Anweisung (Statement) stellt entsprechend dem Wikipedia Artikel {{w|Anweisung_(Programmierung) | Anweisung}} ''"ein in der Syntax einer Programmiersprache formulierte einzelne Vorschrift dar, die im Rahmen der Abarbeitung des Programms auszuführen ist"''. Entsprechend der C-Spezifikation [C11 6.8] kann eine Anweisung aus: : labled-statement: Eine Sprungmarke für die Switch- und die Goto-Anweisung : compound-statement: siehe nachfolgendes Kapitel : expression-statement: siehe nachfolgendes Kapitel : selection-statement: Eine if() oder switch() Anweisung : iteration-statement: Eine while(), do while() oder eine for() Anweisung : jump-statement: Eine goto, break, continue oder return Anweisung Die einzelnen Statements können dabei aus weiteren Statements bestehen. === Ausdruck (Expression) === Entsprechend der C-Spezifikation [C11 6.5] ist ein Ausdruck eine Folge von Operatoren und Operanden, die die Berechnung eines Werts angibt, ein Objekt oder eine Funktion bezeichnet, Nebenwirkungen erzeugt oder eine Kombination davon ausführt. Die Wertberechnungen der Operanden eines Operators werden vor der Wertberechnung des Ergebnisses des Operators sequenziert (siehe auch {{w|lang=en|Expression_(computer_science)|Expression}}). Beispiele: <syntaxhighlight lang="C"> a=sqrt(a*a+b*b); //Ausdruck mit Nebenwirkungen int func(int par) { a++; return par*2;} b=func(1)*func(2); //Ausdruck mit undefinierten Verhalten a=++a + 1; a=for(lauf=10;lauf>0;lauf--); //for-Anweisung ist kein Ausdruck //d.h. liefert keinen Wert zurück </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> double sqrt(double); //DJ: Include-Anweisung in wikibooks schlägt fehlt int a=0; int func(int par) { a++; return par*2; } int main(int argc,char *argv[]) { int a=4,b=7; a=sqrt(a*a+b*b); //Ausdruck mit Nebenwirkungen b=func(1)*func(2); //Globale Variable a wird geändert! //Ausdruck mit undefinierten Verhalten a=++a + 1; //Kein Ausdruck a=for(lauf=10;lauf>0;lauf--); //for-Anweisung ist kein Ausdruck //d.h. liefert keinen Wert zurück return 0; } | execCompilerOptions=-Wall -lm| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Discarded Value === Discarded Value sind Ausdrücke, dessen Ergebnisse nicht verwendet werden (also keiner Variablen zugewiesen werden). Ergebnisse von Ausdrücken, die nicht verwendet werden, führen nicht zu einer Fehlermeldung: <syntaxhighlight lang="C"> int a=7; a; //Variable a wird gelesen, der Wert jedoch verworfen 7; //Konstante wird verworfen a+7; //Ergebnis wird Berechnet und verworfen printf("hallo"); //Printf hat einen Rückgabewert, dessen Wert verworfen wird </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=7; a; //Variable a wird gelesen, der Wert jedoch verworfen 7; //Konstante wird verworfen a+7; //Ergebnis wird Berechnet und verworfen printf("hallo"); //Printf hat einen Rückgabewert, dessen Wert verworfen wird return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * Soll bewusst der Rückgabewert verworfen werden, so kann/sollte mit dem explizten Cast auf (void) der Rückgabewert explizit 'verworfen' werden. Dies ist u.A. hilfreich bei Variablen, die (noch) nicht benutzt werden und der Compiler die Warning "unused Variable" ausgibt: :<syntaxhighlight lang="C"> (void)a; //Zur Vermeidung von Compiler-Warnings "Unused Variable" (void)(a+7); //hier eine explizte 'Ansage' der Verwerfung des Wertes (void)func(); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int func(void) { return 4711; } int main(int argc,char *argv[]) { int a; (void)a; //Zur Vermeidung von Compiler-Warnings "Unsued Variable" (void)(a+7); //hier eine explizte 'Ansage' der Verwerfung des Wertes (void)func(); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Mit der Anweisung <nowiki>[[nodiscard]]</nowiki> (ab C++17, ab C23) wird der Compiler angewiesen, dass der Aufrufer einer Funktion mit Rückgabewert der Rückgabewert entgegenzunehmen ist. Wird der Rückgabewert verworfen, so gibt der Compiler eine Fehlermeldung aus: :<syntaxhighlight lang="C"> [[nodiscard]] int Client(int socket); Client(5); ////Fehlermeldung, da Rückgabewert nicht verwendet wird </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> [[nodiscard]] int Client(int socket) { return socket+1; } int Server(int socket) { return socket+1; } int main(int argc,char *argv[]) { Server(5); //keine Fehlermeldung Client(5); //Fehlermeldung, da Rückgabewert nicht verwendet wird return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Java kennt Dicarded Values nicht. Ausnahme, es handelt sich um einen Funktionsaufruf, dessen Rückgabewert nicht genutzt wird. === Sequence Point === Ein Sequenzpunkt (u.A. das abschließende Semikolon am Ende der Anweisung) ist nach dem Wikipedia Artikel {{w|lang=en|Sequence_point|Sequence Point}} definiert als der Punkt in der Ausführung eines Computerprogramms, an dem garantiert ist, dass alle Nebenwirkungen früherer Bewertungen durchgeführt wurden und noch keine Nebenwirkungen von nachfolgenden Bewertungen durchgeführt wurden.<br /> Sequenzpunkte sind beispielsweise dann von Interesse, wenn dieselbe Variable innerhalb eines einzelnen Ausdrucks mehr als einmal geändert wird und die Ausführungsreihenfolge der Operationen nicht sauber spezifiziert ist.<br /> Ein oft zitiertes Beispiel ist der C-Ausdruck 'i=i++;'. Der Sequence Point garantiert, dass alle Operationen (hier Zuweisung und Postinkrement) ausgeführt sind. Jedoch ist die Ausführungsreihenfolge dieser beiden Operationen nicht spezifiziert. In Abhängigkeit des Zeitpunktes der Ausführung des Postinkrementes (vor oder nach der Zuweisung) kann i unterschiedliche Werte annehmen. In C und C++ führt die Auswertung eines solchen Ausdrucks zu undefiniertem Verhalten. Andere Sprachen, wie z. B. C#, definieren den Vorrang des Zuweisungs- und des Inkrementoperators so, dass das Ergebnis des Ausdrucks i=i++ garantiert ist.<br/> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int i=5; i=i++; printf("%d",i); //Gerne anderen Compiler auswählen, z.B. x86-64 icc... return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Weitere Sequence Points: * Beim ?-Operator stellt sowohl das ? als auch der : ein Sequenz Point dar. Zunächst muss der linke Ausdruck vollständig bearbeitet werden, bevor einer der beiden Bedingungen bearbeitet wird * Bei der logischen UND / ODER Funktion stellen der Operator ein Sequenz Point dar. Erst wird der linke Operand vollständig ausgeführt und ausgewertet, bevor (ggf.) der rechte Operand ausgewertet wird (siehe [[Programmieren in C/C++: Grundlagen#Logische Verknüpfungen | Logische Verknüpfungen]]) * Beim Komma-Operator stellen der Komma ein Sequence-Point dar (siehe [[Programmieren in C/C++: Grundlagen#Komma-Operator | Komma-Operator]]) • und weitere (siehe Appendix der C-Spec) Operationen, bei denen die Ausführungsreihenfolge nicht spezifiziert ist: * Bei Funktionsaufrufen ist die Abarbeitungsreihenfolge der Parameter nicht spezifiziert, so dass bspw.: :<syntaxhighlight lang="C"> //Aufrufruf einer Funktion, deren Parameter sich aus Funktionsaufrufen //ergeben (*pf[f1()]) (f2(), f3() + f4()); //pf -> Array von Funktionszeigern //Die Funktionen f1,f2,f3 und f4 können in einer beliebigen Reihenfolge //aufgerufen werden </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int f1(void) { printf("f1 called\n"); return 1; } int f2(void) { printf("f2 called\n"); return 2; } int f3(void) { printf("f3 called\n"); return 3; } int f4(void) { printf("f4 called\n"); return 4; } void func1(int par1,int par2) { printf("func1(%d,%d) called\n",par1,par2); } void func2(int par1,int par2) { printf("func2(%d,%d) called\n",par1,par2); } int main(int argc,char *argv[]) { void (*pf[2])(int,int)={func1,func2}; //Aufrufruf einer Funktion, deren Parameter sich aus Funktionsaufrufen //ergeben (*pf[f1()]) (f2(), f3() + f4()); //pf -> Array von Funktionszeigern //Die Funktionen f1,f2,f3 und f4 können in einer beliebigen Reihenfolge //aufgerufen werden //Gerne anderen Compiler auswählen, z.B. x86-64 icc... return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Per Postinkrement/-dekrement Operator sagt aus, dass für die eigentliche Operation der Wert der Variablen genutzt wird und im Anschluss die Variable erhöht / erniedrigt werden soll. Nach C-Spezifikation [C11 6.5.2.4] muss dies spätestens vor dem nächsten Sequence Point erfolgt sein. Der genaue Zeitpunkt innerhalb des Sequence Points ist jedoch nicht vorgegeben: :<syntaxhighlight lang="C"> int a=7; int b=a++ + a; //Ergebnis Abhängig, ob das Postinkrement vor der Addition //oder als letztes ausgeführt wird. a=a++ + 1; //dito </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=7; int b=a++ + a; //Ergebnis Abhängig, ob das Postinkrement vor der Addition //oder als letztes ausgeführt wird. a=a++ + 1; //dito printf("a=%d b=%d\n",a,b); //Gerne anderen Compiler auswählen, z.B. x86-64 icc... return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Abarbeitungsreihenfolgen / Prioritäten === Die Abarbeitungsreihenfolge der Operatoren wird durch die Prioritätenliste/Rangfolge (siehe [[C-Programmierung: _Liste_der_Operatoren_nach_Priorität| C-Programmierung:Liste der Operatoren nach Priorität]]) vorgegeben. Operatoren mit höherer Priorität werden vor Operatoren mit niedriger Priorität ausgeführt: <syntaxhighlight lang="C"> //Der Ausdruck c = sizeof(x) + ++a / 3; //wird aufgrund der Prioritäten wie folgt ausgewertet: c= (sizeof(x)) + ( (++a) / 3); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=2; int c; int x=0; c = sizeof(x) + ++a / 3; printf("a=%d c=%d\n",a,c); //Wird aufgrund der Prioritäten wie folgt ausgewertet: a=2; c= (sizeof(x)) + ( (++a) / 3); printf("a=%d c=%d\n",a,c); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Bei identischer Priorität ergibt sich die Abarbeitungsreihenfolge aus der Assoziativität (L-R oder R-L): <syntaxhighlight lang="C"> a=33 / 5 / 2; //Wird aufgrund der Assoziativität wie folgt ausgewertet. //a= (33 / 5) / 2; //und damit zu 3 und nicht zu 16 (bei 33 / (5/2)) ausgewertet. a = b = c = d*2; //→ a=(b=(c=(d*2))); a = b = 1+c = d; //→ a=(b=((1+c)=d)); //Compilerfehler, da //1+c kein lvalue ist </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a; a=33 / 5 / 2; printf("a=%d\n",a); //Wird aufgrund der Assoziativität wie folgt ausgewertet. //a= (33 / 5) / 2 printf("a=%d\n",a); //und damit zu 3 und nicht zu 16 (bei 33 / (5/2)) ausgewertet. int b,c,d=8; a = b = c = d*2; //→ a=(b=(c=(d*2))); printf("a=%d b=%d c=%d d=%d\n",a,b,c,d); a = b = 1+c = d; //→ a=(b=((1+c)=d)); //Compilerfehler, da //1+c kein lvalue ist return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Block / Compound-Statement === Ein Block oder Compound-Statement fasst Vereinbarungen und Anweisungen zu 'einer' Anweisung/Statement zusammen. Es kann überall dort eingesetzt werden, wo nur eine Anweisung erlaubt ist. <code> Syntax: {Declaration-or-statement-list/textsuperscript<sub>OPT</sub>} </code> Ein Block wird nicht wie bei einer Anweisung mit einem Semikolon abgeschlossen (Das angehängte Semikolon wäre dann eine separate leere Anweisung!). <br /> Ein Block hat blockweite Sichtbarkeit (siehe [[Programmieren in C/C++: Grundlagen#Blockweite Sichtbarkeit | Blockweite Sichtbarkeit]]), so dass hier definierte Variablen nur hier gültig sind. Deklarationen sind ebenfalls nur in dem Block gültig. <syntaxhighlight lang="C"> for(..) Anweisung; //For-Schleife führt nur diese eine Anweisung aus for(…) {Block} //For-Schleife führt Block (als eine Anweisung) aus if(..) Anweisung; else Anweisung; //IF-Anweisung führt nur 'eine' //Anweisung aus if(..) {Block} else {Block} //IF-Anweisung führt Block aus if( ) {Block}; else {Block}; //Semikolon ist eine separate //Leer-Anweisung, so dass else //nicht zur IF-Anweisung zugeordnet //werden kann (2 Anweisungen vor Else) void foo(void) { int var1; { //Block innerhalb von Block als Strukturierungswerkzeug int var2; struct xyz{int x,y,z}; //Defintion eines Datentyps im Block struct xyz var3; } struct xyz var4; //KO, Datentyp hier nicht mehr bekannt } </syntaxhighlight> Die GNU-C Reference (nicht C++) erlaubt es, Funktionen innerhalb von Blöcken (und damit auch innerhalb von Funktionen) zu definieren. Diese innere Funktion steht dann nur in diesem Block zur Verfügung und kann ergänzend auf Variablen des umgebenden Blockes zugreifen: <syntaxhighlight lang="C"> void foo(void) { { int label=1; //Funktion innerhalb einer Funktion void dummy(void){ label++; //Zugriff auf Variablen des umschließenden Blockes } dummy(); //Aufruf der nur in diesem Block gültigen Funktion } dummy(); //KO, Funktion hier nicht mehr gültig } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void foo(void) { { int label=1; //Funktion innerhalb einer Funktion void dummy(void){ label++; //Zugriff auf Variablen des umschließenden Blockes } dummy(); //Aufruf der nur in diesem Block gültigen Funktion } dummy(); //KO, Funktion hier nicht mehr gültig } int main(int argc,char *argv[]) { foo(); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * '''Blöcke können/sollten als Strukturierungswerk genutzt werden. Dem Leser von Source Code kann auf dieser Weise vermittelt werden, dass diese Anweisungen 'zusammen' zu lesen sind.''' * Im Gegensatz zu Java, in welchem innerhalb eines Blockes kein Variablenname genutzt werden darf, die außerhalb des Blockes existiert, ist dies in C erlaubt. Die äußere Variable steht damit innerhalb des Blockes nicht mehr im Zugriff. :<syntaxhighlight lang="C"> int a=3; int main(void){ int a=7; //Globale Variable ist ab hier nicht mehr sichtbar/zugreifbar { int a=9; //Innere Variable überdeckt äußere Variable } } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int a=3; int main(int argc,char *argv[]) { printf("a=%d\n",a); int a=7; //Globale Variable ist ab hier nicht mehr sichtbar/zugreifbar printf("a=%d\n",a); { int a=9; //Innere Variable überdeckt äußere Variable printf("a=%d\n",a); } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Embedded Statement === Embedded Statements sind eine GNU-C Erweiterung (siehe [https://www.gnu.org/software/gnu-c-manual/gnu-c-manual.html GNU-C-Manual 3.18]). Da sie vom Autor als sehr nützlich angesehen wird und auch von diversen Compilern und auch in C++ unterstützt wird, wird diese hier beschrieben. Ein Block fasst mehrere Anweisungen zu einer Anweisung zusammen, hat jedoch kein Rückgabewert. Ein Embedded-Statement entspricht einem Block mit der Ergänzung, dass dieser einen Rückgabewert hat, so dass ein Embedded-Statement überall dort eingesetzt werden kann, wo eine Expression erwartet wird. <code> Syntax: ({Declaration-or-statement-list<sub>OPT</sub>}) </code> Der Rückgabewert wird nicht über eine return-Anweisung angegeben, sondern entstammt aus der letzten Anweisung innerhalb der Liste: <syntaxhighlight lang="C"> int var; var={int par=7;} //KO Block hat keine Rückgabewert. var=({int par=7; par++; par;}); //OK Embedded-Statement hat einen //Rückgabewert, der sich aus der //letzten Anweisung 'Par;' ergibt //Hier 8. </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int var; var={int par=7;} //KO Block hat keine Rückgabewert. var=({int par=7; par++; par;}); //OK Embedded-Statement hat einen //Rückgabewert, der sich aus der //letzten Anweisung 'Par;' ergibt //Hier 8. printf("var=%d\n",var); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Ein Embedded-Statement ähnelt folglich einem Funktionsaufruf mit dem Unterschied, dass a) in der Tat kein Funktionsaufruf stattfindet und b) der Rückgabewert nicht mit return, sondern über die letzte Anweisung zurückgegeben wird. Der Anwendungsfall ist dort zu finden, wo eine Expression erwartet wird und mehrere Anweisungen zum Ermitteln der Expression notwendig sind: <syntaxhighlight lang="C"> int var1=8; int b=({int d=var1++;d>10?10:d;}); if( ({int d=b;b=var1;b=d;}) > 1) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int var1=8; int b=({int d=var1++;d>10?10:d;}); if( ({int d=b;b=var1;b=d;}) > 1) printf("Bedingung erfüllt"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * Ein Embedded-Statement ist insbesondere bei Nutzung von Makros (siehe Kap [[Programmieren in C/C++: Präprozessor | Präprozessor]]) hilfreich * Mittels eines Embedded-Statement kann eine anonyme Funktion/Lambdafunktion dargestellt werden: <syntaxhighlight lang="C"> void test(int (*fptr)(int),int arr[10]) { for(int lauf=0;lauf<10;lauf++) arr[lauf]=fptr(arr[lauf]); } int main(int argc, char *argv[]) { int arr[]={1,2,3,4,5,6,7,8,9,10}; //Aufruf mit einer anonymen Funktion test( ({int func(int a) {return a%2?a:0;} ; func;}) ,arr); } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void test(int (*fptr)(int),int arr[10]) { for(int lauf=0;lauf<10;lauf++) arr[lauf]=fptr(arr[lauf]); } int main(int argc, char *argv[]) { int arr[]={1,2,3,4,5,6,7,8,9,10}; //Aufruf mit einer anonymen Funktion test( ({int func(int a) {printf("Called:%d\n",a);return a%2?a:0;} ; func;}) ,arr); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Funktionen / Prozeduren == Funktionen/Prozeduren sind ein Strukturierungsmerkmal, so dass Teile der Funktionalität des Programmes wiederverwendbar sind. C/C++ unterscheidet nicht zwischen Funktionen (haben einen Rückgabewert, können damit in Ausdrücken verwendet werden) und Prozeduren (haben keine Rückgabewert, resp. Rückgabetyp void).<br/> Mit jedem Aufruf einer Funktion wird für den zugehörigen Block ein eigener Stack-Kontext angelegt, so dass Funktionen sich selbst aufrufen können (Rekursion). Jeder Funktionsinstanz hat somit seinen eigenen lokalen Variablenbereich, teilen sich jedoch die globalen und die statisch lokalen Variablen.<br /> Mit dem Aufruf einer Funktion können Parameter übergeben werden, wobei die Übergabeparameter vom Aufrufer (Caller) durch den Aufruf in die lokalen Variablen des Aufgerufenen (Callee) kopiert/zugewiesen werden (Call by Value). Wird ein Zeiger übergeben, hat der Callee über die Dereferenzierung des Zeigers die Möglichkeit, die Variablen des Caller zu verändern (Call by Reference) (siehe Kap. [[Programmieren in C/C++: Zeiger #Zeiger bei Funktionsaufrufen | Zeiger:Zeiger bei Funktionsaufrufen).]]). Hinweise: * Die Klammerung hinter dem Funktionsnamen (<code>foo()</code>) zeigt an, dass es sich um einen Funktionsaufruf (Verzweigung der Programmausführung zu der Startadresse der Funktion) handelt :<syntaxhighlight lang="C"> void foo(void) {printf("foo called");}; foo(); //Klammern hinter dem Funktionsnamen bedeuten Aufruf der Funktion </syntaxhighlight> * Die Nutzung des Funktionsnamens ohne Klammerung (<code>foo</code>) gibt die Startadresse der Funktion zurück. Die Startadresse kann in einem Zeiger auf Funktionen gespeichert werden (siehe Kap. [[Programmieren in C/C++: Zeiger#Zeiger auf Funktionen | Zeiger:Zeiger auf Funktionen]]). :<syntaxhighlight lang="C"> void foo(void) {printf("foo called");}; void (*fptr)(void)=foo; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void foo(void) { printf("foo called"); }; int main(int argc, char *argv[]) { void (*fptr)(void)=foo; fptr(); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Deklaration/Definition vor dem ersten Aufruf der Funktion 'notwendig', damit Compiler die Übergabeparameter entsprechend bereitstellt und ggf. eine implizite Typkonvertierung durchführt (dito Rückgabewert). Die Angabe der Variablennamen können bei der Deklaration entfallen * Die fehlende Angabe der Übergabeparameter bedeutet in C (nicht C++), dass diese Funktion mit beliebigen Übergabeparametern aufgerufen werden kann und der Compiler keine Typprüfung durchführt: :<syntaxhighlight lang="C"> int func() {...} //kann wie folgt aufgerufen werden func(); func(4); func("hallo Welt",4.7); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void func() { printf("foo called\n"); }; int main(int argc, char *argv[]) { func(); func(4); func("hallo Welt",4.7); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} :→ unbedingt vermeiden<br /> :Hat die Funktion keinen Übergabewert, so wird dies in C mit void gekennzeichnet * In C++ bedeutet die Schreibweise ohne Datentypbeschreibung, dass keine Parameter erwartet werden * In der Parameterliste von Funktionen dient in der GNU-C Spezifikation das Semikolon zum Trennen zwischen Deklaration von Übergabeparameter und den Übergabeparametern. Alle Übergabewerte links vom Semikolon sind (Forward)deklarationen: :<syntaxhighlight lang="C"> void test1(int a; int b,int a) { // Forward; Parameter printf("a=%d b=%d\n",a,b); } //Aufruf test1(3,7); //a=7 b=3 //Sinnvoll im Umgang mit Variable Length Arrays void test2(int dim; const char str[dim], int dim); //Aufruf test2("hallo",6); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void test1(int a; int b,int a) { // Forward; Parameter printf("a=%d b=%d\n",a,b); } //Sinnvoll im Umgang mit Variable Length Arrays void test2(int dim; const char str[dim], int dim) { printf("dim=%d\n",dim); } int main(int argc, char *argv[]) { //Aufrufe test1(3,7); //a=7 b=3 test2("hallo",6); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Return-Anweisung === Mit der Return-Anweisung wird eine Funktion (vorzeitig) beendet. Der optionale Parameter dient der Angabe des Rückgabewertes der Funktion an den Aufrufer. Der Datentyp des Parameters ergibt sich aus dem Rückgabedatentyp der Funktion. <code> Syntax: return expression<sub>OPT</sub> </code> Der Rückgabewert expresion sagt aus, dass hier nicht nur Konstanten oder Variablen stehen können, sondern beliebige Ausdrücke erlaubt sind. Der resultierende Datentyp des Ausdruckes muss letztendlich dem Rückgabedatentyp der Funktion entsprechen: <syntaxhighlight lang="C"> int foo(double a, double b) { return (int)(a*a+b*b); } </syntaxhighlight> Hinweise: * Bei nicht void-Funktionen ist eine return-Anweisung mit einer Expression entsprechend dem Datentyp der Funktion zwingend notwendig: :<syntaxhighlight lang="C"> int func(void) { return 5.1; //Datentyp wird zuvor int konvertiert } double a=func(); //int wird in double konvertiert </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int func(void) { return 5.1; //Datentyp wird zuvor int konvertiert } int main(int argc, char *argv[]) { double a=func(); //int wird in double konvertiert printf("a=%f\n",a); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Bei einer void-Funktion ist die return-Anweisung ohne Expression optional. Hier entspricht der schließende Block der Return-Anweisung :<syntaxhighlight lang="C"> void func(char *str) { if(str==NULL) return; printf("%s",str); } </syntaxhighlight> Sollen mehr als ein Rückgabewert an den Aufrufer zurückgegeben werden so empfiehlt sich: * die Rückgabewerte in einer Struktur zu packen (siehe [[Programmieren in C/C++: Datentypen#Verbundtyp Struktur/Klasse (nur C++) |Datentypen:Verbundtyp Struktur/Klasse (nur C++)]]) * die Rückgabewerte über die Aufrufparameter als Call-by-Reference zu übergeben (siehe [[Programmieren in C/C++: Zeiger#Zeiger bei Funktionsaufrufen | Zeiger:Zeiger bei Funktionsaufrufen]]) ==== Rückgabewert aus Datentypsicht ==== Aus Datentypsicht kann der Funktionsname inkl. den Parameter(n) in einem Ausdruck mit dem Datentyp des Rückgabewertes der Funktion ausgetauscht werden: <syntaxhighlight lang="C"> int foo(void) {return 4711;} int var; var=1+foo(); //Aus Datentypsicht (int)=(int)+(int) </syntaxhighlight> Daraus ergibt sich, dass bei Arrays/Strukturen/Unions direkt auf einzelne Komponenten zugegriffen werden kann, ohne diese zuvor einer Variablen zuzuweisen: <syntaxhighlight lang="C"> struct xyz{int x,y,z;}; struct xyz foo(int par) { struct xyz var; var.x=var.y=var.z=par; return var; } if(foo(12).x == 12) printf("Identisch\n"); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct xyz{int x,y,z;}; struct xyz foo(int par) { struct xyz var; var.x=var.y=var.z=par; return var; } int main(int argc, char *argv[]) { if(foo(12).x == 12) printf("Identisch\n"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} ==== Fehlerrückgabe ==== Viele Funktionen können unter gewissen Umständen nicht korrekt ausgeführt werden. Z.B. aufgrund dessen, dass: * der benötigter Speicher vom Heap nicht bereitgestellt werden kann * Übergabeparameter außerhalb des zulässigen Bereiches liegen * angeforderte Ressource (Datei, Geräte, …) nicht vorhanden/verfügbar sind Solche Fälle gilt es dem Aufrufer mitzuteilen, da in diesen Fällen die vom Aufrufer geforderte Funktionalität nicht erfüllt ist und der Aufrufer ggf. nicht weiterarbeiten kann. Zur Mitteilung des Fehlers sollte vorrangig der Rückgabewerte genutzt werden. (auch wenn in C++ mit Exception eine Alternative hierzu bereitsteht) <syntaxhighlight lang="C"> char *strdup(char *src) { char *dst; if((dst=malloc(strlen(src)+1))==NULL) return NULL; strcpy(dst,src); return dst; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> #include <string.h> char *strdup1(char *src) { char *dst; if((dst=malloc(strlen(src)+1))==NULL) return NULL; strcpy(dst,src); return dst; } int main(int argc, char *argv[]) { char *dup=strdup1("hallo"); if(dup == NULL) printf("Fehler\n"); else printf("dup='%s'\n",dup); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Die Standard-C Library-Funktionen geben in diesem Fall zumeist ein -1 (Rückgabewert Ganzzahl) oder einen NULL-Zeiger (Rückgabewert Zeiger) zurück. Der genaue Fehlergrund ist dann ergänzend in der globalen Variablen errno gespeichert. Mittels der Standard-C Funktion strerror() kann die Zahl in einen für den Anwender/Programmierer lesbaren String umgewandelt werden (die GNU-C Library Funktion printf() bietet ergänzend den Conversion Spezifier %m als alternative Ausgabemöglichkeit an): <syntaxhighlight lang="C"> #include <errno.h> int var; if(-1==scanf("%d",&var) ) printf("Es wurde keine Zahl erkannt\n"); int ret=open("/etc/ptmp",O_WRONLY|O_CREAT|O_EXCL, S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH); if(-1==ret) printf("open failed() with %s\n",strerror(errno)); if(-1==ret) printf("open failed() with %m (nur glibc)\n"); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <fcntl.h> #include <string.h> #include <errno.h> int main(int argc, char *argv[]) { int var; if(-1==scanf("%d",&var) ) printf("Es wurde keine Zahl erkannt\n"); int ret=open("/etc/ptmp",O_WRONLY{{!}}O_CREAT{{!}}O_EXCL, S_IRUSR{{!}}S_IWUSR{{!}}S_IRGRP{{!}}S_IROTH); if(-1==ret) printf("open failed() with %s\n",strerror(errno)); if(-1==ret) printf("open failed() with %m (nur glibc)\n"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} '''Für eine sauber Programmierung sollte diese Methodik generell angewendet werden.''' Jede Funktion, welche Fehlschlagen kann, teilt dies per Rückgabewert dem Aufrufer mit. Der Rückgabewert einer jeden Funktion wird vom Aufrufer kontrolliert. === Main-Funktion === Mit Start der Anwendung übergibt das Betriebssystem die Kontrolle an die Anwendung und führt dort die Funktion main aus. Als Übergabe- und Rückgabeparameter sind folgende Varianten erlaubt: <syntaxhighlight lang="C"> int main(void) { } int main(int argc, char *argv[]) { } </syntaxhighlight> Mit dem Start der Anwendung kann, wie bei jedem Funktionsaufruf, Parameter an den startenden Prozess übergeben werden. Als Parameter können Strings übergeben werden, welche in Form eines Arrays von Strings übergeben werden. Im Parameter argc sind die Anzahl der Strings enthalten. Im Parameter argv[x] sind die einzelnen Strings enthalten. Sofern vorhanden ist im ersten String der Programmname/Aufrufname der Anwendung enthalten: <syntaxhighlight lang="C"> int main(int argc, char *argv[]) { //Variante 1: Darstellung des Inhaltes des Arrays von Strings for(int lauf=0;lauf < argc; lauf++) printf("%d.Parameter: '%s'\n",lauf,argv[lauf]); //Variante 2: Darstellung des Inhaltes des Arrays von Strings (void)argv; //Wird hier nicht benötigt for(char **str=argv;*str!=NULL;str++) printf("Parameter: '%s'\n",*str); return EXIT_SUCCESS; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int max_width=0; int ret; //Variante 1: Darstellung des Inhaltes des Arrays von Strings for(int lauf=0;lauf < argc; lauf++) { ret=printf("%d.Parameter: '%s'\n",lauf,argv[lauf]); max_width=ret>max_width ? ret : max_width; } //Trennzeichen drucken char term[max_width]; memset(term,'-',max_width); printf("%.*s\n",max_width-1,term); //Variante 2: Darstellung des Inhaltes des Arrays von Strings (void)argv; //Wird hier nicht benötigt for(char **str=argv;*str!=NULL;str++) printf("Parameter: '%s'\n",*str); return EXIT_SUCCESS; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Im Compiler-Explorer können die Parameter im Executor unter 'Execution Arguments', getrennt mit Leerzeichen eingegeben werden. Wird die Funktion main beendet, entweder über die return Anweisung oder den Aufruf der exit() Funktion, wird die Kontrolle zurück an den startenden Prozess (zumeist Shell) gegeben. Über den Rückgabewert wird im Allgemeinen dem Aufrufer der Fehlerstatus mitgeteilt (EXIT_SUCCESS oder 0 bedeutet fehlerfreie , EXIT_FAILURE oder ungleich 0 fehlerhafte Ausführung). Der Start der Anwendung kann als Funktionsaufruf angesehen werden, welchen einen Wert an den Aufrufer zurückliefert. Hinweise: * Der Return-Wert der main-Funktion kann mit >>echo $? in der Bash abgefragt werden * Mittels <code>exit(int status)</code> kann das Programm an jeder Stelle innerhalb des Programms beendet werden. <code>status</code> entspricht dann der expression der return Anweisung von main === Inline Funktion === Wie der Name inline andeutet, ist die Intention von Inline, dass die aufgerufen Funktion Bestandteil der aufrufenden Funktion ist. Die aufgerufene Funktion soll somit im Kontext des Aufrufers ausgeführt werden, so dass kein eigener Stack bereitgestellt werden muss. Der Start der Funktion kann somit schneller erfolgen: <code> inline int foo(void) { } </code> Das Inline erfolgt durch den Compiler (und nicht durch den Linker). Damit das inline funktioniert, muss die zu inlinende Funktion vor dem Aufruf definiert sein, d.h. sie muss in derselben C-Datei enthalten sein [C11 6.7.4]. Hinweis: * Das 'inlinen' von Funktionen über die eigene Objektdatei hinweg erfolgt in C/C++ über Link Time Optimization (LTO). Hierzu fügt der Compiler den Zwischencode mit in die Objektdatei, so dass der Linker das 'inlinen' vollziehen kann (siehe {{w|lang=en|Interprocedural_optimization| Interprocedural Optimization}}) === Variadic Function / Ellipsis Punctuator === Mit dem Ellipsis Puncturator '…' kann in Funktionsdefinitionen angegebenen werden, dass anstatt der … Anweisung, beliebig viele Parameter/Argumente übergeben werden können. Dies wird unter anderen in der printf() Anweisung genutzt: <syntaxhighlight lang="C"> int printf(const char *fmt, ... ); </syntaxhighlight> Die wie folgt aufgerufen werden kann: <syntaxhighlight lang="C"> printf("Hello World"); //es folgt kein Parameter printf("%d",100); //es folgt ein Parameter vom Datentyp int printf("%f",1.1); //es folgt ein Parameter vom Datentyp double printf(conststr,1,2,3,"xyz") //Ohne Worte </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { printf("Hello World\n"); //es folgt kein Parameter printf("%d\n",100); //es folgt ein Parameter vom Datentyp int printf("%f\n",1.1); //es folgt ein Parameter vom Datentyp double const char *conststr="%d %x %c '%s'\n"; printf(conststr,1,2,33,"xyz"); //Ohne Worte return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Der übergebenen Datentype der Parameter wird der aufgerufenen Funktion nicht mitgeteilt! Einzig werden bei Aufruf der variadischen Funktion so viel Bytes auf den Stack gelegt, wie der Datentyp der einzelnen Übergabeparameter groß ist: :<code>int --> 4 Byte</code> :<code>double --> 8 Bytes</code> :<code>Zeiger --> 4/8 Byte</code> Damit die aufgerufene Funktion die fehlende Datentypinformation dennoch mitgeteilt bekommt, muss dies am Beispiel der <code>printf</code> Funktion über den Format-String erfolgen: <syntaxhighlight lang="C"> int vari; printf("%d",vari); //%d erwartet einen Integer Übergabeparameter (4-Byte) size_t vars; printf(" %zu %d ", vars, vari); // %zu zur Mitteilung, dass anstatt //integer nun size_t als Datentyp übergeben wird //und somit anstatt 4 Bytes 8 Bytes vom Stack genommen werden </syntaxhighlight> <code>printf()</code> entnimmt entsprechend der Datentypbeschreibung im Formatstring die passende Anzahl an Bytes vom Stack. Da der Compiler für die optionalen Parameter nicht den Zieldatentyp kennt, erlaubt die C-Spezifikation als Übergabedatentypen hier nur die Grunddatentypen <code>signed int, unsigned int, long, long long, double</code> und <code>Zeiger</code>. Entspricht der übergebene Parameter nicht einen dieser Datentypen, so wird er mittels implizit Cast entsprechend nachfolgender Tabelle gewandelt [C11 6.5.2.2 Default Argument Promotions]: {| class="wikitable" |- ! Ausgangstyp !! Umwandlungstyp |- | char, signed char, short || int |- | unsigned char, unsigned short || unsigned int |- | float || double |- | Alle anderen Datentypen || bleiben erhalten |} Bspw.: <syntaxhighlight lang="C"> signed char varc=-1; float varf =0.1; printf("%d %f",varc, varf); //varc wird beim Aufruf nach int konvertiert! //varf wird beim Aufruf nach double konvertiert! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { signed char varc=-1; float varf =0.1; printf("%d %f",varc, varf); //varc wird beim Aufruf nach int konvertiert! //varf wird beim Aufruf nach double konvertiert! //Zur Darstellung der besagten Konvertierung siehe rechtes Fenster return 0; } | execCompilerOptions=-Wall| h=g }} Öffnen im Compiler Explorer] }} Zum Umgang mit dem variadischen Parameter stellt C die Funktionen <code>va_start(), va_arg(), va_copy()</code> und <code>va_end()</code> bereit. Auf Grundlage des dazugehörigen Datentyps <code>va_list</code> können variadische Parameter auch an Unterfunktionen weitergereicht werden (bspw vprintf()). Dieses Thema bedingt jedoch genaue Kenntnisse vom Umgang mit dem Stack und ist nicht Bestandteil dieser Vorlesung. == Variable Length Array (VLA) == Im Normalfall ergibt sich die Anzahl der Elemente eines Arrays aus einer Konstanten, so dass der Compiler zur Compilezeit passend Speicher reserviert (siehe Kap. [[Programmieren in C/C++: Array | Array]]): <syntaxhighlight lang="C"> int arr[4]; //Compiler reserviert für Variable arr //4*sizeof(int) Speicherplatz </syntaxhighlight> Bei Variable Lenght Array wird die Arraydimension nicht über eine Konstante, sondern über eine Variable oder einen Ausdruck angegeben. D.h. die tatsächliche Dimension des Arrays ergibt sich erst zum Ausführungszeitpunkt der Definition: <syntaxhighlight lang="C"> void foo(size_t n) { int arr[n*2+1]; //Arraydimension ergibt sich zum Ausführungszeitpunkt n++; //Nachträgliches Ändern von n ändert nicht //die Größe des Arrays! } </syntaxhighlight> Ein Variable Length Array kann nur als lokale Variable oder als Übergabeparameter definiert werden (wobei im letzteren Fall kein Speicher hiermit reserviert wird). Eine Initialisierung eines VLA's mit der Definition ist nicht möglich, d.h. nach der Definition beinhaltet das Array 'zufällige' Werte. Es empfiehlt sich daher, diese bspw. mit memset händisch zu initialisieren (siehe auch Kap [[Programmieren in C/C++: Array#Initialisierung | Array:Initialisierung]]): <syntaxhighlight lang="C"> void foo(size_t n) { char str[n]; memset(str,0,n*sizeof(char)); //Array mit 0 füllen </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> void foo(size_t n) { char str[n]; memset(str,0,n*sizeof(char)); //Array mit 0 füllen for(size_t lauf=0;lauf<n;lauf++) printf("str[%zu]=%d\n",lauf,str[lauf]); } int main(int argc, char *argv[]) { foo(4); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Mittels sizeof kann weiterhin der Speicherbedarf ermittelt werden, wobei sizeof mit einem VLA als Argument kein Konstantenausdruck ist. Stattdessen wird die Größe zur Laufzeit ermittelt: <syntaxhighlight lang="C"> void foo(size_t n) { int arr[n*2+1]; //VLA size_t size; size=sizeof(arr); //sizeof(arr) entspricht einem Funktionsaufruf //welcher die Speichergröße des VLA's ermittelt </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void foo(size_t n) { int arr[n*2+1]; //VLA size_t size; size=sizeof(arr); //sizeof(arr) entspricht einem Funktionsaufruf //welcher die Speichergröße des VLA's ermittelt printf("size=%zu\n",size); } int main(int argc, char *argv[]) { foo(5); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} VLA wurden erstmals in C mit C99 eingeführt. In C11 wurden VLA's als optional eingestuft und mit C23 zurück auf notwendig gesetzt. In C++ sind VLA's nicht definiert, werden jedoch vom GCC Compiler unterstützt. Als alternativen Datentyp wird hier std::array empfohlen. Hinweis: * VLA sind nicht direkt in einem Switch-Case Block definierbar. Wird hier ein VLA benötigt, so muss hierzu ein Block erzeugt werden: :<syntaxhighlight lang="C"> switch(value) { case 1: char arr1[value]; //Compilerfehler, da bei value!=1 kein Speicherplatz //für das VLA reserviert wird break; case 2: { char arr2[value]; //OK } break; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int value=argc; switch(value) { case 1: char arr1[value]; //Compilerfehler, da bei value!=1 kein Speicherplatz //für das VLA reserviert wird break; case 2: { char arr2[value]; //OK } break; } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Operatoren == In der Programmiersprache C sind folgende Punctuators [C11 6.4.6] definiert: <syntaxhighlight> [ ] ( ) { } . -> ++ -- & * + - ~ ! / % << >> < > <= >= == != ^ | && || ? : ; ... = *= /= %= += -= <<= >>= &= ^= |= , # ## <: :> <% %> %: %:%: </syntaxhighlight> Die Funktionalitäten sind identisch zu Java. Aufgrund des Datentyps Zeiger gibt es in C ergänzend den Punctuator <code>-></code> (siehe Kap [[Programmieren in C/C++: Datentypen#Verbundtyp Struktur/Klasse (nur C++)|Datentypen:Verbundtyp Struktur/Klasse (nur C++)]]). Der Präprozessor bedingt die beiden Punctuatoren <code>#</code> und <code>##</code> (siehe Kap [[Programmieren in C/C++: Präprozessor | Präprozessor]]). Die letzten 6 Punctuators <code><: :> <% %> %: %:%:</code> werden zu <code>[ ] { } # ##</code> ersetzt. Sie sind für Computersysteme gedacht, welche keine ALTGR-Taste besitzen.<br /> Java kennt ergänzend den <code>>>></code> Operatoren, welcher in C über den normalen Schiebebefehl und den zugrundeliegenden Datentyp gesteuert wird. Wie in Java sind einige Punctuators vom Kontext abhängig und haben damit unterschiedliche Funktionalitäten: <syntaxhighlight> ++ → (Postfix) ++ vs. ++(Präfix) -- → (Postfix) -- vs. --(Präfix) +/- → Vorzeichen vs. Addition/Subtraktion () → Funktionsaufruf() vs. Befehlsbestandteil if() vs. Priorisierung </syntaxhighlight> Für den Umgang mit dem Datentyp Zeiger besitzen einige Punctuatoren ergänzende Funktionalitäten (siehe Kap [[Programmieren in C/C++: Zeiger| Zeiger]]): <syntaxhighlight> & → Bitweises UND: Anwendung: Ganzahlausdruck & Ganzahlausdruck & → Adressoperator: Anwendung: &Variable * → Multiplikation Anwendung: Ganzahl-/Gleitkommaausdruck * Ganzahl-/Gleitkommaausdruck * → Datentyp Zeiger Anwendung: Datentyp * Variablenname; * → Dereferenzierung: Anwendung: * Zeiger </syntaxhighlight> Punctuatoren, welche von Java abweichende / ergänzende Funktionalitäten haben, werden nachfolgend gesondert beschrieben. Sind in einer Anweisung mehrere Operatoren enthalten, so hängt die Abarbeitungsreihenfolge von der Rangfolge/Priorität der Operatoren ab (siehe [[Programmieren in C/C++: Grundlagen#Abarbeitungsreihenfolge | Abarbeitungsreihenfolge]]).<br /> Die Rangfolge ist identisch zu Java, wobei C mehr Operatoren kennt. Generell empfiehlt sich, lieber eine Klammer zu viel als zu wenig zusetzen. Klammern haben die höchste Priorität. === Zuweisungs-Operator === Die Zuweisung (<code>=</code>-Operator, assignment expression) weist dem L-Value den R-Value zu. Ergänzend dient der L-Value als Rückgabewert des Operators, so dass das Ergebnis der Zuweisung weiter genutzt werden kann. Die Abarbeitungsreihenfolge ist von rechts nach links (R-L Assoziativität). Wird der 'letzte' Rückgabewert nicht verwendet, so wird dieser verworfen (siehe Kap. [[Programmieren in C/C++: Grundlagen#Discarded Value | Discarded Value]]).<br /> Beispiel: <syntaxhighlight lang="C"> a=7; //Zuweisung a=b=7; //Erste Zuweisung (b=7) hat einen Rückgabewert, welcher im //Anschluss a zugewiesen wird if(a=7) //Variablen a wird der Wert 7 zugewiesen. Der Rückgabewert //der Zuweisung wird im Anschluss auf True oder False geprüft if(7=a) //Besser, da aufgrund der fehlerhafter Zuweisung ein //Compilerfehler geworfen wird x*=y=z //entspricht x=x*(y=z) a=b=d+7; //entspricht a=(b=(d+7)) a=b==c; //a bekommt das boolesche Ergebnis der Vergleichsoperation //zugewiesen </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a,b,c=3,d=4; int x,y,z; a=7; //Zuweisung a=b=7; //Erste Zuweisung (b=7) hat einen Rückgabewert, welcher im //Anschluss a zugewiesen wird if(a=7) //Variablen a wird der Wert 7 zugewiesen. Der Rückgabewert ; //der Zuweisung wird im Anschluss auf True oder False geprüft if(7=a) //Besser, da aufgrund der fehlerhafter Zuweisung ein ; //Compilerfehler geworfen wird x*=y=z; //entspricht x=x*(y=z) a=b=d+7; //entspricht a=(b=(d+7)) a=b==c; //a bekommt das boolesche Ergebnis der Vergleichsoperation //zugewiesen return 0; return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * Auf beiden Seiten der Zuweisung muss der identische Datentyp stehen. Wenn andernfalls eine implizite Typkonvertierung nicht möglich ist, gibt der Compiler einen Fehler aus: :<syntaxhighlight lang="C"> int a = 7.3; //implizite Typkonvertierung double b=a+3; //Implizite Typkonvertierung der Intergeraddition nach double float c=(float)a+(float)3; //Explizite Typkonvertierung char *d=a; //Compilerfehler, da Integerwert nicht implizit in einen //Zeiger konvertiert werden kann </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a = 7.3; //implizite Typkonvertierung double b=a+3; //Implizite Typkonvertierung der Intergeraddition nach double float c=(float)a+(float)3; //Explizite Typkonvertierung char *d=a; //Compilerfehler, da Integerwert nicht implizit in einen //Zeiger konvertiert werden kann //Zur Darstellung der besagten Konvertierung siehe rechtes Fenster (void)b; (void)c; (void)d; return 0; } | execCompilerOptions=-Wall| h=g }} Öffnen im Compiler Explorer] }} * Bei der Parameterübergabe beim Funktionsaufruf wird ebenfalls indirekt der Zuweisungsoperator angewendet. Die Parameter des Aufrufers werden per Zuweisung den lokalen Variablen der aufgerufenen Funktion zugewiesen :<syntaxhighlight lang="C"> void func(int a, float b) { printf("a=%d b=%f",a,b); } int x=4; float y=5.0; func(x,y); //der Inhalt der Variablen x wird der lokalen Variable a //(a=x) und der Inhalt der Variablen y der lokalen Variablen b //(b=y) zugewiesen. func(y,x); //Dito, mit der Ergänzung, dass eine implizite Typkonvertierung //stattfindet (a=(int)y) und (b=(float)x). </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void func(int a, float b) { printf("a=%d b=%f",a,b); } int main(int argc, char *argv[]) { int x=4; float y=5.0; func(x,y); //der Inhalt der Variablen x wird der lokalen Variable a //(a=x) und der Inhalt der Variablen y der lokalen Variablen b //(b=y) zugewiesen. func(y,x); //Dito, mit der Ergänzung, dass eine implizite Typkonvertierung //stattfindet (a=(int)y) und (b=(float)x). //Zur Darstellung der besagten Konvertierung siehe rechtes Fenster return 0; } | execCompilerOptions=-Wall| h=g }} Öffnen im Compiler Explorer] }} === Komma-Operator === Der Komma-Operator erlaubt es, zwei Ausdrücke auszuführen, wo nur einer erlaubt wäre. Die Ergebnisse aller durch diesen Operator verknüpften Ausdrücke, außer dem letzten werden verworfen. Der letzte Ausdruck dient als Rückgabewert. Folgendes gilt es bei der Nutzung des Komma-Operators zu beachten: * Der Komma-Operator wird von links nach rechts ausgewertet * Das Komma selbst stellt eine Sequence Point dar (siehe Kap [[Programmieren in C/C++: Grundlagen#Sequence Point|Sequence Point]]) * An Stellen, wo das Komma zum Syntax gehört (z.B. Trennung der Übergabeparameter bei der Funktionsdefinition und beim Funktionsaufruf, Trennung von Variablen bei der Variablendefinition/-deklaration, Trennung der enum Konstanten) muss der Ausdruck ergänzend geklammert werden, wenn der Komma-Operator gefordert ist * Der Komma-Operator hat von allen Operatoren die niedrigste Priorität/Rangfolge, so dass dieser Operator als letztes 'ausgewertet' wird Beispiel: <syntaxhighlight lang="C"> int a=(5,3); //5 wird verworfen, 3 dient als Rückgabewert, so dass //a den Wert 3 erhält. int b=5,3; //KO, da Komma Bestandteil der Definition ist int c=1,d=2,e=3; int f=(c+=2,a+a); //c um zwei erhöht, a+a in f int g= c+=2,a+a; //KO, da Komma Bestandteil der Defintion ist void func(int value){} func(1); //Funktion wird mit dem Wert 1 aufgerufen func(1,2); //KO, da Komma Bestandteil des Funktionsaufrufes ist func((1,2)); //Funktion wird mit dem Wert 2 aufgerufen int arr[12]; arr[3,4]=1; //3 wird verworfen, 4 dient als Index für das Array </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void func(int value){ printf("func called with %d\n",value); } int main(int argc, char *argv[]) { int a=(5,3); //5 wird verworfen, 3 dient als Rückgabewert, so dass //a den Wert 3 erhält. int b=5,3; //KO, da Komma Bestandteil der Definition ist printf("a=%d\n",a); int c=1,d=2,e=3; printf("c=%d,d=%d,e=%d\n",c,d,e); int f=(c+=2,a+a); //c um zwei erhöht, a+a in f printf("c=%d,f=%d\n",c,f); int g= c+=2,a+a; //KO, da Komma Bestandteil der Defintion ist func(1); //Funktion wird mit dem Wert 1 aufgerufen func(1,2); //KO, da Komma Bestandteil des Funktionsaufrufes ist func((1,2)); //Funktion wird mit dem Wert 2 aufgerufen int arr[12]; arr[3,4]=1; //3 wird verworfen, 4 dient als Index für das Array return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} 'Sinnvolle' Anwendungsbeispiele: * Bei For-Schleifen, so dass mehrere Variablen initialisiert und mehrere Variablen mit jedem Schleifendurchlauf geändert werden können: :<syntaxhighlight lang="C"> int sum,lauf; int arr[]={5,4,3,2,1}; for(sum=100,lauf=5 ; lauf ; lauf--,sum+=arr[lauf]); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int sum,lauf; int arr[]={5,4,3,2,1}; for(sum=100,lauf=5 ; lauf ; lauf--,sum+=arr[lauf]) printf("sum=%d lauf=%d\n",sum,lauf); printf("sum=%d\n",sum); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Bei der Return-Anweisung, bei welcher zur Darstellung der Zusammengehörigkeit mehrere Aktionen ausgeführt werden sollen: :<syntaxhighlight lang="C"> return errno=EINVAL,-1; return printf("Fehler"),-1; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <errno.h> int foo(void) { return errno=EINVAL,-1; } int far(void) { return printf("Fehler\n"),-1; } int main(int argc, char *argv[]) { printf("foo()=%d\n",foo()); printf("far()=%d\n",far()); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * An Stellen, wo nur eine Anweisung erlaubt ist (und man zu faul ist, einen Block zu öffnen) :<syntaxhighlight lang="C"> if(…) y=2,z=3; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int y=0,z=0; if(1) y=2,z=3; printf("y=%d z=%d\n",y,z); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * In vielen Ländern wird das Komma zur Darstellung von Gleitkommazahlen genutzt. Wird versehentlicher Weise dies in C/C++ übernommen, so führt dies zu einem unerwarteten Verhalten: :<syntaxhighlight lang="C"> double var; var=5.3; //Variable wird mit 5.3 initialisiert var=5,3; //KO, da Komma Bestandteil der Defintion ist var=(5,3); //Variable wird mit 3 initialisiert </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { double var; var=5.3; //Variable wird mit 5.3 initialisiert printf("var=%f\n",var); var=5,3; //KO, da Komma Bestandteil der Defintion ist var=(5,3); //Variable wird mit 3 initialisiert printf("var=%f\n",var); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === ?-Operator / Conditional-Operator === Operator mit 3 Operanden, welcher in Abhängigkeit des ersten Operanden den zweiten oder dritten Operanden zurückgibt. <code> Syntax: Logical-OR-expression ? expression : condition-expression </code> Entspricht der if()-Anweisung, wobei der ? Operator als solches einen Wert zurückgibt! Expression wird nur ausgewertet, wenn der erste Operand true ist. Andernfalls wird nur condition-expression ausgeführt. Der zurückgegebene Datentyp ergibt sich aus der Expression resp. Condition-expression. Beide sollten somit vom identischen Datentyp sein. Folgendes gilt es bei der Nutzung des ?-Operators zu beachten * Der Datentyp Expression und condition-Expression muss identisch sein <syntaxhighlight lang="C"> int a=5; a=a > 10 ? "String" : 4; //KO, "String" ist vom Datentyp (char*) und // 4 ist vom Datentyp (int). </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a=5; a=a > 10 ? "String" : 4; //KO, "String" ist vom Datentyp (char*) und // 4 ist vom Datentyp (int). return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Nach der GNU-C Reference kann der mittlere Operand fehlen, in diesem Fall wird stattdessen das Ergebnis des linken Operanden dort eingesetzt (siehe https://gcc.gnu.org/onlinedocs/gcc/Conditionals.html#Conditionals) <syntaxhighlight lang="C"> int a=13; int b=a>10 ? : 0; //wenn a > 10 wird true, andernfalls false zurückgegeben </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a=13; int b=a>10 ? : 0; //wenn a > 10 wird true, andernfalls false zurückgegeben printf("b=%d\n",b); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Sollen innerhalb von condition-expression mehrere (durch Komma getrennte) Anweisungen enthalten sein, so sind diese zu Klammern! Andernfalls bedingt die niedrige Priorität des Komma-Operators ein anders Verhalten, als erwartet. <syntaxhighlight lang="C"> int a=7,max=5; max=a>max ? a : max; //Alles bestens int var0,var1,var2; var0=a>5 ? a++,5:6,a=1; //das zweite Komma wird als separate Anweisung //ausgeführt und kommt somit immer zur //Ausführung var1=(a>5 ? a++,5:6),a=1; //durch Klammerung klare Abgrenzung var2= a>5 ? a++,5 : (6,a=1); //durch Klammerung klare Abgrenzung </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a=7; int max=5; max=a>max ? a : max; //Alles bestens printf("max=%d\n",max); int var0,var1,var2; var0=a>5 ? a++,5:6,a=1; //das zweite Komma wird als separate Anweisung //ausgeführt und kommt somit immer zur //Ausführung printf("var0=%d a=%d\n",var0,a); var1=(a>5 ? a++,5:6),a=1; //durch Klammerung klare Abgrenzung printf("var1=%d a=%d\n",var1,a); var2= a>5 ? a++,5 : (6,a=1); //durch Klammerung klare Abgrenzung printf("var2=%d a=%d\n",var2,a); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Die Nutzung des ?-Operators empfiehlt sich an diversen Stellen: * Bei Makros :<syntaxhighlight lang="C"> #define MAX(a,b) (a>b?a:b) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #define MAX(a,b) (a>b?a:b) int main(int argc, char *argv[]) { printf("MAX(4,5)=%d\n",MAX(4,5)); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Beim Fehlerhandling :<syntaxhighlight lang="C"> char *str=strstr("hallo123","lox"); //Ausgabe von str nur, wenn Suche erfolgreich (str!=NULL) war printf("%s",str!=NULL?str : "(not found)" ); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char *str=strstr("hallo123","lox"); //Ausgabe von str nur, wenn Suche erfolgreich (str!=NULL) war printf("%s",str!=NULL?str : "(not found)" ); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Prüfen, ob eine Funktion erfolgreich ausgeführt wurde, bevor eine weitere Funktion ausgeführt wird <syntaxhighlight lang="C"> int ret; ret=init1(); //im Fehlerfreien gibt init1() 0 zurück ret=ret?:init2(); //Aufruf von init2() nur wenn ret==0 ist //andernfalls wird ret zurückgegeben </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int init1(void) { printf("init1() called\n"); return 0; } int init2(void) { printf("init2() called\n"); return 0; } int main(int argc, char *argv[]) { int ret; ret=init1(); //im Fehlerfreien gibt init1() 0 zurück ret=ret?:init2(); //Aufruf von init2() nur wenn Ret==0 ist //andernfalls wird Ret zurückgegeben return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Logische Verknüpfungen === Alle logischen Operationen nutzen als Operanden Ganzzahlen ,Gleitkommazahlen oder Zeiger. Der Operand wird als false angesehen, wenn der Operand 0, 0.0 oder NULL ist. Andernfalls als true. Das Ergebnis ist immer vom Datentyp int und hat den Wert von 0 oder 1. <code>Syntax: Expression && Expression</code><br /> <code>Syntax: Expression || Expression</code><br /> <code>Syntax: ! Expression</code><br/> Bei der logischen UND und ODER Verknüpfung wird zuerst der linke Ausdruck ausgewertet (Operator ist ein Sequence Point). Der rechte Ausdruck wird nur ausgeführt, wenn: * bei der logischen UND Verknüpfung der linke Ausdruck TRUE ergab * bei der logische OR Verknüpfung der linke Ausdruck FALSE ergab Andernfalls steht das Ergebnis schon mit der Auswertung des linken Operanden fest.<br /> In der theoretischen Informatik wird dies 'Non-strict-evaluation' genannt, bei welcher der Rückgabewert feststeht, bevor alle Ausdrücke bearbeitet worden sind. Beispiel für das Verhalten des Ausbleibens der Auswertung des zweiten Operators: <syntaxhighlight lang="C"> int a=0,b=0; //a=-1; //Als alternativer Startwert if(++a || ++a) b=1; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=0,b=0; //a=-1; //Als alternativer Startwert if(++a {{!}}{{!}} ++a) b=1; printf("a=%d b=%d\n",a,b); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Diese Funktionalität ist insbesondere beim Umgang mit Fehlern vorteilhaft: * Prüfen, ob eine Variable einen gültigen Wert hat, bevor sie weiterverwendet wird <syntaxhighlight lang="C"> char *str = strstr("hallo123","la"); if(str!=NULL && strlen(str) ) printf("Len = %ld",strlen(str)); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char *str = strstr("hallo123","la"); if(str!=NULL && strlen(str) ) printf("Len = %ld",strlen(str)); else printf("Kein Substring im String gefunden\n"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Prüfen, ob eine Funktion erfolgreich ausgeführt wurde, bevor eine weitere Funktion aufgerufen wird: <syntaxhighlight lang="C"> int ret; ret=init1(); //Bei erfolgreicher Initialisierung wird 1 zurückgegeben ret=ret && init2(); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int init1(void) { printf("init1() called\n"); return 1; } int init2(void) { printf("init1() called\n"); return 1; } int main(int argc, char *argv[]) { int ret; ret=init1(); //Bei erfolgreicher Initialisierung wird 1 zurückgegeben ret=ret && init2(); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Bitweise Verknüpfungen === Alle bitweisen Operationen nutzen als Operanden Ganzzahlen. Bei vorzeichenbehafteten Zahlen ist das Ergebnis nach [C11 6.5] Implementierungsabhängig, wobei das Vorzeichenbit zumeist als eigenständiges Bit angesehen wird und bei UND/ODER/EXOR als normales BIT betrachtet wird. <code>Syntax: Ganzzahl & Ganzzahl → Bitweise UND Operation</code><br /> <code>Syntax: Ganzzahl | Ganzzahl → Bitweise ODER Operation</code><br /> <code>Syntax: Ganzzahl ^ Ganzzahl → Bitweise EXOR Operation</code><br /> <code>Syntax: ~ Ganzzahl → Bitweise Negierung</code><br /> <code>Syntax: Ganzzahl >> additive-expression</code><br /> <code>Syntax: Ganzzahl << additive-expression</code><br /> Mittels des Schiebeoperators können Ganzzahlen um additive-expression bitweise nach Links <code><<</code> oder Rechts <code>>></code> verschoben werden. Der resultierende Datentyp ergibt sich aus dem linken Operanden. Der rechte Operand muss positiv und kleiner gleich der Bitbreite des linken Operanden sein. Andernfalls ist das Ergebnis implementierungsspezifisch. Nach [C11 6.5.7] ist das Ergebnis der Schiebeoperation implementierungsspezifisch, wenn der linke Operand eine negative vorzeichenbehaftete Zahl ist. In der Regel wendet der Compiler jedoch folgende Schiebeoperation an: * Logisches Schieben (zu füllende Bit-Stellen werden mit 0 aufgefüllt), wenn der linke Operand eine vorzeichenlose Zahl ist * Arithmetisches Schieben (zu füllende Bit-Stelle beim Rechtsschieben wird mit dem Vorzeichenbit aufgefüllt), wenn der linke Operand eine vorzeichenbehaftete Zahl ist. Hiermit wird das Vorzeichen beibehalten, so dass eine negative Zahl nach dem Schieben weiterhin negativ ist (In Java erfolgt dies durch den >>> - Operator) Hinweis: * Ein Schieben um eine Stelle nach rechts entspricht einer Division durch 2 * Ein Schieben um eine Stelle nach links entspricht einer Multiplikation mit 2 === sizeof-Operator === Der sizeof-Operator dient zur Ermittlung des Speicherbedarfs (in Bytes) einer Variablen/eines Datentyps. <code>Syntax: sizeof (type-name)</code><br /> <code>Syntax: sizeof unary-expression</code><br /> Als Argument für den Sizeof-Operator kann wahlweise ein Datentyp, eine Variable oder ein Ausdruck genutzt werden. Sizeof gilt als Konstantenausdruck, d.h. seine Berechnung erfolgt durch den Compiler, sodass: * sizeof zur Initialisierung von globalen Variablen genutzt werden :<syntaxhighlight lang="C"> struct xyz{int x,y,z;}; size_t size=sizeof(struct xyz); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct xyz{int x,y,z;}; size_t size=sizeof(struct xyz); //3*sizeof(int)=12 int main(int argc, char *argv[]) { printf("size=%zu\n",size); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * bei einem Ausdruck dieser nicht ausgeführt wird, sondern nur der resultierende Datentyp bestimmt wird und dessen Größe zurückgegeben :<syntaxhighlight lang="C"> short var=4711; size_t size=sizeof var++; //var=4711, size=2 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { short var=4711; size_t size=sizeof var++; //var=4711, size=2 printf("size=%zu var=%d\n",size,var); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Der resultierende Datentyp des Rückgabewertes ist size_t. Es empfiehlt sich, den sizeof-Operator mit Klammern zu nutzen, andernfalls wird im Falle eines Ausdruckes der Speicherbedarf des linken Operanden angegeben: <syntaxhighlight lang="C"> size_t size; short var; size=sizeof var+0; //size=2, da sizeof auf var angewendet wird size=sizeof(var+0); //size=4, da sizoeof auf den resultierenden datentyp //angewendet wird </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { size_t size; short var=0; size=sizeof var+0; //size=2, da sizeof auf var angewendet wird printf("size=%zu var=%d\n",size,var); size=sizeof(var+0); //size=4, da sizoeof auf den resultierenden datentyp //angewendet wird printf("size=%zu var=%d\n",size,var); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * sizeof angewendet auf char gibt immer den Wert 1 zurück. * sizeof ist nicht auf Operanden vom Typ Funktion, void, Felder ohne Größenangabe und Bitfelder anwendbar * wird sizeof auf ein VLA angewendet, so entspricht sizeof nicht mehr einen Konstantenausdruck, sondern einem Funktionsaufruf :<syntaxhighlight lang="C"> void foo(int n) { int arr[n]; size_t size=sizeof(arr); //Speicherbedarf ist kein Konstantenausdruck //sondern wird zur Laufzeit berechnet </syntaxhighlight> * Sizeof entspricht nicht strlen(), da sizeof den für die Variable reservierten Speicherbereich zurückgibt und nicht wie strlen() den Inhalt des Speicher hinsichtlich des Stringendezeichens auswertet. :<syntaxhighlight lang="C"> char string[100]="Test"; printf("%zu\n",sizeof(string)); //100 printf("%zu\n",strlen(string)); //4 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char string[100]="Test"; printf("%zu\n",sizeof(string)); //100 printf("%zu\n",strlen(string)); //4 return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Anweisungen == === If-Anweisung === <code>Syntax: if (expression) statement</code><br /> <code>Syntax: if (expression) statement else statement</code><br /> Das Ergebnis des Ausdruckes (Ganzzahl, Gleitkommazahl oder Zeiger) wird auf ungleich 0, 0.0 oder NULL getestet. Trifft dies zu, so wird statement ausgeführt. Andernfalls wird das else statement ausgeführt, sofern vorhanden. Sollen mehrere Anweisungen ausgeführt werden, so sind diese mittels Block zusammenzufassen (diesen dann bitte nicht mit ; abschließen). Beispiel: <syntaxhighlight lang="C"> if(a==1) if(a=1) //Erst Zuweisung, dann prüfen der Rückgabe der Zuweisung if(a) //entspricht a!=0 if(printf("hallo")<0) //prüfen, ob printf() fehlschlägt if( ({int dummy=a;a=b;b=dummy;})==6) if(a=7) //Zuweisung! if(7=a) //KO, Eine Konstante kann kein L-Value sein if(7==a) {printf("a ist 7");}; //Semikolon hinter Blocksope ist eine zweite else //Anweisung, so dass die ELSE Anweisung nicht {printf("Compilerfehler");};//zur IF-Anwesigung zugeordnet werden kann. </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=1,b=2; if(a==1) printf("a==1\n"); if(a=1) //Erst Zuweisung, dann prüfen der Rückgabe der Zuweisung printf("a=1\n"); if(a) //entspricht a!=0 printf("a\n"); if(printf("hallo\n")<0) //prüfen, ob printf() fehlschlägt printf("printf()\n"); if( ({int dummy=a;a=b;b=dummy;})==6) printf("({...})\n"); if(a=7) //Zuweisung! printf("a=7\n"); if(7=a) //KO, Eine Konstante kann kein L-Value sein ; if(7==a) {printf("a ist 7");}; //Semikolon hinter Blocksope ist eine zweite else //Anweisung, so dass die ELSE Anweisung nicht {printf("Compilerfehler");};//zur IF-Anwesigung zugeordnet werden kann. return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Bei der Anweisung <code>if(a==7)</code> finden aus syntaktischer Sicht zwei Aktionen statt. Zunächst wird geprüft, ob a gleich 7 ist. Dieser Vergleich liefert true(=1) oder false(=0) zurück. Die If-Anweisung prüft im Anschluss, ob das Argument true oder false ist. === For-Anweisung === <code>Syntax: for(Initialisierungsteil<sub>OPT</sub> ; Test<sub>OPT</sub> ; Fortsetzung<sub>OPT</sub>) Statement</code> Die For-Anweisung wird vom Compiler wie folgt umgesetzt: <poem> '''Initialisierungsteil'''<sub>OPT</sub> Goto Next Goon: //Continue-Anweisung entspricht goto Continue //Break-Anweisung entspricht goto Break; '''Statement''' Continue: '''Fortsetzung'''<sub>OPT</sub> Next: if('''Test'''<sub>OPT</sub>) goto Goon Break: </poem> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> int main(int argc, char *argv[]) { int lauf; int summe; for(summe=lauf=0;lauf<20;lauf++) summe+=lauf; printf("summe=%d\n",summe); //Initialisierungsteil summe=lauf=0; goto Next; Goon: //Continue-Anweisung entspricht goto Continue //Break-Anweisung entspricht goto Break; //Statement summe+=lauf; Continue: __attribute__((unused)) //Fortsetzung lauf++; Next: //if(TestOPT) goto Goon if(lauf<20) goto Goon; Break: __attribute__((unused)) printf("summe=%d\n",summe); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Die einzelne Elemente haben folgende Bedeutung/Besonderheiten: ;Initialisierungsteil: Zum Initialisieren von Schleifenvariablen, wird einmalig mit Beginn der FOR-Anweisung ausgeführt. :* kann Leer sein, dann erfolgt keine Initialisierung :* Ab C99: Hier kann eine lokale Variable definiert werden, welche nur innerhalb dieser For-Anweisung gültig ist ;Testteil: Hierin wird vor jedem Schleifendurchlauf geprüft, ob die Schleifenbedingung erfüllt ist. Wenn Bedingung nicht erfüllt ist (Ganzzahl, Gleitkommazahl oder Zeiger gleich 0,0.0 oder NULL), wird die For-Schleife beendet. :* Kann leer sein, dann wird dieser Teil als true angesehen ;Fortsetzungsteil: Wird nach jeden Schleifendurchlauf ausgeführt. In der Regel sollte hier die Schleifenvariable aktualisiert werden :* Kann leer sein ;Statement: In der Schleife auszuführender Ausdruck :* Sollen mehrere Ausdrücke ausgeführt werden, so sind diese in einem Block zusammen zu fassen. :Ergänzende Anweisungen innerhalb des Statements/Block :* 'continue' zum Fortsetzen des Schleifendurchlaufes, d.h. Sprung zum Fortsetzungs-Teil :* 'break', zum Beenden des Schleifendurchlaufes Beispiele: * For-Schleife mit lokaler Schleifenvariable :<syntaxhighlight lang="C"> char string[]="hallo"; for(size_t lauf=0; lauf < strlen(string); lauf++) //Schleife ist Suboptimal, da in jedem Durchlauf die Funktion //strlen() aufgerufen wird! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <time.h> struct timespec diff_timespec(const struct timespec *minuend, const struct timespec *subtrahend ) { struct timespec diff = { .tv_sec = minuend->tv_sec - subtrahend->tv_sec, .tv_nsec = minuend->tv_nsec - subtrahend->tv_nsec}; //Sekundenüberlauf? if (diff.tv_nsec < 0) { diff.tv_nsec += 1000000000; diff.tv_sec--; } return diff; } int main(int argc, char *argv[]) { char string1[10000]; char string2[10000]; memset(string1,'a',sizeof(string1)); memset(string2,'a',sizeof(string2)); string1[sizeof(string1)-1]=0; string2[sizeof(string2)-1]=0; struct timespec start1,stop1; struct timespec start2,stop2; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start1); size_t sum1=0; for(size_t lauf=0; lauf < strlen(string1); lauf++) sum1++; //Schleife ist Suboptimal, da in jedem Durchlauf die Funktion //strlen() aufgerufen wird! clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop1); clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start2); size_t sum2=0; size_t count2=strlen(string2); for(size_t lauf=0; lauf < count2; lauf++) sum2++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop2); stop1=diff_timespec(&stop1,&start1); stop2=diff_timespec(&stop2,&start2); printf("Slow: Sum1=%zu Time=%lds %ldns\n",sum1,stop1.tv_sec,stop1.tv_nsec); printf("Fast: Sum2=%zu Time=%lds %ldns\n",sum2,stop2.tv_sec,stop2.tv_nsec); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Schleife mit Break-Anweisung :<syntaxhighlight lang="C"> char dest[5]; char src[10]="HalloWelt"; for(size_t lauf=0; src[lauf]!=0; lauf++) { if(lauf >= sizeof(dest)) break; dest[lauf]=src[lauf]; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char dest[5]; char src[10]="HalloWelt"; for(size_t lauf=0; src[lauf]!=0; lauf++) { printf("lauf=%zu\n",lauf); if(lauf >= sizeof(dest)) break; dest[lauf]=src[lauf]; } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Schleife, bei welcher die gesamte Aktion innerhalb der For-Anweisung ausgeführt wird :<syntaxhighlight lang="C"> char dest[5]; char src[10]="HalloWelt"; for(size_t l=0; src[l]!=0 && l <sizeof(dest); printf("l=%zu\n",l),dest[l]=src[l],l++); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char dest[5]; char src[10]="HalloWelt"; for(size_t l=0;src[l]!=0 && l <sizeof(dest); printf("l=%zu\n",l),dest[l]=src[l],l++); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Schleifenvariable muss keine Zählvariable sein :<syntaxhighlight lang="C"> int zahl=0b100010; int bits=0; for(int mask=0b10000000; mask!=0; mask>>=1 ) bits+= zahl & mask ? 1 : 0; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int zahl=0b100010; int bits=0; for(int mask=0b10000000; mask!=0; mask>>=1 ) bits+= zahl & mask ? 1 : 0; printf("Anzahl Einsen in %b = %d\n",zahl,bits); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Zeiger als Schleifenvariable :<syntaxhighlight lang="C"> char src[]="hallo"; char dst[strlen(src)+1]; char *s,*d; for(s=src,d=dst; *s; ) *d++=*s++; *d=0; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char src[]="hallo"; char dst[strlen(src)+1]; char *s,*d; for(s=src,d=dst; *s; ) *d++=*s++; *d=0; printf("src='%s' dst='%s'\n",src,dst); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Zur Geschwindigkeitsoptimierung sollten im Test- und Fortsetzungsteil keine Funktionsaufrufe mit Werten enthalten sein, die sich innerhalb der Schleife nicht ändern: :<syntaxhighlight lang="C"> for(size_t lauf=0;lauf<strlen("hallo");lauf++) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <time.h> struct timespec diff_timespec(const struct timespec *minuend, const struct timespec *subtrahend ) { struct timespec diff = { .tv_sec = minuend->tv_sec - subtrahend->tv_sec, .tv_nsec = minuend->tv_nsec - subtrahend->tv_nsec}; //Sekundenüberlauf? if (diff.tv_nsec < 0) { diff.tv_nsec += 1000000000; diff.tv_sec--; } return diff; } int main(int argc, char *argv[]) { char string1[10000]; char string2[10000]; memset(string1,'a',sizeof(string1)); memset(string2,'a',sizeof(string2)); string1[sizeof(string1)-1]=0; string2[sizeof(string2)-1]=0; struct timespec start1,stop1; struct timespec start2,stop2; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start1); size_t sum1=0; for(size_t lauf=0; lauf < strlen(string1); lauf++) sum1++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop1); clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start2); size_t sum2=0; size_t count2=strlen(string2); for(size_t lauf=0; lauf < count2; lauf++) sum2++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop2); stop1=diff_timespec(&stop1,&start1); stop2=diff_timespec(&stop2,&start2); printf("Slow: Sum1=%zu Time=%lds %ldns\n",sum1,stop1.tv_sec,stop1.tv_nsec); printf("Fast: Sum2=%zu Time=%lds %ldns\n",sum2,stop2.tv_sec,stop2.tv_nsec); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Zur Geschwindigkeitssteigerung sollte im Testteil auf 0 abgefragt werden, d.h. die Schleifenvariable dekrementiert werden :<syntaxhighlight lang="C"> for(int lauf=700000;lauf;lauf--) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <time.h> struct timespec diff_timespec(const struct timespec *minuend, const struct timespec *subtrahend ) { struct timespec diff = { .tv_sec = minuend->tv_sec - subtrahend->tv_sec, .tv_nsec = minuend->tv_nsec - subtrahend->tv_nsec}; //Sekundenüberlauf? if (diff.tv_nsec < 0) { diff.tv_nsec += 1000000000; diff.tv_sec--; } return diff; } int main(int argc, char *argv[]) { char string1[10000]; char string2[10000]; memset(string1,'a',sizeof(string1)); memset(string2,'a',sizeof(string2)); string1[sizeof(string1)-1]=0; string2[sizeof(string2)-1]=0; struct timespec start1,stop1; struct timespec start2,stop2; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start1); size_t sum1=0; for(ssize_t lauf=700000000;lauf;lauf--) sum1++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop1); clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start2); size_t sum2=0; for(ssize_t lauf=0;lauf<700000000;lauf++) sum2++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop2); stop1=diff_timespec(&stop1,&start1); stop2=diff_timespec(&stop2,&start2); printf("Slow: Sum1=%zu Time=%lds %ldns\n",sum1,stop1.tv_sec,stop1.tv_nsec); printf("Fast: Sum2=%zu Time=%lds %ldns\n",sum2,stop2.tv_sec,stop2.tv_nsec); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Alternativ zu einer Laufvariablen empfiehlt sich die Nutzung von Pointer als Schleifenvariable; :<syntaxhighlight lang="C"> for(char *ptr=str; *ptr; ptr++); </syntaxhighlight> === While-Anweisung === <code>Syntax: while(expression) Statement </code><br /> <code>Syntax: do Statement while(expression);</code><br /> Die While-Anweisungen werden vom Compiler wie folgt umgesetzt: {| class="wikitable" ! while()-Anweisung !! do while()-Anweisung |- | <poem> Continue: if(!'''expression''') goto Break //Break-Anweisung entspricht // goto Break; //Continue-Anweisung entspr. // goto Continue; '''Statement''' goto Continue Break: </poem> || <poem> GoOn: //Break-Anweisung entspr. // goto Break //Continue-Anweisung ent. // goto Continue '''Statement''' Continue: if('''expression''') goto GoOn Break: </poem> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> int main(int argc, char *argv[]) { int lauf; int summe; lauf=summe=0; while(lauf<10) { if(lauf>=5) break; lauf++; if(lauf<3) continue; summe+=lauf; } printf("summe=%d\n",summe); lauf=summe=0; Continue1: if(!(lauf<10)) goto Break1; //Break-Anweisung entspricht // goto Break; //Continue-Anweisung entspr. // goto Continue; //Statement if(lauf>=5) { goto Break1; } lauf++; if(lauf<3) goto Continue1; summe+=lauf; goto Continue1; Break1: printf("summe=%d\n",summe); lauf=summe=0; do { lauf++; if(lauf>5) break; if(lauf<3) continue; summe+=lauf; } while(lauf<10); printf("summe=%d\n",summe); lauf=summe=0; GoOn2: //Break-Anweisung entspr. // goto Break //Continue-Anweisung ent. // goto Continue //Statement lauf++; if(lauf>5) goto Break2; if(lauf<3) goto Continue2; summe+=lauf; Continue2: if(lauf<10) goto GoOn2; Break2: __attribute__((unused)); printf("summe=%d\n",summe); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Folgendes gilt es bei der Nutzung der While-Anweisung zu beachten: * Soll mehr als ein Statement innerhalb der While-Schleife ausgeführt werden, so sind diese in einem Block zu schreiben * Statement kann eine Leeranweisung (gekennzeichnet durch ein Semikolon) sein :<syntaxhighlight lang="C"> while(1); do ; while(1); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int lauf1=1000; while(lauf1--); int lauf2=1000; do ; while(lauf2--); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Bei der do-While-Schleife ist das abschließende Semikolon Bestandteil des Befehls * expression muss eine Ganzzahl, Gleitkommazahl oder Zeiger zurückgeben, der bei False (0, 0.0 oder NULL) die Schleife beendet. Beispiele: * Endlosschleife :<syntaxhighlight lang="C"> while(1) {} </syntaxhighlight> * Schleife zum Durchlaufen eines String :<syntaxhighlight lang="C"> char str[]="string"; char *ptr=str; while(*ptr++); size_t len=ptr-str-1; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char str[]="string"; char *ptr=str; while(*ptr++); size_t len=ptr-str-1; printf("Stringlänge=%zu\n",len); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Switch-Anweisung === <code>Syntax: switch(expression) statement</code><br /> <code>Syntax: statement:= case constant-expression: statement<sub>opt</sub> default: statement<sub>opt</sub></code><br /> Die Switch-Anweisung entspricht einer verschachtelten If-Anweisung, mit der Besonderheit, dass der auszuführende Code nicht im If-Zweig stattfindet, sondern dort ein goto zum eigentlichen Code enthalten ist: {| class="wikitable" ! Switch-Anweisung !! Compilerumsetzung |- |<syntaxhighlight lang="C"> switch(a) { case 1: int a=7; //Code break; case 2: printf("%d",a); case 3: { int a; //Code } case 4 ... 8: default: //Code } </syntaxhighlight> ||<poem> if(a==1) goto label1; else if(a==2) goto label2; else goto label_default; //------------------- label1: //Code goto label_break; label2: //Code label_default: goto label_break; label_break: </poem> |} Folgendes gilt es bei der Nutzung der Switch-Anweisung zu beachten: * <code>Expression</code> muss zu einer Ganzzahl (int, short, char, long, long long) oder enum (entspricht einer Ganzzahl) ausgewertet werden * <code>constant-expression</code> muss eine Ganzzahl-Konstante oder ein Enumelement sein. Sie darf nicht doppelt im Block vorkommen. Der genaue Datentyp ergibt sich aus dem Datentyp der <code>expression</code> * Lt. Spezifikation ist ein nur <code>statement</code> hinter der switch-Anweisung erlaubt, so dass nur ein <code>case</code> Fall oder der <code>default</code> Fall bedient werden kann::<syntaxhighlight lang="C"> int var=1; switch(var) case 1: printf("hallo"); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int var=1; switch(var) case 1: printf("hallo"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Die geschweifte Klammer der <code>switch</code>-Anweisung erzeugt einen Block, so dass a) hier mehrere <code>case</code>-Fälle und b) hierin definierte Variablen innerhalb des gesamten Blocks zur Verfügung stehen (sind somit nicht <code>case</code> abhängig). Die <code>case</code> Anweisung ist nichts anderes als eine Sprungmarken (welche durch die switch-Anweisung angesprungen wird) so dass der Initialisierungsteil der lokalen Variablen übersprungen / nicht ausgeführt werden kann: :<syntaxhighlight lang="C"> switch(a) { int a=3; //Variable in gesamten Block gültig case 1: int b=3; //Variabe in gesamten Block gültig printf("%d %d",a,b); //a undefiniert, b=3 break; case 2: printf("%d %d",a,b); //a und b undefiniert break; case 3: { //Block, so dass Variable int a=4711; //nur in diesem CASE gültig ist break; } } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=1; switch(a) { int a=3; //Variable in gesamten Block gültig case 1: int b=3; //Variabe in gesamten Block gültig printf("a=%d b=%d",a,b); //a undefiniert, b=3 break; case 2: printf("%d %d",a,b); //a und b undefiniert break; case 3: { //Block, so dass Variable int a=4711; //nur in diesem CASE gültig ist (void)a; break; } } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * GNU-C (siehe [https://www.gnu.org/software/c-intro-and-ref/manual/html_node/switch-Statement.html Switch-Statement]) erlaubt ergänzend zur Angabe einer Konstante die Angabe eines Wertebereiches: :<syntaxhighlight lang="C"> switch(a) { case 1 ... 8: //Leerzeichen zwischen den Konstanten zwingend notwendig //andernfalls wird der Punkt zur Konstante zugehörig //interpretiert (erzeugt dann eine Gleitpunktkonstante) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=2; switch(a) { case 1 ... 8: //Leerzeichen zwischen den Konstanten zwingend notwendig //andernfalls wird der Punkt zur Konstante zugehörig //interpretiert (erzeugt dann eine Gleitpunktkonstante) printf("a im Bereich von 1 bis 8\n"); break; } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * <code>break</code> ist optional. Mittels <code>break</code> wird an das Ende der Switch-Anweisung gesprungen. Wenn <code>break</code> weggelassen wird, wird die nachfolgende Anweisungen ausgeführt. Ggf. gibt der Compiler eine Warning aus. Mittels der GCC-Compiler-Anweisung __attribute__((fallthrough)); kann diese Warning unterdrückt werden: :<syntaxhighlight lang="C"> switch(a) { case 0: //ggf. Compiler-Warning __attribute__((fallthrough)); case 1: case 2: break; } </syntaxhighlight> * Ein Variable Length Array ist als Variable im Switch-Block direkt nicht erlaubt. Ist dies notwendig, so ist das VLA in einem inneren Block zu kapseln: :<syntaxhighlight lang="C"> switch(var) { case 1: int arr[var]; //KO break; case 2: { int arr[var]; //OK } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int var=1; switch(var) { case 1: int arr[var]; //KO break; case 2: { int arr[var]; //OK } } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Case - Anweisungen sind nichts anderes als Sprungmarken (Labels), so dass CASE-Anweisungen überall innerhalb des Switch-Blockes stehen können: :<syntaxhighlight lang="C"> int prime(int value) {return value+1;} void hallo(int var) { switch(var) { default: if(prime(var)) case 2: case 4: printf("%d",var); else { case 3: case 6: printf("%x",var); } case 7: printf("xyz"); } } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int prime(int value) { return value+1; } int main(int argc, char *argv[]) { int var=1; switch(var) { default: if(prime(var)) case 2: case 4: printf("%d",var); else { case 3: case 6: printf("%x",var); } case 7: printf("xyz"); } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} :oder anderen Anweisungen innerhalb des Switch-Blockes enthalten sein können: :<syntaxhighlight lang="C"> void send(register char *dst, register char *src, register size_t count) { register char unsigned n=(count+7)/8; switch(count%8) { case 0: do{ *dst = *src++; case 7: *dst = *src++; case 6: *dst = *src++; case 5: *dst = *src++; case 4: *dst = *src++; case 3: *dst = *src++; case 2: *dst = *src++; case 1: *dst = *src++; }while(--n>0); } } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <stdint.h> //fuer uintptr_t void send(register char *dst, register char *src, register size_t count) { register char unsigned n=(count+7)/8; switch(count%8) { case 0: do{ *dst = *src++; printf("%02hhx ",*dst); case 7: *dst = *src++; printf("%02hhx ",*dst); case 6: *dst = *src++; printf("%02hhx ",*dst); case 5: *dst = *src++; printf("%02hhx ",*dst); case 4: *dst = *src++; printf("%02hhx ",*dst); case 3: *dst = *src++; printf("%02hhx ",*dst); case 2: *dst = *src++; printf("%02hhx ",*dst); case 1: *dst = *src++; printf("%02hhx ",*dst); }while(--n>0); } } int main(int argc, char *argv[]) { char src[20]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}; char dst; send(&dst,src,20); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Eine Switch-Case Anweisung über Strings sind in C/C++ nicht möglich: :<syntaxhighlight lang="C"> switch(str) { case "hallo": return 1; case "du da": return 2; case "xyz": return 3; default: rReturn -1; } </syntaxhighlight> :Ein direkte Lösungsansatz ist die Nutzung von strcmp() zum Vergleichen von String. Da strcmp zeichenweise den String vergleicht, ist dieser Ansatz langsam. Alternativ bietet sich an, von allen String einen Hash-Wert zu berechnen und zunächst diesen Hash-Wert zu kontrollieren. Da der Hash-Wert nicht eindeutig ist, muss ergänzend ein strcmp() erfolgen: :<syntaxhighlight lang="C"> char *str="hallo"; switch(HASH_LAUFZEIT(str)) { case HASH_COMPILEZEIT('d','u'): if(!strcmp(str,"du")) printf("Case \"du\":\n"); break; case HASH_COMPILEZEIT('h','a','l','l','o'): if(!strcmp(str,"hallo")) printf("Case \"hallo\"\n"); else if(!strcmp(str,"xyz")) printf("String='xyz'\n"); break; default: return -1; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <stdint.h> //Lösungsansatz von: https://stackoverflow.com/questions/2826559/compile-time-preprocessor-hashing-of-string #define H1(s,i,x) (x*65599u+(uint8_t)s[(i)<strlen(s)?strlen(s)-1-(i):strlen(s)]) #define H4(s,i,x) H1(s,i,H1(s,i+1,H1(s,i+2,H1(s,i+3,x)))) #define H16(s,i,x) H4(s,i,H4(s,i+4,H4(s,i+8,H4(s,i+12,x)))) #define H64(s,i,x) H16(s,i,H16(s,i+16,H16(s,i+32,H16(s,i+48,x)))) #define H256(s,i,x) H64(s,i,H64(s,i+64,H64(s,i+128,H64(s,i+192,x)))) #define HASH(s) ((uint32_t)(H256(s,0,0)^(H256(s,0,0)>>16))) #define HASH_LAUFZEIT(s) (H256(s,0,0)) //Eigener Lösungsatz zur Umsetzung des vorherigen HASH-Algorithmus //so dass dieser zur Compilezeit berechnet werden kann //Was fehlt ist die abschließende EXOR berechnung! //Problem war, dass die Array-Dereferenzierung nicht zur Compilezeit //aufelöst werden kann #define HH0(a,x) (x*65599u+a) #define HH1(a) HH0(a,HH0(0,HH0(0,HH0(0,0)))) #define HH2(a,b) HH0(b,HH0(a,HH0(0,HH0(0,0)))) #define HH3(a,b,c) HH0(c,HH0(b,HH0(a,HH0(0,0)))) #define HH4(a,b,c,d) HH0(d,HH0(c,HH0(b,HH0(a,0)))) #define HH4x(a,b,c,d,x) HH0(d,HH0(c,HH0(b,HH0(a,x)))) #define HH5(a,b,c,d,e) HH4x(b,c,d,e,HH4x(0,0,0,a,0)) #define HH6(a,b,c,d,e,f) HH4x(c,d,e,f,HH4x(0,0,a,b,0)) #define HH7(a,b,c,d,e,f,g) HH4x(d,e,f,g,HH4x(0,a,b,c,0)) #define HH8(a,b,c,d,e,f,g,h) HH4x(e,f,g,h,HH4x(a,b,c,d,0)) #define HH9(a,b,c,d,e,f,g,h,i) HH4x(f,g,h,i,HH4x(b,c,d,e,HH4x(0,0,0,a,0))) #define HH10(a,b,c,d,e,f,g,h,i,j) HH4x(g,h,i,j,HH4x(c,d,e,f,HH4x(0,0,a,b,0))) #define HH11(a,b,c,d,e,f,g,h,i,j,k) HH4x(h,i,j,k,HH4x(d,e,f,g,HH4x(0,a,b,c,0))) #define HH12(a,b,c,d,e,f,g,h,i,j,k,l) HH4x(i,j,k,l,HH4x(e,f,g,h,HH4x(a,b,c,d,0))) #define HH13(a,b,c,d,e,f,g,h,i,j,k,l,m) HH4x(j,k,l,m,HH4x(f,g,h,i,HH4x(b,c,d,e,HH4x(0,0,0,a,0)))) #define HH14(a,b,c,d,e,f,g,h,i,j,k,l,m,n) HH4x(k,l,m,n,HH4x(g,h,i,j,HH4x(c,d,e,f,HH4x(0,0,a,b,0)))) #define HH15(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) HH4x(l,m,n,o,HH4x(h,i,j,k,HH4x(d,e,f,g,HH4x(0,a,b,c,0)))) #define HH16(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) HH4x(m,n,o,p,HH4x(i,j,k,l,HH4x(e,f,g,h,HH4x(a,b,c,d,0)))) #define EIGHTEENTH_ARGUMENT(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, \ a11,a12,a13,a14,a15,a16,a17,a18, ...) a18 #define CONCAT(c,d) c ## d #define CONCATI(a,b) CONCAT(a,b) #define HASH_COMPILEZEIT(...) CONCATI(HH , EIGHTEENTH_ARGUMENT(dummy, ## __VA_ARGS__, \ 16,15,14,13,12,11,10,9, 8, 7, 6, 5, 4, 3, 2, 1, 0))(__VA_ARGS__) //Lösungsansatz basierend auf: https://renenyffenegger.ch/notes/development/languages/C-C-plus-plus/preprocessor/macros/__VA_ARGS__/count-arguments #define COUNT_ARGUMENTS(...) EIGHTEENTH_ARGUMENT(dummy, ## __VA_ARGS__, \ 16,15,14,13,12,11,10,9, 8, 7, 6, 5, 4, 3, 2, 1, 0) int main(int argc, char *argv[]) { char *str="hallo"; switch(HASH_LAUFZEIT(str)) { case HASH_COMPILEZEIT('d','u'): if(!strcmp(str,"du")) printf("Case \"du\":\n"); break; case HASH_COMPILEZEIT('h','a','l','l','o'): if(!strcmp(str,"hallo")) printf("Case \"hallo\"\n"); else if(!strcmp(str,"xyz")) printf("String='xyz'\n"); break; default: return -1; } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} :Siehe:[https://benhoyt.com/writings/hash-table-in-c/ Hash Table in C] == Label + Goto == === Label === <code>Syntax: name:</code><br /> Labels dienen zur Kennzeichnung einer Anweisung, so dass die Programmausführung an dieser Stelle fortgesetzt, resp. mit einer GOTO-Anweisung angesprungen werden kann. Ein Label ist durch den folgenden Doppelpunkt gekennzeichnet. Dem Label muss eine Anweisung folgen, welches auch eine Leeranweisung (Semikolon) sein kann. Folgendes gilt es bei der Nutzung von Labels zu beachten: * Ein Label entspricht der Speicheradresse des der Label-Anweisung folgenden Anweisung * Bei nicht genutzten Labels (mit goto nicht angesprungene Labels) gibt der Compiler eine Warning aus. Diese kann beim GCC-Compiler mit __attribute__((unused)) unterdrückt werden * die Case- und die Default-Anweisung aus der Switch-Anweisung entspricht einem Label <br /> Labels hat eine funktionsweite Sichtbarkeit (siehe Kap [[#Gültigkeit/Sichtbarkeit von Variablen| Gültigkeit/Sichtbarkeit von Variablen]]). Dies bedeutet, dass das: * Labels nur innerhalb einer Funktion gültig ist * Labels einen von Variablen/Funktionen/Datentypen unabhängigen Namensraum haben * Kein Prototyp für ein Label notwendig ist, wenn es bei Nutzung über goto noch nicht gesetzt worden ist, also nach vorne gesprungen wird === goto === <code>Syntax: goto label;</code><br /> Mit der Goto-Anweisung wird die Programmausführung an der mit <code>label</code> gekennzeichneten Stelle fortgesetzt. Folgendes gilt es bei der Nutzung von goto zu beachten: * Mit einer <code>goto</code> Anweisung kann an eine beliebige Steller innerhalb der '''identischen''' Funktion gesprungen werden. Es kann nicht zu einem Label in einer anderen Funktion gesprungen werden (hierzu ist <code>setjmp()</code> und <code>longjmp()</code> zu nutzen) * Mit der Goto Anweisung kann gleichermaßen in einen Block hinein, als auch herausgesprungen werden: :<syntaxhighlight lang="C"> goto first_time; for(;;) { if(a>10) goto last_time: first_time: a++; } last_time: ; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=0; goto first_time; for(;;) { printf("a=%d\n",a); if(a>10) goto last_time; first_time: a++; } last_time: ; //Leeranweisung wäre hier nicht nötig return 0; //da dem Label ein return folgt! } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Wird mit der <code>goto</code> Anweisung der Initialisierungsteil einer Variablen übersprungen, so ist zwar die Variable existent, beinhaltet aber nicht ihren Initialisierungswert Beispiel: <syntaxhighlight lang="C"> goto label1; if(a==3) { label2: printf("True\n"); } else label1: { printf("False\n"); } if(a==3) goto label2; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=3; goto label1; if(a==3) { label2: printf("True\n"); a++; } else label1: { printf("False\n"); } if(a==3) goto label2; return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * In Java gibt es das Schlüsselwort goto, welches aber ohne Funktion ist. Es gibt jedoch Labels, die mit "break label" angesprungen werden können === Anwendungsbeispiele === Prinzipiell sind Goto-Anweisungen zu vermeiden. In einigen Anwendungsfällen erweist sich goto als nützlich: * Nutzung nur einer <code>return</code> Anweisung in einer Funktionen :<syntaxhighlight lang="C"> #include <unistd.h> int input(int hdl,size_t buflen) { int rc=-1; unsigned char packettype; if(read(hdl,&packettype,1) != 1) goto exit; unsigned short packetlen; if(read(hdl,&packetlen,2) != 2) goto exit; if((1+packetlen) > buflen) { rc=-2; goto exit; } rc=packetlen; exit: return rc; } </syntaxhighlight> * Konstruktor mit mehreren Initialisierungsteilen :<syntaxhighlight lang="C"> int main(int argc,char *argv[]) { enum {INIT_2,INIT_1,INIT_START} fortschritt=INIT_START; int *ptr1; int *ptr2; if(!(ptr1=malloc(10))) goto end; fortschritt=INIT_1; if(!(ptr2=malloc(20))) goto end; fortschritt=INIT_2; // ... end: switch(fortschritt) { case INIT_2: free(ptr2); __attribute__((fallthrough)); case INIT_1: free(ptr1); __attribute__((fallthrough)); case INIT_START: } return (int)fortschritt; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { enum {INIT_2,INIT_1,INIT_START} fortschritt=INIT_START; int *ptr1; int *ptr2; if(!(ptr1=malloc(10))) goto end; fortschritt=INIT_1; if(!(ptr2=malloc(20))) goto end; fortschritt=INIT_2; // ... end: switch(fortschritt) { case INIT_2: free(ptr2); __attribute__((fallthrough)); case INIT_1: free(ptr1); __attribute__((fallthrough)); case INIT_START: } return (int)fortschritt; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Abbruch einer verschachtelten Schleife :<syntaxhighlight lang="C"> int arr[10][10]; size_t zeile; size_t spalte; for(zeile=0;zeile<10;zeile++) for(spalte=0;spalte<0;spalte++) if(arr[zeile][spalte]==0) goto label_end; label_end: if((zeile==0) && (spalte==0)) printf("Nichts gefunden"); else printf("Gefunden an %zu %zu",zeile,spalte); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int arr[10][10]; size_t zeile; size_t spalte; for(zeile=0;zeile<10;zeile++) for(spalte=0;spalte<0;spalte++) if(arr[zeile][spalte]==0) goto label_end; label_end: if((zeile==0) && (spalte==0)) printf("Nichts gefunden"); else printf("Gefunden an %zu %zu",zeile,spalte); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Sonstiges == === ??-Trigraphs === Zeichenfolge bestehend aus 3 Zeichen beginnend mit 2 Fragezeichen. Die beiden Fragezeichen entsprechen einem ESCAPE-Operator (siehe Kap [[#Char-Konstanten|Char-Konstanten]]), welcher das nachfolgende Zeichen durch ein anderes ASCII Zeichen ersetzt. Die Ersetzung findet auch innerhalb von Strings statt.<br /> Trigraphs wurden früher genutzt, als die ALTGR Taste noch nicht üblich war. <syntaxhighlight> ??< → { ??> → } ??( → [ ??) → ] ??/ → \ ??! → | ??' → ^ ??- → ~ ??= → # </syntaxhighlight> Bei neuer C Varianten muss zur Nutzung von Trigraphs der Compiler mittels -trigraphs aktiviert werden. <noinclude> {{Navigation zurückhochvor buch |zurücklink=Programmieren in C/C++: Toolchain/Entwicklungsumgebung |zurücktext=Toolchain/Entwicklungsumgebung |hochlink=Programmieren in C/C++ |hochtext=Inhaltsverzeichnis |vorlink=Programmieren in C/C++: Datentypen |vortext=Datentypen}} </noinclude> ddrn5hcqo6f6gh8io4wqn68fb9jnitv 1090609 1090608 2026-09-09T09:52:34Z D. Justen 102048 Titel geändert 1090609 wikitext text/x-wiki <noinclude> {{Navigation zurückhochvor buch |zurücklink=Programmieren in C/C++: Toolchain/Entwicklungsumgebung |zurücktext=Toolchain/Entwicklungsumgebung |hochlink=Programmieren in C/C++ |hochtext=Inhaltsverzeichnis |vorlink=Programmieren in C/C++: Datentypen |vortext=Datentypen}} </noinclude> <!-- Falls du ein automatisch erstelltes Inhaltsverzeichnis nicht willst, ersetze das nachfolgende TOC durch NOTOC --> <!-- Einklammerung mit noinclude, damit dieses nicht in der Druckversion erscheint --> <noinclude>__TOC__</noinclude> Die Programmiersprache C/C++ beinhaltet mehrere Sprachen/ Syntaxen: * C-Syntax * Präprozessor-Syntax * Printf/Scanf Formatstring Syntax * Terminal Emulation * Compiler/Linker Anweisungen Letztere beiden werden nur rudimentär in dieser Vorlesung/diesem Skript behandelt. Alle anderen sind Bestandteil dieser Vorlesung. In diesem Kapitel sollen zunächst allgemeine Eigenschaften der Sprache, der grundlegende Syntax und die Kontrollstrukturen erklärt werden. Bei vielen Erklärungen sind Code-Beispiele vorhanden. Da man aus Fehlern am meisten lernt, sind zum Teil auch negative Beispiele enthalten. Für ein besseres Verständnis empfiehlt es sich, Code-Beispiele selbst nachzuvollziehen.<br /> Sofern sich die Eigenschaften auf eine bestimmte C-/C++- oder Compiler-Version beziehen, wird dies gesondert vermerkt. == Zeichensatz == Der Syntax von C nutzt die unteren 128 Zeichen des ASCII Zeichensatzes. Da UTF-8 in den ersten 128 Zeichen deckungsgleich zu ASCII ist, kann auch dieser zur Erstellung des Source Codes genutzt werden. Zeichen außerhalb dieses gültigen Zeichensatzes können folglich nur in Strings oder Kommentaren vorkommen. Werden Zeichen außerhalb der unteren 128 Zeichen in Strings genutzt, so gilt Folgendes zu berücksichtigen: * Die String-Funktionalitäten der Standard-C Library gehen von dem regulären ASCII Zeichensatz aus, so dass z.B. die Suche, der Vergleich oder die Konvertierung fehlschlagen kann * Strings werden oftmals in Verbindung mit printf() genutzt, d.h. auf der Standardausgabe ausgegeben. Der verwendete Zeichensatz sollte hier identisch zum verwendeten Zeichensatz der Terminal-Emulation sein! == Kommentarzeichen == Kommentare dienen dazu, den Source Code mit zusätzlichen Hinweisen zu versehen, so dass die Intension der Anweisungen sichtbar wird. Kommentarzeichen werden durch den Compiler vor dem eigentlichen Übersetzungsdurchlauf entfernt und durch ein Leerzeichen ersetzt [C11 6.4.9]. Innerhalb von Strings wird nicht nach Kommentarzeichen gesucht. <code> Syntax: /* */ </code> Blockkommentar zum Kommentieren eines Bereiches, auch über mehrere Zeilen hinweg. Dieses Kommentarzeichen kann nicht verschachtelt werden, d.h. '*/' beendet die Kommentierung, unabhängig von der Anzahl der zuvor geöffneten Kommentierungen! <code> Syntax: // </code> Zeilenkommentar zum Kommentieren bis zum Zeilenende (wurde in der Programmiersprache BCPL definiert, aber nicht von C, sondern erst von C++ übernommen). Sollen größere Bereiche auskommentiert werden, so empfiehlt sich die Nutzung der Präprozessoranweisung #if 0 ... #endif. Beispiele: <syntaxhighlight lang="C"> /* Blockkommentar mit zwei öffnenden Klammern /* über mehrere Zeilen, nicht verschachtelt */ //Zeilenkommentar /* Kleiner Bereich zum auskommentieren */ #if 0 Großer Bereich zum auskommentieren #endif </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> /* Blockkommentar mit zwei öffnenden Klammern /* über mehrere Zeilen, nicht verschachtelt Compiler-Warning nur aufgrund des Compiler-Schalters -Wall! */ //Zeilenkommentar /* Kleiner Bereich zum auskommentieren */ #if 0 Großer Bereich zum auskommentieren #endif int main(int argc,char *argv[]) { return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Namenskonventionen == Folgende Regeln gelten bzgl. der Benennung von Variablen und Funktionen: * Variablen und Funktionsnamen können aus Buchstaben, Zahlen und dem Unterstrich bestehen. Sie müssen mit einem Buchstaben oder einem Unterstrich beginnen * Seit C95 können weitere Zeichen aus dem Universal Coded Character Set (UCS) genutzt werden [C11 D.1] * C ist Case sensitiv, d.h. es wird zwischen Groß- und Kleinbuchstaben unterschieden * Schlüsselwörter können nicht für Variablen/Funktionsnamen/Datentypen genutzt werden Namenskonventionen von Libraryfunktionen: * In C (und C++) sind Schlüsselwörter und Standardlibraryfunktionen zumeist in Kleinbuchstaben geschrieben. In der C-Standardlibrary werden oftmals verkürzte Ausdrücke (z.B. isalnum() (zum Testen ob ein Zeichen ein Buchstaben oder ein Digit ist) und in C++ der Unterstrich als Worttrenner (z.b. out_of_range) genutzt * Makros (siehe Kap.[[Programmieren in C/C++: Präprozessor | Präprozessor]]) werden per Konvention in GROSSBUCHSTABEN und ggf. mit Unterstrich als Worttrenner geschrieben. * Namen beginnend mit doppelten Unterstrich oder beginnend mit einem Unterstrich gefolgt von einem Großbuchstaben (z.B. __LINE__ _Reserved) sind für den Compiler und der Standard-C-Library vorbehalten und sollten im eigenen Programm nicht benutzt werden. == Zeilenfortsetzung == Mit dem Backslash Operator (gefolgt von einem Zeilenende) kann eine Zeile in der nächsten Zeile fortgesetzt werden. Der Compiler löscht das \-Zeichen mit anschließendem Zeilenende und ersetzt dies durch nichts. Dies ist insbesondere bei Anweisungen notwendig, die am Ende der Zeile abgeschlossen sein müssen (z.B. Strings, Makros). Beispiele: <syntaxhighlight lang="c"> char str1[]="Strings müssen am Ende abgeschlossen sein so dass dies ein Fehler ist"; char str2[]="Dies\ ist ein Test"; //Vorsicht, führende Leerzeichen vor 'ist' //bleiben erhalten! /*mehrzeiliges Makro*/ #define MAX(a,b) (a>b?\ b: \ a) //Dies ist ein Zeilenkommentar \ welcher in dieser Zeile fortgesetzt wird /\ * dies ist ein Blockkommentar*\ / //hinter der Zeilenfortsetzung darf nur ein CR/LF folgen #define MAX2(a,b) \ //so dass hier kein Kommentar folgen darf a>b?a:b </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> char str1[]="Strings müssen am Ende abgeschlossen sein so dass dies ein Fehler ist"; char str2[]="Dies\ ist ein Test"; //Vorsicht, führende Leerzeichen vor 'ist' //bleiben erhalten! /*mehrzeiliges Makro*/ #define MAX(a,b) (a>b?\ b: \ a) //Dies ist ein Zeilenkommentar \ welcher in dieser Zeile fortgesetzt wird /\ * dies ist ein Blockkommentar*\ / //hinter der Zeilenfortsetzung darf nur ein CR/LF folgen #define MAX2(a,b) \ //so dass hier kein Kommentar folgen darf a>b?a:b int main(int argc,char *argv[]) { return 0; } | execCompilerOptions=| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Innerhalb von Char-Literatoren und Strings wird '\' als Escape-Operator genutzt, welche das '\' und ein oder mehrere folgende Zeichen ersetzt (siehe Kap.[[Programmieren in C/C++: Grundlagen#Literale/Konstanten | Grundlagen:Literale/Konstanten]]). Daher darf hinter Backslash als Zeilenfortsetzungszeichen kein weiteres Zeichen folgen. == Gültigkeit/Sichtbarkeit von Variablen == Vorrangig in der objektorientierten Programmierung werden mit Namensräumen Objekte und deren Methoden/Attribute in einer Art Baumstruktur strukturiert. Dies ermöglicht eine eindeutige Ansprache von Variablen/Objekte, aber auch eine doppelte Verwendung von Methoden-/Attributnamen in unterschiedlichen Namensräumen. Ergänzend zu den Namensräumen kann mit public/private/proteced eine Zugriffsbeschränkung von Methoden/Attributen definiert werden. Die Programmiersprache C unterstützt keinen Namensraum. Zugriffsmodifikatoren werden indirekt über Header-Dateien getätigt. Hinsichtlich der Gültigkeit/Sichtbarkeit unterscheidet C folgende Bereiche [C11 6.2.1]: * Funktionen (Function Scope) * Datei (File Scope) * Block (Block Scope) * Funktionsparameter in Prototypen (Function Prototype Scope) Innerhalb eines Gültigkeitsbereiches dürfen Variablen-/Funktions-/Datentypnamen nicht doppelt genutzt werden.<br /> In der Programmiersprache C++ sind weitere Scope wie z.B. Class Scope, Enumationation Scope und ergänzend das Konzept von Namensräumen vorhanden (Beschreibung folgt). === Funktionsweite Sichtbarkeit === Eine Label-Definition (als Sprungmarke für die goto-Anweisungen) erfolgt immer mit funktionsweiter Sichtbarkeit/Gültigkeit. Die genaue Beschreibung dieses Sichtbarkeitstyps erfolgt im Rahmen des Kapitels [[Programmieren in C/C++: Grundlagen #Label + Goto|Grundlagen:Label+Goto]]. === Dateiweite Sichtbarkeit === Erfolgt eine Funktion-/Variablen-/Datentyp-Definition außerhalb eines Block-Scopes oder von Funktionsparameter, so sind diese innerhalb der gesamten Datei und bei Funktionen/Variablen ergänzend Projektweit (für alle Objektdateien) sichtbar/gültig (=&nbsp;global) (In der C-Spec unter dem Stichwort 'Linkage' beschrieben, siehe Kapitel [[Programmieren in C/C++: DatentypeSpecifier#Internal/External Linkage| DatentypeSpecifier:Internal/External Linkage]]). Alle globalen Funktionen/Variablen können von allen Dateien aus genutzt/zugegriffen werden (sofern sie zuvor deklariert wurden).<br /> Beispiel: {| class="wikitable" |- ! Datei1.c !! Datei2.c |- | <syntaxhighlight lang="C"> //Deklaration von func(), //welche in Datei2.c definiert wird extern void func(void); //Definition der Variablen global int global=0; int main(void) { func(); global++; return 0; } </syntaxhighlight> || <syntaxhighlight lang="C"> //Deklaration von global, //welche in Datei1.c definiert wird extern int global; //Definition der Funktion func() void func(void) { global++; } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Deklaration von func(), //welche in Datei2.c definiert wird extern void func(void); //Definition der Variablen global int global=0; int main(void) { func(); global++; printf("global=%d\n",global); return 0; } | datei2_c=#include <stdio.h> //Deklaration von global, //welche in example.c definiert wird extern int global; //Definition der Funktion func() void func(void) { global++; printf("func() called\n"); } | execCompilerOptions=-Wall datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Wird das Schlüsselwort 'static' der Variablen/Funktionsdefinition vorangestellt, so wird die Sichtbarkeit/Gültigkeit auf Dateiweit eingeschränkt. Variablen/Funktionen können nur innerhalb der (Objekt-) Datei genutzt werden und sind für anderen (Objekt-)Dateien unsichtbar. (Siehe Kap. [[Programmieren in C/C++: DatentypeSpecifier#Internal/External Linkage|DatentypeSpecifier:Internal/External Linkage]] Internal/External Linkage) {| class="wikitable" |- ! Datei1.c !! Datei2.c |- | <syntaxhighlight lang="C"> //Dateiweite Sichtbarkeit von var1 static int var1; int main(void) { var1++; return 0; } </syntaxhighlight> || <syntaxhighlight lang="C"> //Dateiweite Sichtbarkeit von var1 static int var1; void func(void) { static int var2; //Vorsicht, static // hat hier eine andere Bedeutung var1++; } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Dateiweite Sichtbarkeit von var1 static int var1; int main(void) { var1++; printf("example.c:var1=%d\n",var1); void func(void); //Prototyp für func() func(); return 0; } | datei2_c=#include <stdio.h> //Dateiweite Sichtbarkeit von var1 static int var1; void func(void) { static int var2; //Vorsicht, static // hat hier eine andere Bedeutung var1++; printf("datei2.c:var1=%d\n",var1); } | execCompilerOptions=datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Projektweite Gültigkeit bedeutet insbesondere, dass keine doppelten Benennung von Variablen/Funktionen/Datentypen innerhalb des gesamten Projektes erlaubt sind, d.h. alle Variablen/Funktionennamen über alle Dateien/Librarys eindeutig sein müssen.<br> Beispiel 1: {| class="wikitable" |- ! Datei1.c !! Datei.2 |- | <syntaxhighlight lang="C"> #include <stdio.h> int a=1; int main(int argc,char *argv[]) { printf("Hello World %d",a); void dummy(void); //Deklaration von Dummy dummy(); return 0; }</syntaxhighlight> || <syntaxhighlight lang="C"> #include <stdio.h> int a=7; void dummy(void) { printf("Hello Again %d\n",a); } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int a=1; int main(int argc,char *argv[]) { printf("Hello World %d",a); void dummy(void); //Deklaration von Dummy dummy(); return 0; } | datei2_c=#include <stdio.h> #include <stdio.h> int a=7; void dummy(void) { printf("Hello Again %d\n",a); } | execCompilerOptions=datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Der Linker meldet beim Zusammenfügen der Objekt-Dateien, dass die Variable a bereits woanders definiert sei (multiple definition of `a';)! Beispiel 2: <syntaxhighlight lang="C"> #include <stdio.h> //fuer printf() size_t stderr int printf=7; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int printf=7; int main(int argc,char *argv[]) { return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hier meldet der Compiler eine Fehlermeldung, da das Symbol printf zu einen als Variable und zum anderen als Funktion (innerhalb der inkludierten Datei stdio.h beschrieben) genutzt wird ('printf' redeclared as different kind of symbol). === Blockweite Sichtbarkeit === Erfolgt eine Funktion-/Variablen-/Datentyp Definition innerhalb einer Funktion, als Funktionsparameter oder eines Blockes, so sind diese nur innerhalb des Blockes sichtbar/gültig (=Lokale Variable). Blöcke können verschachtelt sein, so dass das bei identischer Namensgebung innere Definitionen Vorrang haben. Ebenso haben Blockdefinitionen Vorrang vor Datei-/Projektdefinitionen (überdecken diese): {| class="wikitable" |- ! Datei1.c !! Datei2.c |- | <syntaxhighlight lang="C"> int main(void) { int var2; //var2 ist nur innerhalb //von main() sichtbar struct xyz //Datentyp ist nur innerhalb {int x,y,z;};//von main() //sichtbar/gültig extern void func(void); //Deklaration //ist nur innerhalb von //main() sichtbar/gültig func(); } void foo(void) { struct xyz var_xyz; //Fehler, da //Datentypedefinition hier nicht mehr //gültig ist! func(); //Fehler, da Deklaration //hier nicht mehr gültig ist } </syntaxhighlight> || <syntaxhighlight lang="C"> #include <stdio.h> void func(void) { int var2=1; //var2 ist //nur innerhalb von //func() sichtbar { int var2=2; //var2 ist nur innerhalb //dieses Blockes sichtbar printf("%d\n",var2); } printf("%d\n",var2); } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(void) { int var2; //var2 ist nur innerhalb //von main() sichtbar struct xyz //Datentyp ist nur innerhalb {int x,y,z;};//von main() //sichtbar/gültig extern void func(void); //Deklaration //ist nur innerhalb von //main() sichtbar/gültig func(); } void foo(void) { struct xyz var_xyz; //Fehler, da //Datentypedefinition hier nicht mehr //gültig ist! func(); //Fehler, da Deklaration //hier nicht mehr gültig ist } | datei2_c=#include <stdio.h> void func(void) { int var2=1; //var2 ist //nur innerhalb von //func() sichtbar { int var2=2; //var2 ist nur innerhalb //dieses Blockes sichtbar printf("%d\n",var2); } printf("%d\n",var2); } | execCompilerOptions=-Wall datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Sichtbarkeit von Funktionsparameter in Protypen === Soll eine Funktion aufgerufen werden, die zuvor nicht definiert wurde, so ist ein Prototyp/(Forward)deklaration der Funktion notwendig (siehe nachfolgendes Kapitel). Die Parameterliste dieses Prototyps hat seinen eigenen Gültigkeitsbereich.<br/> Beispiel: <syntaxhighlight lang="C"> int a; //a im File Scope int func(int a, int b); //a und b im Function Prototyp scope </syntaxhighlight> Hinweis: * Bei Prototypen ist die Angabe von Variablenname nicht notwendig. Die alleinige Angabe des Datentyps ist ausreichend === Zuordnung der Gültigkeitsbereiche zu globalen/lokalen Variablen === Zum einfacheren Verständnis wird im Skript von folgenden Begrifflichkeiten gesprochen: * '''Globale''' Variablen-/Funktionen-/Datentypdefinitionen → Projektweite Sichtbarkeit/Gültigkeit * '''Statisch globale''' Variable/Funktionen → Dateiweite Sichtbarkeit/Gültigkeit * '''Lokale''' Variablen/Funktionen/Funktionsparameter/Datentypen → Nur innerhalb des zugehörigen Blockes sichtbare/gültig * '''Statisch lokale''' Variablen → Nur innerhalb der Funktion sichtbar/gültig, mit der Besonderheit, dass die Gültigkeit über der Laufzeit der Funktion gilt (siehe Kap. [[Programmieren in C/C++: DatentypeSpecifier#Static Storage Class Specifier|DatentypeSpecifier:Static Storage Class Specifier]]) === Speicherzuweisung === Für die einzelnen Gültigkeitsbereiche werden im Speicher (und auch in der Objekt-Datei) unterschiedliche Speicherbereiche (Segmente) vorgehalten, d.h. der Compiler teilt den Speicher in unterschiedliche Bereiche auf und weist den Variablen/Funktionen in Abhängigkeit der Gültigkeit/Sichtbarkeit unterschiedliche Speicherbereiche zu! [[File:Zuordnung von Inhalten eines C-Programms zu Speicherbereichen (Segmenten).png|thumb|Zuordnung von Inhalten eines C-Programms zu Speicherbereichen (Segmenten)]] Zur Ermöglichung von Rekursion werden lokale Variable auf dem Stack gehandelt. Mit Aufruf einer Funktion oder öffnen eines neuen Block-Scopes wird Speicher auf dem Stack reserviert, der bei Beenden des Scopes wieder freigegeben wird. Die Speicheradresse von lokalen Variablen ist somit nicht Fix, sondern hängt von der Aufrufhierarchie ab! Globale und statisch globale Variablen werden nicht auf dem Stack gehalten, sondern bekommen einen 'festen' Speicherbereich (hier DATA/BSS/RODATA) während der gesamten Laufzeit des Programms zugewiesen. Die Adresse dieser Variablen sind somit konstant. Das genutzte Speichersegment von globalen Variablen hängen von der Art der Variablen ab. Initialisierte Variablen werden im DATA-Segment gesammelt, welcher mit dem Initialisierungswert der Variablen initialisiert wird. Nicht initialisierte globale Variablen landen im BSS-Segment, so dass diese mit Programmstart durch Füllen dieses Blockes mit 0 auf 0 gesetzt werden. Konstante globale Variablen werden im RODATA-Segment gehalten. Über das Betriebssystem kann dieser Speicherbereich auf nur Lesbar gesetzt werden. Dynamische Speicheranforderungen, resp. Speicher, dessen Gültigkeit über die Laufzeit einer Funktion hinausgeht, wird im Heap gesammelt. Für die Verwaltung dieses Speichers ist der Programmierer zuständig. Entsprechend globalen Variablen wird für Funktionen ebenfalls ein eigener Speicherbereich (TEXT Segment) vorgesehen. Im Gegensatz zu Variablen, wo im Speicher der dazugehörige Inhalt gespeichert ist, ist der Speicherinhalt von Funktionen die Maschinenanweisungen. Die Speicheradresse der Funktionen sind konstant. Hinweis: * Die Speicheradresse von sowohl globalen und statisch globalen Variablen als auch von Funktionen ist konstant und ändert sich während der Laufzeit des Programms nicht. Die Adressvergabe dieser Variablen und Funktionen erfolgt somit nicht zur Laufzeit sondern durch die Toolchain (hier der Linker). * Dieses Konzept ist allgemeingültig, gilt nicht nur für die Programmiersprache C/C++ == Definition/Deklaration(Prototyp) == Der C-Compiler ist ein Single-Pass Compiler (siehe Kap [[Programmieren in C/C++: Einführung/Literatur#Arbeitsweise eines Compilers | Einführung/Literatur:Arbeitsweise eines Compilers ]]), d.h. für den Übersetzungsvorgang wird der Quellcode einmalig eingelesen und von vorne nach hinten abgearbeitet. Dies bedingt, dass keine Vorwärtsbezüge im Quelltext enthalten sein dürfen: * keine Variable genutzt werden kann, die erst später definiert wird (da der Compiler in Abhängigkeit des Datentyps (den er dann noch nicht kennt) keine entsprechende Maschinensprachebefehle erzeugen kann) * keine Funktion aufgerufen werden kann, die erst später definiert wird (da der Compiler nicht weiß, welcher Datentyp die Übergabewerte haben und folglich keine Maschinensprachebefehle zur Konvertierung und Übergabe der Variablen erzeugen kann) * kein Datentyp genutzt werden kann (struct, union, enum, typedef), welcher erst später definiert wird (da der Compiler nicht weiß, wieviel Speicher er für die Variable reservieren muss) Eine Lösungsvariante dieser Problematik ist, im Quellcode alle Variablen/Funktionen/Datentypen/Makros zu definieren, bevor diese erstmalig genutzt werden (Funktion main() steht dann folglich am Ende des Quellcodes): <syntaxhighlight lang="C"> void foo(void) { //foo() wird vor dem ersten Aufruf definiert //Hier kein Zugriff auf var möglich! //Hier kein Zugriff auf Datentyp uchar möglich! } int var; //var wird vor dem ersten Aufruf definiert typedef unsigned char uchar; //Definition des Datentyps uchar int main(void) { foo(); //da zuvor definiert kann diese Funktion hier aufgerufen werden var++; //dito } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void foo(void) { //foo() wird vor dem ersten Aufruf definiert var++; //Hier kein Zugriff auf var möglich! uchar xyz;//Hier kein Zugriff auf Datentyp uchar möglich! } int var; //var wird vor dem ersten Aufruf definiert typedef unsigned char uchar; //Definition des Datentyps uchar int main(int argc, char *argv[]) { foo(); //da zuvor definiert kann diese Funktion hier aufgerufen werden var++; //dito } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Sollen globale Funktionen/Variablen in Datei1.c genutzt werden, die in Datei2.c definiert sind, so schlägt diese Vorgehensweise fehl. Um auch dieses zu ermöglichen, bietet C die Möglichkeiten von Prototypen/Deklarationen an. Diese teilt dem Compiler mit, wie im späteren Ablauf die Variable, die Funktion definiert wird, bzw. dass es diesen Datentyp geben wird: {| class="wikitable" |- ! Datei1.c !! Datei2.c |- | <syntaxhighlight lang="C"> //Prototyp für Variable var extern int var; //Prototyp für Funktion foo void foo(void); int main(int argc, char *argv[]) { foo(); //Compiler kann aufgrund var++; //der Prototypen diese //Aufruf in Maschinen- //sprachebefehle umsetzen } </syntaxhighlight> || <syntaxhighlight lang="C"> //Definition der Variablen var int var; //Definition der Funktion foo void foo(void) { } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Prototyp für Variable var extern int var; //Prototyp für Funktion foo void foo(void); int main(int argc, char *argv[]) { foo(); //Compiler kann aufgrund var++; //der Prototypen diese //Aufruf in Maschinen- //sprachebefehle umsetzen } | datei2_c=#include <stdio.h> //Definition der Variablen var int var; //Definition der Funktion foo void foo(void) { } | execCompilerOptions=-Wall datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Innerhalb der C-Spezifikation werden für den Umgang mit dieser Problematik die Begriffe 'Declaration' und 'Definition' genutzt. Da diese Begriffe jedoch nicht klar abgegrenzt werden und auch für viele weitere Aspekte genutzt werden, sollen in diesem Skript in Anlehnung an den Wikipedia Artikel {{w|Deklaration (Programmierung)|Deklaration (Programmierung)}} (im Absatz zur Programmiersprache C/C++) die Begriffe Definition/Deklaration wie folgt genutzt werden: ;Definition: entspricht der Belegung/Reservierung von Speicherplatz :* Bei der Definition einer Variablen wird hiermit Speicherplatz entsprechend dem Datentyp der Variable belegt: :<syntaxhighlight lang="C"> int var1; //entsprechend der Größe des Datentyps int wird //Speicherplatz für die Variable var1 reserviert int var2=4711; //Dito, ergänzend wird dieser Speicherplatz mit dem //Wert 4711 initialisiert </syntaxhighlight> :* Bei einer Funktion wird Speicherplatz zur Aufnahme der Maschinenbefehle belegt: :<syntaxhighlight lang="C"> void foo(void) { //Die Anweisungen in den geschweiften Klammern //werden in Maschinenbefehle übersetzt. D.h. die //Funktion foo() belegt Speicher, dessen Inhalt //die Maschinensprachebefehle sind } </syntaxhighlight> :* Ergänzend wird der Begriff Definition auch in Verbindung mit der Definition von neuen Datentypen genutzt! ;Deklaration/Prototyp: ist die Mitteilung an den Compiler, wie diese Variable/Funktion an einer späteren Stelle im Source-Code oder in einer anderen Source-Datei definiert wird. Auf Grundlage dieser 'vorab' Information kann der Compiler die passenden Maschinensprachebefehle für den Zugriff/Aufruf auf die Variablen/Funktion einsetzen: :<syntaxhighlight lang="C"> extern int var1; //Deklaration von var1 extern void foo(void); //Deklaration von foo() void foo(void); //Deklaration von foo() </syntaxhighlight><br /> Insbesondere bei dem Umgang mit der Deklaration gilt es Folgendes zu berücksichtigen: * Deklarationen werden entweder: :* am Anfang einer C-Datei geschrieben, so dass Funktionen/Variablen im Zugriff stehen, die erst später in der C-Datei definiert werden (entspricht dann der Private Anweisung in anderen Sprachen) :* in Header-Dateien geschrieben, so dass diese Variable/Funktionen für alle sichtbar sind, welche diese Header-Datei einbinden (entspricht der Public Anweisung in anderen Sprachen) * Deklarationen von Funktionen werden in der C-Spec als (function) Prototyp bezeichnet und sind dadurch gekennzeichnet, dass diese mit einem Semikolon abgeschlossen sind. Der Specifier 'extern' ist hier optional und sagt eigentlich aus, dass diese Funktion external Linkage besitzt (siehe [[Programmieren in C/C++:_DatentypeSpecifier#Internal/External Linkage | DatentypeSpecifier:Internal/External Linkage]]). Die Benennung der Parametervariablen sind gleichermaßen optional: :<syntaxhighlight lang="C"> extern int foo(int var1, float var2); //Deklaration extern int foo(int , float ); //Deklaration int foo(int var1, float var2); //Deklaration + external Linkage int foo(int , float ); //Deklaration + external Linkage </syntaxhighlight> * Für globale Variablen gibt es keine (Variablen) Prototype. Stattdessen muss zur Bekanntgabe des Datentyps der Specifier 'extern' vorangestellt werden, mit welchen ergänzend zum Ausdruck gebracht wird, das diese Variable external Linkage und damit globale Gültigkeit hat (siehe Kap [[Programmieren in C/C++: DatentypeSpecifier# Extern - Storage Class Specifier| DatentypeSpecifier:Extern - Storage Class Specifier]]). Da die Deklaration einzig zur Bestimmung der Zugriffsmethoden auf Maschinenspracheebene genutzt wird, können diese keine Initialisierungswerte enthalten: :<syntaxhighlight lang="C"> extern int var1; extern int var2=7; //KO Deklarationen können keine //Initialisierungswerte haben </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> extern int foo; extern int foo=7; int main(int argc, char *argv[]) { return foo; } int foo=7;| execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Deklarationen von statisch globalen, lokalen und statisch lokalen Variablen nicht möglich sind: :<syntaxhighlight lang="C"> extern static int glob; //keine Deklaration von statisch globalen //Variablen möglich int main(int argc, char *argv[]) { extern int var; //Deklaration bezieht sich auf eine globale //Variable, die nicht definiert ist extern static int lok; printf("%d %d\n",var,lok); int var; static int lok; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> extern static int glob; //keine Deklaration von statisch globalen //Variablen möglich int main(int argc, char *argv[]) { extern int var; //Deklaration bezieht sicht auf eine globale //Variable, die nicht definiert ist extern static int lok; printf("%d %d\n",var,lok); int var; static int lok; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Deklarationen für identische Variablen/Funktionen können beliebig oft erfolgen, sofern der Datentyp identisch ist: :<syntaxhighlight lang="C"> extern int var; extern int var; //OK, doppelt Deklaration mit identischen Datentyp extern unsigned int var; //KO, Doppelte Deklaration mit unterschiedlichen // Datentyp </syntaxhighlight> * Sofern eine Deklaration und eine Definition in der identischen Datei erfolgen überprüft der Compiler, ob Deklaration und Definition identisch sind. Es empfiehlt sich, die eigene Header-Datei (in welcher die Deklaration normalerweise enthalten ist) zu inkludieren: :{| class="wikitable" |- ! Datei1.c !! Datei1.h |- | <syntaxhighlight lang="C"> //Include der eigenen Header-Datei #include "datei1.h" int var1; //Definition von var1 short var2; //Definition von var2 int var3; //Private Variable //da kein Prototyp //im Header vorhanden void func(void) { } </syntaxhighlight> || <syntaxhighlight lang="C"> extern int var1; //Deklaration extern char var2; //KO, da Deklaration //von Definition //abweicht void func(int); //KO, da Deklaration //von Definition //abweicht </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Include der eigenen Header-Datei #include "example.h" int var1; //Definition von var1 short var2; //Definition von var2 int var3; //Private Variable //da kein Prototyp //im Header vorhanden void func(void) { } int main(int argc, char *argv[]) { return 0; } | example_h= extern int var1; //Deklaration extern char var2; //KO, da Deklaration //von Definition //abweicht void func(int); //KO, da Deklaration //von Definition //abweicht | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Innerhalb einer Datei kann eine Variable identischen Datentyps mehrmals definiert werden (bei identischen Initialisierungswert). Diese Definitionen werden vom Compiler als eine Definition angesehen. Wenn jedoch eine identische Variable in unterschiedlichen Dateien definiert wird, so legt jede Datei eine eigene unabhängige Variable an, welche dann beim Zusammenführen der Objektdateien durch den Linker zu Fehler führt. Da Header-Datei zumeist in mehrere C-Dateien inkludiert werden, sind Definitionen in Header-Dateien 'verboten'. * Deklarationen innerhalb eines Block-Scopes oder eines Function Prototyp Scopes sind nur in diesen Bereich gültig. == Grundlegende Datentypen und Typsicherheit == Die Programmiersprache C kennt folgende grundlegende Datentypen (siehe Kap. [[Programmieren in C/C++: Datentypen | Datentypen]]). Von jedem Datentyp kann ein Zeiger angelegt werden: {| class="wikitable" |- ! Datentyp !! Bsp. für Datentyp !! Bsp. für Zeiger auf Datentyp |- | Ganzzahl || <syntaxhighlight lang="C"> char var; int var; short int var; long int var; long long int var; </syntaxhighlight> || <syntaxhighlight lang="C"> char *ptr; int *ptr; short int *ptr; long int *ptr; long long int *ptr; </syntaxhighlight> |- | Gleitkommazahl || <syntaxhighlight lang="C"> double var; float var; long double var; </syntaxhighlight> || <syntaxhighlight lang="C"> double *ptr; float *ptr; long double *ptr; </syntaxhighlight> |- | Funktionen || <syntaxhighlight lang="C"> void func(void) {} </syntaxhighlight> || <syntaxhighlight lang="C"> void (*pfunc)(void); </syntaxhighlight> |- | Arrays || <syntaxhighlight lang="C"> int arr[10]; float arr[3][3]; </syntaxhighlight> || <syntaxhighlight lang="C"> int (*parr); float (*parr)[3]; void (*pfunc[5])(void); </syntaxhighlight> |- | Strukturen/Unions || <syntaxhighlight lang="C"> struct xyz {int x,y,z}; union abc {int a,b,c}; </syntaxhighlight> || <syntaxhighlight lang="C"> struct xyz *ptr; union abc *ptr; </syntaxhighlight> |- | Aufzählungstyp || <syntaxhighlight lang="C"> enum abc {A,B,C}; </syntaxhighlight> || <syntaxhighlight lang="C"> enum abc *ptr; </syntaxhighlight> |- | Boolescher Datentyp || <syntaxhighlight lang="C"> _Bool var; </syntaxhighlight> || <syntaxhighlight lang="C"> _Bool *ptr; </syntaxhighlight> |- | Komplexe Zahlen || <syntaxhighlight lang="C"> _Complex var; </syntaxhighlight> || <syntaxhighlight lang="C"> _Complex *ptr; </syntaxhighlight> |} C/C++ unterscheidet zwischen vorzeichenbehafteten <code>signed</code> und vorzeichenlosen <code>unsigned</code> ganzzahligen Datentypen. Vorzeichenlose Datentypen können nur positive Zahlen incl. der 0 aufnehmen (Anwendungsbereich bspw. Speicheradressen/Arrayindexe, welche nicht negativ sein können). Deren max. Zahlenwert ergibt sich aus der Datenbreite N des Datentyps 2<sup>N</sup>-1. Ein Vergleich eines vorzeichenlosen Datentyps mit ≥ 0 ist somit immer TRUE: <syntaxhighlight lang="C"> unsigned char var=0; if(var >= 0) //Bedingung ist immer erfüllt, so dass printf("Bedingung erfüllt"); //dieser ggf. vom Compiler wegoptimiert wird! for(var=10; var>=0; var--); //Endlosschleife! 0 dekrementiert ergibt 255 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> int main(int argc,char *argv[]) { unsigned char var=0; if(var >= 0) //Bedingung ist immer erfüllt, so dass printf("Bedingung erfüllt\n"); //dieser ggf. vom Compiler wegoptimiert wird! //Beim Öfffnen des Compiler-Fensters ist die IF-Anweisung nicht farblich //hervorgehoben. Dies bedeutet, dass diese Zeile wegoptimiert wurde und folglich //kein Maschinencode für diese Anweisung erzeugt wurde for(var=10; var>=0; var--) //Endlosschleife! 0 dekrementiert ergibt 255 printf("%u ",var),fflush(stdout); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Vorzeichenlose Datentypen halbieren den verfügbaren Zahlenbereich und 'weisen' dem oberen Wertebereich den negativen Zahlen zu.<br> Wird ein ganzzahliger Datentyp ohne Angabe des Vorzeichentyps (signedness) definiert, so ist diese vorzeichenbehaftet. Bei vorzeichenlosen Variablen muss explizit <code>unsigned</code> vorangestellt werden. Die Voranstellung von <code>signed</code> ist optional. Einzige Ausnahme stellt der Datentyp char dar. Hier gibt die Spezifikation keine default signedness vor, so dass bei Nutzung dieses Datentyps zur Aufnahme von Zahlen immer signed oder unsigned vorangestellt werden sollte!<br> Innerhalb des Formatstrings bei den printf()/scanf() Anweisungen '''muss''' die signedness vom Programmierer händisch berücksichtigt werden. Die Formatanweisung %d und %i interpretieren die übergebenen Zahl als vorzeichenbehaftete Zahl. Soll eine vorzeichenlose Zahl ausgegeben werden, so muss %u verwendet werden: <syntaxhighlight lang="C"> signed int vari=-10; unsigned int varu=3000000000; printf("vari=%d varu=%u",vari,varu); //Korrekt printf("vari=%u varu=%i",vari,varu); //Falsche Werteausgaben! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> int main(int argc,char *argv[]) { signed int vari=-10; unsigned int varu=3000000000; printf("vari=%12d varu=%12u\n",vari,varu); //Korrekt printf("vari=%12u varu=%12i\n",vari,varu); //Falsche Werteausgaben! return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Mit der Definition (dem Anlegen) einer Variablen eines Datentyps wird Speicher entsprechend der Größe des Datentyps reserviert. Optional kann dieser Speicher initialisiert werden. Über den Datentyp wird ausgesagt, wie der Inhalt des Speichers zu interpretieren ist: <syntaxhighlight lang="C"> char var1; //Speicherplatzreservierung von 1 Byte //Inhalt der Speicherstelle wird als Zahl interpretiert //(Hinweis: ASCII-Zeichen sind Zahlen) double var2=47.11; //Speicherplatzreservierung von 8 Byte //Inhalt der Speicherstellen wird als Gleitkommazahl //interpretiert (bestehend aus je einer Ganzzahl für //Mantisse und Exponent) short arr[10]; //Speicherplatzreservierung von 10*2 Byte //Inhalt der 10 Speicherstellen werden als Ganzzahl //interpretiert </syntaxhighlight> Die Funktionalität der Operatoren hängt vom Datentyp der Operanden ab. Der Plus-Operator angewendet auf ganzzahlige Operanden führt eine Ganzzahl Addition aus, angewendet auf gleitkomma Operanden eine Gleitkomma Addition. Ist einer der Operanden ein Zeiger, so wird eine Zeigeraddition angewendet. Für andere Datentypen ist der Plus-Operator nicht definiert, so dass der Compiler einen Fehler wirft. '''Bei der Betrachtung eines Ausdruckes sollte dem genutzten Datentypen folglich eine besondere Aufmerksamkeit zuteil werden''': <syntaxhighlight lang="C"> int vari=47; vari+12; //(int) + (int) → Ganzzahladdition float varf=12.3; 3.1415F+varf; //(float) + (float) → Gleitkommaaddition int *ptr=&vari; ptr+3; //(int *) + (int) → Zeigeraddition int arr[3]; arr+3; //(int (*)) + (int) → Zeigeraddition </syntaxhighlight> Das Ergebnis einer Operation hat ebenfalls einen Datentyp. Eine Ganzzahl Addition gibt bspw. als Ergebnis einen Ganzahl Datentyp zurück, eine Gleitkomma Addtition einen Gleitkomma Datentyp und ein Vergleichsoperator den Datentyp _Bool: <syntaxhighlight lang="C"> int vari1=47; int vari2=11; vari1 + 12 + vari2; //((int)+(int)+(int))→((int)+(int))→(int) 40 < vari1 < 50; //((int)<(int)<(int))→((_Bool=int)<(int))→(_Bool=int) </syntaxhighlight> Wie Operatoren haben auch Funktionen Operanden (in Form von Übergabeparameter). Das Ergebnis eines Funktionsaufrufes wird ebenfalls in Form eines Datentyps zurückgegeben: <syntaxhighlight lang="C"> float add(int par1,par2) {return par1+par2;} int vari1=47; int vari2=11; vari1 + add(var2,12); //(int)+((int),(int)→(float))→(int)+(float)→(float) </syntaxhighlight> Wird auf einen Operator gleichermaßen ein vorzeichenbehafteter und ein vorzeichenloser Operand angewendet, so kann es zu unerwarteten Konvertierungsproblemen führen: <syntaxhighlight lang="C"> unsigned char varu=12; signed char vars=-12; float varf; varf = varu + vars; if(vars < varu) </syntaxhighlight> Sind die Datentypen der Operanden nicht 'kompatibel', so 'passt' der Compiler die Datentypen im Falle von Ganzahl und Gleitkomadatentypen per impliziter Regel an (siehe Kap. [[Programmieren in C/C++: Datentypen#Implizite Typumwandlung | Datentypen:Implizite Typumwandlung]]). Über explizite Typumwandlung (siehe Kap.[[Programmieren in C/C++: Datentypen# Explizite Typumwandlung|Datentypen:Explizite Typumwandlung]]) kann ein Datentyp z.T. in einen anderen Datentyp gewandelt werden. In allen anderen Fällen ist C Typsicher, d.h. der Compiler gibt zumindest eine Warning aus, wenn die Datentypen nicht identisch sind und der Compiler keine implizite Regel anwenden kann. Tipp: * Compiler gibt bei Fehlermeldung oftmals die erwarteten und die vorhandenen Datentyp an. Wenn solch eine Fehlermeldung kommt, sollten sie sich a) überlegen, was wollten sie syntaktisch geschrieben haben und b) was haben sie in der Tat geschrieben. Ein Google nach einer Lösung des Compilerproblems löst zumeist nicht das Problem, sondern umgeht es! Hinweis: * Ein guter Programmierer sollte die Datentypen so wählen, dass: :* die Datentypen zum Inhalt und zum Wertebereiches passen :* keine Datentypkonvertierungen notwendig sind : andernfalls besteht die Gefahr, dass hiermit Laufzeitfehler einprogrammiert werden. * Wenn Datentypkonvertierungen notwendig sind, sollte die explizite Konvertierung genutzt werden == Abhängigkeiten bzgl. Rechnerarchitektur == Kenngrößen von Prozessoren sind unter anderem die Anzahl der Bits für den Datentransport und für Arithmetisch-/Logische-Operationen (→ Datenbreite) und die Anzahl der Bits für die Adressierung des Speichers (→ Adressierungsbreite). Die Datenbreite sagt dabei aus, welche max. Datenbreite ein Maschinenbefehl (zumeist in einem Taktzyklus) transportieren/berechnen kann. Werden programmtechnisch größere Datenbreiten benötigt, bedingt dies, dass hierzu mehrere Maschinenbefehle notwendig sind. Wenn kleinere Datenbreiten notwendig sind, so wird oftmals das Ergebnis abgeschnitten (sofern der Prozessor keine Befehle für den Umgang mit kleineren Datentyp beherrscht): {| class="wikitable" |- ! 32-Bit Datentransport/Operation<br /> bei 32-Bit Datenbreite ! 64-Bit Datentransport/Operation<br /> bei 32-Bit Datenbreite ! 16-Bit Datentransport/Operation<br /> bei 32-Bit Datenbreite |- | <syntaxhighlight lang="C"> int32_t a32,b32; </syntaxhighlight> || <syntaxhighlight lang="C"> int64_t a64,b64; </syntaxhighlight> || <syntaxhighlight lang="C"> int16_t a16,b16; </syntaxhighlight> |- | <syntaxhighlight lang="asm"> // a32=b32; mov eax,b32 mov a32,eax </syntaxhighlight> || <syntaxhighlight lang="asm"> // a64=b64; mov eax ,b64 mov edx ,b64+4 mov a64 ,eax mov a64+4,edx </syntaxhighlight> || <syntaxhighlight lang="asm"> //a16=b16; movz eax,b16 mov a16,ax </syntaxhighlight> |- | <syntaxhighlight lang="asm"> // a32=a32+b32; mov edx, a32 mov eax, b32 add eax, edx mov a32, eax </syntaxhighlight> || <syntaxhighlight lang="asm"> // a64=a64+b64; mov ecx , a64 mov ebx , a64+4 mov eax , b64 mov edx , b64+4 add eax , ecx adc edx , ebx mov a64 , eax mov a64+4, edx </syntaxhighlight> || <syntaxhighlight lang="asm"> // a16=16+b16; movzx eax, a16 mov edx, eax movzx eax, b16 add eax, edx mov a16, ax </syntaxhighlight> |} Die Adressierungsbreite gibt an, mit welcher Bitbreite der Speicher adressiert werden kann: * Bei einem 32-Bit System können 2<sup>32</sup>=4.294.967.295=4Gi&nbsp;Bytes/Speicherstellen adressiert werden * Bei einem 16-Bit System können 2<sup>16</sup>=65.536=64Ki&nbsp;Bytes/Speicherstellen adressiert werden * Bei einem 64-Bit System können 2<sup>64</sup>=18.446.744.073.709.551.616 =16Ei ~18Exa&nbsp;Bytes/Speicherstellen adressiert werden Waren die Datenbreite und die Adressierungsbreite bei den ersten Prozessoren noch unterschiedlich, so sind diese heutzutage zumeist identisch. Bei einem 32-Bit Prozessor bedeutet dies, dass dieser max. 4Gi&nbsp;Bytes Speicherstellenstellen adressieren kann und Maschinenbefehle für den Datentransport und die Berechnung von 32-Bit Datenworten beinhaltet. Die Datenbreite und auch die Adressierungsbereite haben direkten Einfluss auf die Programmiersprache: * Wird defaultmäßig mit größerer Datenbreite gerechnet, als der Prozessor 'von Hause' aus unterstützt, so werden die erzeugten Maschinenprogramme größer und langsamer (Umgedreht bedeutet dies jedoch nicht, dass die Maschinenprogramme kleiner und schneller werden) * Die max. Größe von Verbunddatentypen und Arrays ergibt sich aus der Adressierungsbreite des Prozessors Die Intention der Programmiersprache C/C++ ist, die Prozessorarchitektur optimal zu nutzen. Dementsprechend sind diverse Eigenschaften der Sprache nicht fest spezifiziert, sondern von der Rechnerarchitektur abhängig. === Integer Datentyp === Intention von C/C++ ist, dass der Umgang mit dem Grunddatentyp 'int' möglichst direkt in einen Maschinensprachebefehl umgesetzt werden kann.<br /> Bei einem 16-Bit Prozessor hat der Datentyp int daher eine Breite von 16-Bit und bei einem 32-Bit Prozessor eine Breite von 32-Bit (siehe Kap [[Programmieren in C/C++: Datentypen # Ganzzahlige Datentypen|Datentypen:Ganzahl Datentypen]]). Über vorangestellte Qualifier kann dieser Grunddatentyp verkleinert/vergrößert werden. === Integer Arithmetik === Ganzzahlen haben nur einen begrenzten Wertebereich. Wird dieser bspw. durch eine Addition überschritten (d.h. das Rechenergebnis benötigt zur Darstellung mehr Stellen, als der Datentyp 'hergibt'), so gibt es zwei Vorgehensweisen: * Arithmetischer Überlauf (siehe {{w|arithmetischer Überlauf}}): Die nicht speicherfähigen Stellen werden verworfen, so dass i.d.R. ein falsches Ergebnis erzeugt wird! :Beispiel: :<syntaxhighlight lang="C"> unsigned char a=254,b=3,c; c=a+b; //c ist (254+3)%256=1 c=a*b; //c ist (254*3)%256=250 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { unsigned char a=254,b=3,c1,c2; c1=a+b; //c ist (254+3)%256=1 c2=a*b; //c ist (254*3)%256=250 printf("c1=%hhu c2=%hhu\n",c1,c2); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Sättigungsarithmetik (siehe {{w|Sättigungsarithmetik}}): Alle Operationen laufen innerhalb eines festen Intervalls ab, so dass Überläufe und Unterläufe auf dieses Intervall begrenzt werden: :Beispiel: :<syntaxhighlight lang="C"> unsigned char a=254,b=3,c; c=a+b; //c ist MAX((254+3),255)=255 c=a*b; //c ist MAX((254*3),255)=255 </syntaxhighlight> Die Spezifikation von C macht bezüglich der zu nutzenden Methodik keine Vorgaben, so dass das Handling von der ALU des Prozessors abhängt. Aus Komplexitäts- und Geschwindigkeitsgründen ist dies zumeist der arithmetische Überlauf. Nur bei Spezialprozessoren (z.B. DSP Digital Signal Processor) kommt z.T. die Sättigungsarithmetik zum Einsatz. === Gleitkomma Datentyp und Arithmetik === Für den Umgang mit Gleitkommazahlen bieten einige Prozessoren spezielle Recheneinheiten ({{w|Gleitkommaeinheit}} Floating Point Units FPU) an. Sowohl die Darstellung von Gleitkommazahlen als auch das Verhalten bei Überlauf/Unterlauf ist damit Herstellerabhängig. Um auch diese Einheiten effektiv nutzen zu können, ist die C/C++ Spezifikation in diesem Bereich ebenfalls sehr offen. === Max. Speicherbedarf von Variablen === Die maximale Größe von Arrays/Strukturen/Unions ist in C/C++ von der zugrundeliegenden Rechnerarchitektur abhängig: <syntaxhighlight lang="C"> char a[100000]; //Speicherbedarf=100.000*1Byte=100.000 Bytes //Bei 16-Bit Architektur KO //Ab 32-Bit Architektur OK struct size_16 { char a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_256 { struct size_16 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_4096 { struct size_256 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_65536 { struct size_4096 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_65536 var65536; //Speicherbedarf=65536 Bytes //Bei 16-Architektur KO //Ab 32-Architektur OK </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Zur Darstellung bitte Compiler-Fenster öffnen //und dort den CC65-Compiler für den 6502 Prozessor auswählen char a[100000]; //Speicherbedarf=100.000*1Byte=100.000 Bytes //Bei 16-Bit Architektur KO //Ab 32-Bit Architektur OK struct size_16 { char a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_256 { struct size_16 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_4096 { struct size_256 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_65536 { struct size_4096 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_65536 var65536; //Speicherbedarf=65536 Bytes //Bei 16-Architektur KO //Ab 32-Architektur OK int main(int argc,char *argv[]) { return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Im Falle von globalen Variablen erzeugt der Compiler/Linker eine Fehlermeldung. Werden von diesen Datentypen Variablen als lokale Variablen angelegt, so erzeugt dies zur Laufzeit einen Stackoverflow. === Zeigervariable === Eine Zeigervariable ist eine Variable, die eine Speicheradresse speichert. Die Größe dieses Datentyps hängt von der Adressierungsbreite des Prozessors ab. Unabhängig von dem Datentyp, auf den die Zeigervariable zeigt, ergibt sich folgende Breite: * 4-Byte bei einer 32-Bit Rechnerarchitektur * 8-Byte bei einer 64-Bit Rechnerarchitektur * 2-Byte bei einer 16-Bit Rechnerarchitektur === Datentyp size_t === Die maximale Größe von Arrays/Strukturen/Unions ist in C von der zugrundeliegenden Rechnerarchitektur abhängig. Sie ergibt sich aus der Adressierungsbreite. Da die Datenbreite des Datentyps int zumeist kleiner als die Adressierungsbreite ist, existiert in C/C++ der vorzeichenlose Datentyp size_t.<br /> Alle Funktionen, welche den Speicherbedarf übergeben bekommen, bzw. zurückgeben (bspw. strlen(), memcpy(), sizeof()) , nutzen den Datentyp size_t: <syntaxhighlight lang="C"> //Prototypen size_t strlen(char *str); //Die max. Stringlänge ist durch den //adressierbaren Speicher vorgegeben void *malloc(size_t size); void *memcpy(void *dest, const void *src, size_t n); </syntaxhighlight> Der Datentyp size_t ist in der Header-Datei stddef.h der Standard-C-Library per typedef gesetzt. Im Normalfall muss diese Header-Datei nicht explizit inkludiert werden, da bei Nutzung von z.B. strlen() diese bereits durch die Header-Datei string.h inkludiert wird: <syntaxhighlight lang="C"> typedef unsigned long long size_t; //Bei einer 64-Bit Rechnerarchitektur </syntaxhighlight> Hinweis: * Der Datentyp size_t ist immer ein vorzeichenloser Datentyp (es gibt keine negativen Speicheradressen). * Mit dem Datentype ssize_t wird eine vorzeichenbehaftete Variante zur Verfügung gestellt, welche hilfreich ist, wenn Speicheradresse subtrahiert werden sollen. * Soll der Wert vom Datentyp size_t mittels printf() ausgegeben werden, so ist der 'Length Modifier' z und der 'Conversion Specifier' u zu nutzen: :<syntaxhighlight lang="C"> size_t var=strlen("String"); printf("%zu",var); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc,char *argv[]) { size_t var=strlen("String"); printf("%zu",var); printf("%d",var); //Hier sollte es eine Compiler-Warning geben! return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Boolescher-Datentype/Operatoren == Ursprünglich gab es den booleschen Datentyp in der Programmiersprache C nicht. Mit C99 wurde zwar der Datentyp <code>_Bool</code> eingeführt, dies änderte jedoch nicht den Umgang mit Anweisungen und Operatoren, die einen booleschen Datentyp erwarten/zurückgeben! An allen Stellen, an denen ein boolescher Datentyp erwartet wird (z.B. IF-Abfrage, bei booleschen Operationen) wird der Datentyp Ganzzahl, Gleitkommazahl oder Zeiger erwartet (= Scalar-Type) und ausgewertet. Der hierin gespeicherte Zahlenwert sagt aus, ob diese Zahl als True oder False zu interpretieren ist: * False, wenn Ganzzahl gleich 0 oder Gleitkommazahl gleich 0.0 oder Zeiger gleich NULL * True, wenn Ganzzahl ungleich 0 oder Gleitkommazahl ungleich 0.0 oder Zeiger ungleich NULL Beispiel: <syntaxhighlight lang="C"> int a=3; double b=0.0; int *ptr=&a; while(1); if(a) {} for( ; b && ptr ; ); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=3; double b=0.0; int *ptr=&a; while(0); if(a) {} for( ; b && ptr ; ) {} return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Operatoren, welchen einen booleschen Wert zurückliefern (Vergleichs-Operatoren und Boolesche-Operatoren), liefern ein Integer-Datentyp zurück: * (int)0 für False * (int)1 für True Beispiel: <syntaxhighlight lang="C"> int a=3; int b= (a==3); //b=1 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=3; int b= (a==3); //b=1 printf("%d",b); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} In den if()/for()/while() Anweisungen ist folglich kein explizites Konvertieren eines Ganzzahl-/Gleitkomma-/Zeigerwertes mittels des Vergleichs-Operators in einen Booleschen Wert notwendig: <syntaxhighlight lang="C"> int a; double b; if(a) //entspricht if(a!=0) if(!b) //entspricht if(b==0.0) while(1) //entspricht while(True) for(int lauf=1; lauf ; lauf--); </syntaxhighlight> Umgedreht kann ein boolescher Wert oder auch das Ergebnis einer booleschen Operation direkt mit einer Ganzzahl- oder Gleitkommazahl verknüpft werden: <syntaxhighlight lang="C"> int a=3,b=2; a=a+1 && 7 << 3 & a==3; if( a==1 & b==2) if(3 < a < 9) //Vorsicht, die Schreibweise lässt ein //anderes Verhalten erwarten! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=3,b=2; a=a+1 && 7 << 3 & a==3; printf("%d\n",a); if(a==1 & b==2) printf("true\n"); else printf("false\n"); if(3 < a < 9) if( (a==1) & (b==2)) printf("true\n"); else printf("false\n"); return 0; } | execCompilerOptions=| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Mit C99 wurde der Datentyp <code>_Bool</code> eingeführt. Dieser entspricht weiterhin einem Integerdatentyp mit der Besonderheit, dass beim Zuweisen eines Wertes dieses auf true oder false geprüft wird und Variablen dieses Datentyps nur die Werte 0 oder 1 annehmen können: <syntaxhighlight lang="C"> _Bool var1=12; printf("var1=%d\n",var1); //→ 1 float var2=13.2; var1=var2; printf("var1=%d\n",var1); //→ 1 var1--; //Post/Pre Inkrement/Dekrement in C++ nicht auf Datentyp bool! möglich printf("var1=%s\n",var1?"true(1)":"false(0)"); //→ false </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { _Bool var1=12; printf("var1=%d\n",var1); //→ 1 float var2=13.2; var1=var2; printf("var1=%d\n",var1); //→ 1 var1--; //Post/Pre Inkrement/Dekrement in C++ nicht auf Datentyp bool! printf("var1=%s\n",var1?"true(1)":"false(0)"); //→ false return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Für den einfacheren Umgang mit dem 'neuen' Datentyp wurde in der Header-Datei <code>stdbool.h</code> die Makros <code>true</code> (als Austauschwert für die Ganzzahl 1) und <code>false</code> (als Austauschwert für die Ganzahl 0) definiert. Ergänzend wird hier der Datentyp <code>bool</code> als Alias auf <code>_Bool</code> gesetzt. <syntaxhighlight lang="C"> #include <stdbool.h> bool foo(int par,int min,int max) { if((par >= min) && (par <= max)) return true; else return false; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdbool.h> bool foo(int par,int min,int max) { if((par >= min) && (par <= max)) return true; else return false; } int main(int argc,char *argv[]) { foo(4,3,6); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * In C++ gibt es anstatt des Datentypes <code>_Bool</code> den Datentyp <code>bool</code>. Auch sind die beiden Konstanten <code>true</code> und <code>false</code> ohne zusätzliches Einbinden der Header-Datei vorhanden. Der weitere Umgang ist jedoch identisch zu C. == Literale/Konstanten == Zahlenwerte und Strings im Source-Code werden vom Compiler in binäre Zahlen umgerechnet. Über der Schreibweise/Syntax der Literale/Konstanten wird dem Compiler gesagt, in welchem Zahlenformat die Zahl auf Source-Code Ebene beschrieben ist und welchem Datentyp sie entspricht. Unabhängig wie die Konstanten im Source-Code beschrieben sind, werden die Zahlen intern als binäre Zahlen gespeichert. Beispiele, wie die Zahlen intern gespeichert werden: <syntaxhighlight lang="C"> int var=17; //0000 0000 0000 0000 0000 0000 0001 0001 short var=0x307;// 0000 0011 0000 0111 char var=017; // 0000 1111 int var=-1; //1111 1111 1111 1111 1111 1111 1111 1111 float var=0.0; //0000 0000 0000 0000 0000 0000 0000 0000 float var=1.0; //0011 1111 1000 0000 0000 0000 0000 0000 </syntaxhighlight> === Ganzzahl-Konstanten === Im Allgemeinen ordnet der Compiler einer numerischen, ganzzahligen Konstanten den kleinstmöglichen Datentyp beginnend vom Datentyp integer zu. Sobald der Wert der Konstanten den Wertebereich von integer übersteigt, wird der nächst größere passende Datentyp gewählt. Ergänzend gilt, dass alle Ganzzahl-Konstanten als vorzeichenbehaftete Ganzzahl-Konstanten angesehen werden!<br /> Beispiele für integer Konstanten: <pre> 123 +123 -123 → Formal wird das Minus als Operator angesehen und die positive Zahl 123 negiert 0x123 → Konstante ist in hexadezimaler Schreibweise notiert 0123 → Konstante ist in oktaler Schreibweise notiert 0b011 → Konstante ist in binärer Schreibweise notiert nicht offizieller C-Syntax, wird aber von vielen Compiler unterstützt ab C23-Spezifikation offiziell im C-Syntax enthalten! 6'432'108 → Tausendertrenner Nur in C++ Spezifikation enthalten ab C23-Spezifikation auch im C-Syntax enthalten. 5123123123 → Wertebereich größer als 2^31 so dass automatisch zum nächst größeren Datentyp konvertiert wird </pre> Mit den Suffixen L/l und LL/ll kann der Datentyp long und long long erzwungen werden: <pre> 12L → Konstante wird in eine long Integer Konstante konvertiert 4711LL → Konstante wird in eine Long Long Konstante konvertiert </pre> Mit dem Suffix U/u kann die Konstante explizit auf unsigned gesetzt werden: <pre> 12U → Konstante wird als vorzeichenlose Zahl gesepeichert 4711ULL → Konstante wird in eine vorzeichenlose Long Long Konstante konvertiert </pre> === Char-Konstanten === In einfachen Anführungsstrichen geschriebene ASCII Zeichen werden entsprechend der {{w|American Standard Code for Information Interchange | ASCII-Tabelle}} als Zahlenwert (Datentyp int) dargestellt: <pre> 'A' → Integerkonstante 65 'a' → Integerkonstante 97 … </pre> Über den {{w|Escape-Sequenz|Escape-Operator}} (Zeichen Backslash '\') wird das/die dem ESCAPE Operator folgende Zeichen gesondert interpretiert. Die im Source-Code erhaltene Zeichenfolge wird im Computerprogramm als ein Zahlenwert (Datentyp int) gespeichert. Dies ist u.A. zur Darstellung von ' und " aber auch zur Darstellung der unteren 32 Zeichen der ASCII Tabelle notwendig (Siehe auch {{w|Steuerzeichen}}) <pre> ESCAPE Integer- → Bedeutung / (Terminal)funktionalität Sequence konstante '\0' = 0 → 0 Character = Stringendezeichen '\a' = 7 → Bell (erzeugt auf dem Terminal einen Ton) '\b' = 8 → Backspace (Bewegt den Cursor um eine Position nach links) '\t' = 9 → Horizontal Tab (Bewegt den Curso auf die nächste horizontale Tabulatorposition, Abstand ist Terminalspezifisch) '\n' = 10 → NewLine (Zeilenvorschub) '\v' = 11 → Vertial Tab '\r' = 13 → Carriage Return (Wagenrücklauf, Bewegt den Cursor an den Zeilenanfang) '\"' = 34 → Double Quote '\'' = 39 → Single Quote '\?' = 63 → Question mark '\\' = 92 → Backslash '\f' = 12 → FormFeed (Erzeugt auf dem Terminal/Drucker einen Seitenvorschub) '\ooo' = 0ooo → Oktal, wobei o Digits von 0..7 sein müssen '\xdd' = 0xdd → Hexadezimal, wobei d Digits von 0..9 A..F sein müssen '\udddd' Unicode mit 4 Digits '\Udddddddd' Unicode mit 8 Digits </pre> Beispiel <syntaxhighlight lang="C"> 'A' == 65 == '\101' == '\x41' == '\u0041' == '\U00000041' </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { //Programmiersprache wurde auf C++ gesetzt if('A' == 65) printf("'A' == 65\n"); if('A' == '\101') printf("'A' == '\\101'\n"); if('A' == '\x41') printf("'A' == '\\x41'\n"); if('A' == '\u0041') printf("'A' == '\\u0041'\n"); if('A' == '\U00000041') printf("'A' == '\\U00000041'\n"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true| lang=c++ }} Öffnen im Compiler Explorer] }} Über Prefixe können alternative Zieldatentypen/Konvertierungen erzwungen werden: <pre> u'b' → unicode 16 (nur C++) U'b' → unicode 32 (nur C++) L'b' → wchar_t </pre> Hinweis * Die ASCII-Tabelle basiert auf einer 7-Bit Zeichenkodierung, so dass bspw. die Umlaute 'ä', 'ö' und 'ü' dort nicht kodiert sind. Sollen auch diese Zeichen genutzt werden, so empfiehlt sich der Datentyp wchar_t === Gleitkommakonstanten === Alle Gleitkommakonstanten sind ohne weitere Angaben vom Datentyp double! <pre> 555.12 555. → 555.0 .1 → 0.1 4e2 → 400.0 0x22.11p13 → Konstante in Hexadezimalen Schreibweise (ab C99) </pre> Über Suffixe kann ein alternativer Datentyp erzwungen werden: <pre> 3.0F → Datentyp float 3.0l → Datentyp long double </pre> Hinweis: * Aufgrund der unterschiedlichen Basis zwischen dem menschlichen Zehner-System und dem computerinternen Binär-System entstehen insbesondere bei den Nachkommastellen Rundungsfehler. Die Konstante 0.1f wird durch die Wandlung intern als 1.00000001490116119384765625e-1 dargestellt * Die C-Spec verlangt, dass die binäre Repräsentation von Gleitkommazahlen zur Laufzeit (z.B. durch die Funktion atof() strtod() scanf("%f")) identisch zur der zur Compilezeit ist. Beispiel: :<syntaxhighlight lang="C"> if(3.14==atof("3.14")) printf("muss erfüllt sein"); //3.14 wird vom Compiler in ein Binärwert gewandelt //Der String "3.14" wird zur Laufzeit mittels atof in ein Binärwert gewandelt //Beide Wandlungsergebnisse müssen identisch sein </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { if(3.14==atof("3.14")) printf("muss erfüllt sein\n"); //3.14 wird vom Compiler in ein Binärwert gewandelt //Der String "3.14" wird zur Laufzeit mittels atof in ein Binärwert gewandelt //Beide Wandlungsergebnisse müssen identisch sein printf("Intern wird 3.14 wie folgt dargestellt %14.20f",3.14); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Konstanten Ausdrücke === Ergänzend zu den Zahlenwerten werden auch Ausdrücke durch den Compiler ausgewertet. Als Voraussetzung für die Ausdrücke gilt, dass alle Operatoren Literale/Konstante sein müssen, so dass der Compiler die Berechnung durchführen kann. Als Operatoren können alle im normalem Syntax erlaubten Operatoren (z.B.: +,-,*,/,&,&&,|,||,>>,<<,==,!=) genutzt werden.<br /> Beispiel: <syntaxhighlight lang="C"> int var1=7*3+5; → wird vom Compiler durch 26 ersetzt int var2=(4710+(8-1))&-8; → wird vom Compiler durch 4712 ersetzt var1=4*4*var1+77*(77%3); → wird vom Compiler durch 16 * var1 + 154 ersetzt </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { int var1=7*3+5; //→ wird vom Compiler durch 26 ersetzt int var2; var2=(4710+(8-1))&-8; //→ wird vom Compiler durch 4712 ersetzt var1=4*4*var1+77*(77%3); //→ wird vom Compiler durch var1 * 16 + 154 ersetzt return 0; } | execCompilerOptions=-Wall| h=g| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Konform zur C-Spezifikation bieten einige Compiler weitere Operatoren aus der math.h Library an (z.B. sin(), cos(), ...). Bestehen die Aufrufparameter aus Konstanten, so ersetzt der Compiler den Ausdruck durch die 'Ergebnis'-Konstante: :<syntaxhighlight lang="C"> int var3=sin(1.0)*10; →wird vom Compiler durch 8 ersetzt </syntaxhighlight> * Konstanten Ausdrücke werden durch den Präprozessor ausgewertet, so dass dieser die Ergebnisse ebenfalls nutzen kann: :<syntaxhighlight lang="C"> #define BUF_SIZE 512 #if (BUF_SIZE & (BUF_SIZE -1)) != 0 #endif </syntaxhighlight> === String Konstanten === Stringkonstanten erzeugen ein Array von Characters. Mit dem abschließenden Hochkommata wird das Array um ein Stringendezeichen ergänzt: <pre> "abc" → (char []) {'a','b','c','\0'} </pre> Adjacent Strings Konstanten werden vom Compiler zu einer String-Kontante zusammengefasst, so dass nur ein Stringendezeichen vorhanden ist: <pre> "xxx" "yyy" → (char []) {'x','x','x','y','y','y','\0'} </pre> Über Prefixe können alternative Zieldatentypen/Konvertierungen erzwungen werden: <pre> L"string" → (wchar_t[7]){L's',L't',L'r' …) </pre> Über Postfixes können in C++ Objekte erzeugt werden: <pre> "string"s → erzeugt einen String vom Datentyp std::string "string"sw → Erzeugt einen String vom Datentyp std::string_view </pre> String Konstanten werden Compilerintern über unnamed Variablen realisiert, welche als globale Variable angelegt werden und per default const sind: <syntaxhighlight lang="C"> printf("Wert=%d",4); //entspricht const char unnamed1[]="Wert=%d"; printf(unnamed1,4); //String Konstanten sind per Default Konstant char *str="hallo"; //Typkonflikt!, da "hallo" vom Datentyp const char[] ist str[0]='H'; //Laufzeitfehler, da nun schreibender Zugriff auf im //Readonly Speicher angelegt Variable. </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { printf("Wert=%d\n",4); //entspricht const char unnamed1[]="Wert=%d\n"; printf(unnamed1,4); fflush(stdout); //Zur Darstellung der Ausgabe, da nachfolgend //das Programm abstürzt und die gepufferte Ausgabe //nicht zur Anzeige gebracht wird //String Konstanten sind per Default Konstant char *str="hallo"; //Typkonflikt!, da "hallo" vom Datentyp const char[] ist str[0]='H'; //Laufzeitfehler, da nun schreibender Zugriff auf im //Readonly Speicher angelegt Variable. return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Für doppelte String Konstanten wird nur einmal Speicher reserviert: <syntaxhighlight lang="C"> const char *str1="hallo"; const char *str2="hallo"; if(str1==str2) printf("Identische Startadressen"); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { const char *str1="hallo"; const char *str2="hallo"; if(str1==str2) printf("Identische Startadressen"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Initialisierungsliste / Compound Literal == Arrays, Strukturen und Unions bestehen zumeist aus mehreren Elementen. Zur Initialisierung solcher Variablen werden die Initialisierungswerte in geschweiften Klammern als Initialisierungsliste zusammengefasst. <code> Syntax: {Initialisierungsliste} </code> Für eine Initialisierungsliste wird kein Speicher vorgehalten. Vielmehr wird bei der Variablendefinition die Variable direkt mit dem Inhalt der Liste initialisiert. Der Datentyp der Initialisierungsliste ergibt sich aus dem Datentyp der zu initialisierenden Variable: <syntaxhighlight lang="C"> int arr[5] = { 1,2,3,4,5 }; struct xyz { int x,y,z;}; //Definition einer Struktur struct xyz var = { 1,2,3 }; </syntaxhighlight> Wird der Initialisierungsliste ein Datentyp in runden Klammern vorangestellt, so wird hiermit eine 'unnamend' Variable/Objekt, ein Compound Literal erstellt: <code> Syntax: (type) {Initialisierungsliste} </code> Ein Compound Literal entspricht einer anonymen Variablen des angegebenen Datentyps. Wie bei einer normalen Variablendefinition wird hier ebenfalls eine Variable angelegt und diese mit den Initialisierungswerten initialisiert. Im Unterschied zu einer normalen Variable kann auf solch eine Variable im Nachgang nicht mehr zugegriffen werden. Der Rückgabewert eines Compound Literals entspricht somit dem einer Variablen.</br> Compound Literale bieten sich überall dort an, wo Variablen nur für einen einmaligen Zweck angelegt werden (bspw. bei der Parameterübergabe von Funktionen): <syntaxhighlight lang="C"> struct point {int x; int y;}; drawline((struct point){1,2},(struct point){2,3}); printarray((int []){1,2,3,4}); //entsprechen struct point unnamed1={1,2},unnamed2={2,3}; drawline(unnamed1,unnamed2); int unnamed3[]={1,2,3,4}; printarray(unnamed3); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct point {int x,y;}; void drawline(struct point start,struct point end) { printf("Linie von (%d,%d) nach (%d,%d)\n",start.x,start.y,end.x,end.y); } void printarray(int arr[4]) { printf("[ "); for(size_t idx=0;idx<4;idx++) printf("%d ",arr[idx]); printf("]\n"); } #include <stdlib.h> int main(int argc,char *argv[]) { struct point {int x; int y;}; drawline((struct point){1,2},(struct point){2,3}); printarray((int []){1,2,3,4}); //entsprechen struct point unnamed1={1,2},unnamed2={2,3}; drawline(unnamed1,unnamed2); int unnamed3[]={1,2,3,4}; printarray(unnamed3); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Über den Adressoperator kann auch die Adresse der anonymen Variablen ermittelt werden. In diesem Falle ist dann der Gültigkeitsbereich/-dauer des Compound Literals zu berücksichtigen. Wird eine Compound Literals außerhalb eines Block-Scopes angelegt, so entspricht sie einer globalen Variable, andernfalls einer lokalen Variablen. Außerhalb des Gültigkeitsbereiches verliert die Adresse auf solch eine Variable ihre Gültigkeit: <syntaxhighlight lang="C"> drawlinep( &(struct point){1,2},&(struct point){2,3}); //entspricht struct point unnamed1={1,2},unnamed2={2,3}; drawlinep( &unnamed1, &unnamed2); struct point1, *point2; { //Block-Scope, zwecks Darstellung von lokalen Variablen point1= (struct point){1,2}; //Compound Literal entspricht hier //Initialisierungswert für point1 point2=&(struct point){3,4}; //Compound Literal ist nur in diesem //Block gültig drawlinep(&point1 /*OK*/, point2 /*OK*/); } drawlinep(&point1 /*OK*/, point2 /*KO*/); //Zeiger zeigt auf nicht mehr //gültigen Speicherbereich </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct point {int x,y;}; void drawlinep(struct point *start,struct point *end) { printf("Linie von (%d,%d) nach (%d,%d)\n",start->x,start->y,end->x,end->y); } #include <stdlib.h> int main(int argc,char *argv[]) { drawlinep( &(struct point){1,2},&(struct point){2,3}); //entspricht struct point unnamed1={1,2},unnamed2={2,3}; drawlinep( &unnamed1, &unnamed2); struct point point1, *point2; { //Block-Scope, zwecks Darstellung von lokalen Variablen point1= (struct point){1,2}; //Compound Literal entspricht hier //Initialisierungswert für point1 point2=&(struct point){3,4}; //Compound Literal ist nur in diesem //Block gültig drawlinep(&point1 /*OK*/, point2 /*OK*/); } drawlinep(&point1 /*OK*/, point2 /*KO*/); //Zeiger zeigt auf nicht mehr //gültigen Speicherbereich } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * Compound-Literal sind per Default keine Konstanten, können also zur Laufzeit geändert werden (siehe Kap. [[Programmieren in C/C++: DatentypeSpecifier#Const Type Qualifier|DatentypeSpecifier:Const Type Qualifier]]): :<syntaxhighlight lang="C"> float *arr=(float []){1.1,2.2,3.3}; //Kein Typkonflikt arr[0]=47.11; //Änderung des 'Konstanten' arr[0] ist möglich </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { float *arr=(float []){1.1,2.2,3.3}; //Kein Typkonflikt arr[0]=47.11; //Änderung des 'Konstanten' arr[0] ist möglich return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Die geschweiften Klammern <code>{ }</code> sind nicht mit dem Block-Operator (siehe [[Programmieren in C/C++: Grundlagen#Block / Compound-Statement | Block / Compound-Statement]]) zu verwechseln. Werden die geschweiften Klammern bei der Initialisierung von Variablen genutzt, dann beschreibt der Inhalt der geschweiften Klammern eine Initialisierungsliste. Wird diesen ein Datentyp vorangestellt, dann wird hiermit eine Compound Literal definiert. == Variableninitialisierung == Mit der Definition einer Variable kann diese optional initialisiert werden. Der tatsächliche Zeitpunkt der Variableninitialisierung (zur Laufzeit oder zur Compilezeit) und damit die Ausführung der Initialisierung (Maschinensprachebefehle oder Speichervorbelegung) hängt von der Gültigkeit/Sichtbarkeit der Variablen ab(siehe [[Programmieren in C/C++: Grundlagen#Gültigkeit/Sichtbarkeit von Variablen| Gültigkeit/Sichtbarkeit von Variablen]]). === Globale + Static lokale Variablen === Globale und statisch globale Variablen werden in einem während der Laufzeit des Programms festen Speicherbereich gehalten. Zum Startzeitpunkt des Programms ist der Speicherplatz solch einer Variable mit dem Initialisierungswert gefüllt, so das bei erstmaliger Nutzung dieser Variablen diese ihre Initialisierungswerte enthalten. Die Belegung des Speicherplatzes erfolgt durch den Compiler, so dass als Initialisierungswerte / Inhalt der Initialisierungsliste nur Konstanten oder Konstanten-Ausdrücke (siehe [[Programmieren in C/C++: Grundlagen#Literale/Konstanten | Literale/Konstanten]]) erlaubt sind: <syntaxhighlight lang="C"> int g=1; //Speicherstelle der Variable g wird //mit 1 belegt short array[3]={1,1+1, sin(0.0)}; //Speicherstellen des Arrays wird //mit 1, 2 und 0 (Funktion sin() wird zur //Compilezeit ausgeführt) belegt </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> double sin(double); //DJ: Include-Anweisung in wikibooks schlägt fehlt int g=1; //Speicherstelle der Variable g wird //mit 1 belegt short array[3]={1,1+1, sin(0.0)}; //Speicherstellen des Arrays wird //mit 1, 2 und 0 (Funktion sin() wird zur //Compilezeit ausgeführt) belegt int main(int argc,char *argv[]) { printf("%hd %hd %hd\n",array[0],array[1],array[2]); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Nicht initialisierte globale und static lokale Variablen werden mit 0 initialisiert! D.h. die Speicherstellen dieser Variablen werden mit dem Wert 0 vorbelegt:: <syntaxhighlight lang="C"> int f; //f hat den Wert 0 double arr[10]; //Alle Elemente von arr werden mit 0.0 initialisiert! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int f; //f hat den Wert 0 double arr[10]; //Alle Elemente von arr werden mit 0.0 initialisiert! int main(int argc,char *argv[]) { printf("f=%d\n",f); printf("%f %f %f\n",arr[0],arr[1],arr[2]); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Lokale Variable === Der Speicherplatz für lokale Variable wird auf dem Stack zur Verfügung gestellt. Mit jedem öffnenden Block-Scope wird Speicher für die innerhalb dies Block-Scopes vorhandenen Variablen vom Stack nach dem LIFO Prinzip reserviert und mit der Variablendefinition Maschinencode zur Initialisierung der Speicherstellen ausgeführt (sofern Variable einen Initialisierungswert hat): <syntaxhighlight lang="C"> { //Öffnende Klammer erzeugt Maschinencode zur Speicherreservierung //von 4 Bytes (für int) und 8 Bytes (für double) int var1=12; //erzeugt Maschinencode zur Initialisierung //der ersten 4 Byte mit dem Wert 12 double var2=sin(f); //erzeugte Maschinencode, welche zunächst //die Funktion sin() mit dem Übergabewert f //aufruft und dessen Rückgabewert in die //nächsten 8 Byte des reservierten Speichers //kopiert ... { //siehe zuvor int var3=var1; //siehe zuvor double var4=var2+var1; } //siehe nachfolgenden } //Freigabe des zuvor reservierten Speichers </syntaxhighlight> Dies gilt auch für Funktionsaufrufe. Mit der öffnenden geschweiften Funktionsklammer wird ebenfalls Speicher reserviert: <syntaxhighlight lang="C"> void foo(int par) { //Öffnende Funktionsklammer erzeugt Maschinencode zur Speicherreservierung //von 4 Bytes (für (Übergabe)Variable par und 4 Bytes für Variable var int var; //Da keine Initialisierung vorhanden ist wird auch //kein Maschinencode zur Initialisierung ausgeführt { //Öffnende Klammer erzeugt Maschinencode zur Speicherreservierung //von 4 Byte für Variable x int x; ... </syntaxhighlight> Aufgrund der mit der Initialisierung bedingten Erzeugung von Maschinencode können die Initialisierungswerte/Inhalte der Initialisierungsliste bei lokalen Variablen aus beliebigen Ausdrücken bestehen und müssen keine Konstanten oder Konstanten Ausdrücke sein: <syntaxhighlight lang="C"> void foo(float f,float g) { float summe=f+g; //Initialisierungswerte float arr[3] = {f+f,g-f,sin(f)}; //werden zur Laufzeit berechnet } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> #include <math.h> //fuer sinf() void foo(float f,float g) { float summe=f+g; //Initialisierungswerte float arr[3] = {f+f,g-f,sinf(f)}; //werden zur Laufzeit berechnet printf("%f\n",(double)summe); printf("%f %f %f\n",(double)arr[0],(double)arr[1],(double)arr[2]); } int main(int argc,char *argv[]) { foo(3,4); return 0; } | execCompilerOptions=-Wall -lm| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Dieser Maschinencode wird jedes Mal ausgeführt, wenn die dazugehörige Anweisung abgearbeitet wird und bedingt dementsprechend Rechenzeit. Zehnmaliges Ausführen einer Funktion oder zehnmaliges Öffnen eines Block-Scopes innerhalb einer For-Schleife führt zur zehnmaligen Ausführung der oben genannten Sachverhalte: <syntaxhighlight lang="C"> void foo(int); void var(void) { for(int lauf=10; lauf>0; lauf--) { //zehnmaliges Reservieren von Speicher int var=lauf*2; //zehnmalige Initialisierung foo(var); } //Freigabe des Speichers } void foo(int par) { //zehnmaliges Reservieren von Speicher int var=12; //zehnmalige Initialisierung } //Freigabe des Speichers </syntaxhighlight> Nicht initialisierte lokale Variablen werden nicht initialisiert, d.h. keine zusätzlichen Maschinenbefehle zum Initialisieren erzeugt. Der Variablenwert entspricht dann einem 'Zufallswert' oder korrekter gesagt dem Inhalt der Variablen, welcher zuvor der Speicherstelle zugewiesen war: <syntaxhighlight lang="C"> int first(void) { int var_first=7; return var_first; } int second(void) { int var_second; //Variable var_second bekommt den identischen return var_second; //Speicherbereich wie var_first zugwiesen //und damit auch dessen zuletzt gültigen Wert } int main(int argc, char *argv[]) { int var1=first(); //var1 beinhaltet Wert 7 int var2=second(); //var2 beinhaltet Wert 7 printf("var_foo=%d\n",var1); printf("var_far=%d\n",var2); return 0; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> int first(void) { int var_first=7; return var_first; } int second(void) { int var_second; //Variable var_second bekommt den identischen return var_second; //Speicherbereich wie var_first zugwiesen //(und damit auch dessen zuletzt gültigen Wert) } int main(int argc, char *argv[]) { printf("%d\n",second()); //Zufallswert (0, da Stack mit 0 initialisiert ist) printf("%d\n",first()); //Stack belegen printf("%d\n",second()); //Zufallswert (7, da Speicherstelle zuvor mit 7 return 0; //belegt wurde) } | execCompilerOptions=| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Wird eine Variableninitialisierung mit einer switch oder goto Anweisung übersprungen, so wird zwar die Variable angelegt (Speicherplatz reserviert), jedoch die Maschinenbefehle zur Initialisierung dieser Variablen nicht ausgeführt (siehe auch [[Programmieren in C/C++: Grundlagen# Switch-Anweisung|Switch-Anweisung]] und [[Programmieren in C/C++: Grundlagen# Label + Goto|Label + Goto]]). Die Variable enthält dann einen Zufallswert: <syntaxhighlight lang="C"> switch(value) { case 0: int lok=7; printf("%d",lok); //OK, lok beinhaltet den Wert 7 break; default: printf("%d",lok); //KO, Variable lok vorhanden, //aber nicht initialisiert. D.h. Ausgabe einer break; //Zufallszahl } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> void foo(int value) { switch(value) { case 0: int lok=7; printf("%d\n",lok); //OK, lok beinhaltet den Wert 7 break; default: printf("%d\n",lok); //KO, Variable lok vorhanden, //aber nicht initialisiert. D.h. Ausgabe einer break; //Zufallszahl } } void far(void) { int var1=4711; int var2=1799; printf("Marke: %d, Erscheinungsjahr: %d\n",var1,var2); } int main(int argc,char *argv[]) { foo(2); //Zufallswert (0, da Stack mit 0 initialisiert ist) foo(0); //Initialisierungswert far(); //Stack belegen foo(2); //Zufallswert return 0; } | execCompilerOptions=| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Bei erstmaligem Funktionsaufruf kann eine nicht initialisierten lokale Variablen den Wert 0 beinhalten (Stackframe wird mit Programmstart auf 0 gesetzt). Beim nächsten Aufruf der Funktion ist zumeist die Speicherstelle der lokalen Variablen mit anderen Werten gefüllt worden, so dass nun ein anderer 'Zufallswert' als 'Initialisierungswert' enthalten ist === C++ === In C++ ist ergänzend die Initialisierung einer Variablen über () möglich. Bei Objekten wird hierüber der zugehörige Konstruktor aufgerufen. Bei primitiven Datentypen entspricht der Wert in den Klammern dem Initialisierungswert: <syntaxhighlight lang="C++"> int variable(10); //Bei primitiven Datentype entspricht dies //int variable=10; struct test { int a; test(int par) {a=par;} //Konstruktor der Struktur test }; struct test test(4); //Konstruktor test(int par) wird aufgerufen struct test test(4,5); //KO, kein passender Konstruktor vorhanden </syntaxhighlight> === Sonstiges === Folgende weitere Sachverhalten gilt es bzgl. Variableninitialisierung zu berücksichtigen: * Nach C-Spezifikation ist eine Initialisierung von Variablen nicht notwendig. Es liegt folglich kein Fehler vor, wenn auf eine nicht initialisierte Variable lesend zugegriffen wird. Ungeachtet der C-Spezifikation überprüft der Compiler mit dem Schalter '-Wall' diesen Sachverhalt und gibt eine Warning aus * Deklarationen/Prototypen können keinen Initialisierungswert enthalten <syntaxhighlight lang="C++"> extern int var=7; //Fehlerhaft </syntaxhighlight> * Const und lokale Static Variablen sollten initialisiert werden, auch wenn C in diesem Fall keinen Fehler meldet! <syntaxhighlight lang="C++"> const int konstante; //Syntaktisch OK, Initialisierungswert fraglich! static int statisch; </syntaxhighlight> == Anweisung (Statement) & Expression == Eine Anweisung (Statement) stellt entsprechend dem Wikipedia Artikel {{w|Anweisung_(Programmierung) | Anweisung}} ''"ein in der Syntax einer Programmiersprache formulierte einzelne Vorschrift dar, die im Rahmen der Abarbeitung des Programms auszuführen ist"''. Entsprechend der C-Spezifikation [C11 6.8] kann eine Anweisung aus: : labled-statement: Eine Sprungmarke für die Switch- und die Goto-Anweisung : compound-statement: siehe nachfolgendes Kapitel : expression-statement: siehe nachfolgendes Kapitel : selection-statement: Eine if() oder switch() Anweisung : iteration-statement: Eine while(), do while() oder eine for() Anweisung : jump-statement: Eine goto, break, continue oder return Anweisung Die einzelnen Statements können dabei aus weiteren Statements bestehen. === Ausdruck (Expression) === Entsprechend der C-Spezifikation [C11 6.5] ist ein Ausdruck eine Folge von Operatoren und Operanden, die die Berechnung eines Werts angibt, ein Objekt oder eine Funktion bezeichnet, Nebenwirkungen erzeugt oder eine Kombination davon ausführt. Die Wertberechnungen der Operanden eines Operators werden vor der Wertberechnung des Ergebnisses des Operators sequenziert (siehe auch {{w|lang=en|Expression_(computer_science)|Expression}}). Beispiele: <syntaxhighlight lang="C"> a=sqrt(a*a+b*b); //Ausdruck mit Nebenwirkungen int func(int par) { a++; return par*2;} b=func(1)*func(2); //Ausdruck mit undefinierten Verhalten a=++a + 1; a=for(lauf=10;lauf>0;lauf--); //for-Anweisung ist kein Ausdruck //d.h. liefert keinen Wert zurück </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> double sqrt(double); //DJ: Include-Anweisung in wikibooks schlägt fehlt int a=0; int func(int par) { a++; return par*2; } int main(int argc,char *argv[]) { int a=4,b=7; a=sqrt(a*a+b*b); //Ausdruck mit Nebenwirkungen b=func(1)*func(2); //Globale Variable a wird geändert! //Ausdruck mit undefinierten Verhalten a=++a + 1; //Kein Ausdruck a=for(lauf=10;lauf>0;lauf--); //for-Anweisung ist kein Ausdruck //d.h. liefert keinen Wert zurück return 0; } | execCompilerOptions=-Wall -lm| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Discarded Value === Discarded Value sind Ausdrücke, dessen Ergebnisse nicht verwendet werden (also keiner Variablen zugewiesen werden). Ergebnisse von Ausdrücken, die nicht verwendet werden, führen nicht zu einer Fehlermeldung: <syntaxhighlight lang="C"> int a=7; a; //Variable a wird gelesen, der Wert jedoch verworfen 7; //Konstante wird verworfen a+7; //Ergebnis wird Berechnet und verworfen printf("hallo"); //Printf hat einen Rückgabewert, dessen Wert verworfen wird </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=7; a; //Variable a wird gelesen, der Wert jedoch verworfen 7; //Konstante wird verworfen a+7; //Ergebnis wird Berechnet und verworfen printf("hallo"); //Printf hat einen Rückgabewert, dessen Wert verworfen wird return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * Soll bewusst der Rückgabewert verworfen werden, so kann/sollte mit dem explizten Cast auf (void) der Rückgabewert explizit 'verworfen' werden. Dies ist u.A. hilfreich bei Variablen, die (noch) nicht benutzt werden und der Compiler die Warning "unused Variable" ausgibt: :<syntaxhighlight lang="C"> (void)a; //Zur Vermeidung von Compiler-Warnings "Unused Variable" (void)(a+7); //hier eine explizte 'Ansage' der Verwerfung des Wertes (void)func(); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int func(void) { return 4711; } int main(int argc,char *argv[]) { int a; (void)a; //Zur Vermeidung von Compiler-Warnings "Unsued Variable" (void)(a+7); //hier eine explizte 'Ansage' der Verwerfung des Wertes (void)func(); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Mit der Anweisung <nowiki>[[nodiscard]]</nowiki> (ab C++17, ab C23) wird der Compiler angewiesen, dass der Aufrufer einer Funktion mit Rückgabewert der Rückgabewert entgegenzunehmen ist. Wird der Rückgabewert verworfen, so gibt der Compiler eine Fehlermeldung aus: :<syntaxhighlight lang="C"> [[nodiscard]] int Client(int socket); Client(5); ////Fehlermeldung, da Rückgabewert nicht verwendet wird </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> [[nodiscard]] int Client(int socket) { return socket+1; } int Server(int socket) { return socket+1; } int main(int argc,char *argv[]) { Server(5); //keine Fehlermeldung Client(5); //Fehlermeldung, da Rückgabewert nicht verwendet wird return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Java kennt Dicarded Values nicht. Ausnahme, es handelt sich um einen Funktionsaufruf, dessen Rückgabewert nicht genutzt wird. === Sequence Point === Ein Sequenzpunkt (u.A. das abschließende Semikolon am Ende der Anweisung) ist nach dem Wikipedia Artikel {{w|lang=en|Sequence_point|Sequence Point}} definiert als der Punkt in der Ausführung eines Computerprogramms, an dem garantiert ist, dass alle Nebenwirkungen früherer Bewertungen durchgeführt wurden und noch keine Nebenwirkungen von nachfolgenden Bewertungen durchgeführt wurden.<br /> Sequenzpunkte sind beispielsweise dann von Interesse, wenn dieselbe Variable innerhalb eines einzelnen Ausdrucks mehr als einmal geändert wird und die Ausführungsreihenfolge der Operationen nicht sauber spezifiziert ist.<br /> Ein oft zitiertes Beispiel ist der C-Ausdruck 'i=i++;'. Der Sequence Point garantiert, dass alle Operationen (hier Zuweisung und Postinkrement) ausgeführt sind. Jedoch ist die Ausführungsreihenfolge dieser beiden Operationen nicht spezifiziert. In Abhängigkeit des Zeitpunktes der Ausführung des Postinkrementes (vor oder nach der Zuweisung) kann i unterschiedliche Werte annehmen. In C und C++ führt die Auswertung eines solchen Ausdrucks zu undefiniertem Verhalten. Andere Sprachen, wie z. B. C#, definieren den Vorrang des Zuweisungs- und des Inkrementoperators so, dass das Ergebnis des Ausdrucks i=i++ garantiert ist.<br/> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int i=5; i=i++; printf("%d",i); //Gerne anderen Compiler auswählen, z.B. x86-64 icc... return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Weitere Sequence Points: * Beim ?-Operator stellt sowohl das ? als auch der : ein Sequenz Point dar. Zunächst muss der linke Ausdruck vollständig bearbeitet werden, bevor einer der beiden Bedingungen bearbeitet wird * Bei der logischen UND / ODER Funktion stellen der Operator ein Sequenz Point dar. Erst wird der linke Operand vollständig ausgeführt und ausgewertet, bevor (ggf.) der rechte Operand ausgewertet wird (siehe [[Programmieren in C/C++: Grundlagen#Logische Verknüpfungen | Logische Verknüpfungen]]) * Beim Komma-Operator stellen der Komma ein Sequence-Point dar (siehe [[Programmieren in C/C++: Grundlagen#Komma-Operator | Komma-Operator]]) • und weitere (siehe Appendix der C-Spec) Operationen, bei denen die Ausführungsreihenfolge nicht spezifiziert ist: * Bei Funktionsaufrufen ist die Abarbeitungsreihenfolge der Parameter nicht spezifiziert, so dass bspw.: :<syntaxhighlight lang="C"> //Aufrufruf einer Funktion, deren Parameter sich aus Funktionsaufrufen //ergeben (*pf[f1()]) (f2(), f3() + f4()); //pf -> Array von Funktionszeigern //Die Funktionen f1,f2,f3 und f4 können in einer beliebigen Reihenfolge //aufgerufen werden </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int f1(void) { printf("f1 called\n"); return 1; } int f2(void) { printf("f2 called\n"); return 2; } int f3(void) { printf("f3 called\n"); return 3; } int f4(void) { printf("f4 called\n"); return 4; } void func1(int par1,int par2) { printf("func1(%d,%d) called\n",par1,par2); } void func2(int par1,int par2) { printf("func2(%d,%d) called\n",par1,par2); } int main(int argc,char *argv[]) { void (*pf[2])(int,int)={func1,func2}; //Aufrufruf einer Funktion, deren Parameter sich aus Funktionsaufrufen //ergeben (*pf[f1()]) (f2(), f3() + f4()); //pf -> Array von Funktionszeigern //Die Funktionen f1,f2,f3 und f4 können in einer beliebigen Reihenfolge //aufgerufen werden //Gerne anderen Compiler auswählen, z.B. x86-64 icc... return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Per Postinkrement/-dekrement Operator sagt aus, dass für die eigentliche Operation der Wert der Variablen genutzt wird und im Anschluss die Variable erhöht / erniedrigt werden soll. Nach C-Spezifikation [C11 6.5.2.4] muss dies spätestens vor dem nächsten Sequence Point erfolgt sein. Der genaue Zeitpunkt innerhalb des Sequence Points ist jedoch nicht vorgegeben: :<syntaxhighlight lang="C"> int a=7; int b=a++ + a; //Ergebnis Abhängig, ob das Postinkrement vor der Addition //oder als letztes ausgeführt wird. a=a++ + 1; //dito </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=7; int b=a++ + a; //Ergebnis Abhängig, ob das Postinkrement vor der Addition //oder als letztes ausgeführt wird. a=a++ + 1; //dito printf("a=%d b=%d\n",a,b); //Gerne anderen Compiler auswählen, z.B. x86-64 icc... return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Abarbeitungsreihenfolgen === Die Abarbeitungsreihenfolge der Operatoren wird durch die Prioritätenliste/Rangfolge (siehe [[C-Programmierung: _Liste_der_Operatoren_nach_Priorität| C-Programmierung:Liste der Operatoren nach Priorität]]) vorgegeben. Operatoren mit höherer Priorität werden vor Operatoren mit niedriger Priorität ausgeführt: <syntaxhighlight lang="C"> //Der Ausdruck c = sizeof(x) + ++a / 3; //wird aufgrund der Prioritäten wie folgt ausgewertet: c= (sizeof(x)) + ( (++a) / 3); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=2; int c; int x=0; c = sizeof(x) + ++a / 3; printf("a=%d c=%d\n",a,c); //Wird aufgrund der Prioritäten wie folgt ausgewertet: a=2; c= (sizeof(x)) + ( (++a) / 3); printf("a=%d c=%d\n",a,c); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Bei identischer Priorität ergibt sich die Abarbeitungsreihenfolge aus der Assoziativität (L-R oder R-L): <syntaxhighlight lang="C"> a=33 / 5 / 2; //Wird aufgrund der Assoziativität wie folgt ausgewertet. //a= (33 / 5) / 2; //und damit zu 3 und nicht zu 16 (bei 33 / (5/2)) ausgewertet. a = b = c = d*2; //→ a=(b=(c=(d*2))); a = b = 1+c = d; //→ a=(b=((1+c)=d)); //Compilerfehler, da //1+c kein lvalue ist </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a; a=33 / 5 / 2; printf("a=%d\n",a); //Wird aufgrund der Assoziativität wie folgt ausgewertet. //a= (33 / 5) / 2 printf("a=%d\n",a); //und damit zu 3 und nicht zu 16 (bei 33 / (5/2)) ausgewertet. int b,c,d=8; a = b = c = d*2; //→ a=(b=(c=(d*2))); printf("a=%d b=%d c=%d d=%d\n",a,b,c,d); a = b = 1+c = d; //→ a=(b=((1+c)=d)); //Compilerfehler, da //1+c kein lvalue ist return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Block / Compound-Statement === Ein Block oder Compound-Statement fasst Vereinbarungen und Anweisungen zu 'einer' Anweisung/Statement zusammen. Es kann überall dort eingesetzt werden, wo nur eine Anweisung erlaubt ist. <code> Syntax: {Declaration-or-statement-list/textsuperscript<sub>OPT</sub>} </code> Ein Block wird nicht wie bei einer Anweisung mit einem Semikolon abgeschlossen (Das angehängte Semikolon wäre dann eine separate leere Anweisung!). <br /> Ein Block hat blockweite Sichtbarkeit (siehe [[Programmieren in C/C++: Grundlagen#Blockweite Sichtbarkeit | Blockweite Sichtbarkeit]]), so dass hier definierte Variablen nur hier gültig sind. Deklarationen sind ebenfalls nur in dem Block gültig. <syntaxhighlight lang="C"> for(..) Anweisung; //For-Schleife führt nur diese eine Anweisung aus for(…) {Block} //For-Schleife führt Block (als eine Anweisung) aus if(..) Anweisung; else Anweisung; //IF-Anweisung führt nur 'eine' //Anweisung aus if(..) {Block} else {Block} //IF-Anweisung führt Block aus if( ) {Block}; else {Block}; //Semikolon ist eine separate //Leer-Anweisung, so dass else //nicht zur IF-Anweisung zugeordnet //werden kann (2 Anweisungen vor Else) void foo(void) { int var1; { //Block innerhalb von Block als Strukturierungswerkzeug int var2; struct xyz{int x,y,z}; //Defintion eines Datentyps im Block struct xyz var3; } struct xyz var4; //KO, Datentyp hier nicht mehr bekannt } </syntaxhighlight> Die GNU-C Reference (nicht C++) erlaubt es, Funktionen innerhalb von Blöcken (und damit auch innerhalb von Funktionen) zu definieren. Diese innere Funktion steht dann nur in diesem Block zur Verfügung und kann ergänzend auf Variablen des umgebenden Blockes zugreifen: <syntaxhighlight lang="C"> void foo(void) { { int label=1; //Funktion innerhalb einer Funktion void dummy(void){ label++; //Zugriff auf Variablen des umschließenden Blockes } dummy(); //Aufruf der nur in diesem Block gültigen Funktion } dummy(); //KO, Funktion hier nicht mehr gültig } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void foo(void) { { int label=1; //Funktion innerhalb einer Funktion void dummy(void){ label++; //Zugriff auf Variablen des umschließenden Blockes } dummy(); //Aufruf der nur in diesem Block gültigen Funktion } dummy(); //KO, Funktion hier nicht mehr gültig } int main(int argc,char *argv[]) { foo(); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * '''Blöcke können/sollten als Strukturierungswerk genutzt werden. Dem Leser von Source Code kann auf dieser Weise vermittelt werden, dass diese Anweisungen 'zusammen' zu lesen sind.''' * Im Gegensatz zu Java, in welchem innerhalb eines Blockes kein Variablenname genutzt werden darf, die außerhalb des Blockes existiert, ist dies in C erlaubt. Die äußere Variable steht damit innerhalb des Blockes nicht mehr im Zugriff. :<syntaxhighlight lang="C"> int a=3; int main(void){ int a=7; //Globale Variable ist ab hier nicht mehr sichtbar/zugreifbar { int a=9; //Innere Variable überdeckt äußere Variable } } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int a=3; int main(int argc,char *argv[]) { printf("a=%d\n",a); int a=7; //Globale Variable ist ab hier nicht mehr sichtbar/zugreifbar printf("a=%d\n",a); { int a=9; //Innere Variable überdeckt äußere Variable printf("a=%d\n",a); } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Embedded Statement === Embedded Statements sind eine GNU-C Erweiterung (siehe [https://www.gnu.org/software/gnu-c-manual/gnu-c-manual.html GNU-C-Manual 3.18]). Da sie vom Autor als sehr nützlich angesehen wird und auch von diversen Compilern und auch in C++ unterstützt wird, wird diese hier beschrieben. Ein Block fasst mehrere Anweisungen zu einer Anweisung zusammen, hat jedoch kein Rückgabewert. Ein Embedded-Statement entspricht einem Block mit der Ergänzung, dass dieser einen Rückgabewert hat, so dass ein Embedded-Statement überall dort eingesetzt werden kann, wo eine Expression erwartet wird. <code> Syntax: ({Declaration-or-statement-list<sub>OPT</sub>}) </code> Der Rückgabewert wird nicht über eine return-Anweisung angegeben, sondern entstammt aus der letzten Anweisung innerhalb der Liste: <syntaxhighlight lang="C"> int var; var={int par=7;} //KO Block hat keine Rückgabewert. var=({int par=7; par++; par;}); //OK Embedded-Statement hat einen //Rückgabewert, der sich aus der //letzten Anweisung 'Par;' ergibt //Hier 8. </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int var; var={int par=7;} //KO Block hat keine Rückgabewert. var=({int par=7; par++; par;}); //OK Embedded-Statement hat einen //Rückgabewert, der sich aus der //letzten Anweisung 'Par;' ergibt //Hier 8. printf("var=%d\n",var); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Ein Embedded-Statement ähnelt folglich einem Funktionsaufruf mit dem Unterschied, dass a) in der Tat kein Funktionsaufruf stattfindet und b) der Rückgabewert nicht mit return, sondern über die letzte Anweisung zurückgegeben wird. Der Anwendungsfall ist dort zu finden, wo eine Expression erwartet wird und mehrere Anweisungen zum Ermitteln der Expression notwendig sind: <syntaxhighlight lang="C"> int var1=8; int b=({int d=var1++;d>10?10:d;}); if( ({int d=b;b=var1;b=d;}) > 1) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int var1=8; int b=({int d=var1++;d>10?10:d;}); if( ({int d=b;b=var1;b=d;}) > 1) printf("Bedingung erfüllt"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * Ein Embedded-Statement ist insbesondere bei Nutzung von Makros (siehe Kap [[Programmieren in C/C++: Präprozessor | Präprozessor]]) hilfreich * Mittels eines Embedded-Statement kann eine anonyme Funktion/Lambdafunktion dargestellt werden: <syntaxhighlight lang="C"> void test(int (*fptr)(int),int arr[10]) { for(int lauf=0;lauf<10;lauf++) arr[lauf]=fptr(arr[lauf]); } int main(int argc, char *argv[]) { int arr[]={1,2,3,4,5,6,7,8,9,10}; //Aufruf mit einer anonymen Funktion test( ({int func(int a) {return a%2?a:0;} ; func;}) ,arr); } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void test(int (*fptr)(int),int arr[10]) { for(int lauf=0;lauf<10;lauf++) arr[lauf]=fptr(arr[lauf]); } int main(int argc, char *argv[]) { int arr[]={1,2,3,4,5,6,7,8,9,10}; //Aufruf mit einer anonymen Funktion test( ({int func(int a) {printf("Called:%d\n",a);return a%2?a:0;} ; func;}) ,arr); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Funktionen / Prozeduren == Funktionen/Prozeduren sind ein Strukturierungsmerkmal, so dass Teile der Funktionalität des Programmes wiederverwendbar sind. C/C++ unterscheidet nicht zwischen Funktionen (haben einen Rückgabewert, können damit in Ausdrücken verwendet werden) und Prozeduren (haben keine Rückgabewert, resp. Rückgabetyp void).<br/> Mit jedem Aufruf einer Funktion wird für den zugehörigen Block ein eigener Stack-Kontext angelegt, so dass Funktionen sich selbst aufrufen können (Rekursion). Jeder Funktionsinstanz hat somit seinen eigenen lokalen Variablenbereich, teilen sich jedoch die globalen und die statisch lokalen Variablen.<br /> Mit dem Aufruf einer Funktion können Parameter übergeben werden, wobei die Übergabeparameter vom Aufrufer (Caller) durch den Aufruf in die lokalen Variablen des Aufgerufenen (Callee) kopiert/zugewiesen werden (Call by Value). Wird ein Zeiger übergeben, hat der Callee über die Dereferenzierung des Zeigers die Möglichkeit, die Variablen des Caller zu verändern (Call by Reference) (siehe Kap. [[Programmieren in C/C++: Zeiger #Zeiger bei Funktionsaufrufen | Zeiger:Zeiger bei Funktionsaufrufen).]]). Hinweise: * Die Klammerung hinter dem Funktionsnamen (<code>foo()</code>) zeigt an, dass es sich um einen Funktionsaufruf (Verzweigung der Programmausführung zu der Startadresse der Funktion) handelt :<syntaxhighlight lang="C"> void foo(void) {printf("foo called");}; foo(); //Klammern hinter dem Funktionsnamen bedeuten Aufruf der Funktion </syntaxhighlight> * Die Nutzung des Funktionsnamens ohne Klammerung (<code>foo</code>) gibt die Startadresse der Funktion zurück. Die Startadresse kann in einem Zeiger auf Funktionen gespeichert werden (siehe Kap. [[Programmieren in C/C++: Zeiger#Zeiger auf Funktionen | Zeiger:Zeiger auf Funktionen]]). :<syntaxhighlight lang="C"> void foo(void) {printf("foo called");}; void (*fptr)(void)=foo; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void foo(void) { printf("foo called"); }; int main(int argc, char *argv[]) { void (*fptr)(void)=foo; fptr(); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Deklaration/Definition vor dem ersten Aufruf der Funktion 'notwendig', damit Compiler die Übergabeparameter entsprechend bereitstellt und ggf. eine implizite Typkonvertierung durchführt (dito Rückgabewert). Die Angabe der Variablennamen können bei der Deklaration entfallen * Die fehlende Angabe der Übergabeparameter bedeutet in C (nicht C++), dass diese Funktion mit beliebigen Übergabeparametern aufgerufen werden kann und der Compiler keine Typprüfung durchführt: :<syntaxhighlight lang="C"> int func() {...} //kann wie folgt aufgerufen werden func(); func(4); func("hallo Welt",4.7); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void func() { printf("foo called\n"); }; int main(int argc, char *argv[]) { func(); func(4); func("hallo Welt",4.7); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} :→ unbedingt vermeiden<br /> :Hat die Funktion keinen Übergabewert, so wird dies in C mit void gekennzeichnet * In C++ bedeutet die Schreibweise ohne Datentypbeschreibung, dass keine Parameter erwartet werden * In der Parameterliste von Funktionen dient in der GNU-C Spezifikation das Semikolon zum Trennen zwischen Deklaration von Übergabeparameter und den Übergabeparametern. Alle Übergabewerte links vom Semikolon sind (Forward)deklarationen: :<syntaxhighlight lang="C"> void test1(int a; int b,int a) { // Forward; Parameter printf("a=%d b=%d\n",a,b); } //Aufruf test1(3,7); //a=7 b=3 //Sinnvoll im Umgang mit Variable Length Arrays void test2(int dim; const char str[dim], int dim); //Aufruf test2("hallo",6); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void test1(int a; int b,int a) { // Forward; Parameter printf("a=%d b=%d\n",a,b); } //Sinnvoll im Umgang mit Variable Length Arrays void test2(int dim; const char str[dim], int dim) { printf("dim=%d\n",dim); } int main(int argc, char *argv[]) { //Aufrufe test1(3,7); //a=7 b=3 test2("hallo",6); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Return-Anweisung === Mit der Return-Anweisung wird eine Funktion (vorzeitig) beendet. Der optionale Parameter dient der Angabe des Rückgabewertes der Funktion an den Aufrufer. Der Datentyp des Parameters ergibt sich aus dem Rückgabedatentyp der Funktion. <code> Syntax: return expression<sub>OPT</sub> </code> Der Rückgabewert expresion sagt aus, dass hier nicht nur Konstanten oder Variablen stehen können, sondern beliebige Ausdrücke erlaubt sind. Der resultierende Datentyp des Ausdruckes muss letztendlich dem Rückgabedatentyp der Funktion entsprechen: <syntaxhighlight lang="C"> int foo(double a, double b) { return (int)(a*a+b*b); } </syntaxhighlight> Hinweise: * Bei nicht void-Funktionen ist eine return-Anweisung mit einer Expression entsprechend dem Datentyp der Funktion zwingend notwendig: :<syntaxhighlight lang="C"> int func(void) { return 5.1; //Datentyp wird zuvor int konvertiert } double a=func(); //int wird in double konvertiert </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int func(void) { return 5.1; //Datentyp wird zuvor int konvertiert } int main(int argc, char *argv[]) { double a=func(); //int wird in double konvertiert printf("a=%f\n",a); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Bei einer void-Funktion ist die return-Anweisung ohne Expression optional. Hier entspricht der schließende Block der Return-Anweisung :<syntaxhighlight lang="C"> void func(char *str) { if(str==NULL) return; printf("%s",str); } </syntaxhighlight> Sollen mehr als ein Rückgabewert an den Aufrufer zurückgegeben werden so empfiehlt sich: * die Rückgabewerte in einer Struktur zu packen (siehe [[Programmieren in C/C++: Datentypen#Verbundtyp Struktur/Klasse (nur C++) |Datentypen:Verbundtyp Struktur/Klasse (nur C++)]]) * die Rückgabewerte über die Aufrufparameter als Call-by-Reference zu übergeben (siehe [[Programmieren in C/C++: Zeiger#Zeiger bei Funktionsaufrufen | Zeiger:Zeiger bei Funktionsaufrufen]]) ==== Rückgabewert aus Datentypsicht ==== Aus Datentypsicht kann der Funktionsname inkl. den Parameter(n) in einem Ausdruck mit dem Datentyp des Rückgabewertes der Funktion ausgetauscht werden: <syntaxhighlight lang="C"> int foo(void) {return 4711;} int var; var=1+foo(); //Aus Datentypsicht (int)=(int)+(int) </syntaxhighlight> Daraus ergibt sich, dass bei Arrays/Strukturen/Unions direkt auf einzelne Komponenten zugegriffen werden kann, ohne diese zuvor einer Variablen zuzuweisen: <syntaxhighlight lang="C"> struct xyz{int x,y,z;}; struct xyz foo(int par) { struct xyz var; var.x=var.y=var.z=par; return var; } if(foo(12).x == 12) printf("Identisch\n"); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct xyz{int x,y,z;}; struct xyz foo(int par) { struct xyz var; var.x=var.y=var.z=par; return var; } int main(int argc, char *argv[]) { if(foo(12).x == 12) printf("Identisch\n"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} ==== Fehlerrückgabe ==== Viele Funktionen können unter gewissen Umständen nicht korrekt ausgeführt werden. Z.B. aufgrund dessen, dass: * der benötigter Speicher vom Heap nicht bereitgestellt werden kann * Übergabeparameter außerhalb des zulässigen Bereiches liegen * angeforderte Ressource (Datei, Geräte, …) nicht vorhanden/verfügbar sind Solche Fälle gilt es dem Aufrufer mitzuteilen, da in diesen Fällen die vom Aufrufer geforderte Funktionalität nicht erfüllt ist und der Aufrufer ggf. nicht weiterarbeiten kann. Zur Mitteilung des Fehlers sollte vorrangig der Rückgabewerte genutzt werden. (auch wenn in C++ mit Exception eine Alternative hierzu bereitsteht) <syntaxhighlight lang="C"> char *strdup(char *src) { char *dst; if((dst=malloc(strlen(src)+1))==NULL) return NULL; strcpy(dst,src); return dst; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> #include <string.h> char *strdup1(char *src) { char *dst; if((dst=malloc(strlen(src)+1))==NULL) return NULL; strcpy(dst,src); return dst; } int main(int argc, char *argv[]) { char *dup=strdup1("hallo"); if(dup == NULL) printf("Fehler\n"); else printf("dup='%s'\n",dup); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Die Standard-C Library-Funktionen geben in diesem Fall zumeist ein -1 (Rückgabewert Ganzzahl) oder einen NULL-Zeiger (Rückgabewert Zeiger) zurück. Der genaue Fehlergrund ist dann ergänzend in der globalen Variablen errno gespeichert. Mittels der Standard-C Funktion strerror() kann die Zahl in einen für den Anwender/Programmierer lesbaren String umgewandelt werden (die GNU-C Library Funktion printf() bietet ergänzend den Conversion Spezifier %m als alternative Ausgabemöglichkeit an): <syntaxhighlight lang="C"> #include <errno.h> int var; if(-1==scanf("%d",&var) ) printf("Es wurde keine Zahl erkannt\n"); int ret=open("/etc/ptmp",O_WRONLY|O_CREAT|O_EXCL, S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH); if(-1==ret) printf("open failed() with %s\n",strerror(errno)); if(-1==ret) printf("open failed() with %m (nur glibc)\n"); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <fcntl.h> #include <string.h> #include <errno.h> int main(int argc, char *argv[]) { int var; if(-1==scanf("%d",&var) ) printf("Es wurde keine Zahl erkannt\n"); int ret=open("/etc/ptmp",O_WRONLY{{!}}O_CREAT{{!}}O_EXCL, S_IRUSR{{!}}S_IWUSR{{!}}S_IRGRP{{!}}S_IROTH); if(-1==ret) printf("open failed() with %s\n",strerror(errno)); if(-1==ret) printf("open failed() with %m (nur glibc)\n"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} '''Für eine sauber Programmierung sollte diese Methodik generell angewendet werden.''' Jede Funktion, welche Fehlschlagen kann, teilt dies per Rückgabewert dem Aufrufer mit. Der Rückgabewert einer jeden Funktion wird vom Aufrufer kontrolliert. === Main-Funktion === Mit Start der Anwendung übergibt das Betriebssystem die Kontrolle an die Anwendung und führt dort die Funktion main aus. Als Übergabe- und Rückgabeparameter sind folgende Varianten erlaubt: <syntaxhighlight lang="C"> int main(void) { } int main(int argc, char *argv[]) { } </syntaxhighlight> Mit dem Start der Anwendung kann, wie bei jedem Funktionsaufruf, Parameter an den startenden Prozess übergeben werden. Als Parameter können Strings übergeben werden, welche in Form eines Arrays von Strings übergeben werden. Im Parameter argc sind die Anzahl der Strings enthalten. Im Parameter argv[x] sind die einzelnen Strings enthalten. Sofern vorhanden ist im ersten String der Programmname/Aufrufname der Anwendung enthalten: <syntaxhighlight lang="C"> int main(int argc, char *argv[]) { //Variante 1: Darstellung des Inhaltes des Arrays von Strings for(int lauf=0;lauf < argc; lauf++) printf("%d.Parameter: '%s'\n",lauf,argv[lauf]); //Variante 2: Darstellung des Inhaltes des Arrays von Strings (void)argv; //Wird hier nicht benötigt for(char **str=argv;*str!=NULL;str++) printf("Parameter: '%s'\n",*str); return EXIT_SUCCESS; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int max_width=0; int ret; //Variante 1: Darstellung des Inhaltes des Arrays von Strings for(int lauf=0;lauf < argc; lauf++) { ret=printf("%d.Parameter: '%s'\n",lauf,argv[lauf]); max_width=ret>max_width ? ret : max_width; } //Trennzeichen drucken char term[max_width]; memset(term,'-',max_width); printf("%.*s\n",max_width-1,term); //Variante 2: Darstellung des Inhaltes des Arrays von Strings (void)argv; //Wird hier nicht benötigt for(char **str=argv;*str!=NULL;str++) printf("Parameter: '%s'\n",*str); return EXIT_SUCCESS; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Im Compiler-Explorer können die Parameter im Executor unter 'Execution Arguments', getrennt mit Leerzeichen eingegeben werden. Wird die Funktion main beendet, entweder über die return Anweisung oder den Aufruf der exit() Funktion, wird die Kontrolle zurück an den startenden Prozess (zumeist Shell) gegeben. Über den Rückgabewert wird im Allgemeinen dem Aufrufer der Fehlerstatus mitgeteilt (EXIT_SUCCESS oder 0 bedeutet fehlerfreie , EXIT_FAILURE oder ungleich 0 fehlerhafte Ausführung). Der Start der Anwendung kann als Funktionsaufruf angesehen werden, welchen einen Wert an den Aufrufer zurückliefert. Hinweise: * Der Return-Wert der main-Funktion kann mit >>echo $? in der Bash abgefragt werden * Mittels <code>exit(int status)</code> kann das Programm an jeder Stelle innerhalb des Programms beendet werden. <code>status</code> entspricht dann der expression der return Anweisung von main === Inline Funktion === Wie der Name inline andeutet, ist die Intention von Inline, dass die aufgerufen Funktion Bestandteil der aufrufenden Funktion ist. Die aufgerufene Funktion soll somit im Kontext des Aufrufers ausgeführt werden, so dass kein eigener Stack bereitgestellt werden muss. Der Start der Funktion kann somit schneller erfolgen: <code> inline int foo(void) { } </code> Das Inline erfolgt durch den Compiler (und nicht durch den Linker). Damit das inline funktioniert, muss die zu inlinende Funktion vor dem Aufruf definiert sein, d.h. sie muss in derselben C-Datei enthalten sein [C11 6.7.4]. Hinweis: * Das 'inlinen' von Funktionen über die eigene Objektdatei hinweg erfolgt in C/C++ über Link Time Optimization (LTO). Hierzu fügt der Compiler den Zwischencode mit in die Objektdatei, so dass der Linker das 'inlinen' vollziehen kann (siehe {{w|lang=en|Interprocedural_optimization| Interprocedural Optimization}}) === Variadic Function / Ellipsis Punctuator === Mit dem Ellipsis Puncturator '…' kann in Funktionsdefinitionen angegebenen werden, dass anstatt der … Anweisung, beliebig viele Parameter/Argumente übergeben werden können. Dies wird unter anderen in der printf() Anweisung genutzt: <syntaxhighlight lang="C"> int printf(const char *fmt, ... ); </syntaxhighlight> Die wie folgt aufgerufen werden kann: <syntaxhighlight lang="C"> printf("Hello World"); //es folgt kein Parameter printf("%d",100); //es folgt ein Parameter vom Datentyp int printf("%f",1.1); //es folgt ein Parameter vom Datentyp double printf(conststr,1,2,3,"xyz") //Ohne Worte </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { printf("Hello World\n"); //es folgt kein Parameter printf("%d\n",100); //es folgt ein Parameter vom Datentyp int printf("%f\n",1.1); //es folgt ein Parameter vom Datentyp double const char *conststr="%d %x %c '%s'\n"; printf(conststr,1,2,33,"xyz"); //Ohne Worte return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Der übergebenen Datentype der Parameter wird der aufgerufenen Funktion nicht mitgeteilt! Einzig werden bei Aufruf der variadischen Funktion so viel Bytes auf den Stack gelegt, wie der Datentyp der einzelnen Übergabeparameter groß ist: :<code>int --> 4 Byte</code> :<code>double --> 8 Bytes</code> :<code>Zeiger --> 4/8 Byte</code> Damit die aufgerufene Funktion die fehlende Datentypinformation dennoch mitgeteilt bekommt, muss dies am Beispiel der <code>printf</code> Funktion über den Format-String erfolgen: <syntaxhighlight lang="C"> int vari; printf("%d",vari); //%d erwartet einen Integer Übergabeparameter (4-Byte) size_t vars; printf(" %zu %d ", vars, vari); // %zu zur Mitteilung, dass anstatt //integer nun size_t als Datentyp übergeben wird //und somit anstatt 4 Bytes 8 Bytes vom Stack genommen werden </syntaxhighlight> <code>printf()</code> entnimmt entsprechend der Datentypbeschreibung im Formatstring die passende Anzahl an Bytes vom Stack. Da der Compiler für die optionalen Parameter nicht den Zieldatentyp kennt, erlaubt die C-Spezifikation als Übergabedatentypen hier nur die Grunddatentypen <code>signed int, unsigned int, long, long long, double</code> und <code>Zeiger</code>. Entspricht der übergebene Parameter nicht einen dieser Datentypen, so wird er mittels implizit Cast entsprechend nachfolgender Tabelle gewandelt [C11 6.5.2.2 Default Argument Promotions]: {| class="wikitable" |- ! Ausgangstyp !! Umwandlungstyp |- | char, signed char, short || int |- | unsigned char, unsigned short || unsigned int |- | float || double |- | Alle anderen Datentypen || bleiben erhalten |} Bspw.: <syntaxhighlight lang="C"> signed char varc=-1; float varf =0.1; printf("%d %f",varc, varf); //varc wird beim Aufruf nach int konvertiert! //varf wird beim Aufruf nach double konvertiert! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { signed char varc=-1; float varf =0.1; printf("%d %f",varc, varf); //varc wird beim Aufruf nach int konvertiert! //varf wird beim Aufruf nach double konvertiert! //Zur Darstellung der besagten Konvertierung siehe rechtes Fenster return 0; } | execCompilerOptions=-Wall| h=g }} Öffnen im Compiler Explorer] }} Zum Umgang mit dem variadischen Parameter stellt C die Funktionen <code>va_start(), va_arg(), va_copy()</code> und <code>va_end()</code> bereit. Auf Grundlage des dazugehörigen Datentyps <code>va_list</code> können variadische Parameter auch an Unterfunktionen weitergereicht werden (bspw vprintf()). Dieses Thema bedingt jedoch genaue Kenntnisse vom Umgang mit dem Stack und ist nicht Bestandteil dieser Vorlesung. == Variable Length Array (VLA) == Im Normalfall ergibt sich die Anzahl der Elemente eines Arrays aus einer Konstanten, so dass der Compiler zur Compilezeit passend Speicher reserviert (siehe Kap. [[Programmieren in C/C++: Array | Array]]): <syntaxhighlight lang="C"> int arr[4]; //Compiler reserviert für Variable arr //4*sizeof(int) Speicherplatz </syntaxhighlight> Bei Variable Lenght Array wird die Arraydimension nicht über eine Konstante, sondern über eine Variable oder einen Ausdruck angegeben. D.h. die tatsächliche Dimension des Arrays ergibt sich erst zum Ausführungszeitpunkt der Definition: <syntaxhighlight lang="C"> void foo(size_t n) { int arr[n*2+1]; //Arraydimension ergibt sich zum Ausführungszeitpunkt n++; //Nachträgliches Ändern von n ändert nicht //die Größe des Arrays! } </syntaxhighlight> Ein Variable Length Array kann nur als lokale Variable oder als Übergabeparameter definiert werden (wobei im letzteren Fall kein Speicher hiermit reserviert wird). Eine Initialisierung eines VLA's mit der Definition ist nicht möglich, d.h. nach der Definition beinhaltet das Array 'zufällige' Werte. Es empfiehlt sich daher, diese bspw. mit memset händisch zu initialisieren (siehe auch Kap [[Programmieren in C/C++: Array#Initialisierung | Array:Initialisierung]]): <syntaxhighlight lang="C"> void foo(size_t n) { char str[n]; memset(str,0,n*sizeof(char)); //Array mit 0 füllen </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> void foo(size_t n) { char str[n]; memset(str,0,n*sizeof(char)); //Array mit 0 füllen for(size_t lauf=0;lauf<n;lauf++) printf("str[%zu]=%d\n",lauf,str[lauf]); } int main(int argc, char *argv[]) { foo(4); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Mittels sizeof kann weiterhin der Speicherbedarf ermittelt werden, wobei sizeof mit einem VLA als Argument kein Konstantenausdruck ist. Stattdessen wird die Größe zur Laufzeit ermittelt: <syntaxhighlight lang="C"> void foo(size_t n) { int arr[n*2+1]; //VLA size_t size; size=sizeof(arr); //sizeof(arr) entspricht einem Funktionsaufruf //welcher die Speichergröße des VLA's ermittelt </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void foo(size_t n) { int arr[n*2+1]; //VLA size_t size; size=sizeof(arr); //sizeof(arr) entspricht einem Funktionsaufruf //welcher die Speichergröße des VLA's ermittelt printf("size=%zu\n",size); } int main(int argc, char *argv[]) { foo(5); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} VLA wurden erstmals in C mit C99 eingeführt. In C11 wurden VLA's als optional eingestuft und mit C23 zurück auf notwendig gesetzt. In C++ sind VLA's nicht definiert, werden jedoch vom GCC Compiler unterstützt. Als alternativen Datentyp wird hier std::array empfohlen. Hinweis: * VLA sind nicht direkt in einem Switch-Case Block definierbar. Wird hier ein VLA benötigt, so muss hierzu ein Block erzeugt werden: :<syntaxhighlight lang="C"> switch(value) { case 1: char arr1[value]; //Compilerfehler, da bei value!=1 kein Speicherplatz //für das VLA reserviert wird break; case 2: { char arr2[value]; //OK } break; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int value=argc; switch(value) { case 1: char arr1[value]; //Compilerfehler, da bei value!=1 kein Speicherplatz //für das VLA reserviert wird break; case 2: { char arr2[value]; //OK } break; } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Operatoren == In der Programmiersprache C sind folgende Punctuators [C11 6.4.6] definiert: <syntaxhighlight> [ ] ( ) { } . -> ++ -- & * + - ~ ! / % << >> < > <= >= == != ^ | && || ? : ; ... = *= /= %= += -= <<= >>= &= ^= |= , # ## <: :> <% %> %: %:%: </syntaxhighlight> Die Funktionalitäten sind identisch zu Java. Aufgrund des Datentyps Zeiger gibt es in C ergänzend den Punctuator <code>-></code> (siehe Kap [[Programmieren in C/C++: Datentypen#Verbundtyp Struktur/Klasse (nur C++)|Datentypen:Verbundtyp Struktur/Klasse (nur C++)]]). Der Präprozessor bedingt die beiden Punctuatoren <code>#</code> und <code>##</code> (siehe Kap [[Programmieren in C/C++: Präprozessor | Präprozessor]]). Die letzten 6 Punctuators <code><: :> <% %> %: %:%:</code> werden zu <code>[ ] { } # ##</code> ersetzt. Sie sind für Computersysteme gedacht, welche keine ALTGR-Taste besitzen.<br /> Java kennt ergänzend den <code>>>></code> Operatoren, welcher in C über den normalen Schiebebefehl und den zugrundeliegenden Datentyp gesteuert wird. Wie in Java sind einige Punctuators vom Kontext abhängig und haben damit unterschiedliche Funktionalitäten: <syntaxhighlight> ++ → (Postfix) ++ vs. ++(Präfix) -- → (Postfix) -- vs. --(Präfix) +/- → Vorzeichen vs. Addition/Subtraktion () → Funktionsaufruf() vs. Befehlsbestandteil if() vs. Priorisierung </syntaxhighlight> Für den Umgang mit dem Datentyp Zeiger besitzen einige Punctuatoren ergänzende Funktionalitäten (siehe Kap [[Programmieren in C/C++: Zeiger| Zeiger]]): <syntaxhighlight> & → Bitweises UND: Anwendung: Ganzahlausdruck & Ganzahlausdruck & → Adressoperator: Anwendung: &Variable * → Multiplikation Anwendung: Ganzahl-/Gleitkommaausdruck * Ganzahl-/Gleitkommaausdruck * → Datentyp Zeiger Anwendung: Datentyp * Variablenname; * → Dereferenzierung: Anwendung: * Zeiger </syntaxhighlight> Punctuatoren, welche von Java abweichende / ergänzende Funktionalitäten haben, werden nachfolgend gesondert beschrieben. Sind in einer Anweisung mehrere Operatoren enthalten, so hängt die Abarbeitungsreihenfolge von der Rangfolge/Priorität der Operatoren ab (siehe [[Programmieren in C/C++: Grundlagen#Abarbeitungsreihenfolge | Abarbeitungsreihenfolge]]).<br /> Die Rangfolge ist identisch zu Java, wobei C mehr Operatoren kennt. Generell empfiehlt sich, lieber eine Klammer zu viel als zu wenig zusetzen. Klammern haben die höchste Priorität. === Zuweisungs-Operator === Die Zuweisung (<code>=</code>-Operator, assignment expression) weist dem L-Value den R-Value zu. Ergänzend dient der L-Value als Rückgabewert des Operators, so dass das Ergebnis der Zuweisung weiter genutzt werden kann. Die Abarbeitungsreihenfolge ist von rechts nach links (R-L Assoziativität). Wird der 'letzte' Rückgabewert nicht verwendet, so wird dieser verworfen (siehe Kap. [[Programmieren in C/C++: Grundlagen#Discarded Value | Discarded Value]]).<br /> Beispiel: <syntaxhighlight lang="C"> a=7; //Zuweisung a=b=7; //Erste Zuweisung (b=7) hat einen Rückgabewert, welcher im //Anschluss a zugewiesen wird if(a=7) //Variablen a wird der Wert 7 zugewiesen. Der Rückgabewert //der Zuweisung wird im Anschluss auf True oder False geprüft if(7=a) //Besser, da aufgrund der fehlerhafter Zuweisung ein //Compilerfehler geworfen wird x*=y=z //entspricht x=x*(y=z) a=b=d+7; //entspricht a=(b=(d+7)) a=b==c; //a bekommt das boolesche Ergebnis der Vergleichsoperation //zugewiesen </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a,b,c=3,d=4; int x,y,z; a=7; //Zuweisung a=b=7; //Erste Zuweisung (b=7) hat einen Rückgabewert, welcher im //Anschluss a zugewiesen wird if(a=7) //Variablen a wird der Wert 7 zugewiesen. Der Rückgabewert ; //der Zuweisung wird im Anschluss auf True oder False geprüft if(7=a) //Besser, da aufgrund der fehlerhafter Zuweisung ein ; //Compilerfehler geworfen wird x*=y=z; //entspricht x=x*(y=z) a=b=d+7; //entspricht a=(b=(d+7)) a=b==c; //a bekommt das boolesche Ergebnis der Vergleichsoperation //zugewiesen return 0; return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * Auf beiden Seiten der Zuweisung muss der identische Datentyp stehen. Wenn andernfalls eine implizite Typkonvertierung nicht möglich ist, gibt der Compiler einen Fehler aus: :<syntaxhighlight lang="C"> int a = 7.3; //implizite Typkonvertierung double b=a+3; //Implizite Typkonvertierung der Intergeraddition nach double float c=(float)a+(float)3; //Explizite Typkonvertierung char *d=a; //Compilerfehler, da Integerwert nicht implizit in einen //Zeiger konvertiert werden kann </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a = 7.3; //implizite Typkonvertierung double b=a+3; //Implizite Typkonvertierung der Intergeraddition nach double float c=(float)a+(float)3; //Explizite Typkonvertierung char *d=a; //Compilerfehler, da Integerwert nicht implizit in einen //Zeiger konvertiert werden kann //Zur Darstellung der besagten Konvertierung siehe rechtes Fenster (void)b; (void)c; (void)d; return 0; } | execCompilerOptions=-Wall| h=g }} Öffnen im Compiler Explorer] }} * Bei der Parameterübergabe beim Funktionsaufruf wird ebenfalls indirekt der Zuweisungsoperator angewendet. Die Parameter des Aufrufers werden per Zuweisung den lokalen Variablen der aufgerufenen Funktion zugewiesen :<syntaxhighlight lang="C"> void func(int a, float b) { printf("a=%d b=%f",a,b); } int x=4; float y=5.0; func(x,y); //der Inhalt der Variablen x wird der lokalen Variable a //(a=x) und der Inhalt der Variablen y der lokalen Variablen b //(b=y) zugewiesen. func(y,x); //Dito, mit der Ergänzung, dass eine implizite Typkonvertierung //stattfindet (a=(int)y) und (b=(float)x). </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void func(int a, float b) { printf("a=%d b=%f",a,b); } int main(int argc, char *argv[]) { int x=4; float y=5.0; func(x,y); //der Inhalt der Variablen x wird der lokalen Variable a //(a=x) und der Inhalt der Variablen y der lokalen Variablen b //(b=y) zugewiesen. func(y,x); //Dito, mit der Ergänzung, dass eine implizite Typkonvertierung //stattfindet (a=(int)y) und (b=(float)x). //Zur Darstellung der besagten Konvertierung siehe rechtes Fenster return 0; } | execCompilerOptions=-Wall| h=g }} Öffnen im Compiler Explorer] }} === Komma-Operator === Der Komma-Operator erlaubt es, zwei Ausdrücke auszuführen, wo nur einer erlaubt wäre. Die Ergebnisse aller durch diesen Operator verknüpften Ausdrücke, außer dem letzten werden verworfen. Der letzte Ausdruck dient als Rückgabewert. Folgendes gilt es bei der Nutzung des Komma-Operators zu beachten: * Der Komma-Operator wird von links nach rechts ausgewertet * Das Komma selbst stellt eine Sequence Point dar (siehe Kap [[Programmieren in C/C++: Grundlagen#Sequence Point|Sequence Point]]) * An Stellen, wo das Komma zum Syntax gehört (z.B. Trennung der Übergabeparameter bei der Funktionsdefinition und beim Funktionsaufruf, Trennung von Variablen bei der Variablendefinition/-deklaration, Trennung der enum Konstanten) muss der Ausdruck ergänzend geklammert werden, wenn der Komma-Operator gefordert ist * Der Komma-Operator hat von allen Operatoren die niedrigste Priorität/Rangfolge, so dass dieser Operator als letztes 'ausgewertet' wird Beispiel: <syntaxhighlight lang="C"> int a=(5,3); //5 wird verworfen, 3 dient als Rückgabewert, so dass //a den Wert 3 erhält. int b=5,3; //KO, da Komma Bestandteil der Definition ist int c=1,d=2,e=3; int f=(c+=2,a+a); //c um zwei erhöht, a+a in f int g= c+=2,a+a; //KO, da Komma Bestandteil der Defintion ist void func(int value){} func(1); //Funktion wird mit dem Wert 1 aufgerufen func(1,2); //KO, da Komma Bestandteil des Funktionsaufrufes ist func((1,2)); //Funktion wird mit dem Wert 2 aufgerufen int arr[12]; arr[3,4]=1; //3 wird verworfen, 4 dient als Index für das Array </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void func(int value){ printf("func called with %d\n",value); } int main(int argc, char *argv[]) { int a=(5,3); //5 wird verworfen, 3 dient als Rückgabewert, so dass //a den Wert 3 erhält. int b=5,3; //KO, da Komma Bestandteil der Definition ist printf("a=%d\n",a); int c=1,d=2,e=3; printf("c=%d,d=%d,e=%d\n",c,d,e); int f=(c+=2,a+a); //c um zwei erhöht, a+a in f printf("c=%d,f=%d\n",c,f); int g= c+=2,a+a; //KO, da Komma Bestandteil der Defintion ist func(1); //Funktion wird mit dem Wert 1 aufgerufen func(1,2); //KO, da Komma Bestandteil des Funktionsaufrufes ist func((1,2)); //Funktion wird mit dem Wert 2 aufgerufen int arr[12]; arr[3,4]=1; //3 wird verworfen, 4 dient als Index für das Array return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} 'Sinnvolle' Anwendungsbeispiele: * Bei For-Schleifen, so dass mehrere Variablen initialisiert und mehrere Variablen mit jedem Schleifendurchlauf geändert werden können: :<syntaxhighlight lang="C"> int sum,lauf; int arr[]={5,4,3,2,1}; for(sum=100,lauf=5 ; lauf ; lauf--,sum+=arr[lauf]); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int sum,lauf; int arr[]={5,4,3,2,1}; for(sum=100,lauf=5 ; lauf ; lauf--,sum+=arr[lauf]) printf("sum=%d lauf=%d\n",sum,lauf); printf("sum=%d\n",sum); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Bei der Return-Anweisung, bei welcher zur Darstellung der Zusammengehörigkeit mehrere Aktionen ausgeführt werden sollen: :<syntaxhighlight lang="C"> return errno=EINVAL,-1; return printf("Fehler"),-1; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <errno.h> int foo(void) { return errno=EINVAL,-1; } int far(void) { return printf("Fehler\n"),-1; } int main(int argc, char *argv[]) { printf("foo()=%d\n",foo()); printf("far()=%d\n",far()); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * An Stellen, wo nur eine Anweisung erlaubt ist (und man zu faul ist, einen Block zu öffnen) :<syntaxhighlight lang="C"> if(…) y=2,z=3; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int y=0,z=0; if(1) y=2,z=3; printf("y=%d z=%d\n",y,z); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * In vielen Ländern wird das Komma zur Darstellung von Gleitkommazahlen genutzt. Wird versehentlicher Weise dies in C/C++ übernommen, so führt dies zu einem unerwarteten Verhalten: :<syntaxhighlight lang="C"> double var; var=5.3; //Variable wird mit 5.3 initialisiert var=5,3; //KO, da Komma Bestandteil der Defintion ist var=(5,3); //Variable wird mit 3 initialisiert </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { double var; var=5.3; //Variable wird mit 5.3 initialisiert printf("var=%f\n",var); var=5,3; //KO, da Komma Bestandteil der Defintion ist var=(5,3); //Variable wird mit 3 initialisiert printf("var=%f\n",var); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === ?-Operator / Conditional-Operator === Operator mit 3 Operanden, welcher in Abhängigkeit des ersten Operanden den zweiten oder dritten Operanden zurückgibt. <code> Syntax: Logical-OR-expression ? expression : condition-expression </code> Entspricht der if()-Anweisung, wobei der ? Operator als solches einen Wert zurückgibt! Expression wird nur ausgewertet, wenn der erste Operand true ist. Andernfalls wird nur condition-expression ausgeführt. Der zurückgegebene Datentyp ergibt sich aus der Expression resp. Condition-expression. Beide sollten somit vom identischen Datentyp sein. Folgendes gilt es bei der Nutzung des ?-Operators zu beachten * Der Datentyp Expression und condition-Expression muss identisch sein <syntaxhighlight lang="C"> int a=5; a=a > 10 ? "String" : 4; //KO, "String" ist vom Datentyp (char*) und // 4 ist vom Datentyp (int). </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a=5; a=a > 10 ? "String" : 4; //KO, "String" ist vom Datentyp (char*) und // 4 ist vom Datentyp (int). return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Nach der GNU-C Reference kann der mittlere Operand fehlen, in diesem Fall wird stattdessen das Ergebnis des linken Operanden dort eingesetzt (siehe https://gcc.gnu.org/onlinedocs/gcc/Conditionals.html#Conditionals) <syntaxhighlight lang="C"> int a=13; int b=a>10 ? : 0; //wenn a > 10 wird true, andernfalls false zurückgegeben </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a=13; int b=a>10 ? : 0; //wenn a > 10 wird true, andernfalls false zurückgegeben printf("b=%d\n",b); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Sollen innerhalb von condition-expression mehrere (durch Komma getrennte) Anweisungen enthalten sein, so sind diese zu Klammern! Andernfalls bedingt die niedrige Priorität des Komma-Operators ein anders Verhalten, als erwartet. <syntaxhighlight lang="C"> int a=7,max=5; max=a>max ? a : max; //Alles bestens int var0,var1,var2; var0=a>5 ? a++,5:6,a=1; //das zweite Komma wird als separate Anweisung //ausgeführt und kommt somit immer zur //Ausführung var1=(a>5 ? a++,5:6),a=1; //durch Klammerung klare Abgrenzung var2= a>5 ? a++,5 : (6,a=1); //durch Klammerung klare Abgrenzung </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a=7; int max=5; max=a>max ? a : max; //Alles bestens printf("max=%d\n",max); int var0,var1,var2; var0=a>5 ? a++,5:6,a=1; //das zweite Komma wird als separate Anweisung //ausgeführt und kommt somit immer zur //Ausführung printf("var0=%d a=%d\n",var0,a); var1=(a>5 ? a++,5:6),a=1; //durch Klammerung klare Abgrenzung printf("var1=%d a=%d\n",var1,a); var2= a>5 ? a++,5 : (6,a=1); //durch Klammerung klare Abgrenzung printf("var2=%d a=%d\n",var2,a); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Die Nutzung des ?-Operators empfiehlt sich an diversen Stellen: * Bei Makros :<syntaxhighlight lang="C"> #define MAX(a,b) (a>b?a:b) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #define MAX(a,b) (a>b?a:b) int main(int argc, char *argv[]) { printf("MAX(4,5)=%d\n",MAX(4,5)); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Beim Fehlerhandling :<syntaxhighlight lang="C"> char *str=strstr("hallo123","lox"); //Ausgabe von str nur, wenn Suche erfolgreich (str!=NULL) war printf("%s",str!=NULL?str : "(not found)" ); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char *str=strstr("hallo123","lox"); //Ausgabe von str nur, wenn Suche erfolgreich (str!=NULL) war printf("%s",str!=NULL?str : "(not found)" ); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Prüfen, ob eine Funktion erfolgreich ausgeführt wurde, bevor eine weitere Funktion ausgeführt wird <syntaxhighlight lang="C"> int ret; ret=init1(); //im Fehlerfreien gibt init1() 0 zurück ret=ret?:init2(); //Aufruf von init2() nur wenn ret==0 ist //andernfalls wird ret zurückgegeben </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int init1(void) { printf("init1() called\n"); return 0; } int init2(void) { printf("init2() called\n"); return 0; } int main(int argc, char *argv[]) { int ret; ret=init1(); //im Fehlerfreien gibt init1() 0 zurück ret=ret?:init2(); //Aufruf von init2() nur wenn Ret==0 ist //andernfalls wird Ret zurückgegeben return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Logische Verknüpfungen === Alle logischen Operationen nutzen als Operanden Ganzzahlen ,Gleitkommazahlen oder Zeiger. Der Operand wird als false angesehen, wenn der Operand 0, 0.0 oder NULL ist. Andernfalls als true. Das Ergebnis ist immer vom Datentyp int und hat den Wert von 0 oder 1. <code>Syntax: Expression && Expression</code><br /> <code>Syntax: Expression || Expression</code><br /> <code>Syntax: ! Expression</code><br/> Bei der logischen UND und ODER Verknüpfung wird zuerst der linke Ausdruck ausgewertet (Operator ist ein Sequence Point). Der rechte Ausdruck wird nur ausgeführt, wenn: * bei der logischen UND Verknüpfung der linke Ausdruck TRUE ergab * bei der logische OR Verknüpfung der linke Ausdruck FALSE ergab Andernfalls steht das Ergebnis schon mit der Auswertung des linken Operanden fest.<br /> In der theoretischen Informatik wird dies 'Non-strict-evaluation' genannt, bei welcher der Rückgabewert feststeht, bevor alle Ausdrücke bearbeitet worden sind. Beispiel für das Verhalten des Ausbleibens der Auswertung des zweiten Operators: <syntaxhighlight lang="C"> int a=0,b=0; //a=-1; //Als alternativer Startwert if(++a || ++a) b=1; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=0,b=0; //a=-1; //Als alternativer Startwert if(++a {{!}}{{!}} ++a) b=1; printf("a=%d b=%d\n",a,b); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Diese Funktionalität ist insbesondere beim Umgang mit Fehlern vorteilhaft: * Prüfen, ob eine Variable einen gültigen Wert hat, bevor sie weiterverwendet wird <syntaxhighlight lang="C"> char *str = strstr("hallo123","la"); if(str!=NULL && strlen(str) ) printf("Len = %ld",strlen(str)); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char *str = strstr("hallo123","la"); if(str!=NULL && strlen(str) ) printf("Len = %ld",strlen(str)); else printf("Kein Substring im String gefunden\n"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Prüfen, ob eine Funktion erfolgreich ausgeführt wurde, bevor eine weitere Funktion aufgerufen wird: <syntaxhighlight lang="C"> int ret; ret=init1(); //Bei erfolgreicher Initialisierung wird 1 zurückgegeben ret=ret && init2(); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int init1(void) { printf("init1() called\n"); return 1; } int init2(void) { printf("init1() called\n"); return 1; } int main(int argc, char *argv[]) { int ret; ret=init1(); //Bei erfolgreicher Initialisierung wird 1 zurückgegeben ret=ret && init2(); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Bitweise Verknüpfungen === Alle bitweisen Operationen nutzen als Operanden Ganzzahlen. Bei vorzeichenbehafteten Zahlen ist das Ergebnis nach [C11 6.5] Implementierungsabhängig, wobei das Vorzeichenbit zumeist als eigenständiges Bit angesehen wird und bei UND/ODER/EXOR als normales BIT betrachtet wird. <code>Syntax: Ganzzahl & Ganzzahl → Bitweise UND Operation</code><br /> <code>Syntax: Ganzzahl | Ganzzahl → Bitweise ODER Operation</code><br /> <code>Syntax: Ganzzahl ^ Ganzzahl → Bitweise EXOR Operation</code><br /> <code>Syntax: ~ Ganzzahl → Bitweise Negierung</code><br /> <code>Syntax: Ganzzahl >> additive-expression</code><br /> <code>Syntax: Ganzzahl << additive-expression</code><br /> Mittels des Schiebeoperators können Ganzzahlen um additive-expression bitweise nach Links <code><<</code> oder Rechts <code>>></code> verschoben werden. Der resultierende Datentyp ergibt sich aus dem linken Operanden. Der rechte Operand muss positiv und kleiner gleich der Bitbreite des linken Operanden sein. Andernfalls ist das Ergebnis implementierungsspezifisch. Nach [C11 6.5.7] ist das Ergebnis der Schiebeoperation implementierungsspezifisch, wenn der linke Operand eine negative vorzeichenbehaftete Zahl ist. In der Regel wendet der Compiler jedoch folgende Schiebeoperation an: * Logisches Schieben (zu füllende Bit-Stellen werden mit 0 aufgefüllt), wenn der linke Operand eine vorzeichenlose Zahl ist * Arithmetisches Schieben (zu füllende Bit-Stelle beim Rechtsschieben wird mit dem Vorzeichenbit aufgefüllt), wenn der linke Operand eine vorzeichenbehaftete Zahl ist. Hiermit wird das Vorzeichen beibehalten, so dass eine negative Zahl nach dem Schieben weiterhin negativ ist (In Java erfolgt dies durch den >>> - Operator) Hinweis: * Ein Schieben um eine Stelle nach rechts entspricht einer Division durch 2 * Ein Schieben um eine Stelle nach links entspricht einer Multiplikation mit 2 === sizeof-Operator === Der sizeof-Operator dient zur Ermittlung des Speicherbedarfs (in Bytes) einer Variablen/eines Datentyps. <code>Syntax: sizeof (type-name)</code><br /> <code>Syntax: sizeof unary-expression</code><br /> Als Argument für den Sizeof-Operator kann wahlweise ein Datentyp, eine Variable oder ein Ausdruck genutzt werden. Sizeof gilt als Konstantenausdruck, d.h. seine Berechnung erfolgt durch den Compiler, sodass: * sizeof zur Initialisierung von globalen Variablen genutzt werden :<syntaxhighlight lang="C"> struct xyz{int x,y,z;}; size_t size=sizeof(struct xyz); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct xyz{int x,y,z;}; size_t size=sizeof(struct xyz); //3*sizeof(int)=12 int main(int argc, char *argv[]) { printf("size=%zu\n",size); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * bei einem Ausdruck dieser nicht ausgeführt wird, sondern nur der resultierende Datentyp bestimmt wird und dessen Größe zurückgegeben :<syntaxhighlight lang="C"> short var=4711; size_t size=sizeof var++; //var=4711, size=2 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { short var=4711; size_t size=sizeof var++; //var=4711, size=2 printf("size=%zu var=%d\n",size,var); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Der resultierende Datentyp des Rückgabewertes ist size_t. Es empfiehlt sich, den sizeof-Operator mit Klammern zu nutzen, andernfalls wird im Falle eines Ausdruckes der Speicherbedarf des linken Operanden angegeben: <syntaxhighlight lang="C"> size_t size; short var; size=sizeof var+0; //size=2, da sizeof auf var angewendet wird size=sizeof(var+0); //size=4, da sizoeof auf den resultierenden datentyp //angewendet wird </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { size_t size; short var=0; size=sizeof var+0; //size=2, da sizeof auf var angewendet wird printf("size=%zu var=%d\n",size,var); size=sizeof(var+0); //size=4, da sizoeof auf den resultierenden datentyp //angewendet wird printf("size=%zu var=%d\n",size,var); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * sizeof angewendet auf char gibt immer den Wert 1 zurück. * sizeof ist nicht auf Operanden vom Typ Funktion, void, Felder ohne Größenangabe und Bitfelder anwendbar * wird sizeof auf ein VLA angewendet, so entspricht sizeof nicht mehr einen Konstantenausdruck, sondern einem Funktionsaufruf :<syntaxhighlight lang="C"> void foo(int n) { int arr[n]; size_t size=sizeof(arr); //Speicherbedarf ist kein Konstantenausdruck //sondern wird zur Laufzeit berechnet </syntaxhighlight> * Sizeof entspricht nicht strlen(), da sizeof den für die Variable reservierten Speicherbereich zurückgibt und nicht wie strlen() den Inhalt des Speicher hinsichtlich des Stringendezeichens auswertet. :<syntaxhighlight lang="C"> char string[100]="Test"; printf("%zu\n",sizeof(string)); //100 printf("%zu\n",strlen(string)); //4 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char string[100]="Test"; printf("%zu\n",sizeof(string)); //100 printf("%zu\n",strlen(string)); //4 return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Anweisungen == === If-Anweisung === <code>Syntax: if (expression) statement</code><br /> <code>Syntax: if (expression) statement else statement</code><br /> Das Ergebnis des Ausdruckes (Ganzzahl, Gleitkommazahl oder Zeiger) wird auf ungleich 0, 0.0 oder NULL getestet. Trifft dies zu, so wird statement ausgeführt. Andernfalls wird das else statement ausgeführt, sofern vorhanden. Sollen mehrere Anweisungen ausgeführt werden, so sind diese mittels Block zusammenzufassen (diesen dann bitte nicht mit ; abschließen). Beispiel: <syntaxhighlight lang="C"> if(a==1) if(a=1) //Erst Zuweisung, dann prüfen der Rückgabe der Zuweisung if(a) //entspricht a!=0 if(printf("hallo")<0) //prüfen, ob printf() fehlschlägt if( ({int dummy=a;a=b;b=dummy;})==6) if(a=7) //Zuweisung! if(7=a) //KO, Eine Konstante kann kein L-Value sein if(7==a) {printf("a ist 7");}; //Semikolon hinter Blocksope ist eine zweite else //Anweisung, so dass die ELSE Anweisung nicht {printf("Compilerfehler");};//zur IF-Anwesigung zugeordnet werden kann. </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=1,b=2; if(a==1) printf("a==1\n"); if(a=1) //Erst Zuweisung, dann prüfen der Rückgabe der Zuweisung printf("a=1\n"); if(a) //entspricht a!=0 printf("a\n"); if(printf("hallo\n")<0) //prüfen, ob printf() fehlschlägt printf("printf()\n"); if( ({int dummy=a;a=b;b=dummy;})==6) printf("({...})\n"); if(a=7) //Zuweisung! printf("a=7\n"); if(7=a) //KO, Eine Konstante kann kein L-Value sein ; if(7==a) {printf("a ist 7");}; //Semikolon hinter Blocksope ist eine zweite else //Anweisung, so dass die ELSE Anweisung nicht {printf("Compilerfehler");};//zur IF-Anwesigung zugeordnet werden kann. return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Bei der Anweisung <code>if(a==7)</code> finden aus syntaktischer Sicht zwei Aktionen statt. Zunächst wird geprüft, ob a gleich 7 ist. Dieser Vergleich liefert true(=1) oder false(=0) zurück. Die If-Anweisung prüft im Anschluss, ob das Argument true oder false ist. === For-Anweisung === <code>Syntax: for(Initialisierungsteil<sub>OPT</sub> ; Test<sub>OPT</sub> ; Fortsetzung<sub>OPT</sub>) Statement</code> Die For-Anweisung wird vom Compiler wie folgt umgesetzt: <poem> '''Initialisierungsteil'''<sub>OPT</sub> Goto Next Goon: //Continue-Anweisung entspricht goto Continue //Break-Anweisung entspricht goto Break; '''Statement''' Continue: '''Fortsetzung'''<sub>OPT</sub> Next: if('''Test'''<sub>OPT</sub>) goto Goon Break: </poem> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> int main(int argc, char *argv[]) { int lauf; int summe; for(summe=lauf=0;lauf<20;lauf++) summe+=lauf; printf("summe=%d\n",summe); //Initialisierungsteil summe=lauf=0; goto Next; Goon: //Continue-Anweisung entspricht goto Continue //Break-Anweisung entspricht goto Break; //Statement summe+=lauf; Continue: __attribute__((unused)) //Fortsetzung lauf++; Next: //if(TestOPT) goto Goon if(lauf<20) goto Goon; Break: __attribute__((unused)) printf("summe=%d\n",summe); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Die einzelne Elemente haben folgende Bedeutung/Besonderheiten: ;Initialisierungsteil: Zum Initialisieren von Schleifenvariablen, wird einmalig mit Beginn der FOR-Anweisung ausgeführt. :* kann Leer sein, dann erfolgt keine Initialisierung :* Ab C99: Hier kann eine lokale Variable definiert werden, welche nur innerhalb dieser For-Anweisung gültig ist ;Testteil: Hierin wird vor jedem Schleifendurchlauf geprüft, ob die Schleifenbedingung erfüllt ist. Wenn Bedingung nicht erfüllt ist (Ganzzahl, Gleitkommazahl oder Zeiger gleich 0,0.0 oder NULL), wird die For-Schleife beendet. :* Kann leer sein, dann wird dieser Teil als true angesehen ;Fortsetzungsteil: Wird nach jeden Schleifendurchlauf ausgeführt. In der Regel sollte hier die Schleifenvariable aktualisiert werden :* Kann leer sein ;Statement: In der Schleife auszuführender Ausdruck :* Sollen mehrere Ausdrücke ausgeführt werden, so sind diese in einem Block zusammen zu fassen. :Ergänzende Anweisungen innerhalb des Statements/Block :* 'continue' zum Fortsetzen des Schleifendurchlaufes, d.h. Sprung zum Fortsetzungs-Teil :* 'break', zum Beenden des Schleifendurchlaufes Beispiele: * For-Schleife mit lokaler Schleifenvariable :<syntaxhighlight lang="C"> char string[]="hallo"; for(size_t lauf=0; lauf < strlen(string); lauf++) //Schleife ist Suboptimal, da in jedem Durchlauf die Funktion //strlen() aufgerufen wird! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <time.h> struct timespec diff_timespec(const struct timespec *minuend, const struct timespec *subtrahend ) { struct timespec diff = { .tv_sec = minuend->tv_sec - subtrahend->tv_sec, .tv_nsec = minuend->tv_nsec - subtrahend->tv_nsec}; //Sekundenüberlauf? if (diff.tv_nsec < 0) { diff.tv_nsec += 1000000000; diff.tv_sec--; } return diff; } int main(int argc, char *argv[]) { char string1[10000]; char string2[10000]; memset(string1,'a',sizeof(string1)); memset(string2,'a',sizeof(string2)); string1[sizeof(string1)-1]=0; string2[sizeof(string2)-1]=0; struct timespec start1,stop1; struct timespec start2,stop2; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start1); size_t sum1=0; for(size_t lauf=0; lauf < strlen(string1); lauf++) sum1++; //Schleife ist Suboptimal, da in jedem Durchlauf die Funktion //strlen() aufgerufen wird! clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop1); clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start2); size_t sum2=0; size_t count2=strlen(string2); for(size_t lauf=0; lauf < count2; lauf++) sum2++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop2); stop1=diff_timespec(&stop1,&start1); stop2=diff_timespec(&stop2,&start2); printf("Slow: Sum1=%zu Time=%lds %ldns\n",sum1,stop1.tv_sec,stop1.tv_nsec); printf("Fast: Sum2=%zu Time=%lds %ldns\n",sum2,stop2.tv_sec,stop2.tv_nsec); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Schleife mit Break-Anweisung :<syntaxhighlight lang="C"> char dest[5]; char src[10]="HalloWelt"; for(size_t lauf=0; src[lauf]!=0; lauf++) { if(lauf >= sizeof(dest)) break; dest[lauf]=src[lauf]; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char dest[5]; char src[10]="HalloWelt"; for(size_t lauf=0; src[lauf]!=0; lauf++) { printf("lauf=%zu\n",lauf); if(lauf >= sizeof(dest)) break; dest[lauf]=src[lauf]; } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Schleife, bei welcher die gesamte Aktion innerhalb der For-Anweisung ausgeführt wird :<syntaxhighlight lang="C"> char dest[5]; char src[10]="HalloWelt"; for(size_t l=0; src[l]!=0 && l <sizeof(dest); printf("l=%zu\n",l),dest[l]=src[l],l++); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char dest[5]; char src[10]="HalloWelt"; for(size_t l=0;src[l]!=0 && l <sizeof(dest); printf("l=%zu\n",l),dest[l]=src[l],l++); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Schleifenvariable muss keine Zählvariable sein :<syntaxhighlight lang="C"> int zahl=0b100010; int bits=0; for(int mask=0b10000000; mask!=0; mask>>=1 ) bits+= zahl & mask ? 1 : 0; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int zahl=0b100010; int bits=0; for(int mask=0b10000000; mask!=0; mask>>=1 ) bits+= zahl & mask ? 1 : 0; printf("Anzahl Einsen in %b = %d\n",zahl,bits); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Zeiger als Schleifenvariable :<syntaxhighlight lang="C"> char src[]="hallo"; char dst[strlen(src)+1]; char *s,*d; for(s=src,d=dst; *s; ) *d++=*s++; *d=0; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char src[]="hallo"; char dst[strlen(src)+1]; char *s,*d; for(s=src,d=dst; *s; ) *d++=*s++; *d=0; printf("src='%s' dst='%s'\n",src,dst); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Zur Geschwindigkeitsoptimierung sollten im Test- und Fortsetzungsteil keine Funktionsaufrufe mit Werten enthalten sein, die sich innerhalb der Schleife nicht ändern: :<syntaxhighlight lang="C"> for(size_t lauf=0;lauf<strlen("hallo");lauf++) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <time.h> struct timespec diff_timespec(const struct timespec *minuend, const struct timespec *subtrahend ) { struct timespec diff = { .tv_sec = minuend->tv_sec - subtrahend->tv_sec, .tv_nsec = minuend->tv_nsec - subtrahend->tv_nsec}; //Sekundenüberlauf? if (diff.tv_nsec < 0) { diff.tv_nsec += 1000000000; diff.tv_sec--; } return diff; } int main(int argc, char *argv[]) { char string1[10000]; char string2[10000]; memset(string1,'a',sizeof(string1)); memset(string2,'a',sizeof(string2)); string1[sizeof(string1)-1]=0; string2[sizeof(string2)-1]=0; struct timespec start1,stop1; struct timespec start2,stop2; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start1); size_t sum1=0; for(size_t lauf=0; lauf < strlen(string1); lauf++) sum1++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop1); clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start2); size_t sum2=0; size_t count2=strlen(string2); for(size_t lauf=0; lauf < count2; lauf++) sum2++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop2); stop1=diff_timespec(&stop1,&start1); stop2=diff_timespec(&stop2,&start2); printf("Slow: Sum1=%zu Time=%lds %ldns\n",sum1,stop1.tv_sec,stop1.tv_nsec); printf("Fast: Sum2=%zu Time=%lds %ldns\n",sum2,stop2.tv_sec,stop2.tv_nsec); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Zur Geschwindigkeitssteigerung sollte im Testteil auf 0 abgefragt werden, d.h. die Schleifenvariable dekrementiert werden :<syntaxhighlight lang="C"> for(int lauf=700000;lauf;lauf--) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <time.h> struct timespec diff_timespec(const struct timespec *minuend, const struct timespec *subtrahend ) { struct timespec diff = { .tv_sec = minuend->tv_sec - subtrahend->tv_sec, .tv_nsec = minuend->tv_nsec - subtrahend->tv_nsec}; //Sekundenüberlauf? if (diff.tv_nsec < 0) { diff.tv_nsec += 1000000000; diff.tv_sec--; } return diff; } int main(int argc, char *argv[]) { char string1[10000]; char string2[10000]; memset(string1,'a',sizeof(string1)); memset(string2,'a',sizeof(string2)); string1[sizeof(string1)-1]=0; string2[sizeof(string2)-1]=0; struct timespec start1,stop1; struct timespec start2,stop2; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start1); size_t sum1=0; for(ssize_t lauf=700000000;lauf;lauf--) sum1++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop1); clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start2); size_t sum2=0; for(ssize_t lauf=0;lauf<700000000;lauf++) sum2++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop2); stop1=diff_timespec(&stop1,&start1); stop2=diff_timespec(&stop2,&start2); printf("Slow: Sum1=%zu Time=%lds %ldns\n",sum1,stop1.tv_sec,stop1.tv_nsec); printf("Fast: Sum2=%zu Time=%lds %ldns\n",sum2,stop2.tv_sec,stop2.tv_nsec); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Alternativ zu einer Laufvariablen empfiehlt sich die Nutzung von Pointer als Schleifenvariable; :<syntaxhighlight lang="C"> for(char *ptr=str; *ptr; ptr++); </syntaxhighlight> === While-Anweisung === <code>Syntax: while(expression) Statement </code><br /> <code>Syntax: do Statement while(expression);</code><br /> Die While-Anweisungen werden vom Compiler wie folgt umgesetzt: {| class="wikitable" ! while()-Anweisung !! do while()-Anweisung |- | <poem> Continue: if(!'''expression''') goto Break //Break-Anweisung entspricht // goto Break; //Continue-Anweisung entspr. // goto Continue; '''Statement''' goto Continue Break: </poem> || <poem> GoOn: //Break-Anweisung entspr. // goto Break //Continue-Anweisung ent. // goto Continue '''Statement''' Continue: if('''expression''') goto GoOn Break: </poem> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> int main(int argc, char *argv[]) { int lauf; int summe; lauf=summe=0; while(lauf<10) { if(lauf>=5) break; lauf++; if(lauf<3) continue; summe+=lauf; } printf("summe=%d\n",summe); lauf=summe=0; Continue1: if(!(lauf<10)) goto Break1; //Break-Anweisung entspricht // goto Break; //Continue-Anweisung entspr. // goto Continue; //Statement if(lauf>=5) { goto Break1; } lauf++; if(lauf<3) goto Continue1; summe+=lauf; goto Continue1; Break1: printf("summe=%d\n",summe); lauf=summe=0; do { lauf++; if(lauf>5) break; if(lauf<3) continue; summe+=lauf; } while(lauf<10); printf("summe=%d\n",summe); lauf=summe=0; GoOn2: //Break-Anweisung entspr. // goto Break //Continue-Anweisung ent. // goto Continue //Statement lauf++; if(lauf>5) goto Break2; if(lauf<3) goto Continue2; summe+=lauf; Continue2: if(lauf<10) goto GoOn2; Break2: __attribute__((unused)); printf("summe=%d\n",summe); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Folgendes gilt es bei der Nutzung der While-Anweisung zu beachten: * Soll mehr als ein Statement innerhalb der While-Schleife ausgeführt werden, so sind diese in einem Block zu schreiben * Statement kann eine Leeranweisung (gekennzeichnet durch ein Semikolon) sein :<syntaxhighlight lang="C"> while(1); do ; while(1); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int lauf1=1000; while(lauf1--); int lauf2=1000; do ; while(lauf2--); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Bei der do-While-Schleife ist das abschließende Semikolon Bestandteil des Befehls * expression muss eine Ganzzahl, Gleitkommazahl oder Zeiger zurückgeben, der bei False (0, 0.0 oder NULL) die Schleife beendet. Beispiele: * Endlosschleife :<syntaxhighlight lang="C"> while(1) {} </syntaxhighlight> * Schleife zum Durchlaufen eines String :<syntaxhighlight lang="C"> char str[]="string"; char *ptr=str; while(*ptr++); size_t len=ptr-str-1; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char str[]="string"; char *ptr=str; while(*ptr++); size_t len=ptr-str-1; printf("Stringlänge=%zu\n",len); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Switch-Anweisung === <code>Syntax: switch(expression) statement</code><br /> <code>Syntax: statement:= case constant-expression: statement<sub>opt</sub> default: statement<sub>opt</sub></code><br /> Die Switch-Anweisung entspricht einer verschachtelten If-Anweisung, mit der Besonderheit, dass der auszuführende Code nicht im If-Zweig stattfindet, sondern dort ein goto zum eigentlichen Code enthalten ist: {| class="wikitable" ! Switch-Anweisung !! Compilerumsetzung |- |<syntaxhighlight lang="C"> switch(a) { case 1: int a=7; //Code break; case 2: printf("%d",a); case 3: { int a; //Code } case 4 ... 8: default: //Code } </syntaxhighlight> ||<poem> if(a==1) goto label1; else if(a==2) goto label2; else goto label_default; //------------------- label1: //Code goto label_break; label2: //Code label_default: goto label_break; label_break: </poem> |} Folgendes gilt es bei der Nutzung der Switch-Anweisung zu beachten: * <code>Expression</code> muss zu einer Ganzzahl (int, short, char, long, long long) oder enum (entspricht einer Ganzzahl) ausgewertet werden * <code>constant-expression</code> muss eine Ganzzahl-Konstante oder ein Enumelement sein. Sie darf nicht doppelt im Block vorkommen. Der genaue Datentyp ergibt sich aus dem Datentyp der <code>expression</code> * Lt. Spezifikation ist ein nur <code>statement</code> hinter der switch-Anweisung erlaubt, so dass nur ein <code>case</code> Fall oder der <code>default</code> Fall bedient werden kann::<syntaxhighlight lang="C"> int var=1; switch(var) case 1: printf("hallo"); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int var=1; switch(var) case 1: printf("hallo"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Die geschweifte Klammer der <code>switch</code>-Anweisung erzeugt einen Block, so dass a) hier mehrere <code>case</code>-Fälle und b) hierin definierte Variablen innerhalb des gesamten Blocks zur Verfügung stehen (sind somit nicht <code>case</code> abhängig). Die <code>case</code> Anweisung ist nichts anderes als eine Sprungmarken (welche durch die switch-Anweisung angesprungen wird) so dass der Initialisierungsteil der lokalen Variablen übersprungen / nicht ausgeführt werden kann: :<syntaxhighlight lang="C"> switch(a) { int a=3; //Variable in gesamten Block gültig case 1: int b=3; //Variabe in gesamten Block gültig printf("%d %d",a,b); //a undefiniert, b=3 break; case 2: printf("%d %d",a,b); //a und b undefiniert break; case 3: { //Block, so dass Variable int a=4711; //nur in diesem CASE gültig ist break; } } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=1; switch(a) { int a=3; //Variable in gesamten Block gültig case 1: int b=3; //Variabe in gesamten Block gültig printf("a=%d b=%d",a,b); //a undefiniert, b=3 break; case 2: printf("%d %d",a,b); //a und b undefiniert break; case 3: { //Block, so dass Variable int a=4711; //nur in diesem CASE gültig ist (void)a; break; } } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * GNU-C (siehe [https://www.gnu.org/software/c-intro-and-ref/manual/html_node/switch-Statement.html Switch-Statement]) erlaubt ergänzend zur Angabe einer Konstante die Angabe eines Wertebereiches: :<syntaxhighlight lang="C"> switch(a) { case 1 ... 8: //Leerzeichen zwischen den Konstanten zwingend notwendig //andernfalls wird der Punkt zur Konstante zugehörig //interpretiert (erzeugt dann eine Gleitpunktkonstante) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=2; switch(a) { case 1 ... 8: //Leerzeichen zwischen den Konstanten zwingend notwendig //andernfalls wird der Punkt zur Konstante zugehörig //interpretiert (erzeugt dann eine Gleitpunktkonstante) printf("a im Bereich von 1 bis 8\n"); break; } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * <code>break</code> ist optional. Mittels <code>break</code> wird an das Ende der Switch-Anweisung gesprungen. Wenn <code>break</code> weggelassen wird, wird die nachfolgende Anweisungen ausgeführt. Ggf. gibt der Compiler eine Warning aus. Mittels der GCC-Compiler-Anweisung __attribute__((fallthrough)); kann diese Warning unterdrückt werden: :<syntaxhighlight lang="C"> switch(a) { case 0: //ggf. Compiler-Warning __attribute__((fallthrough)); case 1: case 2: break; } </syntaxhighlight> * Ein Variable Length Array ist als Variable im Switch-Block direkt nicht erlaubt. Ist dies notwendig, so ist das VLA in einem inneren Block zu kapseln: :<syntaxhighlight lang="C"> switch(var) { case 1: int arr[var]; //KO break; case 2: { int arr[var]; //OK } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int var=1; switch(var) { case 1: int arr[var]; //KO break; case 2: { int arr[var]; //OK } } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Case - Anweisungen sind nichts anderes als Sprungmarken (Labels), so dass CASE-Anweisungen überall innerhalb des Switch-Blockes stehen können: :<syntaxhighlight lang="C"> int prime(int value) {return value+1;} void hallo(int var) { switch(var) { default: if(prime(var)) case 2: case 4: printf("%d",var); else { case 3: case 6: printf("%x",var); } case 7: printf("xyz"); } } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int prime(int value) { return value+1; } int main(int argc, char *argv[]) { int var=1; switch(var) { default: if(prime(var)) case 2: case 4: printf("%d",var); else { case 3: case 6: printf("%x",var); } case 7: printf("xyz"); } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} :oder anderen Anweisungen innerhalb des Switch-Blockes enthalten sein können: :<syntaxhighlight lang="C"> void send(register char *dst, register char *src, register size_t count) { register char unsigned n=(count+7)/8; switch(count%8) { case 0: do{ *dst = *src++; case 7: *dst = *src++; case 6: *dst = *src++; case 5: *dst = *src++; case 4: *dst = *src++; case 3: *dst = *src++; case 2: *dst = *src++; case 1: *dst = *src++; }while(--n>0); } } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <stdint.h> //fuer uintptr_t void send(register char *dst, register char *src, register size_t count) { register char unsigned n=(count+7)/8; switch(count%8) { case 0: do{ *dst = *src++; printf("%02hhx ",*dst); case 7: *dst = *src++; printf("%02hhx ",*dst); case 6: *dst = *src++; printf("%02hhx ",*dst); case 5: *dst = *src++; printf("%02hhx ",*dst); case 4: *dst = *src++; printf("%02hhx ",*dst); case 3: *dst = *src++; printf("%02hhx ",*dst); case 2: *dst = *src++; printf("%02hhx ",*dst); case 1: *dst = *src++; printf("%02hhx ",*dst); }while(--n>0); } } int main(int argc, char *argv[]) { char src[20]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}; char dst; send(&dst,src,20); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Eine Switch-Case Anweisung über Strings sind in C/C++ nicht möglich: :<syntaxhighlight lang="C"> switch(str) { case "hallo": return 1; case "du da": return 2; case "xyz": return 3; default: rReturn -1; } </syntaxhighlight> :Ein direkte Lösungsansatz ist die Nutzung von strcmp() zum Vergleichen von String. Da strcmp zeichenweise den String vergleicht, ist dieser Ansatz langsam. Alternativ bietet sich an, von allen String einen Hash-Wert zu berechnen und zunächst diesen Hash-Wert zu kontrollieren. Da der Hash-Wert nicht eindeutig ist, muss ergänzend ein strcmp() erfolgen: :<syntaxhighlight lang="C"> char *str="hallo"; switch(HASH_LAUFZEIT(str)) { case HASH_COMPILEZEIT('d','u'): if(!strcmp(str,"du")) printf("Case \"du\":\n"); break; case HASH_COMPILEZEIT('h','a','l','l','o'): if(!strcmp(str,"hallo")) printf("Case \"hallo\"\n"); else if(!strcmp(str,"xyz")) printf("String='xyz'\n"); break; default: return -1; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <stdint.h> //Lösungsansatz von: https://stackoverflow.com/questions/2826559/compile-time-preprocessor-hashing-of-string #define H1(s,i,x) (x*65599u+(uint8_t)s[(i)<strlen(s)?strlen(s)-1-(i):strlen(s)]) #define H4(s,i,x) H1(s,i,H1(s,i+1,H1(s,i+2,H1(s,i+3,x)))) #define H16(s,i,x) H4(s,i,H4(s,i+4,H4(s,i+8,H4(s,i+12,x)))) #define H64(s,i,x) H16(s,i,H16(s,i+16,H16(s,i+32,H16(s,i+48,x)))) #define H256(s,i,x) H64(s,i,H64(s,i+64,H64(s,i+128,H64(s,i+192,x)))) #define HASH(s) ((uint32_t)(H256(s,0,0)^(H256(s,0,0)>>16))) #define HASH_LAUFZEIT(s) (H256(s,0,0)) //Eigener Lösungsatz zur Umsetzung des vorherigen HASH-Algorithmus //so dass dieser zur Compilezeit berechnet werden kann //Was fehlt ist die abschließende EXOR berechnung! //Problem war, dass die Array-Dereferenzierung nicht zur Compilezeit //aufelöst werden kann #define HH0(a,x) (x*65599u+a) #define HH1(a) HH0(a,HH0(0,HH0(0,HH0(0,0)))) #define HH2(a,b) HH0(b,HH0(a,HH0(0,HH0(0,0)))) #define HH3(a,b,c) HH0(c,HH0(b,HH0(a,HH0(0,0)))) #define HH4(a,b,c,d) HH0(d,HH0(c,HH0(b,HH0(a,0)))) #define HH4x(a,b,c,d,x) HH0(d,HH0(c,HH0(b,HH0(a,x)))) #define HH5(a,b,c,d,e) HH4x(b,c,d,e,HH4x(0,0,0,a,0)) #define HH6(a,b,c,d,e,f) HH4x(c,d,e,f,HH4x(0,0,a,b,0)) #define HH7(a,b,c,d,e,f,g) HH4x(d,e,f,g,HH4x(0,a,b,c,0)) #define HH8(a,b,c,d,e,f,g,h) HH4x(e,f,g,h,HH4x(a,b,c,d,0)) #define HH9(a,b,c,d,e,f,g,h,i) HH4x(f,g,h,i,HH4x(b,c,d,e,HH4x(0,0,0,a,0))) #define HH10(a,b,c,d,e,f,g,h,i,j) HH4x(g,h,i,j,HH4x(c,d,e,f,HH4x(0,0,a,b,0))) #define HH11(a,b,c,d,e,f,g,h,i,j,k) HH4x(h,i,j,k,HH4x(d,e,f,g,HH4x(0,a,b,c,0))) #define HH12(a,b,c,d,e,f,g,h,i,j,k,l) HH4x(i,j,k,l,HH4x(e,f,g,h,HH4x(a,b,c,d,0))) #define HH13(a,b,c,d,e,f,g,h,i,j,k,l,m) HH4x(j,k,l,m,HH4x(f,g,h,i,HH4x(b,c,d,e,HH4x(0,0,0,a,0)))) #define HH14(a,b,c,d,e,f,g,h,i,j,k,l,m,n) HH4x(k,l,m,n,HH4x(g,h,i,j,HH4x(c,d,e,f,HH4x(0,0,a,b,0)))) #define HH15(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) HH4x(l,m,n,o,HH4x(h,i,j,k,HH4x(d,e,f,g,HH4x(0,a,b,c,0)))) #define HH16(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) HH4x(m,n,o,p,HH4x(i,j,k,l,HH4x(e,f,g,h,HH4x(a,b,c,d,0)))) #define EIGHTEENTH_ARGUMENT(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, \ a11,a12,a13,a14,a15,a16,a17,a18, ...) a18 #define CONCAT(c,d) c ## d #define CONCATI(a,b) CONCAT(a,b) #define HASH_COMPILEZEIT(...) CONCATI(HH , EIGHTEENTH_ARGUMENT(dummy, ## __VA_ARGS__, \ 16,15,14,13,12,11,10,9, 8, 7, 6, 5, 4, 3, 2, 1, 0))(__VA_ARGS__) //Lösungsansatz basierend auf: https://renenyffenegger.ch/notes/development/languages/C-C-plus-plus/preprocessor/macros/__VA_ARGS__/count-arguments #define COUNT_ARGUMENTS(...) EIGHTEENTH_ARGUMENT(dummy, ## __VA_ARGS__, \ 16,15,14,13,12,11,10,9, 8, 7, 6, 5, 4, 3, 2, 1, 0) int main(int argc, char *argv[]) { char *str="hallo"; switch(HASH_LAUFZEIT(str)) { case HASH_COMPILEZEIT('d','u'): if(!strcmp(str,"du")) printf("Case \"du\":\n"); break; case HASH_COMPILEZEIT('h','a','l','l','o'): if(!strcmp(str,"hallo")) printf("Case \"hallo\"\n"); else if(!strcmp(str,"xyz")) printf("String='xyz'\n"); break; default: return -1; } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} :Siehe:[https://benhoyt.com/writings/hash-table-in-c/ Hash Table in C] == Label + Goto == === Label === <code>Syntax: name:</code><br /> Labels dienen zur Kennzeichnung einer Anweisung, so dass die Programmausführung an dieser Stelle fortgesetzt, resp. mit einer GOTO-Anweisung angesprungen werden kann. Ein Label ist durch den folgenden Doppelpunkt gekennzeichnet. Dem Label muss eine Anweisung folgen, welches auch eine Leeranweisung (Semikolon) sein kann. Folgendes gilt es bei der Nutzung von Labels zu beachten: * Ein Label entspricht der Speicheradresse des der Label-Anweisung folgenden Anweisung * Bei nicht genutzten Labels (mit goto nicht angesprungene Labels) gibt der Compiler eine Warning aus. Diese kann beim GCC-Compiler mit __attribute__((unused)) unterdrückt werden * die Case- und die Default-Anweisung aus der Switch-Anweisung entspricht einem Label <br /> Labels hat eine funktionsweite Sichtbarkeit (siehe Kap [[#Gültigkeit/Sichtbarkeit von Variablen| Gültigkeit/Sichtbarkeit von Variablen]]). Dies bedeutet, dass das: * Labels nur innerhalb einer Funktion gültig ist * Labels einen von Variablen/Funktionen/Datentypen unabhängigen Namensraum haben * Kein Prototyp für ein Label notwendig ist, wenn es bei Nutzung über goto noch nicht gesetzt worden ist, also nach vorne gesprungen wird === goto === <code>Syntax: goto label;</code><br /> Mit der Goto-Anweisung wird die Programmausführung an der mit <code>label</code> gekennzeichneten Stelle fortgesetzt. Folgendes gilt es bei der Nutzung von goto zu beachten: * Mit einer <code>goto</code> Anweisung kann an eine beliebige Steller innerhalb der '''identischen''' Funktion gesprungen werden. Es kann nicht zu einem Label in einer anderen Funktion gesprungen werden (hierzu ist <code>setjmp()</code> und <code>longjmp()</code> zu nutzen) * Mit der Goto Anweisung kann gleichermaßen in einen Block hinein, als auch herausgesprungen werden: :<syntaxhighlight lang="C"> goto first_time; for(;;) { if(a>10) goto last_time: first_time: a++; } last_time: ; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=0; goto first_time; for(;;) { printf("a=%d\n",a); if(a>10) goto last_time; first_time: a++; } last_time: ; //Leeranweisung wäre hier nicht nötig return 0; //da dem Label ein return folgt! } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Wird mit der <code>goto</code> Anweisung der Initialisierungsteil einer Variablen übersprungen, so ist zwar die Variable existent, beinhaltet aber nicht ihren Initialisierungswert Beispiel: <syntaxhighlight lang="C"> goto label1; if(a==3) { label2: printf("True\n"); } else label1: { printf("False\n"); } if(a==3) goto label2; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=3; goto label1; if(a==3) { label2: printf("True\n"); a++; } else label1: { printf("False\n"); } if(a==3) goto label2; return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * In Java gibt es das Schlüsselwort goto, welches aber ohne Funktion ist. Es gibt jedoch Labels, die mit "break label" angesprungen werden können === Anwendungsbeispiele === Prinzipiell sind Goto-Anweisungen zu vermeiden. In einigen Anwendungsfällen erweist sich goto als nützlich: * Nutzung nur einer <code>return</code> Anweisung in einer Funktionen :<syntaxhighlight lang="C"> #include <unistd.h> int input(int hdl,size_t buflen) { int rc=-1; unsigned char packettype; if(read(hdl,&packettype,1) != 1) goto exit; unsigned short packetlen; if(read(hdl,&packetlen,2) != 2) goto exit; if((1+packetlen) > buflen) { rc=-2; goto exit; } rc=packetlen; exit: return rc; } </syntaxhighlight> * Konstruktor mit mehreren Initialisierungsteilen :<syntaxhighlight lang="C"> int main(int argc,char *argv[]) { enum {INIT_2,INIT_1,INIT_START} fortschritt=INIT_START; int *ptr1; int *ptr2; if(!(ptr1=malloc(10))) goto end; fortschritt=INIT_1; if(!(ptr2=malloc(20))) goto end; fortschritt=INIT_2; // ... end: switch(fortschritt) { case INIT_2: free(ptr2); __attribute__((fallthrough)); case INIT_1: free(ptr1); __attribute__((fallthrough)); case INIT_START: } return (int)fortschritt; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { enum {INIT_2,INIT_1,INIT_START} fortschritt=INIT_START; int *ptr1; int *ptr2; if(!(ptr1=malloc(10))) goto end; fortschritt=INIT_1; if(!(ptr2=malloc(20))) goto end; fortschritt=INIT_2; // ... end: switch(fortschritt) { case INIT_2: free(ptr2); __attribute__((fallthrough)); case INIT_1: free(ptr1); __attribute__((fallthrough)); case INIT_START: } return (int)fortschritt; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Abbruch einer verschachtelten Schleife :<syntaxhighlight lang="C"> int arr[10][10]; size_t zeile; size_t spalte; for(zeile=0;zeile<10;zeile++) for(spalte=0;spalte<0;spalte++) if(arr[zeile][spalte]==0) goto label_end; label_end: if((zeile==0) && (spalte==0)) printf("Nichts gefunden"); else printf("Gefunden an %zu %zu",zeile,spalte); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int arr[10][10]; size_t zeile; size_t spalte; for(zeile=0;zeile<10;zeile++) for(spalte=0;spalte<0;spalte++) if(arr[zeile][spalte]==0) goto label_end; label_end: if((zeile==0) && (spalte==0)) printf("Nichts gefunden"); else printf("Gefunden an %zu %zu",zeile,spalte); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Sonstiges == === ??-Trigraphs === Zeichenfolge bestehend aus 3 Zeichen beginnend mit 2 Fragezeichen. Die beiden Fragezeichen entsprechen einem ESCAPE-Operator (siehe Kap [[#Char-Konstanten|Char-Konstanten]]), welcher das nachfolgende Zeichen durch ein anderes ASCII Zeichen ersetzt. Die Ersetzung findet auch innerhalb von Strings statt.<br /> Trigraphs wurden früher genutzt, als die ALTGR Taste noch nicht üblich war. <syntaxhighlight> ??< → { ??> → } ??( → [ ??) → ] ??/ → \ ??! → | ??' → ^ ??- → ~ ??= → # </syntaxhighlight> Bei neuer C Varianten muss zur Nutzung von Trigraphs der Compiler mittels -trigraphs aktiviert werden. <noinclude> {{Navigation zurückhochvor buch |zurücklink=Programmieren in C/C++: Toolchain/Entwicklungsumgebung |zurücktext=Toolchain/Entwicklungsumgebung |hochlink=Programmieren in C/C++ |hochtext=Inhaltsverzeichnis |vorlink=Programmieren in C/C++: Datentypen |vortext=Datentypen}} </noinclude> l6ga7uo9juutuvu4drw3jsed4lwelx1 1090610 1090609 2026-09-09T09:53:27Z D. Justen 102048 Titel geändert 1090610 wikitext text/x-wiki <noinclude> {{Navigation zurückhochvor buch |zurücklink=Programmieren in C/C++: Toolchain/Entwicklungsumgebung |zurücktext=Toolchain/Entwicklungsumgebung |hochlink=Programmieren in C/C++ |hochtext=Inhaltsverzeichnis |vorlink=Programmieren in C/C++: Datentypen |vortext=Datentypen}} </noinclude> <!-- Falls du ein automatisch erstelltes Inhaltsverzeichnis nicht willst, ersetze das nachfolgende TOC durch NOTOC --> <!-- Einklammerung mit noinclude, damit dieses nicht in der Druckversion erscheint --> <noinclude>__TOC__</noinclude> Die Programmiersprache C/C++ beinhaltet mehrere Sprachen/ Syntaxen: * C-Syntax * Präprozessor-Syntax * Printf/Scanf Formatstring Syntax * Terminal Emulation * Compiler/Linker Anweisungen Letztere beiden werden nur rudimentär in dieser Vorlesung/diesem Skript behandelt. Alle anderen sind Bestandteil dieser Vorlesung. In diesem Kapitel sollen zunächst allgemeine Eigenschaften der Sprache, der grundlegende Syntax und die Kontrollstrukturen erklärt werden. Bei vielen Erklärungen sind Code-Beispiele vorhanden. Da man aus Fehlern am meisten lernt, sind zum Teil auch negative Beispiele enthalten. Für ein besseres Verständnis empfiehlt es sich, Code-Beispiele selbst nachzuvollziehen.<br /> Sofern sich die Eigenschaften auf eine bestimmte C-/C++- oder Compiler-Version beziehen, wird dies gesondert vermerkt. == Zeichensatz == Der Syntax von C nutzt die unteren 128 Zeichen des ASCII Zeichensatzes. Da UTF-8 in den ersten 128 Zeichen deckungsgleich zu ASCII ist, kann auch dieser zur Erstellung des Source Codes genutzt werden. Zeichen außerhalb dieses gültigen Zeichensatzes können folglich nur in Strings oder Kommentaren vorkommen. Werden Zeichen außerhalb der unteren 128 Zeichen in Strings genutzt, so gilt Folgendes zu berücksichtigen: * Die String-Funktionalitäten der Standard-C Library gehen von dem regulären ASCII Zeichensatz aus, so dass z.B. die Suche, der Vergleich oder die Konvertierung fehlschlagen kann * Strings werden oftmals in Verbindung mit printf() genutzt, d.h. auf der Standardausgabe ausgegeben. Der verwendete Zeichensatz sollte hier identisch zum verwendeten Zeichensatz der Terminal-Emulation sein! == Kommentarzeichen == Kommentare dienen dazu, den Source Code mit zusätzlichen Hinweisen zu versehen, so dass die Intension der Anweisungen sichtbar wird. Kommentarzeichen werden durch den Compiler vor dem eigentlichen Übersetzungsdurchlauf entfernt und durch ein Leerzeichen ersetzt [C11 6.4.9]. Innerhalb von Strings wird nicht nach Kommentarzeichen gesucht. <code> Syntax: /* */ </code> Blockkommentar zum Kommentieren eines Bereiches, auch über mehrere Zeilen hinweg. Dieses Kommentarzeichen kann nicht verschachtelt werden, d.h. '*/' beendet die Kommentierung, unabhängig von der Anzahl der zuvor geöffneten Kommentierungen! <code> Syntax: // </code> Zeilenkommentar zum Kommentieren bis zum Zeilenende (wurde in der Programmiersprache BCPL definiert, aber nicht von C, sondern erst von C++ übernommen). Sollen größere Bereiche auskommentiert werden, so empfiehlt sich die Nutzung der Präprozessoranweisung #if 0 ... #endif. Beispiele: <syntaxhighlight lang="C"> /* Blockkommentar mit zwei öffnenden Klammern /* über mehrere Zeilen, nicht verschachtelt */ //Zeilenkommentar /* Kleiner Bereich zum auskommentieren */ #if 0 Großer Bereich zum auskommentieren #endif </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> /* Blockkommentar mit zwei öffnenden Klammern /* über mehrere Zeilen, nicht verschachtelt Compiler-Warning nur aufgrund des Compiler-Schalters -Wall! */ //Zeilenkommentar /* Kleiner Bereich zum auskommentieren */ #if 0 Großer Bereich zum auskommentieren #endif int main(int argc,char *argv[]) { return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Namenskonventionen == Folgende Regeln gelten bzgl. der Benennung von Variablen und Funktionen: * Variablen und Funktionsnamen können aus Buchstaben, Zahlen und dem Unterstrich bestehen. Sie müssen mit einem Buchstaben oder einem Unterstrich beginnen * Seit C95 können weitere Zeichen aus dem Universal Coded Character Set (UCS) genutzt werden [C11 D.1] * C ist Case sensitiv, d.h. es wird zwischen Groß- und Kleinbuchstaben unterschieden * Schlüsselwörter können nicht für Variablen/Funktionsnamen/Datentypen genutzt werden Namenskonventionen von Libraryfunktionen: * In C (und C++) sind Schlüsselwörter und Standardlibraryfunktionen zumeist in Kleinbuchstaben geschrieben. In der C-Standardlibrary werden oftmals verkürzte Ausdrücke (z.B. isalnum() (zum Testen ob ein Zeichen ein Buchstaben oder ein Digit ist) und in C++ der Unterstrich als Worttrenner (z.b. out_of_range) genutzt * Makros (siehe Kap.[[Programmieren in C/C++: Präprozessor | Präprozessor]]) werden per Konvention in GROSSBUCHSTABEN und ggf. mit Unterstrich als Worttrenner geschrieben. * Namen beginnend mit doppelten Unterstrich oder beginnend mit einem Unterstrich gefolgt von einem Großbuchstaben (z.B. __LINE__ _Reserved) sind für den Compiler und der Standard-C-Library vorbehalten und sollten im eigenen Programm nicht benutzt werden. == Zeilenfortsetzung == Mit dem Backslash Operator (gefolgt von einem Zeilenende) kann eine Zeile in der nächsten Zeile fortgesetzt werden. Der Compiler löscht das \-Zeichen mit anschließendem Zeilenende und ersetzt dies durch nichts. Dies ist insbesondere bei Anweisungen notwendig, die am Ende der Zeile abgeschlossen sein müssen (z.B. Strings, Makros). Beispiele: <syntaxhighlight lang="c"> char str1[]="Strings müssen am Ende abgeschlossen sein so dass dies ein Fehler ist"; char str2[]="Dies\ ist ein Test"; //Vorsicht, führende Leerzeichen vor 'ist' //bleiben erhalten! /*mehrzeiliges Makro*/ #define MAX(a,b) (a>b?\ b: \ a) //Dies ist ein Zeilenkommentar \ welcher in dieser Zeile fortgesetzt wird /\ * dies ist ein Blockkommentar*\ / //hinter der Zeilenfortsetzung darf nur ein CR/LF folgen #define MAX2(a,b) \ //so dass hier kein Kommentar folgen darf a>b?a:b </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> char str1[]="Strings müssen am Ende abgeschlossen sein so dass dies ein Fehler ist"; char str2[]="Dies\ ist ein Test"; //Vorsicht, führende Leerzeichen vor 'ist' //bleiben erhalten! /*mehrzeiliges Makro*/ #define MAX(a,b) (a>b?\ b: \ a) //Dies ist ein Zeilenkommentar \ welcher in dieser Zeile fortgesetzt wird /\ * dies ist ein Blockkommentar*\ / //hinter der Zeilenfortsetzung darf nur ein CR/LF folgen #define MAX2(a,b) \ //so dass hier kein Kommentar folgen darf a>b?a:b int main(int argc,char *argv[]) { return 0; } | execCompilerOptions=| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Innerhalb von Char-Literatoren und Strings wird '\' als Escape-Operator genutzt, welche das '\' und ein oder mehrere folgende Zeichen ersetzt (siehe Kap.[[Programmieren in C/C++: Grundlagen#Literale/Konstanten | Grundlagen:Literale/Konstanten]]). Daher darf hinter Backslash als Zeilenfortsetzungszeichen kein weiteres Zeichen folgen. == Gültigkeit/Sichtbarkeit von Variablen == Vorrangig in der objektorientierten Programmierung werden mit Namensräumen Objekte und deren Methoden/Attribute in einer Art Baumstruktur strukturiert. Dies ermöglicht eine eindeutige Ansprache von Variablen/Objekte, aber auch eine doppelte Verwendung von Methoden-/Attributnamen in unterschiedlichen Namensräumen. Ergänzend zu den Namensräumen kann mit public/private/proteced eine Zugriffsbeschränkung von Methoden/Attributen definiert werden. Die Programmiersprache C unterstützt keinen Namensraum. Zugriffsmodifikatoren werden indirekt über Header-Dateien getätigt. Hinsichtlich der Gültigkeit/Sichtbarkeit unterscheidet C folgende Bereiche [C11 6.2.1]: * Funktionen (Function Scope) * Datei (File Scope) * Block (Block Scope) * Funktionsparameter in Prototypen (Function Prototype Scope) Innerhalb eines Gültigkeitsbereiches dürfen Variablen-/Funktions-/Datentypnamen nicht doppelt genutzt werden.<br /> In der Programmiersprache C++ sind weitere Scope wie z.B. Class Scope, Enumationation Scope und ergänzend das Konzept von Namensräumen vorhanden (Beschreibung folgt). === Funktionsweite Sichtbarkeit === Eine Label-Definition (als Sprungmarke für die goto-Anweisungen) erfolgt immer mit funktionsweiter Sichtbarkeit/Gültigkeit. Die genaue Beschreibung dieses Sichtbarkeitstyps erfolgt im Rahmen des Kapitels [[Programmieren in C/C++: Grundlagen #Label + Goto|Grundlagen:Label+Goto]]. === Dateiweite Sichtbarkeit === Erfolgt eine Funktion-/Variablen-/Datentyp-Definition außerhalb eines Block-Scopes oder von Funktionsparameter, so sind diese innerhalb der gesamten Datei und bei Funktionen/Variablen ergänzend Projektweit (für alle Objektdateien) sichtbar/gültig (=&nbsp;global) (In der C-Spec unter dem Stichwort 'Linkage' beschrieben, siehe Kapitel [[Programmieren in C/C++: DatentypeSpecifier#Internal/External Linkage| DatentypeSpecifier:Internal/External Linkage]]). Alle globalen Funktionen/Variablen können von allen Dateien aus genutzt/zugegriffen werden (sofern sie zuvor deklariert wurden).<br /> Beispiel: {| class="wikitable" |- ! Datei1.c !! Datei2.c |- | <syntaxhighlight lang="C"> //Deklaration von func(), //welche in Datei2.c definiert wird extern void func(void); //Definition der Variablen global int global=0; int main(void) { func(); global++; return 0; } </syntaxhighlight> || <syntaxhighlight lang="C"> //Deklaration von global, //welche in Datei1.c definiert wird extern int global; //Definition der Funktion func() void func(void) { global++; } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Deklaration von func(), //welche in Datei2.c definiert wird extern void func(void); //Definition der Variablen global int global=0; int main(void) { func(); global++; printf("global=%d\n",global); return 0; } | datei2_c=#include <stdio.h> //Deklaration von global, //welche in example.c definiert wird extern int global; //Definition der Funktion func() void func(void) { global++; printf("func() called\n"); } | execCompilerOptions=-Wall datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Wird das Schlüsselwort 'static' der Variablen/Funktionsdefinition vorangestellt, so wird die Sichtbarkeit/Gültigkeit auf Dateiweit eingeschränkt. Variablen/Funktionen können nur innerhalb der (Objekt-) Datei genutzt werden und sind für anderen (Objekt-)Dateien unsichtbar. (Siehe Kap. [[Programmieren in C/C++: DatentypeSpecifier#Internal/External Linkage|DatentypeSpecifier:Internal/External Linkage]] Internal/External Linkage) {| class="wikitable" |- ! Datei1.c !! Datei2.c |- | <syntaxhighlight lang="C"> //Dateiweite Sichtbarkeit von var1 static int var1; int main(void) { var1++; return 0; } </syntaxhighlight> || <syntaxhighlight lang="C"> //Dateiweite Sichtbarkeit von var1 static int var1; void func(void) { static int var2; //Vorsicht, static // hat hier eine andere Bedeutung var1++; } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Dateiweite Sichtbarkeit von var1 static int var1; int main(void) { var1++; printf("example.c:var1=%d\n",var1); void func(void); //Prototyp für func() func(); return 0; } | datei2_c=#include <stdio.h> //Dateiweite Sichtbarkeit von var1 static int var1; void func(void) { static int var2; //Vorsicht, static // hat hier eine andere Bedeutung var1++; printf("datei2.c:var1=%d\n",var1); } | execCompilerOptions=datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Projektweite Gültigkeit bedeutet insbesondere, dass keine doppelten Benennung von Variablen/Funktionen/Datentypen innerhalb des gesamten Projektes erlaubt sind, d.h. alle Variablen/Funktionennamen über alle Dateien/Librarys eindeutig sein müssen.<br> Beispiel 1: {| class="wikitable" |- ! Datei1.c !! Datei.2 |- | <syntaxhighlight lang="C"> #include <stdio.h> int a=1; int main(int argc,char *argv[]) { printf("Hello World %d",a); void dummy(void); //Deklaration von Dummy dummy(); return 0; }</syntaxhighlight> || <syntaxhighlight lang="C"> #include <stdio.h> int a=7; void dummy(void) { printf("Hello Again %d\n",a); } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int a=1; int main(int argc,char *argv[]) { printf("Hello World %d",a); void dummy(void); //Deklaration von Dummy dummy(); return 0; } | datei2_c=#include <stdio.h> #include <stdio.h> int a=7; void dummy(void) { printf("Hello Again %d\n",a); } | execCompilerOptions=datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Der Linker meldet beim Zusammenfügen der Objekt-Dateien, dass die Variable a bereits woanders definiert sei (multiple definition of `a';)! Beispiel 2: <syntaxhighlight lang="C"> #include <stdio.h> //fuer printf() size_t stderr int printf=7; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int printf=7; int main(int argc,char *argv[]) { return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hier meldet der Compiler eine Fehlermeldung, da das Symbol printf zu einen als Variable und zum anderen als Funktion (innerhalb der inkludierten Datei stdio.h beschrieben) genutzt wird ('printf' redeclared as different kind of symbol). === Blockweite Sichtbarkeit === Erfolgt eine Funktion-/Variablen-/Datentyp Definition innerhalb einer Funktion, als Funktionsparameter oder eines Blockes, so sind diese nur innerhalb des Blockes sichtbar/gültig (=Lokale Variable). Blöcke können verschachtelt sein, so dass das bei identischer Namensgebung innere Definitionen Vorrang haben. Ebenso haben Blockdefinitionen Vorrang vor Datei-/Projektdefinitionen (überdecken diese): {| class="wikitable" |- ! Datei1.c !! Datei2.c |- | <syntaxhighlight lang="C"> int main(void) { int var2; //var2 ist nur innerhalb //von main() sichtbar struct xyz //Datentyp ist nur innerhalb {int x,y,z;};//von main() //sichtbar/gültig extern void func(void); //Deklaration //ist nur innerhalb von //main() sichtbar/gültig func(); } void foo(void) { struct xyz var_xyz; //Fehler, da //Datentypedefinition hier nicht mehr //gültig ist! func(); //Fehler, da Deklaration //hier nicht mehr gültig ist } </syntaxhighlight> || <syntaxhighlight lang="C"> #include <stdio.h> void func(void) { int var2=1; //var2 ist //nur innerhalb von //func() sichtbar { int var2=2; //var2 ist nur innerhalb //dieses Blockes sichtbar printf("%d\n",var2); } printf("%d\n",var2); } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(void) { int var2; //var2 ist nur innerhalb //von main() sichtbar struct xyz //Datentyp ist nur innerhalb {int x,y,z;};//von main() //sichtbar/gültig extern void func(void); //Deklaration //ist nur innerhalb von //main() sichtbar/gültig func(); } void foo(void) { struct xyz var_xyz; //Fehler, da //Datentypedefinition hier nicht mehr //gültig ist! func(); //Fehler, da Deklaration //hier nicht mehr gültig ist } | datei2_c=#include <stdio.h> void func(void) { int var2=1; //var2 ist //nur innerhalb von //func() sichtbar { int var2=2; //var2 ist nur innerhalb //dieses Blockes sichtbar printf("%d\n",var2); } printf("%d\n",var2); } | execCompilerOptions=-Wall datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Sichtbarkeit von Funktionsparameter in Protypen === Soll eine Funktion aufgerufen werden, die zuvor nicht definiert wurde, so ist ein Prototyp/(Forward)deklaration der Funktion notwendig (siehe nachfolgendes Kapitel). Die Parameterliste dieses Prototyps hat seinen eigenen Gültigkeitsbereich.<br/> Beispiel: <syntaxhighlight lang="C"> int a; //a im File Scope int func(int a, int b); //a und b im Function Prototyp scope </syntaxhighlight> Hinweis: * Bei Prototypen ist die Angabe von Variablenname nicht notwendig. Die alleinige Angabe des Datentyps ist ausreichend === Zuordnung der Gültigkeitsbereiche zu globalen/lokalen Variablen === Zum einfacheren Verständnis wird im Skript von folgenden Begrifflichkeiten gesprochen: * '''Globale''' Variablen-/Funktionen-/Datentypdefinitionen → Projektweite Sichtbarkeit/Gültigkeit * '''Statisch globale''' Variable/Funktionen → Dateiweite Sichtbarkeit/Gültigkeit * '''Lokale''' Variablen/Funktionen/Funktionsparameter/Datentypen → Nur innerhalb des zugehörigen Blockes sichtbare/gültig * '''Statisch lokale''' Variablen → Nur innerhalb der Funktion sichtbar/gültig, mit der Besonderheit, dass die Gültigkeit über der Laufzeit der Funktion gilt (siehe Kap. [[Programmieren in C/C++: DatentypeSpecifier#Static Storage Class Specifier|DatentypeSpecifier:Static Storage Class Specifier]]) === Speicherzuweisung === Für die einzelnen Gültigkeitsbereiche werden im Speicher (und auch in der Objekt-Datei) unterschiedliche Speicherbereiche (Segmente) vorgehalten, d.h. der Compiler teilt den Speicher in unterschiedliche Bereiche auf und weist den Variablen/Funktionen in Abhängigkeit der Gültigkeit/Sichtbarkeit unterschiedliche Speicherbereiche zu! [[File:Zuordnung von Inhalten eines C-Programms zu Speicherbereichen (Segmenten).png|thumb|Zuordnung von Inhalten eines C-Programms zu Speicherbereichen (Segmenten)]] Zur Ermöglichung von Rekursion werden lokale Variable auf dem Stack gehandelt. Mit Aufruf einer Funktion oder öffnen eines neuen Block-Scopes wird Speicher auf dem Stack reserviert, der bei Beenden des Scopes wieder freigegeben wird. Die Speicheradresse von lokalen Variablen ist somit nicht Fix, sondern hängt von der Aufrufhierarchie ab! Globale und statisch globale Variablen werden nicht auf dem Stack gehalten, sondern bekommen einen 'festen' Speicherbereich (hier DATA/BSS/RODATA) während der gesamten Laufzeit des Programms zugewiesen. Die Adresse dieser Variablen sind somit konstant. Das genutzte Speichersegment von globalen Variablen hängen von der Art der Variablen ab. Initialisierte Variablen werden im DATA-Segment gesammelt, welcher mit dem Initialisierungswert der Variablen initialisiert wird. Nicht initialisierte globale Variablen landen im BSS-Segment, so dass diese mit Programmstart durch Füllen dieses Blockes mit 0 auf 0 gesetzt werden. Konstante globale Variablen werden im RODATA-Segment gehalten. Über das Betriebssystem kann dieser Speicherbereich auf nur Lesbar gesetzt werden. Dynamische Speicheranforderungen, resp. Speicher, dessen Gültigkeit über die Laufzeit einer Funktion hinausgeht, wird im Heap gesammelt. Für die Verwaltung dieses Speichers ist der Programmierer zuständig. Entsprechend globalen Variablen wird für Funktionen ebenfalls ein eigener Speicherbereich (TEXT Segment) vorgesehen. Im Gegensatz zu Variablen, wo im Speicher der dazugehörige Inhalt gespeichert ist, ist der Speicherinhalt von Funktionen die Maschinenanweisungen. Die Speicheradresse der Funktionen sind konstant. Hinweis: * Die Speicheradresse von sowohl globalen und statisch globalen Variablen als auch von Funktionen ist konstant und ändert sich während der Laufzeit des Programms nicht. Die Adressvergabe dieser Variablen und Funktionen erfolgt somit nicht zur Laufzeit sondern durch die Toolchain (hier der Linker). * Dieses Konzept ist allgemeingültig, gilt nicht nur für die Programmiersprache C/C++ == Definition/Deklaration(Prototyp) == Der C-Compiler ist ein Single-Pass Compiler (siehe Kap [[Programmieren in C/C++: Einführung/Literatur#Arbeitsweise eines Compilers | Einführung/Literatur:Arbeitsweise eines Compilers ]]), d.h. für den Übersetzungsvorgang wird der Quellcode einmalig eingelesen und von vorne nach hinten abgearbeitet. Dies bedingt, dass keine Vorwärtsbezüge im Quelltext enthalten sein dürfen: * keine Variable genutzt werden kann, die erst später definiert wird (da der Compiler in Abhängigkeit des Datentyps (den er dann noch nicht kennt) keine entsprechende Maschinensprachebefehle erzeugen kann) * keine Funktion aufgerufen werden kann, die erst später definiert wird (da der Compiler nicht weiß, welcher Datentyp die Übergabewerte haben und folglich keine Maschinensprachebefehle zur Konvertierung und Übergabe der Variablen erzeugen kann) * kein Datentyp genutzt werden kann (struct, union, enum, typedef), welcher erst später definiert wird (da der Compiler nicht weiß, wieviel Speicher er für die Variable reservieren muss) Eine Lösungsvariante dieser Problematik ist, im Quellcode alle Variablen/Funktionen/Datentypen/Makros zu definieren, bevor diese erstmalig genutzt werden (Funktion main() steht dann folglich am Ende des Quellcodes): <syntaxhighlight lang="C"> void foo(void) { //foo() wird vor dem ersten Aufruf definiert //Hier kein Zugriff auf var möglich! //Hier kein Zugriff auf Datentyp uchar möglich! } int var; //var wird vor dem ersten Aufruf definiert typedef unsigned char uchar; //Definition des Datentyps uchar int main(void) { foo(); //da zuvor definiert kann diese Funktion hier aufgerufen werden var++; //dito } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void foo(void) { //foo() wird vor dem ersten Aufruf definiert var++; //Hier kein Zugriff auf var möglich! uchar xyz;//Hier kein Zugriff auf Datentyp uchar möglich! } int var; //var wird vor dem ersten Aufruf definiert typedef unsigned char uchar; //Definition des Datentyps uchar int main(int argc, char *argv[]) { foo(); //da zuvor definiert kann diese Funktion hier aufgerufen werden var++; //dito } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Sollen globale Funktionen/Variablen in Datei1.c genutzt werden, die in Datei2.c definiert sind, so schlägt diese Vorgehensweise fehl. Um auch dieses zu ermöglichen, bietet C die Möglichkeiten von Prototypen/Deklarationen an. Diese teilt dem Compiler mit, wie im späteren Ablauf die Variable, die Funktion definiert wird, bzw. dass es diesen Datentyp geben wird: {| class="wikitable" |- ! Datei1.c !! Datei2.c |- | <syntaxhighlight lang="C"> //Prototyp für Variable var extern int var; //Prototyp für Funktion foo void foo(void); int main(int argc, char *argv[]) { foo(); //Compiler kann aufgrund var++; //der Prototypen diese //Aufruf in Maschinen- //sprachebefehle umsetzen } </syntaxhighlight> || <syntaxhighlight lang="C"> //Definition der Variablen var int var; //Definition der Funktion foo void foo(void) { } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Prototyp für Variable var extern int var; //Prototyp für Funktion foo void foo(void); int main(int argc, char *argv[]) { foo(); //Compiler kann aufgrund var++; //der Prototypen diese //Aufruf in Maschinen- //sprachebefehle umsetzen } | datei2_c=#include <stdio.h> //Definition der Variablen var int var; //Definition der Funktion foo void foo(void) { } | execCompilerOptions=-Wall datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Innerhalb der C-Spezifikation werden für den Umgang mit dieser Problematik die Begriffe 'Declaration' und 'Definition' genutzt. Da diese Begriffe jedoch nicht klar abgegrenzt werden und auch für viele weitere Aspekte genutzt werden, sollen in diesem Skript in Anlehnung an den Wikipedia Artikel {{w|Deklaration (Programmierung)|Deklaration (Programmierung)}} (im Absatz zur Programmiersprache C/C++) die Begriffe Definition/Deklaration wie folgt genutzt werden: ;Definition: entspricht der Belegung/Reservierung von Speicherplatz :* Bei der Definition einer Variablen wird hiermit Speicherplatz entsprechend dem Datentyp der Variable belegt: :<syntaxhighlight lang="C"> int var1; //entsprechend der Größe des Datentyps int wird //Speicherplatz für die Variable var1 reserviert int var2=4711; //Dito, ergänzend wird dieser Speicherplatz mit dem //Wert 4711 initialisiert </syntaxhighlight> :* Bei einer Funktion wird Speicherplatz zur Aufnahme der Maschinenbefehle belegt: :<syntaxhighlight lang="C"> void foo(void) { //Die Anweisungen in den geschweiften Klammern //werden in Maschinenbefehle übersetzt. D.h. die //Funktion foo() belegt Speicher, dessen Inhalt //die Maschinensprachebefehle sind } </syntaxhighlight> :* Ergänzend wird der Begriff Definition auch in Verbindung mit der Definition von neuen Datentypen genutzt! ;Deklaration/Prototyp: ist die Mitteilung an den Compiler, wie diese Variable/Funktion an einer späteren Stelle im Source-Code oder in einer anderen Source-Datei definiert wird. Auf Grundlage dieser 'vorab' Information kann der Compiler die passenden Maschinensprachebefehle für den Zugriff/Aufruf auf die Variablen/Funktion einsetzen: :<syntaxhighlight lang="C"> extern int var1; //Deklaration von var1 extern void foo(void); //Deklaration von foo() void foo(void); //Deklaration von foo() </syntaxhighlight><br /> Insbesondere bei dem Umgang mit der Deklaration gilt es Folgendes zu berücksichtigen: * Deklarationen werden entweder: :* am Anfang einer C-Datei geschrieben, so dass Funktionen/Variablen im Zugriff stehen, die erst später in der C-Datei definiert werden (entspricht dann der Private Anweisung in anderen Sprachen) :* in Header-Dateien geschrieben, so dass diese Variable/Funktionen für alle sichtbar sind, welche diese Header-Datei einbinden (entspricht der Public Anweisung in anderen Sprachen) * Deklarationen von Funktionen werden in der C-Spec als (function) Prototyp bezeichnet und sind dadurch gekennzeichnet, dass diese mit einem Semikolon abgeschlossen sind. Der Specifier 'extern' ist hier optional und sagt eigentlich aus, dass diese Funktion external Linkage besitzt (siehe [[Programmieren in C/C++:_DatentypeSpecifier#Internal/External Linkage | DatentypeSpecifier:Internal/External Linkage]]). Die Benennung der Parametervariablen sind gleichermaßen optional: :<syntaxhighlight lang="C"> extern int foo(int var1, float var2); //Deklaration extern int foo(int , float ); //Deklaration int foo(int var1, float var2); //Deklaration + external Linkage int foo(int , float ); //Deklaration + external Linkage </syntaxhighlight> * Für globale Variablen gibt es keine (Variablen) Prototype. Stattdessen muss zur Bekanntgabe des Datentyps der Specifier 'extern' vorangestellt werden, mit welchen ergänzend zum Ausdruck gebracht wird, das diese Variable external Linkage und damit globale Gültigkeit hat (siehe Kap [[Programmieren in C/C++: DatentypeSpecifier# Extern - Storage Class Specifier| DatentypeSpecifier:Extern - Storage Class Specifier]]). Da die Deklaration einzig zur Bestimmung der Zugriffsmethoden auf Maschinenspracheebene genutzt wird, können diese keine Initialisierungswerte enthalten: :<syntaxhighlight lang="C"> extern int var1; extern int var2=7; //KO Deklarationen können keine //Initialisierungswerte haben </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> extern int foo; extern int foo=7; int main(int argc, char *argv[]) { return foo; } int foo=7;| execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Deklarationen von statisch globalen, lokalen und statisch lokalen Variablen nicht möglich sind: :<syntaxhighlight lang="C"> extern static int glob; //keine Deklaration von statisch globalen //Variablen möglich int main(int argc, char *argv[]) { extern int var; //Deklaration bezieht sich auf eine globale //Variable, die nicht definiert ist extern static int lok; printf("%d %d\n",var,lok); int var; static int lok; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> extern static int glob; //keine Deklaration von statisch globalen //Variablen möglich int main(int argc, char *argv[]) { extern int var; //Deklaration bezieht sicht auf eine globale //Variable, die nicht definiert ist extern static int lok; printf("%d %d\n",var,lok); int var; static int lok; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Deklarationen für identische Variablen/Funktionen können beliebig oft erfolgen, sofern der Datentyp identisch ist: :<syntaxhighlight lang="C"> extern int var; extern int var; //OK, doppelt Deklaration mit identischen Datentyp extern unsigned int var; //KO, Doppelte Deklaration mit unterschiedlichen // Datentyp </syntaxhighlight> * Sofern eine Deklaration und eine Definition in der identischen Datei erfolgen überprüft der Compiler, ob Deklaration und Definition identisch sind. Es empfiehlt sich, die eigene Header-Datei (in welcher die Deklaration normalerweise enthalten ist) zu inkludieren: :{| class="wikitable" |- ! Datei1.c !! Datei1.h |- | <syntaxhighlight lang="C"> //Include der eigenen Header-Datei #include "datei1.h" int var1; //Definition von var1 short var2; //Definition von var2 int var3; //Private Variable //da kein Prototyp //im Header vorhanden void func(void) { } </syntaxhighlight> || <syntaxhighlight lang="C"> extern int var1; //Deklaration extern char var2; //KO, da Deklaration //von Definition //abweicht void func(int); //KO, da Deklaration //von Definition //abweicht </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Include der eigenen Header-Datei #include "example.h" int var1; //Definition von var1 short var2; //Definition von var2 int var3; //Private Variable //da kein Prototyp //im Header vorhanden void func(void) { } int main(int argc, char *argv[]) { return 0; } | example_h= extern int var1; //Deklaration extern char var2; //KO, da Deklaration //von Definition //abweicht void func(int); //KO, da Deklaration //von Definition //abweicht | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Innerhalb einer Datei kann eine Variable identischen Datentyps mehrmals definiert werden (bei identischen Initialisierungswert). Diese Definitionen werden vom Compiler als eine Definition angesehen. Wenn jedoch eine identische Variable in unterschiedlichen Dateien definiert wird, so legt jede Datei eine eigene unabhängige Variable an, welche dann beim Zusammenführen der Objektdateien durch den Linker zu Fehler führt. Da Header-Datei zumeist in mehrere C-Dateien inkludiert werden, sind Definitionen in Header-Dateien 'verboten'. * Deklarationen innerhalb eines Block-Scopes oder eines Function Prototyp Scopes sind nur in diesen Bereich gültig. == Grundlegende Datentypen und Typsicherheit == Die Programmiersprache C kennt folgende grundlegende Datentypen (siehe Kap. [[Programmieren in C/C++: Datentypen | Datentypen]]). Von jedem Datentyp kann ein Zeiger angelegt werden: {| class="wikitable" |- ! Datentyp !! Bsp. für Datentyp !! Bsp. für Zeiger auf Datentyp |- | Ganzzahl || <syntaxhighlight lang="C"> char var; int var; short int var; long int var; long long int var; </syntaxhighlight> || <syntaxhighlight lang="C"> char *ptr; int *ptr; short int *ptr; long int *ptr; long long int *ptr; </syntaxhighlight> |- | Gleitkommazahl || <syntaxhighlight lang="C"> double var; float var; long double var; </syntaxhighlight> || <syntaxhighlight lang="C"> double *ptr; float *ptr; long double *ptr; </syntaxhighlight> |- | Funktionen || <syntaxhighlight lang="C"> void func(void) {} </syntaxhighlight> || <syntaxhighlight lang="C"> void (*pfunc)(void); </syntaxhighlight> |- | Arrays || <syntaxhighlight lang="C"> int arr[10]; float arr[3][3]; </syntaxhighlight> || <syntaxhighlight lang="C"> int (*parr); float (*parr)[3]; void (*pfunc[5])(void); </syntaxhighlight> |- | Strukturen/Unions || <syntaxhighlight lang="C"> struct xyz {int x,y,z}; union abc {int a,b,c}; </syntaxhighlight> || <syntaxhighlight lang="C"> struct xyz *ptr; union abc *ptr; </syntaxhighlight> |- | Aufzählungstyp || <syntaxhighlight lang="C"> enum abc {A,B,C}; </syntaxhighlight> || <syntaxhighlight lang="C"> enum abc *ptr; </syntaxhighlight> |- | Boolescher Datentyp || <syntaxhighlight lang="C"> _Bool var; </syntaxhighlight> || <syntaxhighlight lang="C"> _Bool *ptr; </syntaxhighlight> |- | Komplexe Zahlen || <syntaxhighlight lang="C"> _Complex var; </syntaxhighlight> || <syntaxhighlight lang="C"> _Complex *ptr; </syntaxhighlight> |} C/C++ unterscheidet zwischen vorzeichenbehafteten <code>signed</code> und vorzeichenlosen <code>unsigned</code> ganzzahligen Datentypen. Vorzeichenlose Datentypen können nur positive Zahlen incl. der 0 aufnehmen (Anwendungsbereich bspw. Speicheradressen/Arrayindexe, welche nicht negativ sein können). Deren max. Zahlenwert ergibt sich aus der Datenbreite N des Datentyps 2<sup>N</sup>-1. Ein Vergleich eines vorzeichenlosen Datentyps mit ≥ 0 ist somit immer TRUE: <syntaxhighlight lang="C"> unsigned char var=0; if(var >= 0) //Bedingung ist immer erfüllt, so dass printf("Bedingung erfüllt"); //dieser ggf. vom Compiler wegoptimiert wird! for(var=10; var>=0; var--); //Endlosschleife! 0 dekrementiert ergibt 255 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> int main(int argc,char *argv[]) { unsigned char var=0; if(var >= 0) //Bedingung ist immer erfüllt, so dass printf("Bedingung erfüllt\n"); //dieser ggf. vom Compiler wegoptimiert wird! //Beim Öfffnen des Compiler-Fensters ist die IF-Anweisung nicht farblich //hervorgehoben. Dies bedeutet, dass diese Zeile wegoptimiert wurde und folglich //kein Maschinencode für diese Anweisung erzeugt wurde for(var=10; var>=0; var--) //Endlosschleife! 0 dekrementiert ergibt 255 printf("%u ",var),fflush(stdout); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Vorzeichenlose Datentypen halbieren den verfügbaren Zahlenbereich und 'weisen' dem oberen Wertebereich den negativen Zahlen zu.<br> Wird ein ganzzahliger Datentyp ohne Angabe des Vorzeichentyps (signedness) definiert, so ist diese vorzeichenbehaftet. Bei vorzeichenlosen Variablen muss explizit <code>unsigned</code> vorangestellt werden. Die Voranstellung von <code>signed</code> ist optional. Einzige Ausnahme stellt der Datentyp char dar. Hier gibt die Spezifikation keine default signedness vor, so dass bei Nutzung dieses Datentyps zur Aufnahme von Zahlen immer signed oder unsigned vorangestellt werden sollte!<br> Innerhalb des Formatstrings bei den printf()/scanf() Anweisungen '''muss''' die signedness vom Programmierer händisch berücksichtigt werden. Die Formatanweisung %d und %i interpretieren die übergebenen Zahl als vorzeichenbehaftete Zahl. Soll eine vorzeichenlose Zahl ausgegeben werden, so muss %u verwendet werden: <syntaxhighlight lang="C"> signed int vari=-10; unsigned int varu=3000000000; printf("vari=%d varu=%u",vari,varu); //Korrekt printf("vari=%u varu=%i",vari,varu); //Falsche Werteausgaben! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> int main(int argc,char *argv[]) { signed int vari=-10; unsigned int varu=3000000000; printf("vari=%12d varu=%12u\n",vari,varu); //Korrekt printf("vari=%12u varu=%12i\n",vari,varu); //Falsche Werteausgaben! return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Mit der Definition (dem Anlegen) einer Variablen eines Datentyps wird Speicher entsprechend der Größe des Datentyps reserviert. Optional kann dieser Speicher initialisiert werden. Über den Datentyp wird ausgesagt, wie der Inhalt des Speichers zu interpretieren ist: <syntaxhighlight lang="C"> char var1; //Speicherplatzreservierung von 1 Byte //Inhalt der Speicherstelle wird als Zahl interpretiert //(Hinweis: ASCII-Zeichen sind Zahlen) double var2=47.11; //Speicherplatzreservierung von 8 Byte //Inhalt der Speicherstellen wird als Gleitkommazahl //interpretiert (bestehend aus je einer Ganzzahl für //Mantisse und Exponent) short arr[10]; //Speicherplatzreservierung von 10*2 Byte //Inhalt der 10 Speicherstellen werden als Ganzzahl //interpretiert </syntaxhighlight> Die Funktionalität der Operatoren hängt vom Datentyp der Operanden ab. Der Plus-Operator angewendet auf ganzzahlige Operanden führt eine Ganzzahl Addition aus, angewendet auf gleitkomma Operanden eine Gleitkomma Addition. Ist einer der Operanden ein Zeiger, so wird eine Zeigeraddition angewendet. Für andere Datentypen ist der Plus-Operator nicht definiert, so dass der Compiler einen Fehler wirft. '''Bei der Betrachtung eines Ausdruckes sollte dem genutzten Datentypen folglich eine besondere Aufmerksamkeit zuteil werden''': <syntaxhighlight lang="C"> int vari=47; vari+12; //(int) + (int) → Ganzzahladdition float varf=12.3; 3.1415F+varf; //(float) + (float) → Gleitkommaaddition int *ptr=&vari; ptr+3; //(int *) + (int) → Zeigeraddition int arr[3]; arr+3; //(int (*)) + (int) → Zeigeraddition </syntaxhighlight> Das Ergebnis einer Operation hat ebenfalls einen Datentyp. Eine Ganzzahl Addition gibt bspw. als Ergebnis einen Ganzahl Datentyp zurück, eine Gleitkomma Addtition einen Gleitkomma Datentyp und ein Vergleichsoperator den Datentyp _Bool: <syntaxhighlight lang="C"> int vari1=47; int vari2=11; vari1 + 12 + vari2; //((int)+(int)+(int))→((int)+(int))→(int) 40 < vari1 < 50; //((int)<(int)<(int))→((_Bool=int)<(int))→(_Bool=int) </syntaxhighlight> Wie Operatoren haben auch Funktionen Operanden (in Form von Übergabeparameter). Das Ergebnis eines Funktionsaufrufes wird ebenfalls in Form eines Datentyps zurückgegeben: <syntaxhighlight lang="C"> float add(int par1,par2) {return par1+par2;} int vari1=47; int vari2=11; vari1 + add(var2,12); //(int)+((int),(int)→(float))→(int)+(float)→(float) </syntaxhighlight> Wird auf einen Operator gleichermaßen ein vorzeichenbehafteter und ein vorzeichenloser Operand angewendet, so kann es zu unerwarteten Konvertierungsproblemen führen: <syntaxhighlight lang="C"> unsigned char varu=12; signed char vars=-12; float varf; varf = varu + vars; if(vars < varu) </syntaxhighlight> Sind die Datentypen der Operanden nicht 'kompatibel', so 'passt' der Compiler die Datentypen im Falle von Ganzahl und Gleitkomadatentypen per impliziter Regel an (siehe Kap. [[Programmieren in C/C++: Datentypen#Implizite Typumwandlung | Datentypen:Implizite Typumwandlung]]). Über explizite Typumwandlung (siehe Kap.[[Programmieren in C/C++: Datentypen# Explizite Typumwandlung|Datentypen:Explizite Typumwandlung]]) kann ein Datentyp z.T. in einen anderen Datentyp gewandelt werden. In allen anderen Fällen ist C Typsicher, d.h. der Compiler gibt zumindest eine Warning aus, wenn die Datentypen nicht identisch sind und der Compiler keine implizite Regel anwenden kann. Tipp: * Compiler gibt bei Fehlermeldung oftmals die erwarteten und die vorhandenen Datentyp an. Wenn solch eine Fehlermeldung kommt, sollten sie sich a) überlegen, was wollten sie syntaktisch geschrieben haben und b) was haben sie in der Tat geschrieben. Ein Google nach einer Lösung des Compilerproblems löst zumeist nicht das Problem, sondern umgeht es! Hinweis: * Ein guter Programmierer sollte die Datentypen so wählen, dass: :* die Datentypen zum Inhalt und zum Wertebereiches passen :* keine Datentypkonvertierungen notwendig sind : andernfalls besteht die Gefahr, dass hiermit Laufzeitfehler einprogrammiert werden. * Wenn Datentypkonvertierungen notwendig sind, sollte die explizite Konvertierung genutzt werden == Abhängigkeiten bzgl. Rechnerarchitektur == Kenngrößen von Prozessoren sind unter anderem die Anzahl der Bits für den Datentransport und für Arithmetisch-/Logische-Operationen (→ Datenbreite) und die Anzahl der Bits für die Adressierung des Speichers (→ Adressierungsbreite). Die Datenbreite sagt dabei aus, welche max. Datenbreite ein Maschinenbefehl (zumeist in einem Taktzyklus) transportieren/berechnen kann. Werden programmtechnisch größere Datenbreiten benötigt, bedingt dies, dass hierzu mehrere Maschinenbefehle notwendig sind. Wenn kleinere Datenbreiten notwendig sind, so wird oftmals das Ergebnis abgeschnitten (sofern der Prozessor keine Befehle für den Umgang mit kleineren Datentyp beherrscht): {| class="wikitable" |- ! 32-Bit Datentransport/Operation<br /> bei 32-Bit Datenbreite ! 64-Bit Datentransport/Operation<br /> bei 32-Bit Datenbreite ! 16-Bit Datentransport/Operation<br /> bei 32-Bit Datenbreite |- | <syntaxhighlight lang="C"> int32_t a32,b32; </syntaxhighlight> || <syntaxhighlight lang="C"> int64_t a64,b64; </syntaxhighlight> || <syntaxhighlight lang="C"> int16_t a16,b16; </syntaxhighlight> |- | <syntaxhighlight lang="asm"> // a32=b32; mov eax,b32 mov a32,eax </syntaxhighlight> || <syntaxhighlight lang="asm"> // a64=b64; mov eax ,b64 mov edx ,b64+4 mov a64 ,eax mov a64+4,edx </syntaxhighlight> || <syntaxhighlight lang="asm"> //a16=b16; movz eax,b16 mov a16,ax </syntaxhighlight> |- | <syntaxhighlight lang="asm"> // a32=a32+b32; mov edx, a32 mov eax, b32 add eax, edx mov a32, eax </syntaxhighlight> || <syntaxhighlight lang="asm"> // a64=a64+b64; mov ecx , a64 mov ebx , a64+4 mov eax , b64 mov edx , b64+4 add eax , ecx adc edx , ebx mov a64 , eax mov a64+4, edx </syntaxhighlight> || <syntaxhighlight lang="asm"> // a16=16+b16; movzx eax, a16 mov edx, eax movzx eax, b16 add eax, edx mov a16, ax </syntaxhighlight> |} Die Adressierungsbreite gibt an, mit welcher Bitbreite der Speicher adressiert werden kann: * Bei einem 32-Bit System können 2<sup>32</sup>=4.294.967.295=4Gi&nbsp;Bytes/Speicherstellen adressiert werden * Bei einem 16-Bit System können 2<sup>16</sup>=65.536=64Ki&nbsp;Bytes/Speicherstellen adressiert werden * Bei einem 64-Bit System können 2<sup>64</sup>=18.446.744.073.709.551.616 =16Ei ~18Exa&nbsp;Bytes/Speicherstellen adressiert werden Waren die Datenbreite und die Adressierungsbreite bei den ersten Prozessoren noch unterschiedlich, so sind diese heutzutage zumeist identisch. Bei einem 32-Bit Prozessor bedeutet dies, dass dieser max. 4Gi&nbsp;Bytes Speicherstellenstellen adressieren kann und Maschinenbefehle für den Datentransport und die Berechnung von 32-Bit Datenworten beinhaltet. Die Datenbreite und auch die Adressierungsbereite haben direkten Einfluss auf die Programmiersprache: * Wird defaultmäßig mit größerer Datenbreite gerechnet, als der Prozessor 'von Hause' aus unterstützt, so werden die erzeugten Maschinenprogramme größer und langsamer (Umgedreht bedeutet dies jedoch nicht, dass die Maschinenprogramme kleiner und schneller werden) * Die max. Größe von Verbunddatentypen und Arrays ergibt sich aus der Adressierungsbreite des Prozessors Die Intention der Programmiersprache C/C++ ist, die Prozessorarchitektur optimal zu nutzen. Dementsprechend sind diverse Eigenschaften der Sprache nicht fest spezifiziert, sondern von der Rechnerarchitektur abhängig. === Integer Datentyp === Intention von C/C++ ist, dass der Umgang mit dem Grunddatentyp 'int' möglichst direkt in einen Maschinensprachebefehl umgesetzt werden kann.<br /> Bei einem 16-Bit Prozessor hat der Datentyp int daher eine Breite von 16-Bit und bei einem 32-Bit Prozessor eine Breite von 32-Bit (siehe Kap [[Programmieren in C/C++: Datentypen # Ganzzahlige Datentypen|Datentypen:Ganzahl Datentypen]]). Über vorangestellte Qualifier kann dieser Grunddatentyp verkleinert/vergrößert werden. === Integer Arithmetik === Ganzzahlen haben nur einen begrenzten Wertebereich. Wird dieser bspw. durch eine Addition überschritten (d.h. das Rechenergebnis benötigt zur Darstellung mehr Stellen, als der Datentyp 'hergibt'), so gibt es zwei Vorgehensweisen: * Arithmetischer Überlauf (siehe {{w|arithmetischer Überlauf}}): Die nicht speicherfähigen Stellen werden verworfen, so dass i.d.R. ein falsches Ergebnis erzeugt wird! :Beispiel: :<syntaxhighlight lang="C"> unsigned char a=254,b=3,c; c=a+b; //c ist (254+3)%256=1 c=a*b; //c ist (254*3)%256=250 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { unsigned char a=254,b=3,c1,c2; c1=a+b; //c ist (254+3)%256=1 c2=a*b; //c ist (254*3)%256=250 printf("c1=%hhu c2=%hhu\n",c1,c2); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Sättigungsarithmetik (siehe {{w|Sättigungsarithmetik}}): Alle Operationen laufen innerhalb eines festen Intervalls ab, so dass Überläufe und Unterläufe auf dieses Intervall begrenzt werden: :Beispiel: :<syntaxhighlight lang="C"> unsigned char a=254,b=3,c; c=a+b; //c ist MAX((254+3),255)=255 c=a*b; //c ist MAX((254*3),255)=255 </syntaxhighlight> Die Spezifikation von C macht bezüglich der zu nutzenden Methodik keine Vorgaben, so dass das Handling von der ALU des Prozessors abhängt. Aus Komplexitäts- und Geschwindigkeitsgründen ist dies zumeist der arithmetische Überlauf. Nur bei Spezialprozessoren (z.B. DSP Digital Signal Processor) kommt z.T. die Sättigungsarithmetik zum Einsatz. === Gleitkomma Datentyp und Arithmetik === Für den Umgang mit Gleitkommazahlen bieten einige Prozessoren spezielle Recheneinheiten ({{w|Gleitkommaeinheit}} Floating Point Units FPU) an. Sowohl die Darstellung von Gleitkommazahlen als auch das Verhalten bei Überlauf/Unterlauf ist damit Herstellerabhängig. Um auch diese Einheiten effektiv nutzen zu können, ist die C/C++ Spezifikation in diesem Bereich ebenfalls sehr offen. === Max. Speicherbedarf von Variablen === Die maximale Größe von Arrays/Strukturen/Unions ist in C/C++ von der zugrundeliegenden Rechnerarchitektur abhängig: <syntaxhighlight lang="C"> char a[100000]; //Speicherbedarf=100.000*1Byte=100.000 Bytes //Bei 16-Bit Architektur KO //Ab 32-Bit Architektur OK struct size_16 { char a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_256 { struct size_16 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_4096 { struct size_256 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_65536 { struct size_4096 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_65536 var65536; //Speicherbedarf=65536 Bytes //Bei 16-Architektur KO //Ab 32-Architektur OK </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Zur Darstellung bitte Compiler-Fenster öffnen //und dort den CC65-Compiler für den 6502 Prozessor auswählen char a[100000]; //Speicherbedarf=100.000*1Byte=100.000 Bytes //Bei 16-Bit Architektur KO //Ab 32-Bit Architektur OK struct size_16 { char a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_256 { struct size_16 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_4096 { struct size_256 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_65536 { struct size_4096 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_65536 var65536; //Speicherbedarf=65536 Bytes //Bei 16-Architektur KO //Ab 32-Architektur OK int main(int argc,char *argv[]) { return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Im Falle von globalen Variablen erzeugt der Compiler/Linker eine Fehlermeldung. Werden von diesen Datentypen Variablen als lokale Variablen angelegt, so erzeugt dies zur Laufzeit einen Stackoverflow. === Zeigervariable === Eine Zeigervariable ist eine Variable, die eine Speicheradresse speichert. Die Größe dieses Datentyps hängt von der Adressierungsbreite des Prozessors ab. Unabhängig von dem Datentyp, auf den die Zeigervariable zeigt, ergibt sich folgende Breite: * 4-Byte bei einer 32-Bit Rechnerarchitektur * 8-Byte bei einer 64-Bit Rechnerarchitektur * 2-Byte bei einer 16-Bit Rechnerarchitektur === Datentyp size_t === Die maximale Größe von Arrays/Strukturen/Unions ist in C von der zugrundeliegenden Rechnerarchitektur abhängig. Sie ergibt sich aus der Adressierungsbreite. Da die Datenbreite des Datentyps int zumeist kleiner als die Adressierungsbreite ist, existiert in C/C++ der vorzeichenlose Datentyp size_t.<br /> Alle Funktionen, welche den Speicherbedarf übergeben bekommen, bzw. zurückgeben (bspw. strlen(), memcpy(), sizeof()) , nutzen den Datentyp size_t: <syntaxhighlight lang="C"> //Prototypen size_t strlen(char *str); //Die max. Stringlänge ist durch den //adressierbaren Speicher vorgegeben void *malloc(size_t size); void *memcpy(void *dest, const void *src, size_t n); </syntaxhighlight> Der Datentyp size_t ist in der Header-Datei stddef.h der Standard-C-Library per typedef gesetzt. Im Normalfall muss diese Header-Datei nicht explizit inkludiert werden, da bei Nutzung von z.B. strlen() diese bereits durch die Header-Datei string.h inkludiert wird: <syntaxhighlight lang="C"> typedef unsigned long long size_t; //Bei einer 64-Bit Rechnerarchitektur </syntaxhighlight> Hinweis: * Der Datentyp size_t ist immer ein vorzeichenloser Datentyp (es gibt keine negativen Speicheradressen). * Mit dem Datentype ssize_t wird eine vorzeichenbehaftete Variante zur Verfügung gestellt, welche hilfreich ist, wenn Speicheradresse subtrahiert werden sollen. * Soll der Wert vom Datentyp size_t mittels printf() ausgegeben werden, so ist der 'Length Modifier' z und der 'Conversion Specifier' u zu nutzen: :<syntaxhighlight lang="C"> size_t var=strlen("String"); printf("%zu",var); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc,char *argv[]) { size_t var=strlen("String"); printf("%zu",var); printf("%d",var); //Hier sollte es eine Compiler-Warning geben! return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Boolescher-Datentype/Operatoren == Ursprünglich gab es den booleschen Datentyp in der Programmiersprache C nicht. Mit C99 wurde zwar der Datentyp <code>_Bool</code> eingeführt, dies änderte jedoch nicht den Umgang mit Anweisungen und Operatoren, die einen booleschen Datentyp erwarten/zurückgeben! An allen Stellen, an denen ein boolescher Datentyp erwartet wird (z.B. IF-Abfrage, bei booleschen Operationen) wird der Datentyp Ganzzahl, Gleitkommazahl oder Zeiger erwartet (= Scalar-Type) und ausgewertet. Der hierin gespeicherte Zahlenwert sagt aus, ob diese Zahl als True oder False zu interpretieren ist: * False, wenn Ganzzahl gleich 0 oder Gleitkommazahl gleich 0.0 oder Zeiger gleich NULL * True, wenn Ganzzahl ungleich 0 oder Gleitkommazahl ungleich 0.0 oder Zeiger ungleich NULL Beispiel: <syntaxhighlight lang="C"> int a=3; double b=0.0; int *ptr=&a; while(1); if(a) {} for( ; b && ptr ; ); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=3; double b=0.0; int *ptr=&a; while(0); if(a) {} for( ; b && ptr ; ) {} return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Operatoren, welchen einen booleschen Wert zurückliefern (Vergleichs-Operatoren und Boolesche-Operatoren), liefern ein Integer-Datentyp zurück: * (int)0 für False * (int)1 für True Beispiel: <syntaxhighlight lang="C"> int a=3; int b= (a==3); //b=1 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=3; int b= (a==3); //b=1 printf("%d",b); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} In den if()/for()/while() Anweisungen ist folglich kein explizites Konvertieren eines Ganzzahl-/Gleitkomma-/Zeigerwertes mittels des Vergleichs-Operators in einen Booleschen Wert notwendig: <syntaxhighlight lang="C"> int a; double b; if(a) //entspricht if(a!=0) if(!b) //entspricht if(b==0.0) while(1) //entspricht while(True) for(int lauf=1; lauf ; lauf--); </syntaxhighlight> Umgedreht kann ein boolescher Wert oder auch das Ergebnis einer booleschen Operation direkt mit einer Ganzzahl- oder Gleitkommazahl verknüpft werden: <syntaxhighlight lang="C"> int a=3,b=2; a=a+1 && 7 << 3 & a==3; if( a==1 & b==2) if(3 < a < 9) //Vorsicht, die Schreibweise lässt ein //anderes Verhalten erwarten! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=3,b=2; a=a+1 && 7 << 3 & a==3; printf("%d\n",a); if(a==1 & b==2) printf("true\n"); else printf("false\n"); if(3 < a < 9) if( (a==1) & (b==2)) printf("true\n"); else printf("false\n"); return 0; } | execCompilerOptions=| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Mit C99 wurde der Datentyp <code>_Bool</code> eingeführt. Dieser entspricht weiterhin einem Integerdatentyp mit der Besonderheit, dass beim Zuweisen eines Wertes dieses auf true oder false geprüft wird und Variablen dieses Datentyps nur die Werte 0 oder 1 annehmen können: <syntaxhighlight lang="C"> _Bool var1=12; printf("var1=%d\n",var1); //→ 1 float var2=13.2; var1=var2; printf("var1=%d\n",var1); //→ 1 var1--; //Post/Pre Inkrement/Dekrement in C++ nicht auf Datentyp bool! möglich printf("var1=%s\n",var1?"true(1)":"false(0)"); //→ false </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { _Bool var1=12; printf("var1=%d\n",var1); //→ 1 float var2=13.2; var1=var2; printf("var1=%d\n",var1); //→ 1 var1--; //Post/Pre Inkrement/Dekrement in C++ nicht auf Datentyp bool! printf("var1=%s\n",var1?"true(1)":"false(0)"); //→ false return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Für den einfacheren Umgang mit dem 'neuen' Datentyp wurde in der Header-Datei <code>stdbool.h</code> die Makros <code>true</code> (als Austauschwert für die Ganzzahl 1) und <code>false</code> (als Austauschwert für die Ganzahl 0) definiert. Ergänzend wird hier der Datentyp <code>bool</code> als Alias auf <code>_Bool</code> gesetzt. <syntaxhighlight lang="C"> #include <stdbool.h> bool foo(int par,int min,int max) { if((par >= min) && (par <= max)) return true; else return false; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdbool.h> bool foo(int par,int min,int max) { if((par >= min) && (par <= max)) return true; else return false; } int main(int argc,char *argv[]) { foo(4,3,6); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * In C++ gibt es anstatt des Datentypes <code>_Bool</code> den Datentyp <code>bool</code>. Auch sind die beiden Konstanten <code>true</code> und <code>false</code> ohne zusätzliches Einbinden der Header-Datei vorhanden. Der weitere Umgang ist jedoch identisch zu C. == Literale/Konstanten == Zahlenwerte und Strings im Source-Code werden vom Compiler in binäre Zahlen umgerechnet. Über der Schreibweise/Syntax der Literale/Konstanten wird dem Compiler gesagt, in welchem Zahlenformat die Zahl auf Source-Code Ebene beschrieben ist und welchem Datentyp sie entspricht. Unabhängig wie die Konstanten im Source-Code beschrieben sind, werden die Zahlen intern als binäre Zahlen gespeichert. Beispiele, wie die Zahlen intern gespeichert werden: <syntaxhighlight lang="C"> int var=17; //0000 0000 0000 0000 0000 0000 0001 0001 short var=0x307;// 0000 0011 0000 0111 char var=017; // 0000 1111 int var=-1; //1111 1111 1111 1111 1111 1111 1111 1111 float var=0.0; //0000 0000 0000 0000 0000 0000 0000 0000 float var=1.0; //0011 1111 1000 0000 0000 0000 0000 0000 </syntaxhighlight> === Ganzzahl-Konstanten === Im Allgemeinen ordnet der Compiler einer numerischen, ganzzahligen Konstanten den kleinstmöglichen Datentyp beginnend vom Datentyp integer zu. Sobald der Wert der Konstanten den Wertebereich von integer übersteigt, wird der nächst größere passende Datentyp gewählt. Ergänzend gilt, dass alle Ganzzahl-Konstanten als vorzeichenbehaftete Ganzzahl-Konstanten angesehen werden!<br /> Beispiele für integer Konstanten: <pre> 123 +123 -123 → Formal wird das Minus als Operator angesehen und die positive Zahl 123 negiert 0x123 → Konstante ist in hexadezimaler Schreibweise notiert 0123 → Konstante ist in oktaler Schreibweise notiert 0b011 → Konstante ist in binärer Schreibweise notiert nicht offizieller C-Syntax, wird aber von vielen Compiler unterstützt ab C23-Spezifikation offiziell im C-Syntax enthalten! 6'432'108 → Tausendertrenner Nur in C++ Spezifikation enthalten ab C23-Spezifikation auch im C-Syntax enthalten. 5123123123 → Wertebereich größer als 2^31 so dass automatisch zum nächst größeren Datentyp konvertiert wird </pre> Mit den Suffixen L/l und LL/ll kann der Datentyp long und long long erzwungen werden: <pre> 12L → Konstante wird in eine long Integer Konstante konvertiert 4711LL → Konstante wird in eine Long Long Konstante konvertiert </pre> Mit dem Suffix U/u kann die Konstante explizit auf unsigned gesetzt werden: <pre> 12U → Konstante wird als vorzeichenlose Zahl gesepeichert 4711ULL → Konstante wird in eine vorzeichenlose Long Long Konstante konvertiert </pre> === Char-Konstanten === In einfachen Anführungsstrichen geschriebene ASCII Zeichen werden entsprechend der {{w|American Standard Code for Information Interchange | ASCII-Tabelle}} als Zahlenwert (Datentyp int) dargestellt: <pre> 'A' → Integerkonstante 65 'a' → Integerkonstante 97 … </pre> Über den {{w|Escape-Sequenz|Escape-Operator}} (Zeichen Backslash '\') wird das/die dem ESCAPE Operator folgende Zeichen gesondert interpretiert. Die im Source-Code erhaltene Zeichenfolge wird im Computerprogramm als ein Zahlenwert (Datentyp int) gespeichert. Dies ist u.A. zur Darstellung von ' und " aber auch zur Darstellung der unteren 32 Zeichen der ASCII Tabelle notwendig (Siehe auch {{w|Steuerzeichen}}) <pre> ESCAPE Integer- → Bedeutung / (Terminal)funktionalität Sequence konstante '\0' = 0 → 0 Character = Stringendezeichen '\a' = 7 → Bell (erzeugt auf dem Terminal einen Ton) '\b' = 8 → Backspace (Bewegt den Cursor um eine Position nach links) '\t' = 9 → Horizontal Tab (Bewegt den Curso auf die nächste horizontale Tabulatorposition, Abstand ist Terminalspezifisch) '\n' = 10 → NewLine (Zeilenvorschub) '\v' = 11 → Vertial Tab '\r' = 13 → Carriage Return (Wagenrücklauf, Bewegt den Cursor an den Zeilenanfang) '\"' = 34 → Double Quote '\'' = 39 → Single Quote '\?' = 63 → Question mark '\\' = 92 → Backslash '\f' = 12 → FormFeed (Erzeugt auf dem Terminal/Drucker einen Seitenvorschub) '\ooo' = 0ooo → Oktal, wobei o Digits von 0..7 sein müssen '\xdd' = 0xdd → Hexadezimal, wobei d Digits von 0..9 A..F sein müssen '\udddd' Unicode mit 4 Digits '\Udddddddd' Unicode mit 8 Digits </pre> Beispiel <syntaxhighlight lang="C"> 'A' == 65 == '\101' == '\x41' == '\u0041' == '\U00000041' </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { //Programmiersprache wurde auf C++ gesetzt if('A' == 65) printf("'A' == 65\n"); if('A' == '\101') printf("'A' == '\\101'\n"); if('A' == '\x41') printf("'A' == '\\x41'\n"); if('A' == '\u0041') printf("'A' == '\\u0041'\n"); if('A' == '\U00000041') printf("'A' == '\\U00000041'\n"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true| lang=c++ }} Öffnen im Compiler Explorer] }} Über Prefixe können alternative Zieldatentypen/Konvertierungen erzwungen werden: <pre> u'b' → unicode 16 (nur C++) U'b' → unicode 32 (nur C++) L'b' → wchar_t </pre> Hinweis * Die ASCII-Tabelle basiert auf einer 7-Bit Zeichenkodierung, so dass bspw. die Umlaute 'ä', 'ö' und 'ü' dort nicht kodiert sind. Sollen auch diese Zeichen genutzt werden, so empfiehlt sich der Datentyp wchar_t === Gleitkommakonstanten === Alle Gleitkommakonstanten sind ohne weitere Angaben vom Datentyp double! <pre> 555.12 555. → 555.0 .1 → 0.1 4e2 → 400.0 0x22.11p13 → Konstante in Hexadezimalen Schreibweise (ab C99) </pre> Über Suffixe kann ein alternativer Datentyp erzwungen werden: <pre> 3.0F → Datentyp float 3.0l → Datentyp long double </pre> Hinweis: * Aufgrund der unterschiedlichen Basis zwischen dem menschlichen Zehner-System und dem computerinternen Binär-System entstehen insbesondere bei den Nachkommastellen Rundungsfehler. Die Konstante 0.1f wird durch die Wandlung intern als 1.00000001490116119384765625e-1 dargestellt * Die C-Spec verlangt, dass die binäre Repräsentation von Gleitkommazahlen zur Laufzeit (z.B. durch die Funktion atof() strtod() scanf("%f")) identisch zur der zur Compilezeit ist. Beispiel: :<syntaxhighlight lang="C"> if(3.14==atof("3.14")) printf("muss erfüllt sein"); //3.14 wird vom Compiler in ein Binärwert gewandelt //Der String "3.14" wird zur Laufzeit mittels atof in ein Binärwert gewandelt //Beide Wandlungsergebnisse müssen identisch sein </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { if(3.14==atof("3.14")) printf("muss erfüllt sein\n"); //3.14 wird vom Compiler in ein Binärwert gewandelt //Der String "3.14" wird zur Laufzeit mittels atof in ein Binärwert gewandelt //Beide Wandlungsergebnisse müssen identisch sein printf("Intern wird 3.14 wie folgt dargestellt %14.20f",3.14); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Konstanten Ausdrücke === Ergänzend zu den Zahlenwerten werden auch Ausdrücke durch den Compiler ausgewertet. Als Voraussetzung für die Ausdrücke gilt, dass alle Operatoren Literale/Konstante sein müssen, so dass der Compiler die Berechnung durchführen kann. Als Operatoren können alle im normalem Syntax erlaubten Operatoren (z.B.: +,-,*,/,&,&&,|,||,>>,<<,==,!=) genutzt werden.<br /> Beispiel: <syntaxhighlight lang="C"> int var1=7*3+5; → wird vom Compiler durch 26 ersetzt int var2=(4710+(8-1))&-8; → wird vom Compiler durch 4712 ersetzt var1=4*4*var1+77*(77%3); → wird vom Compiler durch 16 * var1 + 154 ersetzt </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { int var1=7*3+5; //→ wird vom Compiler durch 26 ersetzt int var2; var2=(4710+(8-1))&-8; //→ wird vom Compiler durch 4712 ersetzt var1=4*4*var1+77*(77%3); //→ wird vom Compiler durch var1 * 16 + 154 ersetzt return 0; } | execCompilerOptions=-Wall| h=g| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Konform zur C-Spezifikation bieten einige Compiler weitere Operatoren aus der math.h Library an (z.B. sin(), cos(), ...). Bestehen die Aufrufparameter aus Konstanten, so ersetzt der Compiler den Ausdruck durch die 'Ergebnis'-Konstante: :<syntaxhighlight lang="C"> int var3=sin(1.0)*10; →wird vom Compiler durch 8 ersetzt </syntaxhighlight> * Konstanten Ausdrücke werden durch den Präprozessor ausgewertet, so dass dieser die Ergebnisse ebenfalls nutzen kann: :<syntaxhighlight lang="C"> #define BUF_SIZE 512 #if (BUF_SIZE & (BUF_SIZE -1)) != 0 #endif </syntaxhighlight> === String Konstanten === Stringkonstanten erzeugen ein Array von Characters. Mit dem abschließenden Hochkommata wird das Array um ein Stringendezeichen ergänzt: <pre> "abc" → (char []) {'a','b','c','\0'} </pre> Adjacent Strings Konstanten werden vom Compiler zu einer String-Kontante zusammengefasst, so dass nur ein Stringendezeichen vorhanden ist: <pre> "xxx" "yyy" → (char []) {'x','x','x','y','y','y','\0'} </pre> Über Prefixe können alternative Zieldatentypen/Konvertierungen erzwungen werden: <pre> L"string" → (wchar_t[7]){L's',L't',L'r' …) </pre> Über Postfixes können in C++ Objekte erzeugt werden: <pre> "string"s → erzeugt einen String vom Datentyp std::string "string"sw → Erzeugt einen String vom Datentyp std::string_view </pre> String Konstanten werden Compilerintern über unnamed Variablen realisiert, welche als globale Variable angelegt werden und per default const sind: <syntaxhighlight lang="C"> printf("Wert=%d",4); //entspricht const char unnamed1[]="Wert=%d"; printf(unnamed1,4); //String Konstanten sind per Default Konstant char *str="hallo"; //Typkonflikt!, da "hallo" vom Datentyp const char[] ist str[0]='H'; //Laufzeitfehler, da nun schreibender Zugriff auf im //Readonly Speicher angelegt Variable. </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { printf("Wert=%d\n",4); //entspricht const char unnamed1[]="Wert=%d\n"; printf(unnamed1,4); fflush(stdout); //Zur Darstellung der Ausgabe, da nachfolgend //das Programm abstürzt und die gepufferte Ausgabe //nicht zur Anzeige gebracht wird //String Konstanten sind per Default Konstant char *str="hallo"; //Typkonflikt!, da "hallo" vom Datentyp const char[] ist str[0]='H'; //Laufzeitfehler, da nun schreibender Zugriff auf im //Readonly Speicher angelegt Variable. return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Für doppelte String Konstanten wird nur einmal Speicher reserviert: <syntaxhighlight lang="C"> const char *str1="hallo"; const char *str2="hallo"; if(str1==str2) printf("Identische Startadressen"); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { const char *str1="hallo"; const char *str2="hallo"; if(str1==str2) printf("Identische Startadressen"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Initialisierungsliste / Compound Literal == Arrays, Strukturen und Unions bestehen zumeist aus mehreren Elementen. Zur Initialisierung solcher Variablen werden die Initialisierungswerte in geschweiften Klammern als Initialisierungsliste zusammengefasst. <code> Syntax: {Initialisierungsliste} </code> Für eine Initialisierungsliste wird kein Speicher vorgehalten. Vielmehr wird bei der Variablendefinition die Variable direkt mit dem Inhalt der Liste initialisiert. Der Datentyp der Initialisierungsliste ergibt sich aus dem Datentyp der zu initialisierenden Variable: <syntaxhighlight lang="C"> int arr[5] = { 1,2,3,4,5 }; struct xyz { int x,y,z;}; //Definition einer Struktur struct xyz var = { 1,2,3 }; </syntaxhighlight> Wird der Initialisierungsliste ein Datentyp in runden Klammern vorangestellt, so wird hiermit eine 'unnamend' Variable/Objekt, ein Compound Literal erstellt: <code> Syntax: (type) {Initialisierungsliste} </code> Ein Compound Literal entspricht einer anonymen Variablen des angegebenen Datentyps. Wie bei einer normalen Variablendefinition wird hier ebenfalls eine Variable angelegt und diese mit den Initialisierungswerten initialisiert. Im Unterschied zu einer normalen Variable kann auf solch eine Variable im Nachgang nicht mehr zugegriffen werden. Der Rückgabewert eines Compound Literals entspricht somit dem einer Variablen.</br> Compound Literale bieten sich überall dort an, wo Variablen nur für einen einmaligen Zweck angelegt werden (bspw. bei der Parameterübergabe von Funktionen): <syntaxhighlight lang="C"> struct point {int x; int y;}; drawline((struct point){1,2},(struct point){2,3}); printarray((int []){1,2,3,4}); //entsprechen struct point unnamed1={1,2},unnamed2={2,3}; drawline(unnamed1,unnamed2); int unnamed3[]={1,2,3,4}; printarray(unnamed3); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct point {int x,y;}; void drawline(struct point start,struct point end) { printf("Linie von (%d,%d) nach (%d,%d)\n",start.x,start.y,end.x,end.y); } void printarray(int arr[4]) { printf("[ "); for(size_t idx=0;idx<4;idx++) printf("%d ",arr[idx]); printf("]\n"); } #include <stdlib.h> int main(int argc,char *argv[]) { struct point {int x; int y;}; drawline((struct point){1,2},(struct point){2,3}); printarray((int []){1,2,3,4}); //entsprechen struct point unnamed1={1,2},unnamed2={2,3}; drawline(unnamed1,unnamed2); int unnamed3[]={1,2,3,4}; printarray(unnamed3); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Über den Adressoperator kann auch die Adresse der anonymen Variablen ermittelt werden. In diesem Falle ist dann der Gültigkeitsbereich/-dauer des Compound Literals zu berücksichtigen. Wird eine Compound Literals außerhalb eines Block-Scopes angelegt, so entspricht sie einer globalen Variable, andernfalls einer lokalen Variablen. Außerhalb des Gültigkeitsbereiches verliert die Adresse auf solch eine Variable ihre Gültigkeit: <syntaxhighlight lang="C"> drawlinep( &(struct point){1,2},&(struct point){2,3}); //entspricht struct point unnamed1={1,2},unnamed2={2,3}; drawlinep( &unnamed1, &unnamed2); struct point1, *point2; { //Block-Scope, zwecks Darstellung von lokalen Variablen point1= (struct point){1,2}; //Compound Literal entspricht hier //Initialisierungswert für point1 point2=&(struct point){3,4}; //Compound Literal ist nur in diesem //Block gültig drawlinep(&point1 /*OK*/, point2 /*OK*/); } drawlinep(&point1 /*OK*/, point2 /*KO*/); //Zeiger zeigt auf nicht mehr //gültigen Speicherbereich </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct point {int x,y;}; void drawlinep(struct point *start,struct point *end) { printf("Linie von (%d,%d) nach (%d,%d)\n",start->x,start->y,end->x,end->y); } #include <stdlib.h> int main(int argc,char *argv[]) { drawlinep( &(struct point){1,2},&(struct point){2,3}); //entspricht struct point unnamed1={1,2},unnamed2={2,3}; drawlinep( &unnamed1, &unnamed2); struct point point1, *point2; { //Block-Scope, zwecks Darstellung von lokalen Variablen point1= (struct point){1,2}; //Compound Literal entspricht hier //Initialisierungswert für point1 point2=&(struct point){3,4}; //Compound Literal ist nur in diesem //Block gültig drawlinep(&point1 /*OK*/, point2 /*OK*/); } drawlinep(&point1 /*OK*/, point2 /*KO*/); //Zeiger zeigt auf nicht mehr //gültigen Speicherbereich } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * Compound-Literal sind per Default keine Konstanten, können also zur Laufzeit geändert werden (siehe Kap. [[Programmieren in C/C++: DatentypeSpecifier#Const Type Qualifier|DatentypeSpecifier:Const Type Qualifier]]): :<syntaxhighlight lang="C"> float *arr=(float []){1.1,2.2,3.3}; //Kein Typkonflikt arr[0]=47.11; //Änderung des 'Konstanten' arr[0] ist möglich </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { float *arr=(float []){1.1,2.2,3.3}; //Kein Typkonflikt arr[0]=47.11; //Änderung des 'Konstanten' arr[0] ist möglich return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Die geschweiften Klammern <code>{ }</code> sind nicht mit dem Block-Operator (siehe [[Programmieren in C/C++: Grundlagen#Block / Compound-Statement | Block / Compound-Statement]]) zu verwechseln. Werden die geschweiften Klammern bei der Initialisierung von Variablen genutzt, dann beschreibt der Inhalt der geschweiften Klammern eine Initialisierungsliste. Wird diesen ein Datentyp vorangestellt, dann wird hiermit eine Compound Literal definiert. == Variableninitialisierung == Mit der Definition einer Variable kann diese optional initialisiert werden. Der tatsächliche Zeitpunkt der Variableninitialisierung (zur Laufzeit oder zur Compilezeit) und damit die Ausführung der Initialisierung (Maschinensprachebefehle oder Speichervorbelegung) hängt von der Gültigkeit/Sichtbarkeit der Variablen ab(siehe [[Programmieren in C/C++: Grundlagen#Gültigkeit/Sichtbarkeit von Variablen| Gültigkeit/Sichtbarkeit von Variablen]]). === Globale + Static lokale Variablen === Globale und statisch globale Variablen werden in einem während der Laufzeit des Programms festen Speicherbereich gehalten. Zum Startzeitpunkt des Programms ist der Speicherplatz solch einer Variable mit dem Initialisierungswert gefüllt, so das bei erstmaliger Nutzung dieser Variablen diese ihre Initialisierungswerte enthalten. Die Belegung des Speicherplatzes erfolgt durch den Compiler, so dass als Initialisierungswerte / Inhalt der Initialisierungsliste nur Konstanten oder Konstanten-Ausdrücke (siehe [[Programmieren in C/C++: Grundlagen#Literale/Konstanten | Literale/Konstanten]]) erlaubt sind: <syntaxhighlight lang="C"> int g=1; //Speicherstelle der Variable g wird //mit 1 belegt short array[3]={1,1+1, sin(0.0)}; //Speicherstellen des Arrays wird //mit 1, 2 und 0 (Funktion sin() wird zur //Compilezeit ausgeführt) belegt </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> double sin(double); //DJ: Include-Anweisung in wikibooks schlägt fehlt int g=1; //Speicherstelle der Variable g wird //mit 1 belegt short array[3]={1,1+1, sin(0.0)}; //Speicherstellen des Arrays wird //mit 1, 2 und 0 (Funktion sin() wird zur //Compilezeit ausgeführt) belegt int main(int argc,char *argv[]) { printf("%hd %hd %hd\n",array[0],array[1],array[2]); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Nicht initialisierte globale und static lokale Variablen werden mit 0 initialisiert! D.h. die Speicherstellen dieser Variablen werden mit dem Wert 0 vorbelegt:: <syntaxhighlight lang="C"> int f; //f hat den Wert 0 double arr[10]; //Alle Elemente von arr werden mit 0.0 initialisiert! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int f; //f hat den Wert 0 double arr[10]; //Alle Elemente von arr werden mit 0.0 initialisiert! int main(int argc,char *argv[]) { printf("f=%d\n",f); printf("%f %f %f\n",arr[0],arr[1],arr[2]); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Lokale Variable === Der Speicherplatz für lokale Variable wird auf dem Stack zur Verfügung gestellt. Mit jedem öffnenden Block-Scope wird Speicher für die innerhalb dies Block-Scopes vorhandenen Variablen vom Stack nach dem LIFO Prinzip reserviert und mit der Variablendefinition Maschinencode zur Initialisierung der Speicherstellen ausgeführt (sofern Variable einen Initialisierungswert hat): <syntaxhighlight lang="C"> { //Öffnende Klammer erzeugt Maschinencode zur Speicherreservierung //von 4 Bytes (für int) und 8 Bytes (für double) int var1=12; //erzeugt Maschinencode zur Initialisierung //der ersten 4 Byte mit dem Wert 12 double var2=sin(f); //erzeugte Maschinencode, welche zunächst //die Funktion sin() mit dem Übergabewert f //aufruft und dessen Rückgabewert in die //nächsten 8 Byte des reservierten Speichers //kopiert ... { //siehe zuvor int var3=var1; //siehe zuvor double var4=var2+var1; } //siehe nachfolgenden } //Freigabe des zuvor reservierten Speichers </syntaxhighlight> Dies gilt auch für Funktionsaufrufe. Mit der öffnenden geschweiften Funktionsklammer wird ebenfalls Speicher reserviert: <syntaxhighlight lang="C"> void foo(int par) { //Öffnende Funktionsklammer erzeugt Maschinencode zur Speicherreservierung //von 4 Bytes (für (Übergabe)Variable par und 4 Bytes für Variable var int var; //Da keine Initialisierung vorhanden ist wird auch //kein Maschinencode zur Initialisierung ausgeführt { //Öffnende Klammer erzeugt Maschinencode zur Speicherreservierung //von 4 Byte für Variable x int x; ... </syntaxhighlight> Aufgrund der mit der Initialisierung bedingten Erzeugung von Maschinencode können die Initialisierungswerte/Inhalte der Initialisierungsliste bei lokalen Variablen aus beliebigen Ausdrücken bestehen und müssen keine Konstanten oder Konstanten Ausdrücke sein: <syntaxhighlight lang="C"> void foo(float f,float g) { float summe=f+g; //Initialisierungswerte float arr[3] = {f+f,g-f,sin(f)}; //werden zur Laufzeit berechnet } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> #include <math.h> //fuer sinf() void foo(float f,float g) { float summe=f+g; //Initialisierungswerte float arr[3] = {f+f,g-f,sinf(f)}; //werden zur Laufzeit berechnet printf("%f\n",(double)summe); printf("%f %f %f\n",(double)arr[0],(double)arr[1],(double)arr[2]); } int main(int argc,char *argv[]) { foo(3,4); return 0; } | execCompilerOptions=-Wall -lm| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Dieser Maschinencode wird jedes Mal ausgeführt, wenn die dazugehörige Anweisung abgearbeitet wird und bedingt dementsprechend Rechenzeit. Zehnmaliges Ausführen einer Funktion oder zehnmaliges Öffnen eines Block-Scopes innerhalb einer For-Schleife führt zur zehnmaligen Ausführung der oben genannten Sachverhalte: <syntaxhighlight lang="C"> void foo(int); void var(void) { for(int lauf=10; lauf>0; lauf--) { //zehnmaliges Reservieren von Speicher int var=lauf*2; //zehnmalige Initialisierung foo(var); } //Freigabe des Speichers } void foo(int par) { //zehnmaliges Reservieren von Speicher int var=12; //zehnmalige Initialisierung } //Freigabe des Speichers </syntaxhighlight> Nicht initialisierte lokale Variablen werden nicht initialisiert, d.h. keine zusätzlichen Maschinenbefehle zum Initialisieren erzeugt. Der Variablenwert entspricht dann einem 'Zufallswert' oder korrekter gesagt dem Inhalt der Variablen, welcher zuvor der Speicherstelle zugewiesen war: <syntaxhighlight lang="C"> int first(void) { int var_first=7; return var_first; } int second(void) { int var_second; //Variable var_second bekommt den identischen return var_second; //Speicherbereich wie var_first zugwiesen //und damit auch dessen zuletzt gültigen Wert } int main(int argc, char *argv[]) { int var1=first(); //var1 beinhaltet Wert 7 int var2=second(); //var2 beinhaltet Wert 7 printf("var_foo=%d\n",var1); printf("var_far=%d\n",var2); return 0; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> int first(void) { int var_first=7; return var_first; } int second(void) { int var_second; //Variable var_second bekommt den identischen return var_second; //Speicherbereich wie var_first zugwiesen //(und damit auch dessen zuletzt gültigen Wert) } int main(int argc, char *argv[]) { printf("%d\n",second()); //Zufallswert (0, da Stack mit 0 initialisiert ist) printf("%d\n",first()); //Stack belegen printf("%d\n",second()); //Zufallswert (7, da Speicherstelle zuvor mit 7 return 0; //belegt wurde) } | execCompilerOptions=| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Wird eine Variableninitialisierung mit einer switch oder goto Anweisung übersprungen, so wird zwar die Variable angelegt (Speicherplatz reserviert), jedoch die Maschinenbefehle zur Initialisierung dieser Variablen nicht ausgeführt (siehe auch [[Programmieren in C/C++: Grundlagen# Switch-Anweisung|Switch-Anweisung]] und [[Programmieren in C/C++: Grundlagen# Label + Goto|Label + Goto]]). Die Variable enthält dann einen Zufallswert: <syntaxhighlight lang="C"> switch(value) { case 0: int lok=7; printf("%d",lok); //OK, lok beinhaltet den Wert 7 break; default: printf("%d",lok); //KO, Variable lok vorhanden, //aber nicht initialisiert. D.h. Ausgabe einer break; //Zufallszahl } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> void foo(int value) { switch(value) { case 0: int lok=7; printf("%d\n",lok); //OK, lok beinhaltet den Wert 7 break; default: printf("%d\n",lok); //KO, Variable lok vorhanden, //aber nicht initialisiert. D.h. Ausgabe einer break; //Zufallszahl } } void far(void) { int var1=4711; int var2=1799; printf("Marke: %d, Erscheinungsjahr: %d\n",var1,var2); } int main(int argc,char *argv[]) { foo(2); //Zufallswert (0, da Stack mit 0 initialisiert ist) foo(0); //Initialisierungswert far(); //Stack belegen foo(2); //Zufallswert return 0; } | execCompilerOptions=| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Bei erstmaligem Funktionsaufruf kann eine nicht initialisierten lokale Variablen den Wert 0 beinhalten (Stackframe wird mit Programmstart auf 0 gesetzt). Beim nächsten Aufruf der Funktion ist zumeist die Speicherstelle der lokalen Variablen mit anderen Werten gefüllt worden, so dass nun ein anderer 'Zufallswert' als 'Initialisierungswert' enthalten ist === C++ === In C++ ist ergänzend die Initialisierung einer Variablen über () möglich. Bei Objekten wird hierüber der zugehörige Konstruktor aufgerufen. Bei primitiven Datentypen entspricht der Wert in den Klammern dem Initialisierungswert: <syntaxhighlight lang="C++"> int variable(10); //Bei primitiven Datentype entspricht dies //int variable=10; struct test { int a; test(int par) {a=par;} //Konstruktor der Struktur test }; struct test test(4); //Konstruktor test(int par) wird aufgerufen struct test test(4,5); //KO, kein passender Konstruktor vorhanden </syntaxhighlight> === Sonstiges === Folgende weitere Sachverhalten gilt es bzgl. Variableninitialisierung zu berücksichtigen: * Nach C-Spezifikation ist eine Initialisierung von Variablen nicht notwendig. Es liegt folglich kein Fehler vor, wenn auf eine nicht initialisierte Variable lesend zugegriffen wird. Ungeachtet der C-Spezifikation überprüft der Compiler mit dem Schalter '-Wall' diesen Sachverhalt und gibt eine Warning aus * Deklarationen/Prototypen können keinen Initialisierungswert enthalten <syntaxhighlight lang="C++"> extern int var=7; //Fehlerhaft </syntaxhighlight> * Const und lokale Static Variablen sollten initialisiert werden, auch wenn C in diesem Fall keinen Fehler meldet! <syntaxhighlight lang="C++"> const int konstante; //Syntaktisch OK, Initialisierungswert fraglich! static int statisch; </syntaxhighlight> == Anweisung (Statement) & Expression == Eine Anweisung (Statement) stellt entsprechend dem Wikipedia Artikel {{w|Anweisung_(Programmierung) | Anweisung}} ''"ein in der Syntax einer Programmiersprache formulierte einzelne Vorschrift dar, die im Rahmen der Abarbeitung des Programms auszuführen ist"''. Entsprechend der C-Spezifikation [C11 6.8] kann eine Anweisung aus: : labled-statement: Eine Sprungmarke für die Switch- und die Goto-Anweisung : compound-statement: siehe nachfolgendes Kapitel : expression-statement: siehe nachfolgendes Kapitel : selection-statement: Eine if() oder switch() Anweisung : iteration-statement: Eine while(), do while() oder eine for() Anweisung : jump-statement: Eine goto, break, continue oder return Anweisung Die einzelnen Statements können dabei aus weiteren Statements bestehen. === Ausdruck (Expression) === Entsprechend der C-Spezifikation [C11 6.5] ist ein Ausdruck eine Folge von Operatoren und Operanden, die die Berechnung eines Werts angibt, ein Objekt oder eine Funktion bezeichnet, Nebenwirkungen erzeugt oder eine Kombination davon ausführt. Die Wertberechnungen der Operanden eines Operators werden vor der Wertberechnung des Ergebnisses des Operators sequenziert (siehe auch {{w|lang=en|Expression_(computer_science)|Expression}}). Beispiele: <syntaxhighlight lang="C"> a=sqrt(a*a+b*b); //Ausdruck mit Nebenwirkungen int func(int par) { a++; return par*2;} b=func(1)*func(2); //Ausdruck mit undefinierten Verhalten a=++a + 1; a=for(lauf=10;lauf>0;lauf--); //for-Anweisung ist kein Ausdruck //d.h. liefert keinen Wert zurück </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> double sqrt(double); //DJ: Include-Anweisung in wikibooks schlägt fehlt int a=0; int func(int par) { a++; return par*2; } int main(int argc,char *argv[]) { int a=4,b=7; a=sqrt(a*a+b*b); //Ausdruck mit Nebenwirkungen b=func(1)*func(2); //Globale Variable a wird geändert! //Ausdruck mit undefinierten Verhalten a=++a + 1; //Kein Ausdruck a=for(lauf=10;lauf>0;lauf--); //for-Anweisung ist kein Ausdruck //d.h. liefert keinen Wert zurück return 0; } | execCompilerOptions=-Wall -lm| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Discarded Value === Discarded Value sind Ausdrücke, dessen Ergebnisse nicht verwendet werden (also keiner Variablen zugewiesen werden). Ergebnisse von Ausdrücken, die nicht verwendet werden, führen nicht zu einer Fehlermeldung: <syntaxhighlight lang="C"> int a=7; a; //Variable a wird gelesen, der Wert jedoch verworfen 7; //Konstante wird verworfen a+7; //Ergebnis wird Berechnet und verworfen printf("hallo"); //Printf hat einen Rückgabewert, dessen Wert verworfen wird </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=7; a; //Variable a wird gelesen, der Wert jedoch verworfen 7; //Konstante wird verworfen a+7; //Ergebnis wird Berechnet und verworfen printf("hallo"); //Printf hat einen Rückgabewert, dessen Wert verworfen wird return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * Soll bewusst der Rückgabewert verworfen werden, so kann/sollte mit dem explizten Cast auf (void) der Rückgabewert explizit 'verworfen' werden. Dies ist u.A. hilfreich bei Variablen, die (noch) nicht benutzt werden und der Compiler die Warning "unused Variable" ausgibt: :<syntaxhighlight lang="C"> (void)a; //Zur Vermeidung von Compiler-Warnings "Unused Variable" (void)(a+7); //hier eine explizte 'Ansage' der Verwerfung des Wertes (void)func(); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int func(void) { return 4711; } int main(int argc,char *argv[]) { int a; (void)a; //Zur Vermeidung von Compiler-Warnings "Unsued Variable" (void)(a+7); //hier eine explizte 'Ansage' der Verwerfung des Wertes (void)func(); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Mit der Anweisung <nowiki>[[nodiscard]]</nowiki> (ab C++17, ab C23) wird der Compiler angewiesen, dass der Aufrufer einer Funktion mit Rückgabewert der Rückgabewert entgegenzunehmen ist. Wird der Rückgabewert verworfen, so gibt der Compiler eine Fehlermeldung aus: :<syntaxhighlight lang="C"> [[nodiscard]] int Client(int socket); Client(5); ////Fehlermeldung, da Rückgabewert nicht verwendet wird </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> [[nodiscard]] int Client(int socket) { return socket+1; } int Server(int socket) { return socket+1; } int main(int argc,char *argv[]) { Server(5); //keine Fehlermeldung Client(5); //Fehlermeldung, da Rückgabewert nicht verwendet wird return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Java kennt Dicarded Values nicht. Ausnahme, es handelt sich um einen Funktionsaufruf, dessen Rückgabewert nicht genutzt wird. === Sequence Point === Ein Sequenzpunkt (u.A. das abschließende Semikolon am Ende der Anweisung) ist nach dem Wikipedia Artikel {{w|lang=en|Sequence_point|Sequence Point}} definiert als der Punkt in der Ausführung eines Computerprogramms, an dem garantiert ist, dass alle Nebenwirkungen früherer Bewertungen durchgeführt wurden und noch keine Nebenwirkungen von nachfolgenden Bewertungen durchgeführt wurden.<br /> Sequenzpunkte sind beispielsweise dann von Interesse, wenn dieselbe Variable innerhalb eines einzelnen Ausdrucks mehr als einmal geändert wird und die Ausführungsreihenfolge der Operationen nicht sauber spezifiziert ist.<br /> Ein oft zitiertes Beispiel ist der C-Ausdruck 'i=i++;'. Der Sequence Point garantiert, dass alle Operationen (hier Zuweisung und Postinkrement) ausgeführt sind. Jedoch ist die Ausführungsreihenfolge dieser beiden Operationen nicht spezifiziert. In Abhängigkeit des Zeitpunktes der Ausführung des Postinkrementes (vor oder nach der Zuweisung) kann i unterschiedliche Werte annehmen. In C und C++ führt die Auswertung eines solchen Ausdrucks zu undefiniertem Verhalten. Andere Sprachen, wie z. B. C#, definieren den Vorrang des Zuweisungs- und des Inkrementoperators so, dass das Ergebnis des Ausdrucks i=i++ garantiert ist.<br/> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int i=5; i=i++; printf("%d",i); //Gerne anderen Compiler auswählen, z.B. x86-64 icc... return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Weitere Sequence Points: * Beim ?-Operator stellt sowohl das ? als auch der : ein Sequenz Point dar. Zunächst muss der linke Ausdruck vollständig bearbeitet werden, bevor einer der beiden Bedingungen bearbeitet wird * Bei der logischen UND / ODER Funktion stellen der Operator ein Sequenz Point dar. Erst wird der linke Operand vollständig ausgeführt und ausgewertet, bevor (ggf.) der rechte Operand ausgewertet wird (siehe [[Programmieren in C/C++: Grundlagen#Logische Verknüpfungen | Logische Verknüpfungen]]) * Beim Komma-Operator stellen der Komma ein Sequence-Point dar (siehe [[Programmieren in C/C++: Grundlagen#Komma-Operator | Komma-Operator]]) • und weitere (siehe Appendix der C-Spec) Operationen, bei denen die Ausführungsreihenfolge nicht spezifiziert ist: * Bei Funktionsaufrufen ist die Abarbeitungsreihenfolge der Parameter nicht spezifiziert, so dass bspw.: :<syntaxhighlight lang="C"> //Aufrufruf einer Funktion, deren Parameter sich aus Funktionsaufrufen //ergeben (*pf[f1()]) (f2(), f3() + f4()); //pf -> Array von Funktionszeigern //Die Funktionen f1,f2,f3 und f4 können in einer beliebigen Reihenfolge //aufgerufen werden </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int f1(void) { printf("f1 called\n"); return 1; } int f2(void) { printf("f2 called\n"); return 2; } int f3(void) { printf("f3 called\n"); return 3; } int f4(void) { printf("f4 called\n"); return 4; } void func1(int par1,int par2) { printf("func1(%d,%d) called\n",par1,par2); } void func2(int par1,int par2) { printf("func2(%d,%d) called\n",par1,par2); } int main(int argc,char *argv[]) { void (*pf[2])(int,int)={func1,func2}; //Aufrufruf einer Funktion, deren Parameter sich aus Funktionsaufrufen //ergeben (*pf[f1()]) (f2(), f3() + f4()); //pf -> Array von Funktionszeigern //Die Funktionen f1,f2,f3 und f4 können in einer beliebigen Reihenfolge //aufgerufen werden //Gerne anderen Compiler auswählen, z.B. x86-64 icc... return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Per Postinkrement/-dekrement Operator sagt aus, dass für die eigentliche Operation der Wert der Variablen genutzt wird und im Anschluss die Variable erhöht / erniedrigt werden soll. Nach C-Spezifikation [C11 6.5.2.4] muss dies spätestens vor dem nächsten Sequence Point erfolgt sein. Der genaue Zeitpunkt innerhalb des Sequence Points ist jedoch nicht vorgegeben: :<syntaxhighlight lang="C"> int a=7; int b=a++ + a; //Ergebnis Abhängig, ob das Postinkrement vor der Addition //oder als letztes ausgeführt wird. a=a++ + 1; //dito </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=7; int b=a++ + a; //Ergebnis Abhängig, ob das Postinkrement vor der Addition //oder als letztes ausgeführt wird. a=a++ + 1; //dito printf("a=%d b=%d\n",a,b); //Gerne anderen Compiler auswählen, z.B. x86-64 icc... return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Abarbeitungsreihenfolge === Die Abarbeitungsreihenfolge der Operatoren wird durch die Prioritätenliste/Rangfolge (siehe [[C-Programmierung: _Liste_der_Operatoren_nach_Priorität| C-Programmierung:Liste der Operatoren nach Priorität]]) vorgegeben. Operatoren mit höherer Priorität werden vor Operatoren mit niedriger Priorität ausgeführt: <syntaxhighlight lang="C"> //Der Ausdruck c = sizeof(x) + ++a / 3; //wird aufgrund der Prioritäten wie folgt ausgewertet: c= (sizeof(x)) + ( (++a) / 3); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=2; int c; int x=0; c = sizeof(x) + ++a / 3; printf("a=%d c=%d\n",a,c); //Wird aufgrund der Prioritäten wie folgt ausgewertet: a=2; c= (sizeof(x)) + ( (++a) / 3); printf("a=%d c=%d\n",a,c); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Bei identischer Priorität ergibt sich die Abarbeitungsreihenfolge aus der Assoziativität (L-R oder R-L): <syntaxhighlight lang="C"> a=33 / 5 / 2; //Wird aufgrund der Assoziativität wie folgt ausgewertet. //a= (33 / 5) / 2; //und damit zu 3 und nicht zu 16 (bei 33 / (5/2)) ausgewertet. a = b = c = d*2; //→ a=(b=(c=(d*2))); a = b = 1+c = d; //→ a=(b=((1+c)=d)); //Compilerfehler, da //1+c kein lvalue ist </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a; a=33 / 5 / 2; printf("a=%d\n",a); //Wird aufgrund der Assoziativität wie folgt ausgewertet. //a= (33 / 5) / 2 printf("a=%d\n",a); //und damit zu 3 und nicht zu 16 (bei 33 / (5/2)) ausgewertet. int b,c,d=8; a = b = c = d*2; //→ a=(b=(c=(d*2))); printf("a=%d b=%d c=%d d=%d\n",a,b,c,d); a = b = 1+c = d; //→ a=(b=((1+c)=d)); //Compilerfehler, da //1+c kein lvalue ist return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Block / Compound-Statement === Ein Block oder Compound-Statement fasst Vereinbarungen und Anweisungen zu 'einer' Anweisung/Statement zusammen. Es kann überall dort eingesetzt werden, wo nur eine Anweisung erlaubt ist. <code> Syntax: {Declaration-or-statement-list/textsuperscript<sub>OPT</sub>} </code> Ein Block wird nicht wie bei einer Anweisung mit einem Semikolon abgeschlossen (Das angehängte Semikolon wäre dann eine separate leere Anweisung!). <br /> Ein Block hat blockweite Sichtbarkeit (siehe [[Programmieren in C/C++: Grundlagen#Blockweite Sichtbarkeit | Blockweite Sichtbarkeit]]), so dass hier definierte Variablen nur hier gültig sind. Deklarationen sind ebenfalls nur in dem Block gültig. <syntaxhighlight lang="C"> for(..) Anweisung; //For-Schleife führt nur diese eine Anweisung aus for(…) {Block} //For-Schleife führt Block (als eine Anweisung) aus if(..) Anweisung; else Anweisung; //IF-Anweisung führt nur 'eine' //Anweisung aus if(..) {Block} else {Block} //IF-Anweisung führt Block aus if( ) {Block}; else {Block}; //Semikolon ist eine separate //Leer-Anweisung, so dass else //nicht zur IF-Anweisung zugeordnet //werden kann (2 Anweisungen vor Else) void foo(void) { int var1; { //Block innerhalb von Block als Strukturierungswerkzeug int var2; struct xyz{int x,y,z}; //Defintion eines Datentyps im Block struct xyz var3; } struct xyz var4; //KO, Datentyp hier nicht mehr bekannt } </syntaxhighlight> Die GNU-C Reference (nicht C++) erlaubt es, Funktionen innerhalb von Blöcken (und damit auch innerhalb von Funktionen) zu definieren. Diese innere Funktion steht dann nur in diesem Block zur Verfügung und kann ergänzend auf Variablen des umgebenden Blockes zugreifen: <syntaxhighlight lang="C"> void foo(void) { { int label=1; //Funktion innerhalb einer Funktion void dummy(void){ label++; //Zugriff auf Variablen des umschließenden Blockes } dummy(); //Aufruf der nur in diesem Block gültigen Funktion } dummy(); //KO, Funktion hier nicht mehr gültig } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void foo(void) { { int label=1; //Funktion innerhalb einer Funktion void dummy(void){ label++; //Zugriff auf Variablen des umschließenden Blockes } dummy(); //Aufruf der nur in diesem Block gültigen Funktion } dummy(); //KO, Funktion hier nicht mehr gültig } int main(int argc,char *argv[]) { foo(); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * '''Blöcke können/sollten als Strukturierungswerk genutzt werden. Dem Leser von Source Code kann auf dieser Weise vermittelt werden, dass diese Anweisungen 'zusammen' zu lesen sind.''' * Im Gegensatz zu Java, in welchem innerhalb eines Blockes kein Variablenname genutzt werden darf, die außerhalb des Blockes existiert, ist dies in C erlaubt. Die äußere Variable steht damit innerhalb des Blockes nicht mehr im Zugriff. :<syntaxhighlight lang="C"> int a=3; int main(void){ int a=7; //Globale Variable ist ab hier nicht mehr sichtbar/zugreifbar { int a=9; //Innere Variable überdeckt äußere Variable } } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int a=3; int main(int argc,char *argv[]) { printf("a=%d\n",a); int a=7; //Globale Variable ist ab hier nicht mehr sichtbar/zugreifbar printf("a=%d\n",a); { int a=9; //Innere Variable überdeckt äußere Variable printf("a=%d\n",a); } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Embedded Statement === Embedded Statements sind eine GNU-C Erweiterung (siehe [https://www.gnu.org/software/gnu-c-manual/gnu-c-manual.html GNU-C-Manual 3.18]). Da sie vom Autor als sehr nützlich angesehen wird und auch von diversen Compilern und auch in C++ unterstützt wird, wird diese hier beschrieben. Ein Block fasst mehrere Anweisungen zu einer Anweisung zusammen, hat jedoch kein Rückgabewert. Ein Embedded-Statement entspricht einem Block mit der Ergänzung, dass dieser einen Rückgabewert hat, so dass ein Embedded-Statement überall dort eingesetzt werden kann, wo eine Expression erwartet wird. <code> Syntax: ({Declaration-or-statement-list<sub>OPT</sub>}) </code> Der Rückgabewert wird nicht über eine return-Anweisung angegeben, sondern entstammt aus der letzten Anweisung innerhalb der Liste: <syntaxhighlight lang="C"> int var; var={int par=7;} //KO Block hat keine Rückgabewert. var=({int par=7; par++; par;}); //OK Embedded-Statement hat einen //Rückgabewert, der sich aus der //letzten Anweisung 'Par;' ergibt //Hier 8. </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int var; var={int par=7;} //KO Block hat keine Rückgabewert. var=({int par=7; par++; par;}); //OK Embedded-Statement hat einen //Rückgabewert, der sich aus der //letzten Anweisung 'Par;' ergibt //Hier 8. printf("var=%d\n",var); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Ein Embedded-Statement ähnelt folglich einem Funktionsaufruf mit dem Unterschied, dass a) in der Tat kein Funktionsaufruf stattfindet und b) der Rückgabewert nicht mit return, sondern über die letzte Anweisung zurückgegeben wird. Der Anwendungsfall ist dort zu finden, wo eine Expression erwartet wird und mehrere Anweisungen zum Ermitteln der Expression notwendig sind: <syntaxhighlight lang="C"> int var1=8; int b=({int d=var1++;d>10?10:d;}); if( ({int d=b;b=var1;b=d;}) > 1) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int var1=8; int b=({int d=var1++;d>10?10:d;}); if( ({int d=b;b=var1;b=d;}) > 1) printf("Bedingung erfüllt"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * Ein Embedded-Statement ist insbesondere bei Nutzung von Makros (siehe Kap [[Programmieren in C/C++: Präprozessor | Präprozessor]]) hilfreich * Mittels eines Embedded-Statement kann eine anonyme Funktion/Lambdafunktion dargestellt werden: <syntaxhighlight lang="C"> void test(int (*fptr)(int),int arr[10]) { for(int lauf=0;lauf<10;lauf++) arr[lauf]=fptr(arr[lauf]); } int main(int argc, char *argv[]) { int arr[]={1,2,3,4,5,6,7,8,9,10}; //Aufruf mit einer anonymen Funktion test( ({int func(int a) {return a%2?a:0;} ; func;}) ,arr); } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void test(int (*fptr)(int),int arr[10]) { for(int lauf=0;lauf<10;lauf++) arr[lauf]=fptr(arr[lauf]); } int main(int argc, char *argv[]) { int arr[]={1,2,3,4,5,6,7,8,9,10}; //Aufruf mit einer anonymen Funktion test( ({int func(int a) {printf("Called:%d\n",a);return a%2?a:0;} ; func;}) ,arr); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Funktionen / Prozeduren == Funktionen/Prozeduren sind ein Strukturierungsmerkmal, so dass Teile der Funktionalität des Programmes wiederverwendbar sind. C/C++ unterscheidet nicht zwischen Funktionen (haben einen Rückgabewert, können damit in Ausdrücken verwendet werden) und Prozeduren (haben keine Rückgabewert, resp. Rückgabetyp void).<br/> Mit jedem Aufruf einer Funktion wird für den zugehörigen Block ein eigener Stack-Kontext angelegt, so dass Funktionen sich selbst aufrufen können (Rekursion). Jeder Funktionsinstanz hat somit seinen eigenen lokalen Variablenbereich, teilen sich jedoch die globalen und die statisch lokalen Variablen.<br /> Mit dem Aufruf einer Funktion können Parameter übergeben werden, wobei die Übergabeparameter vom Aufrufer (Caller) durch den Aufruf in die lokalen Variablen des Aufgerufenen (Callee) kopiert/zugewiesen werden (Call by Value). Wird ein Zeiger übergeben, hat der Callee über die Dereferenzierung des Zeigers die Möglichkeit, die Variablen des Caller zu verändern (Call by Reference) (siehe Kap. [[Programmieren in C/C++: Zeiger #Zeiger bei Funktionsaufrufen | Zeiger:Zeiger bei Funktionsaufrufen).]]). Hinweise: * Die Klammerung hinter dem Funktionsnamen (<code>foo()</code>) zeigt an, dass es sich um einen Funktionsaufruf (Verzweigung der Programmausführung zu der Startadresse der Funktion) handelt :<syntaxhighlight lang="C"> void foo(void) {printf("foo called");}; foo(); //Klammern hinter dem Funktionsnamen bedeuten Aufruf der Funktion </syntaxhighlight> * Die Nutzung des Funktionsnamens ohne Klammerung (<code>foo</code>) gibt die Startadresse der Funktion zurück. Die Startadresse kann in einem Zeiger auf Funktionen gespeichert werden (siehe Kap. [[Programmieren in C/C++: Zeiger#Zeiger auf Funktionen | Zeiger:Zeiger auf Funktionen]]). :<syntaxhighlight lang="C"> void foo(void) {printf("foo called");}; void (*fptr)(void)=foo; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void foo(void) { printf("foo called"); }; int main(int argc, char *argv[]) { void (*fptr)(void)=foo; fptr(); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Deklaration/Definition vor dem ersten Aufruf der Funktion 'notwendig', damit Compiler die Übergabeparameter entsprechend bereitstellt und ggf. eine implizite Typkonvertierung durchführt (dito Rückgabewert). Die Angabe der Variablennamen können bei der Deklaration entfallen * Die fehlende Angabe der Übergabeparameter bedeutet in C (nicht C++), dass diese Funktion mit beliebigen Übergabeparametern aufgerufen werden kann und der Compiler keine Typprüfung durchführt: :<syntaxhighlight lang="C"> int func() {...} //kann wie folgt aufgerufen werden func(); func(4); func("hallo Welt",4.7); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void func() { printf("foo called\n"); }; int main(int argc, char *argv[]) { func(); func(4); func("hallo Welt",4.7); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} :→ unbedingt vermeiden<br /> :Hat die Funktion keinen Übergabewert, so wird dies in C mit void gekennzeichnet * In C++ bedeutet die Schreibweise ohne Datentypbeschreibung, dass keine Parameter erwartet werden * In der Parameterliste von Funktionen dient in der GNU-C Spezifikation das Semikolon zum Trennen zwischen Deklaration von Übergabeparameter und den Übergabeparametern. Alle Übergabewerte links vom Semikolon sind (Forward)deklarationen: :<syntaxhighlight lang="C"> void test1(int a; int b,int a) { // Forward; Parameter printf("a=%d b=%d\n",a,b); } //Aufruf test1(3,7); //a=7 b=3 //Sinnvoll im Umgang mit Variable Length Arrays void test2(int dim; const char str[dim], int dim); //Aufruf test2("hallo",6); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void test1(int a; int b,int a) { // Forward; Parameter printf("a=%d b=%d\n",a,b); } //Sinnvoll im Umgang mit Variable Length Arrays void test2(int dim; const char str[dim], int dim) { printf("dim=%d\n",dim); } int main(int argc, char *argv[]) { //Aufrufe test1(3,7); //a=7 b=3 test2("hallo",6); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Return-Anweisung === Mit der Return-Anweisung wird eine Funktion (vorzeitig) beendet. Der optionale Parameter dient der Angabe des Rückgabewertes der Funktion an den Aufrufer. Der Datentyp des Parameters ergibt sich aus dem Rückgabedatentyp der Funktion. <code> Syntax: return expression<sub>OPT</sub> </code> Der Rückgabewert expresion sagt aus, dass hier nicht nur Konstanten oder Variablen stehen können, sondern beliebige Ausdrücke erlaubt sind. Der resultierende Datentyp des Ausdruckes muss letztendlich dem Rückgabedatentyp der Funktion entsprechen: <syntaxhighlight lang="C"> int foo(double a, double b) { return (int)(a*a+b*b); } </syntaxhighlight> Hinweise: * Bei nicht void-Funktionen ist eine return-Anweisung mit einer Expression entsprechend dem Datentyp der Funktion zwingend notwendig: :<syntaxhighlight lang="C"> int func(void) { return 5.1; //Datentyp wird zuvor int konvertiert } double a=func(); //int wird in double konvertiert </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int func(void) { return 5.1; //Datentyp wird zuvor int konvertiert } int main(int argc, char *argv[]) { double a=func(); //int wird in double konvertiert printf("a=%f\n",a); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Bei einer void-Funktion ist die return-Anweisung ohne Expression optional. Hier entspricht der schließende Block der Return-Anweisung :<syntaxhighlight lang="C"> void func(char *str) { if(str==NULL) return; printf("%s",str); } </syntaxhighlight> Sollen mehr als ein Rückgabewert an den Aufrufer zurückgegeben werden so empfiehlt sich: * die Rückgabewerte in einer Struktur zu packen (siehe [[Programmieren in C/C++: Datentypen#Verbundtyp Struktur/Klasse (nur C++) |Datentypen:Verbundtyp Struktur/Klasse (nur C++)]]) * die Rückgabewerte über die Aufrufparameter als Call-by-Reference zu übergeben (siehe [[Programmieren in C/C++: Zeiger#Zeiger bei Funktionsaufrufen | Zeiger:Zeiger bei Funktionsaufrufen]]) ==== Rückgabewert aus Datentypsicht ==== Aus Datentypsicht kann der Funktionsname inkl. den Parameter(n) in einem Ausdruck mit dem Datentyp des Rückgabewertes der Funktion ausgetauscht werden: <syntaxhighlight lang="C"> int foo(void) {return 4711;} int var; var=1+foo(); //Aus Datentypsicht (int)=(int)+(int) </syntaxhighlight> Daraus ergibt sich, dass bei Arrays/Strukturen/Unions direkt auf einzelne Komponenten zugegriffen werden kann, ohne diese zuvor einer Variablen zuzuweisen: <syntaxhighlight lang="C"> struct xyz{int x,y,z;}; struct xyz foo(int par) { struct xyz var; var.x=var.y=var.z=par; return var; } if(foo(12).x == 12) printf("Identisch\n"); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct xyz{int x,y,z;}; struct xyz foo(int par) { struct xyz var; var.x=var.y=var.z=par; return var; } int main(int argc, char *argv[]) { if(foo(12).x == 12) printf("Identisch\n"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} ==== Fehlerrückgabe ==== Viele Funktionen können unter gewissen Umständen nicht korrekt ausgeführt werden. Z.B. aufgrund dessen, dass: * der benötigter Speicher vom Heap nicht bereitgestellt werden kann * Übergabeparameter außerhalb des zulässigen Bereiches liegen * angeforderte Ressource (Datei, Geräte, …) nicht vorhanden/verfügbar sind Solche Fälle gilt es dem Aufrufer mitzuteilen, da in diesen Fällen die vom Aufrufer geforderte Funktionalität nicht erfüllt ist und der Aufrufer ggf. nicht weiterarbeiten kann. Zur Mitteilung des Fehlers sollte vorrangig der Rückgabewerte genutzt werden. (auch wenn in C++ mit Exception eine Alternative hierzu bereitsteht) <syntaxhighlight lang="C"> char *strdup(char *src) { char *dst; if((dst=malloc(strlen(src)+1))==NULL) return NULL; strcpy(dst,src); return dst; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> #include <string.h> char *strdup1(char *src) { char *dst; if((dst=malloc(strlen(src)+1))==NULL) return NULL; strcpy(dst,src); return dst; } int main(int argc, char *argv[]) { char *dup=strdup1("hallo"); if(dup == NULL) printf("Fehler\n"); else printf("dup='%s'\n",dup); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Die Standard-C Library-Funktionen geben in diesem Fall zumeist ein -1 (Rückgabewert Ganzzahl) oder einen NULL-Zeiger (Rückgabewert Zeiger) zurück. Der genaue Fehlergrund ist dann ergänzend in der globalen Variablen errno gespeichert. Mittels der Standard-C Funktion strerror() kann die Zahl in einen für den Anwender/Programmierer lesbaren String umgewandelt werden (die GNU-C Library Funktion printf() bietet ergänzend den Conversion Spezifier %m als alternative Ausgabemöglichkeit an): <syntaxhighlight lang="C"> #include <errno.h> int var; if(-1==scanf("%d",&var) ) printf("Es wurde keine Zahl erkannt\n"); int ret=open("/etc/ptmp",O_WRONLY|O_CREAT|O_EXCL, S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH); if(-1==ret) printf("open failed() with %s\n",strerror(errno)); if(-1==ret) printf("open failed() with %m (nur glibc)\n"); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <fcntl.h> #include <string.h> #include <errno.h> int main(int argc, char *argv[]) { int var; if(-1==scanf("%d",&var) ) printf("Es wurde keine Zahl erkannt\n"); int ret=open("/etc/ptmp",O_WRONLY{{!}}O_CREAT{{!}}O_EXCL, S_IRUSR{{!}}S_IWUSR{{!}}S_IRGRP{{!}}S_IROTH); if(-1==ret) printf("open failed() with %s\n",strerror(errno)); if(-1==ret) printf("open failed() with %m (nur glibc)\n"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} '''Für eine sauber Programmierung sollte diese Methodik generell angewendet werden.''' Jede Funktion, welche Fehlschlagen kann, teilt dies per Rückgabewert dem Aufrufer mit. Der Rückgabewert einer jeden Funktion wird vom Aufrufer kontrolliert. === Main-Funktion === Mit Start der Anwendung übergibt das Betriebssystem die Kontrolle an die Anwendung und führt dort die Funktion main aus. Als Übergabe- und Rückgabeparameter sind folgende Varianten erlaubt: <syntaxhighlight lang="C"> int main(void) { } int main(int argc, char *argv[]) { } </syntaxhighlight> Mit dem Start der Anwendung kann, wie bei jedem Funktionsaufruf, Parameter an den startenden Prozess übergeben werden. Als Parameter können Strings übergeben werden, welche in Form eines Arrays von Strings übergeben werden. Im Parameter argc sind die Anzahl der Strings enthalten. Im Parameter argv[x] sind die einzelnen Strings enthalten. Sofern vorhanden ist im ersten String der Programmname/Aufrufname der Anwendung enthalten: <syntaxhighlight lang="C"> int main(int argc, char *argv[]) { //Variante 1: Darstellung des Inhaltes des Arrays von Strings for(int lauf=0;lauf < argc; lauf++) printf("%d.Parameter: '%s'\n",lauf,argv[lauf]); //Variante 2: Darstellung des Inhaltes des Arrays von Strings (void)argv; //Wird hier nicht benötigt for(char **str=argv;*str!=NULL;str++) printf("Parameter: '%s'\n",*str); return EXIT_SUCCESS; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int max_width=0; int ret; //Variante 1: Darstellung des Inhaltes des Arrays von Strings for(int lauf=0;lauf < argc; lauf++) { ret=printf("%d.Parameter: '%s'\n",lauf,argv[lauf]); max_width=ret>max_width ? ret : max_width; } //Trennzeichen drucken char term[max_width]; memset(term,'-',max_width); printf("%.*s\n",max_width-1,term); //Variante 2: Darstellung des Inhaltes des Arrays von Strings (void)argv; //Wird hier nicht benötigt for(char **str=argv;*str!=NULL;str++) printf("Parameter: '%s'\n",*str); return EXIT_SUCCESS; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Im Compiler-Explorer können die Parameter im Executor unter 'Execution Arguments', getrennt mit Leerzeichen eingegeben werden. Wird die Funktion main beendet, entweder über die return Anweisung oder den Aufruf der exit() Funktion, wird die Kontrolle zurück an den startenden Prozess (zumeist Shell) gegeben. Über den Rückgabewert wird im Allgemeinen dem Aufrufer der Fehlerstatus mitgeteilt (EXIT_SUCCESS oder 0 bedeutet fehlerfreie , EXIT_FAILURE oder ungleich 0 fehlerhafte Ausführung). Der Start der Anwendung kann als Funktionsaufruf angesehen werden, welchen einen Wert an den Aufrufer zurückliefert. Hinweise: * Der Return-Wert der main-Funktion kann mit >>echo $? in der Bash abgefragt werden * Mittels <code>exit(int status)</code> kann das Programm an jeder Stelle innerhalb des Programms beendet werden. <code>status</code> entspricht dann der expression der return Anweisung von main === Inline Funktion === Wie der Name inline andeutet, ist die Intention von Inline, dass die aufgerufen Funktion Bestandteil der aufrufenden Funktion ist. Die aufgerufene Funktion soll somit im Kontext des Aufrufers ausgeführt werden, so dass kein eigener Stack bereitgestellt werden muss. Der Start der Funktion kann somit schneller erfolgen: <code> inline int foo(void) { } </code> Das Inline erfolgt durch den Compiler (und nicht durch den Linker). Damit das inline funktioniert, muss die zu inlinende Funktion vor dem Aufruf definiert sein, d.h. sie muss in derselben C-Datei enthalten sein [C11 6.7.4]. Hinweis: * Das 'inlinen' von Funktionen über die eigene Objektdatei hinweg erfolgt in C/C++ über Link Time Optimization (LTO). Hierzu fügt der Compiler den Zwischencode mit in die Objektdatei, so dass der Linker das 'inlinen' vollziehen kann (siehe {{w|lang=en|Interprocedural_optimization| Interprocedural Optimization}}) === Variadic Function / Ellipsis Punctuator === Mit dem Ellipsis Puncturator '…' kann in Funktionsdefinitionen angegebenen werden, dass anstatt der … Anweisung, beliebig viele Parameter/Argumente übergeben werden können. Dies wird unter anderen in der printf() Anweisung genutzt: <syntaxhighlight lang="C"> int printf(const char *fmt, ... ); </syntaxhighlight> Die wie folgt aufgerufen werden kann: <syntaxhighlight lang="C"> printf("Hello World"); //es folgt kein Parameter printf("%d",100); //es folgt ein Parameter vom Datentyp int printf("%f",1.1); //es folgt ein Parameter vom Datentyp double printf(conststr,1,2,3,"xyz") //Ohne Worte </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { printf("Hello World\n"); //es folgt kein Parameter printf("%d\n",100); //es folgt ein Parameter vom Datentyp int printf("%f\n",1.1); //es folgt ein Parameter vom Datentyp double const char *conststr="%d %x %c '%s'\n"; printf(conststr,1,2,33,"xyz"); //Ohne Worte return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Der übergebenen Datentype der Parameter wird der aufgerufenen Funktion nicht mitgeteilt! Einzig werden bei Aufruf der variadischen Funktion so viel Bytes auf den Stack gelegt, wie der Datentyp der einzelnen Übergabeparameter groß ist: :<code>int --> 4 Byte</code> :<code>double --> 8 Bytes</code> :<code>Zeiger --> 4/8 Byte</code> Damit die aufgerufene Funktion die fehlende Datentypinformation dennoch mitgeteilt bekommt, muss dies am Beispiel der <code>printf</code> Funktion über den Format-String erfolgen: <syntaxhighlight lang="C"> int vari; printf("%d",vari); //%d erwartet einen Integer Übergabeparameter (4-Byte) size_t vars; printf(" %zu %d ", vars, vari); // %zu zur Mitteilung, dass anstatt //integer nun size_t als Datentyp übergeben wird //und somit anstatt 4 Bytes 8 Bytes vom Stack genommen werden </syntaxhighlight> <code>printf()</code> entnimmt entsprechend der Datentypbeschreibung im Formatstring die passende Anzahl an Bytes vom Stack. Da der Compiler für die optionalen Parameter nicht den Zieldatentyp kennt, erlaubt die C-Spezifikation als Übergabedatentypen hier nur die Grunddatentypen <code>signed int, unsigned int, long, long long, double</code> und <code>Zeiger</code>. Entspricht der übergebene Parameter nicht einen dieser Datentypen, so wird er mittels implizit Cast entsprechend nachfolgender Tabelle gewandelt [C11 6.5.2.2 Default Argument Promotions]: {| class="wikitable" |- ! Ausgangstyp !! Umwandlungstyp |- | char, signed char, short || int |- | unsigned char, unsigned short || unsigned int |- | float || double |- | Alle anderen Datentypen || bleiben erhalten |} Bspw.: <syntaxhighlight lang="C"> signed char varc=-1; float varf =0.1; printf("%d %f",varc, varf); //varc wird beim Aufruf nach int konvertiert! //varf wird beim Aufruf nach double konvertiert! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { signed char varc=-1; float varf =0.1; printf("%d %f",varc, varf); //varc wird beim Aufruf nach int konvertiert! //varf wird beim Aufruf nach double konvertiert! //Zur Darstellung der besagten Konvertierung siehe rechtes Fenster return 0; } | execCompilerOptions=-Wall| h=g }} Öffnen im Compiler Explorer] }} Zum Umgang mit dem variadischen Parameter stellt C die Funktionen <code>va_start(), va_arg(), va_copy()</code> und <code>va_end()</code> bereit. Auf Grundlage des dazugehörigen Datentyps <code>va_list</code> können variadische Parameter auch an Unterfunktionen weitergereicht werden (bspw vprintf()). Dieses Thema bedingt jedoch genaue Kenntnisse vom Umgang mit dem Stack und ist nicht Bestandteil dieser Vorlesung. == Variable Length Array (VLA) == Im Normalfall ergibt sich die Anzahl der Elemente eines Arrays aus einer Konstanten, so dass der Compiler zur Compilezeit passend Speicher reserviert (siehe Kap. [[Programmieren in C/C++: Array | Array]]): <syntaxhighlight lang="C"> int arr[4]; //Compiler reserviert für Variable arr //4*sizeof(int) Speicherplatz </syntaxhighlight> Bei Variable Lenght Array wird die Arraydimension nicht über eine Konstante, sondern über eine Variable oder einen Ausdruck angegeben. D.h. die tatsächliche Dimension des Arrays ergibt sich erst zum Ausführungszeitpunkt der Definition: <syntaxhighlight lang="C"> void foo(size_t n) { int arr[n*2+1]; //Arraydimension ergibt sich zum Ausführungszeitpunkt n++; //Nachträgliches Ändern von n ändert nicht //die Größe des Arrays! } </syntaxhighlight> Ein Variable Length Array kann nur als lokale Variable oder als Übergabeparameter definiert werden (wobei im letzteren Fall kein Speicher hiermit reserviert wird). Eine Initialisierung eines VLA's mit der Definition ist nicht möglich, d.h. nach der Definition beinhaltet das Array 'zufällige' Werte. Es empfiehlt sich daher, diese bspw. mit memset händisch zu initialisieren (siehe auch Kap [[Programmieren in C/C++: Array#Initialisierung | Array:Initialisierung]]): <syntaxhighlight lang="C"> void foo(size_t n) { char str[n]; memset(str,0,n*sizeof(char)); //Array mit 0 füllen </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> void foo(size_t n) { char str[n]; memset(str,0,n*sizeof(char)); //Array mit 0 füllen for(size_t lauf=0;lauf<n;lauf++) printf("str[%zu]=%d\n",lauf,str[lauf]); } int main(int argc, char *argv[]) { foo(4); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Mittels sizeof kann weiterhin der Speicherbedarf ermittelt werden, wobei sizeof mit einem VLA als Argument kein Konstantenausdruck ist. Stattdessen wird die Größe zur Laufzeit ermittelt: <syntaxhighlight lang="C"> void foo(size_t n) { int arr[n*2+1]; //VLA size_t size; size=sizeof(arr); //sizeof(arr) entspricht einem Funktionsaufruf //welcher die Speichergröße des VLA's ermittelt </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void foo(size_t n) { int arr[n*2+1]; //VLA size_t size; size=sizeof(arr); //sizeof(arr) entspricht einem Funktionsaufruf //welcher die Speichergröße des VLA's ermittelt printf("size=%zu\n",size); } int main(int argc, char *argv[]) { foo(5); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} VLA wurden erstmals in C mit C99 eingeführt. In C11 wurden VLA's als optional eingestuft und mit C23 zurück auf notwendig gesetzt. In C++ sind VLA's nicht definiert, werden jedoch vom GCC Compiler unterstützt. Als alternativen Datentyp wird hier std::array empfohlen. Hinweis: * VLA sind nicht direkt in einem Switch-Case Block definierbar. Wird hier ein VLA benötigt, so muss hierzu ein Block erzeugt werden: :<syntaxhighlight lang="C"> switch(value) { case 1: char arr1[value]; //Compilerfehler, da bei value!=1 kein Speicherplatz //für das VLA reserviert wird break; case 2: { char arr2[value]; //OK } break; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int value=argc; switch(value) { case 1: char arr1[value]; //Compilerfehler, da bei value!=1 kein Speicherplatz //für das VLA reserviert wird break; case 2: { char arr2[value]; //OK } break; } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Operatoren == In der Programmiersprache C sind folgende Punctuators [C11 6.4.6] definiert: <syntaxhighlight> [ ] ( ) { } . -> ++ -- & * + - ~ ! / % << >> < > <= >= == != ^ | && || ? : ; ... = *= /= %= += -= <<= >>= &= ^= |= , # ## <: :> <% %> %: %:%: </syntaxhighlight> Die Funktionalitäten sind identisch zu Java. Aufgrund des Datentyps Zeiger gibt es in C ergänzend den Punctuator <code>-></code> (siehe Kap [[Programmieren in C/C++: Datentypen#Verbundtyp Struktur/Klasse (nur C++)|Datentypen:Verbundtyp Struktur/Klasse (nur C++)]]). Der Präprozessor bedingt die beiden Punctuatoren <code>#</code> und <code>##</code> (siehe Kap [[Programmieren in C/C++: Präprozessor | Präprozessor]]). Die letzten 6 Punctuators <code><: :> <% %> %: %:%:</code> werden zu <code>[ ] { } # ##</code> ersetzt. Sie sind für Computersysteme gedacht, welche keine ALTGR-Taste besitzen.<br /> Java kennt ergänzend den <code>>>></code> Operatoren, welcher in C über den normalen Schiebebefehl und den zugrundeliegenden Datentyp gesteuert wird. Wie in Java sind einige Punctuators vom Kontext abhängig und haben damit unterschiedliche Funktionalitäten: <syntaxhighlight> ++ → (Postfix) ++ vs. ++(Präfix) -- → (Postfix) -- vs. --(Präfix) +/- → Vorzeichen vs. Addition/Subtraktion () → Funktionsaufruf() vs. Befehlsbestandteil if() vs. Priorisierung </syntaxhighlight> Für den Umgang mit dem Datentyp Zeiger besitzen einige Punctuatoren ergänzende Funktionalitäten (siehe Kap [[Programmieren in C/C++: Zeiger| Zeiger]]): <syntaxhighlight> & → Bitweises UND: Anwendung: Ganzahlausdruck & Ganzahlausdruck & → Adressoperator: Anwendung: &Variable * → Multiplikation Anwendung: Ganzahl-/Gleitkommaausdruck * Ganzahl-/Gleitkommaausdruck * → Datentyp Zeiger Anwendung: Datentyp * Variablenname; * → Dereferenzierung: Anwendung: * Zeiger </syntaxhighlight> Punctuatoren, welche von Java abweichende / ergänzende Funktionalitäten haben, werden nachfolgend gesondert beschrieben. Sind in einer Anweisung mehrere Operatoren enthalten, so hängt die Abarbeitungsreihenfolge von der Rangfolge/Priorität der Operatoren ab (siehe [[Programmieren in C/C++: Grundlagen#Abarbeitungsreihenfolge | Abarbeitungsreihenfolge]]).<br /> Die Rangfolge ist identisch zu Java, wobei C mehr Operatoren kennt. Generell empfiehlt sich, lieber eine Klammer zu viel als zu wenig zusetzen. Klammern haben die höchste Priorität. === Zuweisungs-Operator === Die Zuweisung (<code>=</code>-Operator, assignment expression) weist dem L-Value den R-Value zu. Ergänzend dient der L-Value als Rückgabewert des Operators, so dass das Ergebnis der Zuweisung weiter genutzt werden kann. Die Abarbeitungsreihenfolge ist von rechts nach links (R-L Assoziativität). Wird der 'letzte' Rückgabewert nicht verwendet, so wird dieser verworfen (siehe Kap. [[Programmieren in C/C++: Grundlagen#Discarded Value | Discarded Value]]).<br /> Beispiel: <syntaxhighlight lang="C"> a=7; //Zuweisung a=b=7; //Erste Zuweisung (b=7) hat einen Rückgabewert, welcher im //Anschluss a zugewiesen wird if(a=7) //Variablen a wird der Wert 7 zugewiesen. Der Rückgabewert //der Zuweisung wird im Anschluss auf True oder False geprüft if(7=a) //Besser, da aufgrund der fehlerhafter Zuweisung ein //Compilerfehler geworfen wird x*=y=z //entspricht x=x*(y=z) a=b=d+7; //entspricht a=(b=(d+7)) a=b==c; //a bekommt das boolesche Ergebnis der Vergleichsoperation //zugewiesen </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a,b,c=3,d=4; int x,y,z; a=7; //Zuweisung a=b=7; //Erste Zuweisung (b=7) hat einen Rückgabewert, welcher im //Anschluss a zugewiesen wird if(a=7) //Variablen a wird der Wert 7 zugewiesen. Der Rückgabewert ; //der Zuweisung wird im Anschluss auf True oder False geprüft if(7=a) //Besser, da aufgrund der fehlerhafter Zuweisung ein ; //Compilerfehler geworfen wird x*=y=z; //entspricht x=x*(y=z) a=b=d+7; //entspricht a=(b=(d+7)) a=b==c; //a bekommt das boolesche Ergebnis der Vergleichsoperation //zugewiesen return 0; return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * Auf beiden Seiten der Zuweisung muss der identische Datentyp stehen. Wenn andernfalls eine implizite Typkonvertierung nicht möglich ist, gibt der Compiler einen Fehler aus: :<syntaxhighlight lang="C"> int a = 7.3; //implizite Typkonvertierung double b=a+3; //Implizite Typkonvertierung der Intergeraddition nach double float c=(float)a+(float)3; //Explizite Typkonvertierung char *d=a; //Compilerfehler, da Integerwert nicht implizit in einen //Zeiger konvertiert werden kann </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a = 7.3; //implizite Typkonvertierung double b=a+3; //Implizite Typkonvertierung der Intergeraddition nach double float c=(float)a+(float)3; //Explizite Typkonvertierung char *d=a; //Compilerfehler, da Integerwert nicht implizit in einen //Zeiger konvertiert werden kann //Zur Darstellung der besagten Konvertierung siehe rechtes Fenster (void)b; (void)c; (void)d; return 0; } | execCompilerOptions=-Wall| h=g }} Öffnen im Compiler Explorer] }} * Bei der Parameterübergabe beim Funktionsaufruf wird ebenfalls indirekt der Zuweisungsoperator angewendet. Die Parameter des Aufrufers werden per Zuweisung den lokalen Variablen der aufgerufenen Funktion zugewiesen :<syntaxhighlight lang="C"> void func(int a, float b) { printf("a=%d b=%f",a,b); } int x=4; float y=5.0; func(x,y); //der Inhalt der Variablen x wird der lokalen Variable a //(a=x) und der Inhalt der Variablen y der lokalen Variablen b //(b=y) zugewiesen. func(y,x); //Dito, mit der Ergänzung, dass eine implizite Typkonvertierung //stattfindet (a=(int)y) und (b=(float)x). </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void func(int a, float b) { printf("a=%d b=%f",a,b); } int main(int argc, char *argv[]) { int x=4; float y=5.0; func(x,y); //der Inhalt der Variablen x wird der lokalen Variable a //(a=x) und der Inhalt der Variablen y der lokalen Variablen b //(b=y) zugewiesen. func(y,x); //Dito, mit der Ergänzung, dass eine implizite Typkonvertierung //stattfindet (a=(int)y) und (b=(float)x). //Zur Darstellung der besagten Konvertierung siehe rechtes Fenster return 0; } | execCompilerOptions=-Wall| h=g }} Öffnen im Compiler Explorer] }} === Komma-Operator === Der Komma-Operator erlaubt es, zwei Ausdrücke auszuführen, wo nur einer erlaubt wäre. Die Ergebnisse aller durch diesen Operator verknüpften Ausdrücke, außer dem letzten werden verworfen. Der letzte Ausdruck dient als Rückgabewert. Folgendes gilt es bei der Nutzung des Komma-Operators zu beachten: * Der Komma-Operator wird von links nach rechts ausgewertet * Das Komma selbst stellt eine Sequence Point dar (siehe Kap [[Programmieren in C/C++: Grundlagen#Sequence Point|Sequence Point]]) * An Stellen, wo das Komma zum Syntax gehört (z.B. Trennung der Übergabeparameter bei der Funktionsdefinition und beim Funktionsaufruf, Trennung von Variablen bei der Variablendefinition/-deklaration, Trennung der enum Konstanten) muss der Ausdruck ergänzend geklammert werden, wenn der Komma-Operator gefordert ist * Der Komma-Operator hat von allen Operatoren die niedrigste Priorität/Rangfolge, so dass dieser Operator als letztes 'ausgewertet' wird Beispiel: <syntaxhighlight lang="C"> int a=(5,3); //5 wird verworfen, 3 dient als Rückgabewert, so dass //a den Wert 3 erhält. int b=5,3; //KO, da Komma Bestandteil der Definition ist int c=1,d=2,e=3; int f=(c+=2,a+a); //c um zwei erhöht, a+a in f int g= c+=2,a+a; //KO, da Komma Bestandteil der Defintion ist void func(int value){} func(1); //Funktion wird mit dem Wert 1 aufgerufen func(1,2); //KO, da Komma Bestandteil des Funktionsaufrufes ist func((1,2)); //Funktion wird mit dem Wert 2 aufgerufen int arr[12]; arr[3,4]=1; //3 wird verworfen, 4 dient als Index für das Array </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void func(int value){ printf("func called with %d\n",value); } int main(int argc, char *argv[]) { int a=(5,3); //5 wird verworfen, 3 dient als Rückgabewert, so dass //a den Wert 3 erhält. int b=5,3; //KO, da Komma Bestandteil der Definition ist printf("a=%d\n",a); int c=1,d=2,e=3; printf("c=%d,d=%d,e=%d\n",c,d,e); int f=(c+=2,a+a); //c um zwei erhöht, a+a in f printf("c=%d,f=%d\n",c,f); int g= c+=2,a+a; //KO, da Komma Bestandteil der Defintion ist func(1); //Funktion wird mit dem Wert 1 aufgerufen func(1,2); //KO, da Komma Bestandteil des Funktionsaufrufes ist func((1,2)); //Funktion wird mit dem Wert 2 aufgerufen int arr[12]; arr[3,4]=1; //3 wird verworfen, 4 dient als Index für das Array return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} 'Sinnvolle' Anwendungsbeispiele: * Bei For-Schleifen, so dass mehrere Variablen initialisiert und mehrere Variablen mit jedem Schleifendurchlauf geändert werden können: :<syntaxhighlight lang="C"> int sum,lauf; int arr[]={5,4,3,2,1}; for(sum=100,lauf=5 ; lauf ; lauf--,sum+=arr[lauf]); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int sum,lauf; int arr[]={5,4,3,2,1}; for(sum=100,lauf=5 ; lauf ; lauf--,sum+=arr[lauf]) printf("sum=%d lauf=%d\n",sum,lauf); printf("sum=%d\n",sum); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Bei der Return-Anweisung, bei welcher zur Darstellung der Zusammengehörigkeit mehrere Aktionen ausgeführt werden sollen: :<syntaxhighlight lang="C"> return errno=EINVAL,-1; return printf("Fehler"),-1; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <errno.h> int foo(void) { return errno=EINVAL,-1; } int far(void) { return printf("Fehler\n"),-1; } int main(int argc, char *argv[]) { printf("foo()=%d\n",foo()); printf("far()=%d\n",far()); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * An Stellen, wo nur eine Anweisung erlaubt ist (und man zu faul ist, einen Block zu öffnen) :<syntaxhighlight lang="C"> if(…) y=2,z=3; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int y=0,z=0; if(1) y=2,z=3; printf("y=%d z=%d\n",y,z); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * In vielen Ländern wird das Komma zur Darstellung von Gleitkommazahlen genutzt. Wird versehentlicher Weise dies in C/C++ übernommen, so führt dies zu einem unerwarteten Verhalten: :<syntaxhighlight lang="C"> double var; var=5.3; //Variable wird mit 5.3 initialisiert var=5,3; //KO, da Komma Bestandteil der Defintion ist var=(5,3); //Variable wird mit 3 initialisiert </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { double var; var=5.3; //Variable wird mit 5.3 initialisiert printf("var=%f\n",var); var=5,3; //KO, da Komma Bestandteil der Defintion ist var=(5,3); //Variable wird mit 3 initialisiert printf("var=%f\n",var); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === ?-Operator / Conditional-Operator === Operator mit 3 Operanden, welcher in Abhängigkeit des ersten Operanden den zweiten oder dritten Operanden zurückgibt. <code> Syntax: Logical-OR-expression ? expression : condition-expression </code> Entspricht der if()-Anweisung, wobei der ? Operator als solches einen Wert zurückgibt! Expression wird nur ausgewertet, wenn der erste Operand true ist. Andernfalls wird nur condition-expression ausgeführt. Der zurückgegebene Datentyp ergibt sich aus der Expression resp. Condition-expression. Beide sollten somit vom identischen Datentyp sein. Folgendes gilt es bei der Nutzung des ?-Operators zu beachten * Der Datentyp Expression und condition-Expression muss identisch sein <syntaxhighlight lang="C"> int a=5; a=a > 10 ? "String" : 4; //KO, "String" ist vom Datentyp (char*) und // 4 ist vom Datentyp (int). </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a=5; a=a > 10 ? "String" : 4; //KO, "String" ist vom Datentyp (char*) und // 4 ist vom Datentyp (int). return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Nach der GNU-C Reference kann der mittlere Operand fehlen, in diesem Fall wird stattdessen das Ergebnis des linken Operanden dort eingesetzt (siehe https://gcc.gnu.org/onlinedocs/gcc/Conditionals.html#Conditionals) <syntaxhighlight lang="C"> int a=13; int b=a>10 ? : 0; //wenn a > 10 wird true, andernfalls false zurückgegeben </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a=13; int b=a>10 ? : 0; //wenn a > 10 wird true, andernfalls false zurückgegeben printf("b=%d\n",b); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Sollen innerhalb von condition-expression mehrere (durch Komma getrennte) Anweisungen enthalten sein, so sind diese zu Klammern! Andernfalls bedingt die niedrige Priorität des Komma-Operators ein anders Verhalten, als erwartet. <syntaxhighlight lang="C"> int a=7,max=5; max=a>max ? a : max; //Alles bestens int var0,var1,var2; var0=a>5 ? a++,5:6,a=1; //das zweite Komma wird als separate Anweisung //ausgeführt und kommt somit immer zur //Ausführung var1=(a>5 ? a++,5:6),a=1; //durch Klammerung klare Abgrenzung var2= a>5 ? a++,5 : (6,a=1); //durch Klammerung klare Abgrenzung </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a=7; int max=5; max=a>max ? a : max; //Alles bestens printf("max=%d\n",max); int var0,var1,var2; var0=a>5 ? a++,5:6,a=1; //das zweite Komma wird als separate Anweisung //ausgeführt und kommt somit immer zur //Ausführung printf("var0=%d a=%d\n",var0,a); var1=(a>5 ? a++,5:6),a=1; //durch Klammerung klare Abgrenzung printf("var1=%d a=%d\n",var1,a); var2= a>5 ? a++,5 : (6,a=1); //durch Klammerung klare Abgrenzung printf("var2=%d a=%d\n",var2,a); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Die Nutzung des ?-Operators empfiehlt sich an diversen Stellen: * Bei Makros :<syntaxhighlight lang="C"> #define MAX(a,b) (a>b?a:b) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #define MAX(a,b) (a>b?a:b) int main(int argc, char *argv[]) { printf("MAX(4,5)=%d\n",MAX(4,5)); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Beim Fehlerhandling :<syntaxhighlight lang="C"> char *str=strstr("hallo123","lox"); //Ausgabe von str nur, wenn Suche erfolgreich (str!=NULL) war printf("%s",str!=NULL?str : "(not found)" ); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char *str=strstr("hallo123","lox"); //Ausgabe von str nur, wenn Suche erfolgreich (str!=NULL) war printf("%s",str!=NULL?str : "(not found)" ); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Prüfen, ob eine Funktion erfolgreich ausgeführt wurde, bevor eine weitere Funktion ausgeführt wird <syntaxhighlight lang="C"> int ret; ret=init1(); //im Fehlerfreien gibt init1() 0 zurück ret=ret?:init2(); //Aufruf von init2() nur wenn ret==0 ist //andernfalls wird ret zurückgegeben </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int init1(void) { printf("init1() called\n"); return 0; } int init2(void) { printf("init2() called\n"); return 0; } int main(int argc, char *argv[]) { int ret; ret=init1(); //im Fehlerfreien gibt init1() 0 zurück ret=ret?:init2(); //Aufruf von init2() nur wenn Ret==0 ist //andernfalls wird Ret zurückgegeben return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Logische Verknüpfungen === Alle logischen Operationen nutzen als Operanden Ganzzahlen ,Gleitkommazahlen oder Zeiger. Der Operand wird als false angesehen, wenn der Operand 0, 0.0 oder NULL ist. Andernfalls als true. Das Ergebnis ist immer vom Datentyp int und hat den Wert von 0 oder 1. <code>Syntax: Expression && Expression</code><br /> <code>Syntax: Expression || Expression</code><br /> <code>Syntax: ! Expression</code><br/> Bei der logischen UND und ODER Verknüpfung wird zuerst der linke Ausdruck ausgewertet (Operator ist ein Sequence Point). Der rechte Ausdruck wird nur ausgeführt, wenn: * bei der logischen UND Verknüpfung der linke Ausdruck TRUE ergab * bei der logische OR Verknüpfung der linke Ausdruck FALSE ergab Andernfalls steht das Ergebnis schon mit der Auswertung des linken Operanden fest.<br /> In der theoretischen Informatik wird dies 'Non-strict-evaluation' genannt, bei welcher der Rückgabewert feststeht, bevor alle Ausdrücke bearbeitet worden sind. Beispiel für das Verhalten des Ausbleibens der Auswertung des zweiten Operators: <syntaxhighlight lang="C"> int a=0,b=0; //a=-1; //Als alternativer Startwert if(++a || ++a) b=1; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=0,b=0; //a=-1; //Als alternativer Startwert if(++a {{!}}{{!}} ++a) b=1; printf("a=%d b=%d\n",a,b); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Diese Funktionalität ist insbesondere beim Umgang mit Fehlern vorteilhaft: * Prüfen, ob eine Variable einen gültigen Wert hat, bevor sie weiterverwendet wird <syntaxhighlight lang="C"> char *str = strstr("hallo123","la"); if(str!=NULL && strlen(str) ) printf("Len = %ld",strlen(str)); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char *str = strstr("hallo123","la"); if(str!=NULL && strlen(str) ) printf("Len = %ld",strlen(str)); else printf("Kein Substring im String gefunden\n"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Prüfen, ob eine Funktion erfolgreich ausgeführt wurde, bevor eine weitere Funktion aufgerufen wird: <syntaxhighlight lang="C"> int ret; ret=init1(); //Bei erfolgreicher Initialisierung wird 1 zurückgegeben ret=ret && init2(); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int init1(void) { printf("init1() called\n"); return 1; } int init2(void) { printf("init1() called\n"); return 1; } int main(int argc, char *argv[]) { int ret; ret=init1(); //Bei erfolgreicher Initialisierung wird 1 zurückgegeben ret=ret && init2(); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Bitweise Verknüpfungen === Alle bitweisen Operationen nutzen als Operanden Ganzzahlen. Bei vorzeichenbehafteten Zahlen ist das Ergebnis nach [C11 6.5] Implementierungsabhängig, wobei das Vorzeichenbit zumeist als eigenständiges Bit angesehen wird und bei UND/ODER/EXOR als normales BIT betrachtet wird. <code>Syntax: Ganzzahl & Ganzzahl → Bitweise UND Operation</code><br /> <code>Syntax: Ganzzahl | Ganzzahl → Bitweise ODER Operation</code><br /> <code>Syntax: Ganzzahl ^ Ganzzahl → Bitweise EXOR Operation</code><br /> <code>Syntax: ~ Ganzzahl → Bitweise Negierung</code><br /> <code>Syntax: Ganzzahl >> additive-expression</code><br /> <code>Syntax: Ganzzahl << additive-expression</code><br /> Mittels des Schiebeoperators können Ganzzahlen um additive-expression bitweise nach Links <code><<</code> oder Rechts <code>>></code> verschoben werden. Der resultierende Datentyp ergibt sich aus dem linken Operanden. Der rechte Operand muss positiv und kleiner gleich der Bitbreite des linken Operanden sein. Andernfalls ist das Ergebnis implementierungsspezifisch. Nach [C11 6.5.7] ist das Ergebnis der Schiebeoperation implementierungsspezifisch, wenn der linke Operand eine negative vorzeichenbehaftete Zahl ist. In der Regel wendet der Compiler jedoch folgende Schiebeoperation an: * Logisches Schieben (zu füllende Bit-Stellen werden mit 0 aufgefüllt), wenn der linke Operand eine vorzeichenlose Zahl ist * Arithmetisches Schieben (zu füllende Bit-Stelle beim Rechtsschieben wird mit dem Vorzeichenbit aufgefüllt), wenn der linke Operand eine vorzeichenbehaftete Zahl ist. Hiermit wird das Vorzeichen beibehalten, so dass eine negative Zahl nach dem Schieben weiterhin negativ ist (In Java erfolgt dies durch den >>> - Operator) Hinweis: * Ein Schieben um eine Stelle nach rechts entspricht einer Division durch 2 * Ein Schieben um eine Stelle nach links entspricht einer Multiplikation mit 2 === sizeof-Operator === Der sizeof-Operator dient zur Ermittlung des Speicherbedarfs (in Bytes) einer Variablen/eines Datentyps. <code>Syntax: sizeof (type-name)</code><br /> <code>Syntax: sizeof unary-expression</code><br /> Als Argument für den Sizeof-Operator kann wahlweise ein Datentyp, eine Variable oder ein Ausdruck genutzt werden. Sizeof gilt als Konstantenausdruck, d.h. seine Berechnung erfolgt durch den Compiler, sodass: * sizeof zur Initialisierung von globalen Variablen genutzt werden :<syntaxhighlight lang="C"> struct xyz{int x,y,z;}; size_t size=sizeof(struct xyz); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct xyz{int x,y,z;}; size_t size=sizeof(struct xyz); //3*sizeof(int)=12 int main(int argc, char *argv[]) { printf("size=%zu\n",size); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * bei einem Ausdruck dieser nicht ausgeführt wird, sondern nur der resultierende Datentyp bestimmt wird und dessen Größe zurückgegeben :<syntaxhighlight lang="C"> short var=4711; size_t size=sizeof var++; //var=4711, size=2 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { short var=4711; size_t size=sizeof var++; //var=4711, size=2 printf("size=%zu var=%d\n",size,var); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Der resultierende Datentyp des Rückgabewertes ist size_t. Es empfiehlt sich, den sizeof-Operator mit Klammern zu nutzen, andernfalls wird im Falle eines Ausdruckes der Speicherbedarf des linken Operanden angegeben: <syntaxhighlight lang="C"> size_t size; short var; size=sizeof var+0; //size=2, da sizeof auf var angewendet wird size=sizeof(var+0); //size=4, da sizoeof auf den resultierenden datentyp //angewendet wird </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { size_t size; short var=0; size=sizeof var+0; //size=2, da sizeof auf var angewendet wird printf("size=%zu var=%d\n",size,var); size=sizeof(var+0); //size=4, da sizoeof auf den resultierenden datentyp //angewendet wird printf("size=%zu var=%d\n",size,var); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * sizeof angewendet auf char gibt immer den Wert 1 zurück. * sizeof ist nicht auf Operanden vom Typ Funktion, void, Felder ohne Größenangabe und Bitfelder anwendbar * wird sizeof auf ein VLA angewendet, so entspricht sizeof nicht mehr einen Konstantenausdruck, sondern einem Funktionsaufruf :<syntaxhighlight lang="C"> void foo(int n) { int arr[n]; size_t size=sizeof(arr); //Speicherbedarf ist kein Konstantenausdruck //sondern wird zur Laufzeit berechnet </syntaxhighlight> * Sizeof entspricht nicht strlen(), da sizeof den für die Variable reservierten Speicherbereich zurückgibt und nicht wie strlen() den Inhalt des Speicher hinsichtlich des Stringendezeichens auswertet. :<syntaxhighlight lang="C"> char string[100]="Test"; printf("%zu\n",sizeof(string)); //100 printf("%zu\n",strlen(string)); //4 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char string[100]="Test"; printf("%zu\n",sizeof(string)); //100 printf("%zu\n",strlen(string)); //4 return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Anweisungen == === If-Anweisung === <code>Syntax: if (expression) statement</code><br /> <code>Syntax: if (expression) statement else statement</code><br /> Das Ergebnis des Ausdruckes (Ganzzahl, Gleitkommazahl oder Zeiger) wird auf ungleich 0, 0.0 oder NULL getestet. Trifft dies zu, so wird statement ausgeführt. Andernfalls wird das else statement ausgeführt, sofern vorhanden. Sollen mehrere Anweisungen ausgeführt werden, so sind diese mittels Block zusammenzufassen (diesen dann bitte nicht mit ; abschließen). Beispiel: <syntaxhighlight lang="C"> if(a==1) if(a=1) //Erst Zuweisung, dann prüfen der Rückgabe der Zuweisung if(a) //entspricht a!=0 if(printf("hallo")<0) //prüfen, ob printf() fehlschlägt if( ({int dummy=a;a=b;b=dummy;})==6) if(a=7) //Zuweisung! if(7=a) //KO, Eine Konstante kann kein L-Value sein if(7==a) {printf("a ist 7");}; //Semikolon hinter Blocksope ist eine zweite else //Anweisung, so dass die ELSE Anweisung nicht {printf("Compilerfehler");};//zur IF-Anwesigung zugeordnet werden kann. </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=1,b=2; if(a==1) printf("a==1\n"); if(a=1) //Erst Zuweisung, dann prüfen der Rückgabe der Zuweisung printf("a=1\n"); if(a) //entspricht a!=0 printf("a\n"); if(printf("hallo\n")<0) //prüfen, ob printf() fehlschlägt printf("printf()\n"); if( ({int dummy=a;a=b;b=dummy;})==6) printf("({...})\n"); if(a=7) //Zuweisung! printf("a=7\n"); if(7=a) //KO, Eine Konstante kann kein L-Value sein ; if(7==a) {printf("a ist 7");}; //Semikolon hinter Blocksope ist eine zweite else //Anweisung, so dass die ELSE Anweisung nicht {printf("Compilerfehler");};//zur IF-Anwesigung zugeordnet werden kann. return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Bei der Anweisung <code>if(a==7)</code> finden aus syntaktischer Sicht zwei Aktionen statt. Zunächst wird geprüft, ob a gleich 7 ist. Dieser Vergleich liefert true(=1) oder false(=0) zurück. Die If-Anweisung prüft im Anschluss, ob das Argument true oder false ist. === For-Anweisung === <code>Syntax: for(Initialisierungsteil<sub>OPT</sub> ; Test<sub>OPT</sub> ; Fortsetzung<sub>OPT</sub>) Statement</code> Die For-Anweisung wird vom Compiler wie folgt umgesetzt: <poem> '''Initialisierungsteil'''<sub>OPT</sub> Goto Next Goon: //Continue-Anweisung entspricht goto Continue //Break-Anweisung entspricht goto Break; '''Statement''' Continue: '''Fortsetzung'''<sub>OPT</sub> Next: if('''Test'''<sub>OPT</sub>) goto Goon Break: </poem> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> int main(int argc, char *argv[]) { int lauf; int summe; for(summe=lauf=0;lauf<20;lauf++) summe+=lauf; printf("summe=%d\n",summe); //Initialisierungsteil summe=lauf=0; goto Next; Goon: //Continue-Anweisung entspricht goto Continue //Break-Anweisung entspricht goto Break; //Statement summe+=lauf; Continue: __attribute__((unused)) //Fortsetzung lauf++; Next: //if(TestOPT) goto Goon if(lauf<20) goto Goon; Break: __attribute__((unused)) printf("summe=%d\n",summe); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Die einzelne Elemente haben folgende Bedeutung/Besonderheiten: ;Initialisierungsteil: Zum Initialisieren von Schleifenvariablen, wird einmalig mit Beginn der FOR-Anweisung ausgeführt. :* kann Leer sein, dann erfolgt keine Initialisierung :* Ab C99: Hier kann eine lokale Variable definiert werden, welche nur innerhalb dieser For-Anweisung gültig ist ;Testteil: Hierin wird vor jedem Schleifendurchlauf geprüft, ob die Schleifenbedingung erfüllt ist. Wenn Bedingung nicht erfüllt ist (Ganzzahl, Gleitkommazahl oder Zeiger gleich 0,0.0 oder NULL), wird die For-Schleife beendet. :* Kann leer sein, dann wird dieser Teil als true angesehen ;Fortsetzungsteil: Wird nach jeden Schleifendurchlauf ausgeführt. In der Regel sollte hier die Schleifenvariable aktualisiert werden :* Kann leer sein ;Statement: In der Schleife auszuführender Ausdruck :* Sollen mehrere Ausdrücke ausgeführt werden, so sind diese in einem Block zusammen zu fassen. :Ergänzende Anweisungen innerhalb des Statements/Block :* 'continue' zum Fortsetzen des Schleifendurchlaufes, d.h. Sprung zum Fortsetzungs-Teil :* 'break', zum Beenden des Schleifendurchlaufes Beispiele: * For-Schleife mit lokaler Schleifenvariable :<syntaxhighlight lang="C"> char string[]="hallo"; for(size_t lauf=0; lauf < strlen(string); lauf++) //Schleife ist Suboptimal, da in jedem Durchlauf die Funktion //strlen() aufgerufen wird! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <time.h> struct timespec diff_timespec(const struct timespec *minuend, const struct timespec *subtrahend ) { struct timespec diff = { .tv_sec = minuend->tv_sec - subtrahend->tv_sec, .tv_nsec = minuend->tv_nsec - subtrahend->tv_nsec}; //Sekundenüberlauf? if (diff.tv_nsec < 0) { diff.tv_nsec += 1000000000; diff.tv_sec--; } return diff; } int main(int argc, char *argv[]) { char string1[10000]; char string2[10000]; memset(string1,'a',sizeof(string1)); memset(string2,'a',sizeof(string2)); string1[sizeof(string1)-1]=0; string2[sizeof(string2)-1]=0; struct timespec start1,stop1; struct timespec start2,stop2; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start1); size_t sum1=0; for(size_t lauf=0; lauf < strlen(string1); lauf++) sum1++; //Schleife ist Suboptimal, da in jedem Durchlauf die Funktion //strlen() aufgerufen wird! clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop1); clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start2); size_t sum2=0; size_t count2=strlen(string2); for(size_t lauf=0; lauf < count2; lauf++) sum2++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop2); stop1=diff_timespec(&stop1,&start1); stop2=diff_timespec(&stop2,&start2); printf("Slow: Sum1=%zu Time=%lds %ldns\n",sum1,stop1.tv_sec,stop1.tv_nsec); printf("Fast: Sum2=%zu Time=%lds %ldns\n",sum2,stop2.tv_sec,stop2.tv_nsec); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Schleife mit Break-Anweisung :<syntaxhighlight lang="C"> char dest[5]; char src[10]="HalloWelt"; for(size_t lauf=0; src[lauf]!=0; lauf++) { if(lauf >= sizeof(dest)) break; dest[lauf]=src[lauf]; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char dest[5]; char src[10]="HalloWelt"; for(size_t lauf=0; src[lauf]!=0; lauf++) { printf("lauf=%zu\n",lauf); if(lauf >= sizeof(dest)) break; dest[lauf]=src[lauf]; } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Schleife, bei welcher die gesamte Aktion innerhalb der For-Anweisung ausgeführt wird :<syntaxhighlight lang="C"> char dest[5]; char src[10]="HalloWelt"; for(size_t l=0; src[l]!=0 && l <sizeof(dest); printf("l=%zu\n",l),dest[l]=src[l],l++); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char dest[5]; char src[10]="HalloWelt"; for(size_t l=0;src[l]!=0 && l <sizeof(dest); printf("l=%zu\n",l),dest[l]=src[l],l++); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Schleifenvariable muss keine Zählvariable sein :<syntaxhighlight lang="C"> int zahl=0b100010; int bits=0; for(int mask=0b10000000; mask!=0; mask>>=1 ) bits+= zahl & mask ? 1 : 0; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int zahl=0b100010; int bits=0; for(int mask=0b10000000; mask!=0; mask>>=1 ) bits+= zahl & mask ? 1 : 0; printf("Anzahl Einsen in %b = %d\n",zahl,bits); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Zeiger als Schleifenvariable :<syntaxhighlight lang="C"> char src[]="hallo"; char dst[strlen(src)+1]; char *s,*d; for(s=src,d=dst; *s; ) *d++=*s++; *d=0; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char src[]="hallo"; char dst[strlen(src)+1]; char *s,*d; for(s=src,d=dst; *s; ) *d++=*s++; *d=0; printf("src='%s' dst='%s'\n",src,dst); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Zur Geschwindigkeitsoptimierung sollten im Test- und Fortsetzungsteil keine Funktionsaufrufe mit Werten enthalten sein, die sich innerhalb der Schleife nicht ändern: :<syntaxhighlight lang="C"> for(size_t lauf=0;lauf<strlen("hallo");lauf++) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <time.h> struct timespec diff_timespec(const struct timespec *minuend, const struct timespec *subtrahend ) { struct timespec diff = { .tv_sec = minuend->tv_sec - subtrahend->tv_sec, .tv_nsec = minuend->tv_nsec - subtrahend->tv_nsec}; //Sekundenüberlauf? if (diff.tv_nsec < 0) { diff.tv_nsec += 1000000000; diff.tv_sec--; } return diff; } int main(int argc, char *argv[]) { char string1[10000]; char string2[10000]; memset(string1,'a',sizeof(string1)); memset(string2,'a',sizeof(string2)); string1[sizeof(string1)-1]=0; string2[sizeof(string2)-1]=0; struct timespec start1,stop1; struct timespec start2,stop2; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start1); size_t sum1=0; for(size_t lauf=0; lauf < strlen(string1); lauf++) sum1++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop1); clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start2); size_t sum2=0; size_t count2=strlen(string2); for(size_t lauf=0; lauf < count2; lauf++) sum2++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop2); stop1=diff_timespec(&stop1,&start1); stop2=diff_timespec(&stop2,&start2); printf("Slow: Sum1=%zu Time=%lds %ldns\n",sum1,stop1.tv_sec,stop1.tv_nsec); printf("Fast: Sum2=%zu Time=%lds %ldns\n",sum2,stop2.tv_sec,stop2.tv_nsec); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Zur Geschwindigkeitssteigerung sollte im Testteil auf 0 abgefragt werden, d.h. die Schleifenvariable dekrementiert werden :<syntaxhighlight lang="C"> for(int lauf=700000;lauf;lauf--) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <time.h> struct timespec diff_timespec(const struct timespec *minuend, const struct timespec *subtrahend ) { struct timespec diff = { .tv_sec = minuend->tv_sec - subtrahend->tv_sec, .tv_nsec = minuend->tv_nsec - subtrahend->tv_nsec}; //Sekundenüberlauf? if (diff.tv_nsec < 0) { diff.tv_nsec += 1000000000; diff.tv_sec--; } return diff; } int main(int argc, char *argv[]) { char string1[10000]; char string2[10000]; memset(string1,'a',sizeof(string1)); memset(string2,'a',sizeof(string2)); string1[sizeof(string1)-1]=0; string2[sizeof(string2)-1]=0; struct timespec start1,stop1; struct timespec start2,stop2; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start1); size_t sum1=0; for(ssize_t lauf=700000000;lauf;lauf--) sum1++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop1); clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start2); size_t sum2=0; for(ssize_t lauf=0;lauf<700000000;lauf++) sum2++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop2); stop1=diff_timespec(&stop1,&start1); stop2=diff_timespec(&stop2,&start2); printf("Slow: Sum1=%zu Time=%lds %ldns\n",sum1,stop1.tv_sec,stop1.tv_nsec); printf("Fast: Sum2=%zu Time=%lds %ldns\n",sum2,stop2.tv_sec,stop2.tv_nsec); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Alternativ zu einer Laufvariablen empfiehlt sich die Nutzung von Pointer als Schleifenvariable; :<syntaxhighlight lang="C"> for(char *ptr=str; *ptr; ptr++); </syntaxhighlight> === While-Anweisung === <code>Syntax: while(expression) Statement </code><br /> <code>Syntax: do Statement while(expression);</code><br /> Die While-Anweisungen werden vom Compiler wie folgt umgesetzt: {| class="wikitable" ! while()-Anweisung !! do while()-Anweisung |- | <poem> Continue: if(!'''expression''') goto Break //Break-Anweisung entspricht // goto Break; //Continue-Anweisung entspr. // goto Continue; '''Statement''' goto Continue Break: </poem> || <poem> GoOn: //Break-Anweisung entspr. // goto Break //Continue-Anweisung ent. // goto Continue '''Statement''' Continue: if('''expression''') goto GoOn Break: </poem> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> int main(int argc, char *argv[]) { int lauf; int summe; lauf=summe=0; while(lauf<10) { if(lauf>=5) break; lauf++; if(lauf<3) continue; summe+=lauf; } printf("summe=%d\n",summe); lauf=summe=0; Continue1: if(!(lauf<10)) goto Break1; //Break-Anweisung entspricht // goto Break; //Continue-Anweisung entspr. // goto Continue; //Statement if(lauf>=5) { goto Break1; } lauf++; if(lauf<3) goto Continue1; summe+=lauf; goto Continue1; Break1: printf("summe=%d\n",summe); lauf=summe=0; do { lauf++; if(lauf>5) break; if(lauf<3) continue; summe+=lauf; } while(lauf<10); printf("summe=%d\n",summe); lauf=summe=0; GoOn2: //Break-Anweisung entspr. // goto Break //Continue-Anweisung ent. // goto Continue //Statement lauf++; if(lauf>5) goto Break2; if(lauf<3) goto Continue2; summe+=lauf; Continue2: if(lauf<10) goto GoOn2; Break2: __attribute__((unused)); printf("summe=%d\n",summe); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Folgendes gilt es bei der Nutzung der While-Anweisung zu beachten: * Soll mehr als ein Statement innerhalb der While-Schleife ausgeführt werden, so sind diese in einem Block zu schreiben * Statement kann eine Leeranweisung (gekennzeichnet durch ein Semikolon) sein :<syntaxhighlight lang="C"> while(1); do ; while(1); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int lauf1=1000; while(lauf1--); int lauf2=1000; do ; while(lauf2--); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Bei der do-While-Schleife ist das abschließende Semikolon Bestandteil des Befehls * expression muss eine Ganzzahl, Gleitkommazahl oder Zeiger zurückgeben, der bei False (0, 0.0 oder NULL) die Schleife beendet. Beispiele: * Endlosschleife :<syntaxhighlight lang="C"> while(1) {} </syntaxhighlight> * Schleife zum Durchlaufen eines String :<syntaxhighlight lang="C"> char str[]="string"; char *ptr=str; while(*ptr++); size_t len=ptr-str-1; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char str[]="string"; char *ptr=str; while(*ptr++); size_t len=ptr-str-1; printf("Stringlänge=%zu\n",len); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Switch-Anweisung === <code>Syntax: switch(expression) statement</code><br /> <code>Syntax: statement:= case constant-expression: statement<sub>opt</sub> default: statement<sub>opt</sub></code><br /> Die Switch-Anweisung entspricht einer verschachtelten If-Anweisung, mit der Besonderheit, dass der auszuführende Code nicht im If-Zweig stattfindet, sondern dort ein goto zum eigentlichen Code enthalten ist: {| class="wikitable" ! Switch-Anweisung !! Compilerumsetzung |- |<syntaxhighlight lang="C"> switch(a) { case 1: int a=7; //Code break; case 2: printf("%d",a); case 3: { int a; //Code } case 4 ... 8: default: //Code } </syntaxhighlight> ||<poem> if(a==1) goto label1; else if(a==2) goto label2; else goto label_default; //------------------- label1: //Code goto label_break; label2: //Code label_default: goto label_break; label_break: </poem> |} Folgendes gilt es bei der Nutzung der Switch-Anweisung zu beachten: * <code>Expression</code> muss zu einer Ganzzahl (int, short, char, long, long long) oder enum (entspricht einer Ganzzahl) ausgewertet werden * <code>constant-expression</code> muss eine Ganzzahl-Konstante oder ein Enumelement sein. Sie darf nicht doppelt im Block vorkommen. Der genaue Datentyp ergibt sich aus dem Datentyp der <code>expression</code> * Lt. Spezifikation ist ein nur <code>statement</code> hinter der switch-Anweisung erlaubt, so dass nur ein <code>case</code> Fall oder der <code>default</code> Fall bedient werden kann::<syntaxhighlight lang="C"> int var=1; switch(var) case 1: printf("hallo"); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int var=1; switch(var) case 1: printf("hallo"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Die geschweifte Klammer der <code>switch</code>-Anweisung erzeugt einen Block, so dass a) hier mehrere <code>case</code>-Fälle und b) hierin definierte Variablen innerhalb des gesamten Blocks zur Verfügung stehen (sind somit nicht <code>case</code> abhängig). Die <code>case</code> Anweisung ist nichts anderes als eine Sprungmarken (welche durch die switch-Anweisung angesprungen wird) so dass der Initialisierungsteil der lokalen Variablen übersprungen / nicht ausgeführt werden kann: :<syntaxhighlight lang="C"> switch(a) { int a=3; //Variable in gesamten Block gültig case 1: int b=3; //Variabe in gesamten Block gültig printf("%d %d",a,b); //a undefiniert, b=3 break; case 2: printf("%d %d",a,b); //a und b undefiniert break; case 3: { //Block, so dass Variable int a=4711; //nur in diesem CASE gültig ist break; } } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=1; switch(a) { int a=3; //Variable in gesamten Block gültig case 1: int b=3; //Variabe in gesamten Block gültig printf("a=%d b=%d",a,b); //a undefiniert, b=3 break; case 2: printf("%d %d",a,b); //a und b undefiniert break; case 3: { //Block, so dass Variable int a=4711; //nur in diesem CASE gültig ist (void)a; break; } } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * GNU-C (siehe [https://www.gnu.org/software/c-intro-and-ref/manual/html_node/switch-Statement.html Switch-Statement]) erlaubt ergänzend zur Angabe einer Konstante die Angabe eines Wertebereiches: :<syntaxhighlight lang="C"> switch(a) { case 1 ... 8: //Leerzeichen zwischen den Konstanten zwingend notwendig //andernfalls wird der Punkt zur Konstante zugehörig //interpretiert (erzeugt dann eine Gleitpunktkonstante) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=2; switch(a) { case 1 ... 8: //Leerzeichen zwischen den Konstanten zwingend notwendig //andernfalls wird der Punkt zur Konstante zugehörig //interpretiert (erzeugt dann eine Gleitpunktkonstante) printf("a im Bereich von 1 bis 8\n"); break; } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * <code>break</code> ist optional. Mittels <code>break</code> wird an das Ende der Switch-Anweisung gesprungen. Wenn <code>break</code> weggelassen wird, wird die nachfolgende Anweisungen ausgeführt. Ggf. gibt der Compiler eine Warning aus. Mittels der GCC-Compiler-Anweisung __attribute__((fallthrough)); kann diese Warning unterdrückt werden: :<syntaxhighlight lang="C"> switch(a) { case 0: //ggf. Compiler-Warning __attribute__((fallthrough)); case 1: case 2: break; } </syntaxhighlight> * Ein Variable Length Array ist als Variable im Switch-Block direkt nicht erlaubt. Ist dies notwendig, so ist das VLA in einem inneren Block zu kapseln: :<syntaxhighlight lang="C"> switch(var) { case 1: int arr[var]; //KO break; case 2: { int arr[var]; //OK } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int var=1; switch(var) { case 1: int arr[var]; //KO break; case 2: { int arr[var]; //OK } } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Case - Anweisungen sind nichts anderes als Sprungmarken (Labels), so dass CASE-Anweisungen überall innerhalb des Switch-Blockes stehen können: :<syntaxhighlight lang="C"> int prime(int value) {return value+1;} void hallo(int var) { switch(var) { default: if(prime(var)) case 2: case 4: printf("%d",var); else { case 3: case 6: printf("%x",var); } case 7: printf("xyz"); } } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int prime(int value) { return value+1; } int main(int argc, char *argv[]) { int var=1; switch(var) { default: if(prime(var)) case 2: case 4: printf("%d",var); else { case 3: case 6: printf("%x",var); } case 7: printf("xyz"); } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} :oder anderen Anweisungen innerhalb des Switch-Blockes enthalten sein können: :<syntaxhighlight lang="C"> void send(register char *dst, register char *src, register size_t count) { register char unsigned n=(count+7)/8; switch(count%8) { case 0: do{ *dst = *src++; case 7: *dst = *src++; case 6: *dst = *src++; case 5: *dst = *src++; case 4: *dst = *src++; case 3: *dst = *src++; case 2: *dst = *src++; case 1: *dst = *src++; }while(--n>0); } } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <stdint.h> //fuer uintptr_t void send(register char *dst, register char *src, register size_t count) { register char unsigned n=(count+7)/8; switch(count%8) { case 0: do{ *dst = *src++; printf("%02hhx ",*dst); case 7: *dst = *src++; printf("%02hhx ",*dst); case 6: *dst = *src++; printf("%02hhx ",*dst); case 5: *dst = *src++; printf("%02hhx ",*dst); case 4: *dst = *src++; printf("%02hhx ",*dst); case 3: *dst = *src++; printf("%02hhx ",*dst); case 2: *dst = *src++; printf("%02hhx ",*dst); case 1: *dst = *src++; printf("%02hhx ",*dst); }while(--n>0); } } int main(int argc, char *argv[]) { char src[20]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}; char dst; send(&dst,src,20); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Eine Switch-Case Anweisung über Strings sind in C/C++ nicht möglich: :<syntaxhighlight lang="C"> switch(str) { case "hallo": return 1; case "du da": return 2; case "xyz": return 3; default: rReturn -1; } </syntaxhighlight> :Ein direkte Lösungsansatz ist die Nutzung von strcmp() zum Vergleichen von String. Da strcmp zeichenweise den String vergleicht, ist dieser Ansatz langsam. Alternativ bietet sich an, von allen String einen Hash-Wert zu berechnen und zunächst diesen Hash-Wert zu kontrollieren. Da der Hash-Wert nicht eindeutig ist, muss ergänzend ein strcmp() erfolgen: :<syntaxhighlight lang="C"> char *str="hallo"; switch(HASH_LAUFZEIT(str)) { case HASH_COMPILEZEIT('d','u'): if(!strcmp(str,"du")) printf("Case \"du\":\n"); break; case HASH_COMPILEZEIT('h','a','l','l','o'): if(!strcmp(str,"hallo")) printf("Case \"hallo\"\n"); else if(!strcmp(str,"xyz")) printf("String='xyz'\n"); break; default: return -1; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <stdint.h> //Lösungsansatz von: https://stackoverflow.com/questions/2826559/compile-time-preprocessor-hashing-of-string #define H1(s,i,x) (x*65599u+(uint8_t)s[(i)<strlen(s)?strlen(s)-1-(i):strlen(s)]) #define H4(s,i,x) H1(s,i,H1(s,i+1,H1(s,i+2,H1(s,i+3,x)))) #define H16(s,i,x) H4(s,i,H4(s,i+4,H4(s,i+8,H4(s,i+12,x)))) #define H64(s,i,x) H16(s,i,H16(s,i+16,H16(s,i+32,H16(s,i+48,x)))) #define H256(s,i,x) H64(s,i,H64(s,i+64,H64(s,i+128,H64(s,i+192,x)))) #define HASH(s) ((uint32_t)(H256(s,0,0)^(H256(s,0,0)>>16))) #define HASH_LAUFZEIT(s) (H256(s,0,0)) //Eigener Lösungsatz zur Umsetzung des vorherigen HASH-Algorithmus //so dass dieser zur Compilezeit berechnet werden kann //Was fehlt ist die abschließende EXOR berechnung! //Problem war, dass die Array-Dereferenzierung nicht zur Compilezeit //aufelöst werden kann #define HH0(a,x) (x*65599u+a) #define HH1(a) HH0(a,HH0(0,HH0(0,HH0(0,0)))) #define HH2(a,b) HH0(b,HH0(a,HH0(0,HH0(0,0)))) #define HH3(a,b,c) HH0(c,HH0(b,HH0(a,HH0(0,0)))) #define HH4(a,b,c,d) HH0(d,HH0(c,HH0(b,HH0(a,0)))) #define HH4x(a,b,c,d,x) HH0(d,HH0(c,HH0(b,HH0(a,x)))) #define HH5(a,b,c,d,e) HH4x(b,c,d,e,HH4x(0,0,0,a,0)) #define HH6(a,b,c,d,e,f) HH4x(c,d,e,f,HH4x(0,0,a,b,0)) #define HH7(a,b,c,d,e,f,g) HH4x(d,e,f,g,HH4x(0,a,b,c,0)) #define HH8(a,b,c,d,e,f,g,h) HH4x(e,f,g,h,HH4x(a,b,c,d,0)) #define HH9(a,b,c,d,e,f,g,h,i) HH4x(f,g,h,i,HH4x(b,c,d,e,HH4x(0,0,0,a,0))) #define HH10(a,b,c,d,e,f,g,h,i,j) HH4x(g,h,i,j,HH4x(c,d,e,f,HH4x(0,0,a,b,0))) #define HH11(a,b,c,d,e,f,g,h,i,j,k) HH4x(h,i,j,k,HH4x(d,e,f,g,HH4x(0,a,b,c,0))) #define HH12(a,b,c,d,e,f,g,h,i,j,k,l) HH4x(i,j,k,l,HH4x(e,f,g,h,HH4x(a,b,c,d,0))) #define HH13(a,b,c,d,e,f,g,h,i,j,k,l,m) HH4x(j,k,l,m,HH4x(f,g,h,i,HH4x(b,c,d,e,HH4x(0,0,0,a,0)))) #define HH14(a,b,c,d,e,f,g,h,i,j,k,l,m,n) HH4x(k,l,m,n,HH4x(g,h,i,j,HH4x(c,d,e,f,HH4x(0,0,a,b,0)))) #define HH15(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) HH4x(l,m,n,o,HH4x(h,i,j,k,HH4x(d,e,f,g,HH4x(0,a,b,c,0)))) #define HH16(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) HH4x(m,n,o,p,HH4x(i,j,k,l,HH4x(e,f,g,h,HH4x(a,b,c,d,0)))) #define EIGHTEENTH_ARGUMENT(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, \ a11,a12,a13,a14,a15,a16,a17,a18, ...) a18 #define CONCAT(c,d) c ## d #define CONCATI(a,b) CONCAT(a,b) #define HASH_COMPILEZEIT(...) CONCATI(HH , EIGHTEENTH_ARGUMENT(dummy, ## __VA_ARGS__, \ 16,15,14,13,12,11,10,9, 8, 7, 6, 5, 4, 3, 2, 1, 0))(__VA_ARGS__) //Lösungsansatz basierend auf: https://renenyffenegger.ch/notes/development/languages/C-C-plus-plus/preprocessor/macros/__VA_ARGS__/count-arguments #define COUNT_ARGUMENTS(...) EIGHTEENTH_ARGUMENT(dummy, ## __VA_ARGS__, \ 16,15,14,13,12,11,10,9, 8, 7, 6, 5, 4, 3, 2, 1, 0) int main(int argc, char *argv[]) { char *str="hallo"; switch(HASH_LAUFZEIT(str)) { case HASH_COMPILEZEIT('d','u'): if(!strcmp(str,"du")) printf("Case \"du\":\n"); break; case HASH_COMPILEZEIT('h','a','l','l','o'): if(!strcmp(str,"hallo")) printf("Case \"hallo\"\n"); else if(!strcmp(str,"xyz")) printf("String='xyz'\n"); break; default: return -1; } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} :Siehe:[https://benhoyt.com/writings/hash-table-in-c/ Hash Table in C] == Label + Goto == === Label === <code>Syntax: name:</code><br /> Labels dienen zur Kennzeichnung einer Anweisung, so dass die Programmausführung an dieser Stelle fortgesetzt, resp. mit einer GOTO-Anweisung angesprungen werden kann. Ein Label ist durch den folgenden Doppelpunkt gekennzeichnet. Dem Label muss eine Anweisung folgen, welches auch eine Leeranweisung (Semikolon) sein kann. Folgendes gilt es bei der Nutzung von Labels zu beachten: * Ein Label entspricht der Speicheradresse des der Label-Anweisung folgenden Anweisung * Bei nicht genutzten Labels (mit goto nicht angesprungene Labels) gibt der Compiler eine Warning aus. Diese kann beim GCC-Compiler mit __attribute__((unused)) unterdrückt werden * die Case- und die Default-Anweisung aus der Switch-Anweisung entspricht einem Label <br /> Labels hat eine funktionsweite Sichtbarkeit (siehe Kap [[#Gültigkeit/Sichtbarkeit von Variablen| Gültigkeit/Sichtbarkeit von Variablen]]). Dies bedeutet, dass das: * Labels nur innerhalb einer Funktion gültig ist * Labels einen von Variablen/Funktionen/Datentypen unabhängigen Namensraum haben * Kein Prototyp für ein Label notwendig ist, wenn es bei Nutzung über goto noch nicht gesetzt worden ist, also nach vorne gesprungen wird === goto === <code>Syntax: goto label;</code><br /> Mit der Goto-Anweisung wird die Programmausführung an der mit <code>label</code> gekennzeichneten Stelle fortgesetzt. Folgendes gilt es bei der Nutzung von goto zu beachten: * Mit einer <code>goto</code> Anweisung kann an eine beliebige Steller innerhalb der '''identischen''' Funktion gesprungen werden. Es kann nicht zu einem Label in einer anderen Funktion gesprungen werden (hierzu ist <code>setjmp()</code> und <code>longjmp()</code> zu nutzen) * Mit der Goto Anweisung kann gleichermaßen in einen Block hinein, als auch herausgesprungen werden: :<syntaxhighlight lang="C"> goto first_time; for(;;) { if(a>10) goto last_time: first_time: a++; } last_time: ; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=0; goto first_time; for(;;) { printf("a=%d\n",a); if(a>10) goto last_time; first_time: a++; } last_time: ; //Leeranweisung wäre hier nicht nötig return 0; //da dem Label ein return folgt! } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Wird mit der <code>goto</code> Anweisung der Initialisierungsteil einer Variablen übersprungen, so ist zwar die Variable existent, beinhaltet aber nicht ihren Initialisierungswert Beispiel: <syntaxhighlight lang="C"> goto label1; if(a==3) { label2: printf("True\n"); } else label1: { printf("False\n"); } if(a==3) goto label2; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=3; goto label1; if(a==3) { label2: printf("True\n"); a++; } else label1: { printf("False\n"); } if(a==3) goto label2; return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * In Java gibt es das Schlüsselwort goto, welches aber ohne Funktion ist. Es gibt jedoch Labels, die mit "break label" angesprungen werden können === Anwendungsbeispiele === Prinzipiell sind Goto-Anweisungen zu vermeiden. In einigen Anwendungsfällen erweist sich goto als nützlich: * Nutzung nur einer <code>return</code> Anweisung in einer Funktionen :<syntaxhighlight lang="C"> #include <unistd.h> int input(int hdl,size_t buflen) { int rc=-1; unsigned char packettype; if(read(hdl,&packettype,1) != 1) goto exit; unsigned short packetlen; if(read(hdl,&packetlen,2) != 2) goto exit; if((1+packetlen) > buflen) { rc=-2; goto exit; } rc=packetlen; exit: return rc; } </syntaxhighlight> * Konstruktor mit mehreren Initialisierungsteilen :<syntaxhighlight lang="C"> int main(int argc,char *argv[]) { enum {INIT_2,INIT_1,INIT_START} fortschritt=INIT_START; int *ptr1; int *ptr2; if(!(ptr1=malloc(10))) goto end; fortschritt=INIT_1; if(!(ptr2=malloc(20))) goto end; fortschritt=INIT_2; // ... end: switch(fortschritt) { case INIT_2: free(ptr2); __attribute__((fallthrough)); case INIT_1: free(ptr1); __attribute__((fallthrough)); case INIT_START: } return (int)fortschritt; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { enum {INIT_2,INIT_1,INIT_START} fortschritt=INIT_START; int *ptr1; int *ptr2; if(!(ptr1=malloc(10))) goto end; fortschritt=INIT_1; if(!(ptr2=malloc(20))) goto end; fortschritt=INIT_2; // ... end: switch(fortschritt) { case INIT_2: free(ptr2); __attribute__((fallthrough)); case INIT_1: free(ptr1); __attribute__((fallthrough)); case INIT_START: } return (int)fortschritt; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Abbruch einer verschachtelten Schleife :<syntaxhighlight lang="C"> int arr[10][10]; size_t zeile; size_t spalte; for(zeile=0;zeile<10;zeile++) for(spalte=0;spalte<0;spalte++) if(arr[zeile][spalte]==0) goto label_end; label_end: if((zeile==0) && (spalte==0)) printf("Nichts gefunden"); else printf("Gefunden an %zu %zu",zeile,spalte); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int arr[10][10]; size_t zeile; size_t spalte; for(zeile=0;zeile<10;zeile++) for(spalte=0;spalte<0;spalte++) if(arr[zeile][spalte]==0) goto label_end; label_end: if((zeile==0) && (spalte==0)) printf("Nichts gefunden"); else printf("Gefunden an %zu %zu",zeile,spalte); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Sonstiges == === ??-Trigraphs === Zeichenfolge bestehend aus 3 Zeichen beginnend mit 2 Fragezeichen. Die beiden Fragezeichen entsprechen einem ESCAPE-Operator (siehe Kap [[#Char-Konstanten|Char-Konstanten]]), welcher das nachfolgende Zeichen durch ein anderes ASCII Zeichen ersetzt. Die Ersetzung findet auch innerhalb von Strings statt.<br /> Trigraphs wurden früher genutzt, als die ALTGR Taste noch nicht üblich war. <syntaxhighlight> ??< → { ??> → } ??( → [ ??) → ] ??/ → \ ??! → | ??' → ^ ??- → ~ ??= → # </syntaxhighlight> Bei neuer C Varianten muss zur Nutzung von Trigraphs der Compiler mittels -trigraphs aktiviert werden. <noinclude> {{Navigation zurückhochvor buch |zurücklink=Programmieren in C/C++: Toolchain/Entwicklungsumgebung |zurücktext=Toolchain/Entwicklungsumgebung |hochlink=Programmieren in C/C++ |hochtext=Inhaltsverzeichnis |vorlink=Programmieren in C/C++: Datentypen |vortext=Datentypen}} </noinclude> 95nvw32entmwdvhrbi1hv54ztd1mm5g 1090611 1090610 2026-09-09T10:22:54Z D. Justen 102048 Funktion in Funktion vorsorglich verschoben 1090611 wikitext text/x-wiki <noinclude> {{Navigation zurückhochvor buch |zurücklink=Programmieren in C/C++: Toolchain/Entwicklungsumgebung |zurücktext=Toolchain/Entwicklungsumgebung |hochlink=Programmieren in C/C++ |hochtext=Inhaltsverzeichnis |vorlink=Programmieren in C/C++: Datentypen |vortext=Datentypen}} </noinclude> <!-- Falls du ein automatisch erstelltes Inhaltsverzeichnis nicht willst, ersetze das nachfolgende TOC durch NOTOC --> <!-- Einklammerung mit noinclude, damit dieses nicht in der Druckversion erscheint --> <noinclude>__TOC__</noinclude> Die Programmiersprache C/C++ beinhaltet mehrere Sprachen/ Syntaxen: * C-Syntax * Präprozessor-Syntax * Printf/Scanf Formatstring Syntax * Terminal Emulation * Compiler/Linker Anweisungen Letztere beiden werden nur rudimentär in dieser Vorlesung/diesem Skript behandelt. Alle anderen sind Bestandteil dieser Vorlesung. In diesem Kapitel sollen zunächst allgemeine Eigenschaften der Sprache, der grundlegende Syntax und die Kontrollstrukturen erklärt werden. Bei vielen Erklärungen sind Code-Beispiele vorhanden. Da man aus Fehlern am meisten lernt, sind zum Teil auch negative Beispiele enthalten. Für ein besseres Verständnis empfiehlt es sich, Code-Beispiele selbst nachzuvollziehen.<br /> Sofern sich die Eigenschaften auf eine bestimmte C-/C++- oder Compiler-Version beziehen, wird dies gesondert vermerkt. == Zeichensatz == Der Syntax von C nutzt die unteren 128 Zeichen des ASCII Zeichensatzes. Da UTF-8 in den ersten 128 Zeichen deckungsgleich zu ASCII ist, kann auch dieser zur Erstellung des Source Codes genutzt werden. Zeichen außerhalb dieses gültigen Zeichensatzes können folglich nur in Strings oder Kommentaren vorkommen. Werden Zeichen außerhalb der unteren 128 Zeichen in Strings genutzt, so gilt Folgendes zu berücksichtigen: * Die String-Funktionalitäten der Standard-C Library gehen von dem regulären ASCII Zeichensatz aus, so dass z.B. die Suche, der Vergleich oder die Konvertierung fehlschlagen kann * Strings werden oftmals in Verbindung mit printf() genutzt, d.h. auf der Standardausgabe ausgegeben. Der verwendete Zeichensatz sollte hier identisch zum verwendeten Zeichensatz der Terminal-Emulation sein! == Kommentarzeichen == Kommentare dienen dazu, den Source Code mit zusätzlichen Hinweisen zu versehen, so dass die Intension der Anweisungen sichtbar wird. Kommentarzeichen werden durch den Compiler vor dem eigentlichen Übersetzungsdurchlauf entfernt und durch ein Leerzeichen ersetzt [C11 6.4.9]. Innerhalb von Strings wird nicht nach Kommentarzeichen gesucht. <code> Syntax: /* */ </code> Blockkommentar zum Kommentieren eines Bereiches, auch über mehrere Zeilen hinweg. Dieses Kommentarzeichen kann nicht verschachtelt werden, d.h. '*/' beendet die Kommentierung, unabhängig von der Anzahl der zuvor geöffneten Kommentierungen! <code> Syntax: // </code> Zeilenkommentar zum Kommentieren bis zum Zeilenende (wurde in der Programmiersprache BCPL definiert, aber nicht von C, sondern erst von C++ übernommen). Sollen größere Bereiche auskommentiert werden, so empfiehlt sich die Nutzung der Präprozessoranweisung #if 0 ... #endif. Beispiele: <syntaxhighlight lang="C"> /* Blockkommentar mit zwei öffnenden Klammern /* über mehrere Zeilen, nicht verschachtelt */ //Zeilenkommentar /* Kleiner Bereich zum auskommentieren */ #if 0 Großer Bereich zum auskommentieren #endif </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> /* Blockkommentar mit zwei öffnenden Klammern /* über mehrere Zeilen, nicht verschachtelt Compiler-Warning nur aufgrund des Compiler-Schalters -Wall! */ //Zeilenkommentar /* Kleiner Bereich zum auskommentieren */ #if 0 Großer Bereich zum auskommentieren #endif int main(int argc,char *argv[]) { return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Namenskonventionen == Folgende Regeln gelten bzgl. der Benennung von Variablen und Funktionen: * Variablen und Funktionsnamen können aus Buchstaben, Zahlen und dem Unterstrich bestehen. Sie müssen mit einem Buchstaben oder einem Unterstrich beginnen * Seit C95 können weitere Zeichen aus dem Universal Coded Character Set (UCS) genutzt werden [C11 D.1] * C ist Case sensitiv, d.h. es wird zwischen Groß- und Kleinbuchstaben unterschieden * Schlüsselwörter können nicht für Variablen/Funktionsnamen/Datentypen genutzt werden Namenskonventionen von Libraryfunktionen: * In C (und C++) sind Schlüsselwörter und Standardlibraryfunktionen zumeist in Kleinbuchstaben geschrieben. In der C-Standardlibrary werden oftmals verkürzte Ausdrücke (z.B. isalnum() (zum Testen ob ein Zeichen ein Buchstaben oder ein Digit ist) und in C++ der Unterstrich als Worttrenner (z.b. out_of_range) genutzt * Makros (siehe Kap.[[Programmieren in C/C++: Präprozessor | Präprozessor]]) werden per Konvention in GROSSBUCHSTABEN und ggf. mit Unterstrich als Worttrenner geschrieben. * Namen beginnend mit doppelten Unterstrich oder beginnend mit einem Unterstrich gefolgt von einem Großbuchstaben (z.B. __LINE__ _Reserved) sind für den Compiler und der Standard-C-Library vorbehalten und sollten im eigenen Programm nicht benutzt werden. == Zeilenfortsetzung == Mit dem Backslash Operator (gefolgt von einem Zeilenende) kann eine Zeile in der nächsten Zeile fortgesetzt werden. Der Compiler löscht das \-Zeichen mit anschließendem Zeilenende und ersetzt dies durch nichts. Dies ist insbesondere bei Anweisungen notwendig, die am Ende der Zeile abgeschlossen sein müssen (z.B. Strings, Makros). Beispiele: <syntaxhighlight lang="c"> char str1[]="Strings müssen am Ende abgeschlossen sein so dass dies ein Fehler ist"; char str2[]="Dies\ ist ein Test"; //Vorsicht, führende Leerzeichen vor 'ist' //bleiben erhalten! /*mehrzeiliges Makro*/ #define MAX(a,b) (a>b?\ b: \ a) //Dies ist ein Zeilenkommentar \ welcher in dieser Zeile fortgesetzt wird /\ * dies ist ein Blockkommentar*\ / //hinter der Zeilenfortsetzung darf nur ein CR/LF folgen #define MAX2(a,b) \ //so dass hier kein Kommentar folgen darf a>b?a:b </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> char str1[]="Strings müssen am Ende abgeschlossen sein so dass dies ein Fehler ist"; char str2[]="Dies\ ist ein Test"; //Vorsicht, führende Leerzeichen vor 'ist' //bleiben erhalten! /*mehrzeiliges Makro*/ #define MAX(a,b) (a>b?\ b: \ a) //Dies ist ein Zeilenkommentar \ welcher in dieser Zeile fortgesetzt wird /\ * dies ist ein Blockkommentar*\ / //hinter der Zeilenfortsetzung darf nur ein CR/LF folgen #define MAX2(a,b) \ //so dass hier kein Kommentar folgen darf a>b?a:b int main(int argc,char *argv[]) { return 0; } | execCompilerOptions=| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Innerhalb von Char-Literatoren und Strings wird '\' als Escape-Operator genutzt, welche das '\' und ein oder mehrere folgende Zeichen ersetzt (siehe Kap.[[Programmieren in C/C++: Grundlagen#Literale/Konstanten | Grundlagen:Literale/Konstanten]]). Daher darf hinter Backslash als Zeilenfortsetzungszeichen kein weiteres Zeichen folgen. == Gültigkeit/Sichtbarkeit von Variablen == Vorrangig in der objektorientierten Programmierung werden mit Namensräumen Objekte und deren Methoden/Attribute in einer Art Baumstruktur strukturiert. Dies ermöglicht eine eindeutige Ansprache von Variablen/Objekte, aber auch eine doppelte Verwendung von Methoden-/Attributnamen in unterschiedlichen Namensräumen. Ergänzend zu den Namensräumen kann mit public/private/proteced eine Zugriffsbeschränkung von Methoden/Attributen definiert werden. Die Programmiersprache C unterstützt keinen Namensraum. Zugriffsmodifikatoren werden indirekt über Header-Dateien getätigt. Hinsichtlich der Gültigkeit/Sichtbarkeit unterscheidet C folgende Bereiche [C11 6.2.1]: * Funktionen (Function Scope) * Datei (File Scope) * Block (Block Scope) * Funktionsparameter in Prototypen (Function Prototype Scope) Innerhalb eines Gültigkeitsbereiches dürfen Variablen-/Funktions-/Datentypnamen nicht doppelt genutzt werden.<br /> In der Programmiersprache C++ sind weitere Scope wie z.B. Class Scope, Enumationation Scope und ergänzend das Konzept von Namensräumen vorhanden (Beschreibung folgt). === Funktionsweite Sichtbarkeit === Eine Label-Definition (als Sprungmarke für die goto-Anweisungen) erfolgt immer mit funktionsweiter Sichtbarkeit/Gültigkeit. Die genaue Beschreibung dieses Sichtbarkeitstyps erfolgt im Rahmen des Kapitels [[Programmieren in C/C++: Grundlagen #Label + Goto|Grundlagen:Label+Goto]]. === Dateiweite Sichtbarkeit === Erfolgt eine Funktion-/Variablen-/Datentyp-Definition außerhalb eines Block-Scopes oder von Funktionsparameter, so sind diese innerhalb der gesamten Datei und bei Funktionen/Variablen ergänzend Projektweit (für alle Objektdateien) sichtbar/gültig (=&nbsp;global) (In der C-Spec unter dem Stichwort 'Linkage' beschrieben, siehe Kapitel [[Programmieren in C/C++: DatentypeSpecifier#Internal/External Linkage| DatentypeSpecifier:Internal/External Linkage]]). Alle globalen Funktionen/Variablen können von allen Dateien aus genutzt/zugegriffen werden (sofern sie zuvor deklariert wurden).<br /> Beispiel: {| class="wikitable" |- ! Datei1.c !! Datei2.c |- | <syntaxhighlight lang="C"> //Deklaration von func(), //welche in Datei2.c definiert wird extern void func(void); //Definition der Variablen global int global=0; int main(void) { func(); global++; return 0; } </syntaxhighlight> || <syntaxhighlight lang="C"> //Deklaration von global, //welche in Datei1.c definiert wird extern int global; //Definition der Funktion func() void func(void) { global++; } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Deklaration von func(), //welche in Datei2.c definiert wird extern void func(void); //Definition der Variablen global int global=0; int main(void) { func(); global++; printf("global=%d\n",global); return 0; } | datei2_c=#include <stdio.h> //Deklaration von global, //welche in example.c definiert wird extern int global; //Definition der Funktion func() void func(void) { global++; printf("func() called\n"); } | execCompilerOptions=-Wall datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Wird das Schlüsselwort 'static' der Variablen/Funktionsdefinition vorangestellt, so wird die Sichtbarkeit/Gültigkeit auf Dateiweit eingeschränkt. Variablen/Funktionen können nur innerhalb der (Objekt-) Datei genutzt werden und sind für anderen (Objekt-)Dateien unsichtbar. (Siehe Kap. [[Programmieren in C/C++: DatentypeSpecifier#Internal/External Linkage|DatentypeSpecifier:Internal/External Linkage]] Internal/External Linkage) {| class="wikitable" |- ! Datei1.c !! Datei2.c |- | <syntaxhighlight lang="C"> //Dateiweite Sichtbarkeit von var1 static int var1; int main(void) { var1++; return 0; } </syntaxhighlight> || <syntaxhighlight lang="C"> //Dateiweite Sichtbarkeit von var1 static int var1; void func(void) { static int var2; //Vorsicht, static // hat hier eine andere Bedeutung var1++; } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Dateiweite Sichtbarkeit von var1 static int var1; int main(void) { var1++; printf("example.c:var1=%d\n",var1); void func(void); //Prototyp für func() func(); return 0; } | datei2_c=#include <stdio.h> //Dateiweite Sichtbarkeit von var1 static int var1; void func(void) { static int var2; //Vorsicht, static // hat hier eine andere Bedeutung var1++; printf("datei2.c:var1=%d\n",var1); } | execCompilerOptions=datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Projektweite Gültigkeit bedeutet insbesondere, dass keine doppelten Benennung von Variablen/Funktionen/Datentypen innerhalb des gesamten Projektes erlaubt sind, d.h. alle Variablen/Funktionennamen über alle Dateien/Librarys eindeutig sein müssen.<br> Beispiel 1: {| class="wikitable" |- ! Datei1.c !! Datei.2 |- | <syntaxhighlight lang="C"> #include <stdio.h> int a=1; int main(int argc,char *argv[]) { printf("Hello World %d",a); void dummy(void); //Deklaration von Dummy dummy(); return 0; }</syntaxhighlight> || <syntaxhighlight lang="C"> #include <stdio.h> int a=7; void dummy(void) { printf("Hello Again %d\n",a); } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int a=1; int main(int argc,char *argv[]) { printf("Hello World %d",a); void dummy(void); //Deklaration von Dummy dummy(); return 0; } | datei2_c=#include <stdio.h> #include <stdio.h> int a=7; void dummy(void) { printf("Hello Again %d\n",a); } | execCompilerOptions=datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Der Linker meldet beim Zusammenfügen der Objekt-Dateien, dass die Variable a bereits woanders definiert sei (multiple definition of `a';)! Beispiel 2: <syntaxhighlight lang="C"> #include <stdio.h> //fuer printf() size_t stderr int printf=7; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int printf=7; int main(int argc,char *argv[]) { return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hier meldet der Compiler eine Fehlermeldung, da das Symbol printf zu einen als Variable und zum anderen als Funktion (innerhalb der inkludierten Datei stdio.h beschrieben) genutzt wird ('printf' redeclared as different kind of symbol). === Blockweite Sichtbarkeit === Erfolgt eine Funktion-/Variablen-/Datentyp Definition innerhalb einer Funktion, als Funktionsparameter oder eines Blockes, so sind diese nur innerhalb des Blockes sichtbar/gültig (=Lokale Variable). Blöcke können verschachtelt sein, so dass das bei identischer Namensgebung innere Definitionen Vorrang haben. Ebenso haben Blockdefinitionen Vorrang vor Datei-/Projektdefinitionen (überdecken diese): {| class="wikitable" |- ! Datei1.c !! Datei2.c |- | <syntaxhighlight lang="C"> int main(void) { int var2; //var2 ist nur innerhalb //von main() sichtbar struct xyz //Datentyp ist nur innerhalb {int x,y,z;};//von main() //sichtbar/gültig extern void func(void); //Deklaration //ist nur innerhalb von //main() sichtbar/gültig func(); } void foo(void) { struct xyz var_xyz; //Fehler, da //Datentypedefinition hier nicht mehr //gültig ist! func(); //Fehler, da Deklaration //hier nicht mehr gültig ist } </syntaxhighlight> || <syntaxhighlight lang="C"> #include <stdio.h> void func(void) { int var2=1; //var2 ist //nur innerhalb von //func() sichtbar { int var2=2; //var2 ist nur innerhalb //dieses Blockes sichtbar printf("%d\n",var2); } printf("%d\n",var2); } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(void) { int var2; //var2 ist nur innerhalb //von main() sichtbar struct xyz //Datentyp ist nur innerhalb {int x,y,z;};//von main() //sichtbar/gültig extern void func(void); //Deklaration //ist nur innerhalb von //main() sichtbar/gültig func(); } void foo(void) { struct xyz var_xyz; //Fehler, da //Datentypedefinition hier nicht mehr //gültig ist! func(); //Fehler, da Deklaration //hier nicht mehr gültig ist } | datei2_c=#include <stdio.h> void func(void) { int var2=1; //var2 ist //nur innerhalb von //func() sichtbar { int var2=2; //var2 ist nur innerhalb //dieses Blockes sichtbar printf("%d\n",var2); } printf("%d\n",var2); } | execCompilerOptions=-Wall datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Sichtbarkeit von Funktionsparameter in Protypen === Soll eine Funktion aufgerufen werden, die zuvor nicht definiert wurde, so ist ein Prototyp/(Forward)deklaration der Funktion notwendig (siehe nachfolgendes Kapitel). Die Parameterliste dieses Prototyps hat seinen eigenen Gültigkeitsbereich.<br/> Beispiel: <syntaxhighlight lang="C"> int a; //a im File Scope int func(int a, int b); //a und b im Function Prototyp scope </syntaxhighlight> Hinweis: * Bei Prototypen ist die Angabe von Variablenname nicht notwendig. Die alleinige Angabe des Datentyps ist ausreichend === Zuordnung der Gültigkeitsbereiche zu globalen/lokalen Variablen === Zum einfacheren Verständnis wird im Skript von folgenden Begrifflichkeiten gesprochen: * '''Globale''' Variablen-/Funktionen-/Datentypdefinitionen → Projektweite Sichtbarkeit/Gültigkeit * '''Statisch globale''' Variable/Funktionen → Dateiweite Sichtbarkeit/Gültigkeit * '''Lokale''' Variablen/Funktionen/Funktionsparameter/Datentypen → Nur innerhalb des zugehörigen Blockes sichtbare/gültig * '''Statisch lokale''' Variablen → Nur innerhalb der Funktion sichtbar/gültig, mit der Besonderheit, dass die Gültigkeit über der Laufzeit der Funktion gilt (siehe Kap. [[Programmieren in C/C++: DatentypeSpecifier#Static Storage Class Specifier|DatentypeSpecifier:Static Storage Class Specifier]]) === Speicherzuweisung === Für die einzelnen Gültigkeitsbereiche werden im Speicher (und auch in der Objekt-Datei) unterschiedliche Speicherbereiche (Segmente) vorgehalten, d.h. der Compiler teilt den Speicher in unterschiedliche Bereiche auf und weist den Variablen/Funktionen in Abhängigkeit der Gültigkeit/Sichtbarkeit unterschiedliche Speicherbereiche zu! [[File:Zuordnung von Inhalten eines C-Programms zu Speicherbereichen (Segmenten).png|thumb|Zuordnung von Inhalten eines C-Programms zu Speicherbereichen (Segmenten)]] Zur Ermöglichung von Rekursion werden lokale Variable auf dem Stack gehandelt. Mit Aufruf einer Funktion oder öffnen eines neuen Block-Scopes wird Speicher auf dem Stack reserviert, der bei Beenden des Scopes wieder freigegeben wird. Die Speicheradresse von lokalen Variablen ist somit nicht Fix, sondern hängt von der Aufrufhierarchie ab! Globale und statisch globale Variablen werden nicht auf dem Stack gehalten, sondern bekommen einen 'festen' Speicherbereich (hier DATA/BSS/RODATA) während der gesamten Laufzeit des Programms zugewiesen. Die Adresse dieser Variablen sind somit konstant. Das genutzte Speichersegment von globalen Variablen hängen von der Art der Variablen ab. Initialisierte Variablen werden im DATA-Segment gesammelt, welcher mit dem Initialisierungswert der Variablen initialisiert wird. Nicht initialisierte globale Variablen landen im BSS-Segment, so dass diese mit Programmstart durch Füllen dieses Blockes mit 0 auf 0 gesetzt werden. Konstante globale Variablen werden im RODATA-Segment gehalten. Über das Betriebssystem kann dieser Speicherbereich auf nur Lesbar gesetzt werden. Dynamische Speicheranforderungen, resp. Speicher, dessen Gültigkeit über die Laufzeit einer Funktion hinausgeht, wird im Heap gesammelt. Für die Verwaltung dieses Speichers ist der Programmierer zuständig. Entsprechend globalen Variablen wird für Funktionen ebenfalls ein eigener Speicherbereich (TEXT Segment) vorgesehen. Im Gegensatz zu Variablen, wo im Speicher der dazugehörige Inhalt gespeichert ist, ist der Speicherinhalt von Funktionen die Maschinenanweisungen. Die Speicheradresse der Funktionen sind konstant. Hinweis: * Die Speicheradresse von sowohl globalen und statisch globalen Variablen als auch von Funktionen ist konstant und ändert sich während der Laufzeit des Programms nicht. Die Adressvergabe dieser Variablen und Funktionen erfolgt somit nicht zur Laufzeit sondern durch die Toolchain (hier der Linker). * Dieses Konzept ist allgemeingültig, gilt nicht nur für die Programmiersprache C/C++ == Definition/Deklaration(Prototyp) == Der C-Compiler ist ein Single-Pass Compiler (siehe Kap [[Programmieren in C/C++: Einführung/Literatur#Arbeitsweise eines Compilers | Einführung/Literatur:Arbeitsweise eines Compilers ]]), d.h. für den Übersetzungsvorgang wird der Quellcode einmalig eingelesen und von vorne nach hinten abgearbeitet. Dies bedingt, dass keine Vorwärtsbezüge im Quelltext enthalten sein dürfen: * keine Variable genutzt werden kann, die erst später definiert wird (da der Compiler in Abhängigkeit des Datentyps (den er dann noch nicht kennt) keine entsprechende Maschinensprachebefehle erzeugen kann) * keine Funktion aufgerufen werden kann, die erst später definiert wird (da der Compiler nicht weiß, welcher Datentyp die Übergabewerte haben und folglich keine Maschinensprachebefehle zur Konvertierung und Übergabe der Variablen erzeugen kann) * kein Datentyp genutzt werden kann (struct, union, enum, typedef), welcher erst später definiert wird (da der Compiler nicht weiß, wieviel Speicher er für die Variable reservieren muss) Eine Lösungsvariante dieser Problematik ist, im Quellcode alle Variablen/Funktionen/Datentypen/Makros zu definieren, bevor diese erstmalig genutzt werden (Funktion main() steht dann folglich am Ende des Quellcodes): <syntaxhighlight lang="C"> void foo(void) { //foo() wird vor dem ersten Aufruf definiert //Hier kein Zugriff auf var möglich! //Hier kein Zugriff auf Datentyp uchar möglich! } int var; //var wird vor dem ersten Aufruf definiert typedef unsigned char uchar; //Definition des Datentyps uchar int main(void) { foo(); //da zuvor definiert kann diese Funktion hier aufgerufen werden var++; //dito } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void foo(void) { //foo() wird vor dem ersten Aufruf definiert var++; //Hier kein Zugriff auf var möglich! uchar xyz;//Hier kein Zugriff auf Datentyp uchar möglich! } int var; //var wird vor dem ersten Aufruf definiert typedef unsigned char uchar; //Definition des Datentyps uchar int main(int argc, char *argv[]) { foo(); //da zuvor definiert kann diese Funktion hier aufgerufen werden var++; //dito } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Sollen globale Funktionen/Variablen in Datei1.c genutzt werden, die in Datei2.c definiert sind, so schlägt diese Vorgehensweise fehl. Um auch dieses zu ermöglichen, bietet C die Möglichkeiten von Prototypen/Deklarationen an. Diese teilt dem Compiler mit, wie im späteren Ablauf die Variable, die Funktion definiert wird, bzw. dass es diesen Datentyp geben wird: {| class="wikitable" |- ! Datei1.c !! Datei2.c |- | <syntaxhighlight lang="C"> //Prototyp für Variable var extern int var; //Prototyp für Funktion foo void foo(void); int main(int argc, char *argv[]) { foo(); //Compiler kann aufgrund var++; //der Prototypen diese //Aufruf in Maschinen- //sprachebefehle umsetzen } </syntaxhighlight> || <syntaxhighlight lang="C"> //Definition der Variablen var int var; //Definition der Funktion foo void foo(void) { } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Prototyp für Variable var extern int var; //Prototyp für Funktion foo void foo(void); int main(int argc, char *argv[]) { foo(); //Compiler kann aufgrund var++; //der Prototypen diese //Aufruf in Maschinen- //sprachebefehle umsetzen } | datei2_c=#include <stdio.h> //Definition der Variablen var int var; //Definition der Funktion foo void foo(void) { } | execCompilerOptions=-Wall datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Innerhalb der C-Spezifikation werden für den Umgang mit dieser Problematik die Begriffe 'Declaration' und 'Definition' genutzt. Da diese Begriffe jedoch nicht klar abgegrenzt werden und auch für viele weitere Aspekte genutzt werden, sollen in diesem Skript in Anlehnung an den Wikipedia Artikel {{w|Deklaration (Programmierung)|Deklaration (Programmierung)}} (im Absatz zur Programmiersprache C/C++) die Begriffe Definition/Deklaration wie folgt genutzt werden: ;Definition: entspricht der Belegung/Reservierung von Speicherplatz :* Bei der Definition einer Variablen wird hiermit Speicherplatz entsprechend dem Datentyp der Variable belegt: :<syntaxhighlight lang="C"> int var1; //entsprechend der Größe des Datentyps int wird //Speicherplatz für die Variable var1 reserviert int var2=4711; //Dito, ergänzend wird dieser Speicherplatz mit dem //Wert 4711 initialisiert </syntaxhighlight> :* Bei einer Funktion wird Speicherplatz zur Aufnahme der Maschinenbefehle belegt: :<syntaxhighlight lang="C"> void foo(void) { //Die Anweisungen in den geschweiften Klammern //werden in Maschinenbefehle übersetzt. D.h. die //Funktion foo() belegt Speicher, dessen Inhalt //die Maschinensprachebefehle sind } </syntaxhighlight> :* Ergänzend wird der Begriff Definition auch in Verbindung mit der Definition von neuen Datentypen genutzt! ;Deklaration/Prototyp: ist die Mitteilung an den Compiler, wie diese Variable/Funktion an einer späteren Stelle im Source-Code oder in einer anderen Source-Datei definiert wird. Auf Grundlage dieser 'vorab' Information kann der Compiler die passenden Maschinensprachebefehle für den Zugriff/Aufruf auf die Variablen/Funktion einsetzen: :<syntaxhighlight lang="C"> extern int var1; //Deklaration von var1 extern void foo(void); //Deklaration von foo() void foo(void); //Deklaration von foo() </syntaxhighlight><br /> Insbesondere bei dem Umgang mit der Deklaration gilt es Folgendes zu berücksichtigen: * Deklarationen werden entweder: :* am Anfang einer C-Datei geschrieben, so dass Funktionen/Variablen im Zugriff stehen, die erst später in der C-Datei definiert werden (entspricht dann der Private Anweisung in anderen Sprachen) :* in Header-Dateien geschrieben, so dass diese Variable/Funktionen für alle sichtbar sind, welche diese Header-Datei einbinden (entspricht der Public Anweisung in anderen Sprachen) * Deklarationen von Funktionen werden in der C-Spec als (function) Prototyp bezeichnet und sind dadurch gekennzeichnet, dass diese mit einem Semikolon abgeschlossen sind. Der Specifier 'extern' ist hier optional und sagt eigentlich aus, dass diese Funktion external Linkage besitzt (siehe [[Programmieren in C/C++:_DatentypeSpecifier#Internal/External Linkage | DatentypeSpecifier:Internal/External Linkage]]). Die Benennung der Parametervariablen sind gleichermaßen optional: :<syntaxhighlight lang="C"> extern int foo(int var1, float var2); //Deklaration extern int foo(int , float ); //Deklaration int foo(int var1, float var2); //Deklaration + external Linkage int foo(int , float ); //Deklaration + external Linkage </syntaxhighlight> * Für globale Variablen gibt es keine (Variablen) Prototype. Stattdessen muss zur Bekanntgabe des Datentyps der Specifier 'extern' vorangestellt werden, mit welchen ergänzend zum Ausdruck gebracht wird, das diese Variable external Linkage und damit globale Gültigkeit hat (siehe Kap [[Programmieren in C/C++: DatentypeSpecifier# Extern - Storage Class Specifier| DatentypeSpecifier:Extern - Storage Class Specifier]]). Da die Deklaration einzig zur Bestimmung der Zugriffsmethoden auf Maschinenspracheebene genutzt wird, können diese keine Initialisierungswerte enthalten: :<syntaxhighlight lang="C"> extern int var1; extern int var2=7; //KO Deklarationen können keine //Initialisierungswerte haben </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> extern int foo; extern int foo=7; int main(int argc, char *argv[]) { return foo; } int foo=7;| execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Deklarationen von statisch globalen, lokalen und statisch lokalen Variablen nicht möglich sind: :<syntaxhighlight lang="C"> extern static int glob; //keine Deklaration von statisch globalen //Variablen möglich int main(int argc, char *argv[]) { extern int var; //Deklaration bezieht sich auf eine globale //Variable, die nicht definiert ist extern static int lok; printf("%d %d\n",var,lok); int var; static int lok; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> extern static int glob; //keine Deklaration von statisch globalen //Variablen möglich int main(int argc, char *argv[]) { extern int var; //Deklaration bezieht sicht auf eine globale //Variable, die nicht definiert ist extern static int lok; printf("%d %d\n",var,lok); int var; static int lok; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Deklarationen für identische Variablen/Funktionen können beliebig oft erfolgen, sofern der Datentyp identisch ist: :<syntaxhighlight lang="C"> extern int var; extern int var; //OK, doppelt Deklaration mit identischen Datentyp extern unsigned int var; //KO, Doppelte Deklaration mit unterschiedlichen // Datentyp </syntaxhighlight> * Sofern eine Deklaration und eine Definition in der identischen Datei erfolgen überprüft der Compiler, ob Deklaration und Definition identisch sind. Es empfiehlt sich, die eigene Header-Datei (in welcher die Deklaration normalerweise enthalten ist) zu inkludieren: :{| class="wikitable" |- ! Datei1.c !! Datei1.h |- | <syntaxhighlight lang="C"> //Include der eigenen Header-Datei #include "datei1.h" int var1; //Definition von var1 short var2; //Definition von var2 int var3; //Private Variable //da kein Prototyp //im Header vorhanden void func(void) { } </syntaxhighlight> || <syntaxhighlight lang="C"> extern int var1; //Deklaration extern char var2; //KO, da Deklaration //von Definition //abweicht void func(int); //KO, da Deklaration //von Definition //abweicht </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Include der eigenen Header-Datei #include "example.h" int var1; //Definition von var1 short var2; //Definition von var2 int var3; //Private Variable //da kein Prototyp //im Header vorhanden void func(void) { } int main(int argc, char *argv[]) { return 0; } | example_h= extern int var1; //Deklaration extern char var2; //KO, da Deklaration //von Definition //abweicht void func(int); //KO, da Deklaration //von Definition //abweicht | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Innerhalb einer Datei kann eine Variable identischen Datentyps mehrmals definiert werden (bei identischen Initialisierungswert). Diese Definitionen werden vom Compiler als eine Definition angesehen. Wenn jedoch eine identische Variable in unterschiedlichen Dateien definiert wird, so legt jede Datei eine eigene unabhängige Variable an, welche dann beim Zusammenführen der Objektdateien durch den Linker zu Fehler führt. Da Header-Datei zumeist in mehrere C-Dateien inkludiert werden, sind Definitionen in Header-Dateien 'verboten'. * Deklarationen innerhalb eines Block-Scopes oder eines Function Prototyp Scopes sind nur in diesen Bereich gültig. == Grundlegende Datentypen und Typsicherheit == Die Programmiersprache C kennt folgende grundlegende Datentypen (siehe Kap. [[Programmieren in C/C++: Datentypen | Datentypen]]). Von jedem Datentyp kann ein Zeiger angelegt werden: {| class="wikitable" |- ! Datentyp !! Bsp. für Datentyp !! Bsp. für Zeiger auf Datentyp |- | Ganzzahl || <syntaxhighlight lang="C"> char var; int var; short int var; long int var; long long int var; </syntaxhighlight> || <syntaxhighlight lang="C"> char *ptr; int *ptr; short int *ptr; long int *ptr; long long int *ptr; </syntaxhighlight> |- | Gleitkommazahl || <syntaxhighlight lang="C"> double var; float var; long double var; </syntaxhighlight> || <syntaxhighlight lang="C"> double *ptr; float *ptr; long double *ptr; </syntaxhighlight> |- | Funktionen || <syntaxhighlight lang="C"> void func(void) {} </syntaxhighlight> || <syntaxhighlight lang="C"> void (*pfunc)(void); </syntaxhighlight> |- | Arrays || <syntaxhighlight lang="C"> int arr[10]; float arr[3][3]; </syntaxhighlight> || <syntaxhighlight lang="C"> int (*parr); float (*parr)[3]; void (*pfunc[5])(void); </syntaxhighlight> |- | Strukturen/Unions || <syntaxhighlight lang="C"> struct xyz {int x,y,z}; union abc {int a,b,c}; </syntaxhighlight> || <syntaxhighlight lang="C"> struct xyz *ptr; union abc *ptr; </syntaxhighlight> |- | Aufzählungstyp || <syntaxhighlight lang="C"> enum abc {A,B,C}; </syntaxhighlight> || <syntaxhighlight lang="C"> enum abc *ptr; </syntaxhighlight> |- | Boolescher Datentyp || <syntaxhighlight lang="C"> _Bool var; </syntaxhighlight> || <syntaxhighlight lang="C"> _Bool *ptr; </syntaxhighlight> |- | Komplexe Zahlen || <syntaxhighlight lang="C"> _Complex var; </syntaxhighlight> || <syntaxhighlight lang="C"> _Complex *ptr; </syntaxhighlight> |} C/C++ unterscheidet zwischen vorzeichenbehafteten <code>signed</code> und vorzeichenlosen <code>unsigned</code> ganzzahligen Datentypen. Vorzeichenlose Datentypen können nur positive Zahlen incl. der 0 aufnehmen (Anwendungsbereich bspw. Speicheradressen/Arrayindexe, welche nicht negativ sein können). Deren max. Zahlenwert ergibt sich aus der Datenbreite N des Datentyps 2<sup>N</sup>-1. Ein Vergleich eines vorzeichenlosen Datentyps mit ≥ 0 ist somit immer TRUE: <syntaxhighlight lang="C"> unsigned char var=0; if(var >= 0) //Bedingung ist immer erfüllt, so dass printf("Bedingung erfüllt"); //dieser ggf. vom Compiler wegoptimiert wird! for(var=10; var>=0; var--); //Endlosschleife! 0 dekrementiert ergibt 255 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> int main(int argc,char *argv[]) { unsigned char var=0; if(var >= 0) //Bedingung ist immer erfüllt, so dass printf("Bedingung erfüllt\n"); //dieser ggf. vom Compiler wegoptimiert wird! //Beim Öfffnen des Compiler-Fensters ist die IF-Anweisung nicht farblich //hervorgehoben. Dies bedeutet, dass diese Zeile wegoptimiert wurde und folglich //kein Maschinencode für diese Anweisung erzeugt wurde for(var=10; var>=0; var--) //Endlosschleife! 0 dekrementiert ergibt 255 printf("%u ",var),fflush(stdout); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Vorzeichenlose Datentypen halbieren den verfügbaren Zahlenbereich und 'weisen' dem oberen Wertebereich den negativen Zahlen zu.<br> Wird ein ganzzahliger Datentyp ohne Angabe des Vorzeichentyps (signedness) definiert, so ist diese vorzeichenbehaftet. Bei vorzeichenlosen Variablen muss explizit <code>unsigned</code> vorangestellt werden. Die Voranstellung von <code>signed</code> ist optional. Einzige Ausnahme stellt der Datentyp char dar. Hier gibt die Spezifikation keine default signedness vor, so dass bei Nutzung dieses Datentyps zur Aufnahme von Zahlen immer signed oder unsigned vorangestellt werden sollte!<br> Innerhalb des Formatstrings bei den printf()/scanf() Anweisungen '''muss''' die signedness vom Programmierer händisch berücksichtigt werden. Die Formatanweisung %d und %i interpretieren die übergebenen Zahl als vorzeichenbehaftete Zahl. Soll eine vorzeichenlose Zahl ausgegeben werden, so muss %u verwendet werden: <syntaxhighlight lang="C"> signed int vari=-10; unsigned int varu=3000000000; printf("vari=%d varu=%u",vari,varu); //Korrekt printf("vari=%u varu=%i",vari,varu); //Falsche Werteausgaben! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> int main(int argc,char *argv[]) { signed int vari=-10; unsigned int varu=3000000000; printf("vari=%12d varu=%12u\n",vari,varu); //Korrekt printf("vari=%12u varu=%12i\n",vari,varu); //Falsche Werteausgaben! return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Mit der Definition (dem Anlegen) einer Variablen eines Datentyps wird Speicher entsprechend der Größe des Datentyps reserviert. Optional kann dieser Speicher initialisiert werden. Über den Datentyp wird ausgesagt, wie der Inhalt des Speichers zu interpretieren ist: <syntaxhighlight lang="C"> char var1; //Speicherplatzreservierung von 1 Byte //Inhalt der Speicherstelle wird als Zahl interpretiert //(Hinweis: ASCII-Zeichen sind Zahlen) double var2=47.11; //Speicherplatzreservierung von 8 Byte //Inhalt der Speicherstellen wird als Gleitkommazahl //interpretiert (bestehend aus je einer Ganzzahl für //Mantisse und Exponent) short arr[10]; //Speicherplatzreservierung von 10*2 Byte //Inhalt der 10 Speicherstellen werden als Ganzzahl //interpretiert </syntaxhighlight> Die Funktionalität der Operatoren hängt vom Datentyp der Operanden ab. Der Plus-Operator angewendet auf ganzzahlige Operanden führt eine Ganzzahl Addition aus, angewendet auf gleitkomma Operanden eine Gleitkomma Addition. Ist einer der Operanden ein Zeiger, so wird eine Zeigeraddition angewendet. Für andere Datentypen ist der Plus-Operator nicht definiert, so dass der Compiler einen Fehler wirft. '''Bei der Betrachtung eines Ausdruckes sollte dem genutzten Datentypen folglich eine besondere Aufmerksamkeit zuteil werden''': <syntaxhighlight lang="C"> int vari=47; vari+12; //(int) + (int) → Ganzzahladdition float varf=12.3; 3.1415F+varf; //(float) + (float) → Gleitkommaaddition int *ptr=&vari; ptr+3; //(int *) + (int) → Zeigeraddition int arr[3]; arr+3; //(int (*)) + (int) → Zeigeraddition </syntaxhighlight> Das Ergebnis einer Operation hat ebenfalls einen Datentyp. Eine Ganzzahl Addition gibt bspw. als Ergebnis einen Ganzahl Datentyp zurück, eine Gleitkomma Addtition einen Gleitkomma Datentyp und ein Vergleichsoperator den Datentyp _Bool: <syntaxhighlight lang="C"> int vari1=47; int vari2=11; vari1 + 12 + vari2; //((int)+(int)+(int))→((int)+(int))→(int) 40 < vari1 < 50; //((int)<(int)<(int))→((_Bool=int)<(int))→(_Bool=int) </syntaxhighlight> Wie Operatoren haben auch Funktionen Operanden (in Form von Übergabeparameter). Das Ergebnis eines Funktionsaufrufes wird ebenfalls in Form eines Datentyps zurückgegeben: <syntaxhighlight lang="C"> float add(int par1,par2) {return par1+par2;} int vari1=47; int vari2=11; vari1 + add(var2,12); //(int)+((int),(int)→(float))→(int)+(float)→(float) </syntaxhighlight> Wird auf einen Operator gleichermaßen ein vorzeichenbehafteter und ein vorzeichenloser Operand angewendet, so kann es zu unerwarteten Konvertierungsproblemen führen: <syntaxhighlight lang="C"> unsigned char varu=12; signed char vars=-12; float varf; varf = varu + vars; if(vars < varu) </syntaxhighlight> Sind die Datentypen der Operanden nicht 'kompatibel', so 'passt' der Compiler die Datentypen im Falle von Ganzahl und Gleitkomadatentypen per impliziter Regel an (siehe Kap. [[Programmieren in C/C++: Datentypen#Implizite Typumwandlung | Datentypen:Implizite Typumwandlung]]). Über explizite Typumwandlung (siehe Kap.[[Programmieren in C/C++: Datentypen# Explizite Typumwandlung|Datentypen:Explizite Typumwandlung]]) kann ein Datentyp z.T. in einen anderen Datentyp gewandelt werden. In allen anderen Fällen ist C Typsicher, d.h. der Compiler gibt zumindest eine Warning aus, wenn die Datentypen nicht identisch sind und der Compiler keine implizite Regel anwenden kann. Tipp: * Compiler gibt bei Fehlermeldung oftmals die erwarteten und die vorhandenen Datentyp an. Wenn solch eine Fehlermeldung kommt, sollten sie sich a) überlegen, was wollten sie syntaktisch geschrieben haben und b) was haben sie in der Tat geschrieben. Ein Google nach einer Lösung des Compilerproblems löst zumeist nicht das Problem, sondern umgeht es! Hinweis: * Ein guter Programmierer sollte die Datentypen so wählen, dass: :* die Datentypen zum Inhalt und zum Wertebereiches passen :* keine Datentypkonvertierungen notwendig sind : andernfalls besteht die Gefahr, dass hiermit Laufzeitfehler einprogrammiert werden. * Wenn Datentypkonvertierungen notwendig sind, sollte die explizite Konvertierung genutzt werden == Abhängigkeiten bzgl. Rechnerarchitektur == Kenngrößen von Prozessoren sind unter anderem die Anzahl der Bits für den Datentransport und für Arithmetisch-/Logische-Operationen (→ Datenbreite) und die Anzahl der Bits für die Adressierung des Speichers (→ Adressierungsbreite). Die Datenbreite sagt dabei aus, welche max. Datenbreite ein Maschinenbefehl (zumeist in einem Taktzyklus) transportieren/berechnen kann. Werden programmtechnisch größere Datenbreiten benötigt, bedingt dies, dass hierzu mehrere Maschinenbefehle notwendig sind. Wenn kleinere Datenbreiten notwendig sind, so wird oftmals das Ergebnis abgeschnitten (sofern der Prozessor keine Befehle für den Umgang mit kleineren Datentyp beherrscht): {| class="wikitable" |- ! 32-Bit Datentransport/Operation<br /> bei 32-Bit Datenbreite ! 64-Bit Datentransport/Operation<br /> bei 32-Bit Datenbreite ! 16-Bit Datentransport/Operation<br /> bei 32-Bit Datenbreite |- | <syntaxhighlight lang="C"> int32_t a32,b32; </syntaxhighlight> || <syntaxhighlight lang="C"> int64_t a64,b64; </syntaxhighlight> || <syntaxhighlight lang="C"> int16_t a16,b16; </syntaxhighlight> |- | <syntaxhighlight lang="asm"> // a32=b32; mov eax,b32 mov a32,eax </syntaxhighlight> || <syntaxhighlight lang="asm"> // a64=b64; mov eax ,b64 mov edx ,b64+4 mov a64 ,eax mov a64+4,edx </syntaxhighlight> || <syntaxhighlight lang="asm"> //a16=b16; movz eax,b16 mov a16,ax </syntaxhighlight> |- | <syntaxhighlight lang="asm"> // a32=a32+b32; mov edx, a32 mov eax, b32 add eax, edx mov a32, eax </syntaxhighlight> || <syntaxhighlight lang="asm"> // a64=a64+b64; mov ecx , a64 mov ebx , a64+4 mov eax , b64 mov edx , b64+4 add eax , ecx adc edx , ebx mov a64 , eax mov a64+4, edx </syntaxhighlight> || <syntaxhighlight lang="asm"> // a16=16+b16; movzx eax, a16 mov edx, eax movzx eax, b16 add eax, edx mov a16, ax </syntaxhighlight> |} Die Adressierungsbreite gibt an, mit welcher Bitbreite der Speicher adressiert werden kann: * Bei einem 32-Bit System können 2<sup>32</sup>=4.294.967.295=4Gi&nbsp;Bytes/Speicherstellen adressiert werden * Bei einem 16-Bit System können 2<sup>16</sup>=65.536=64Ki&nbsp;Bytes/Speicherstellen adressiert werden * Bei einem 64-Bit System können 2<sup>64</sup>=18.446.744.073.709.551.616 =16Ei ~18Exa&nbsp;Bytes/Speicherstellen adressiert werden Waren die Datenbreite und die Adressierungsbreite bei den ersten Prozessoren noch unterschiedlich, so sind diese heutzutage zumeist identisch. Bei einem 32-Bit Prozessor bedeutet dies, dass dieser max. 4Gi&nbsp;Bytes Speicherstellenstellen adressieren kann und Maschinenbefehle für den Datentransport und die Berechnung von 32-Bit Datenworten beinhaltet. Die Datenbreite und auch die Adressierungsbereite haben direkten Einfluss auf die Programmiersprache: * Wird defaultmäßig mit größerer Datenbreite gerechnet, als der Prozessor 'von Hause' aus unterstützt, so werden die erzeugten Maschinenprogramme größer und langsamer (Umgedreht bedeutet dies jedoch nicht, dass die Maschinenprogramme kleiner und schneller werden) * Die max. Größe von Verbunddatentypen und Arrays ergibt sich aus der Adressierungsbreite des Prozessors Die Intention der Programmiersprache C/C++ ist, die Prozessorarchitektur optimal zu nutzen. Dementsprechend sind diverse Eigenschaften der Sprache nicht fest spezifiziert, sondern von der Rechnerarchitektur abhängig. === Integer Datentyp === Intention von C/C++ ist, dass der Umgang mit dem Grunddatentyp 'int' möglichst direkt in einen Maschinensprachebefehl umgesetzt werden kann.<br /> Bei einem 16-Bit Prozessor hat der Datentyp int daher eine Breite von 16-Bit und bei einem 32-Bit Prozessor eine Breite von 32-Bit (siehe Kap [[Programmieren in C/C++: Datentypen # Ganzzahlige Datentypen|Datentypen:Ganzahl Datentypen]]). Über vorangestellte Qualifier kann dieser Grunddatentyp verkleinert/vergrößert werden. === Integer Arithmetik === Ganzzahlen haben nur einen begrenzten Wertebereich. Wird dieser bspw. durch eine Addition überschritten (d.h. das Rechenergebnis benötigt zur Darstellung mehr Stellen, als der Datentyp 'hergibt'), so gibt es zwei Vorgehensweisen: * Arithmetischer Überlauf (siehe {{w|arithmetischer Überlauf}}): Die nicht speicherfähigen Stellen werden verworfen, so dass i.d.R. ein falsches Ergebnis erzeugt wird! :Beispiel: :<syntaxhighlight lang="C"> unsigned char a=254,b=3,c; c=a+b; //c ist (254+3)%256=1 c=a*b; //c ist (254*3)%256=250 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { unsigned char a=254,b=3,c1,c2; c1=a+b; //c ist (254+3)%256=1 c2=a*b; //c ist (254*3)%256=250 printf("c1=%hhu c2=%hhu\n",c1,c2); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Sättigungsarithmetik (siehe {{w|Sättigungsarithmetik}}): Alle Operationen laufen innerhalb eines festen Intervalls ab, so dass Überläufe und Unterläufe auf dieses Intervall begrenzt werden: :Beispiel: :<syntaxhighlight lang="C"> unsigned char a=254,b=3,c; c=a+b; //c ist MAX((254+3),255)=255 c=a*b; //c ist MAX((254*3),255)=255 </syntaxhighlight> Die Spezifikation von C macht bezüglich der zu nutzenden Methodik keine Vorgaben, so dass das Handling von der ALU des Prozessors abhängt. Aus Komplexitäts- und Geschwindigkeitsgründen ist dies zumeist der arithmetische Überlauf. Nur bei Spezialprozessoren (z.B. DSP Digital Signal Processor) kommt z.T. die Sättigungsarithmetik zum Einsatz. === Gleitkomma Datentyp und Arithmetik === Für den Umgang mit Gleitkommazahlen bieten einige Prozessoren spezielle Recheneinheiten ({{w|Gleitkommaeinheit}} Floating Point Units FPU) an. Sowohl die Darstellung von Gleitkommazahlen als auch das Verhalten bei Überlauf/Unterlauf ist damit Herstellerabhängig. Um auch diese Einheiten effektiv nutzen zu können, ist die C/C++ Spezifikation in diesem Bereich ebenfalls sehr offen. === Max. Speicherbedarf von Variablen === Die maximale Größe von Arrays/Strukturen/Unions ist in C/C++ von der zugrundeliegenden Rechnerarchitektur abhängig: <syntaxhighlight lang="C"> char a[100000]; //Speicherbedarf=100.000*1Byte=100.000 Bytes //Bei 16-Bit Architektur KO //Ab 32-Bit Architektur OK struct size_16 { char a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_256 { struct size_16 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_4096 { struct size_256 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_65536 { struct size_4096 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_65536 var65536; //Speicherbedarf=65536 Bytes //Bei 16-Architektur KO //Ab 32-Architektur OK </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Zur Darstellung bitte Compiler-Fenster öffnen //und dort den CC65-Compiler für den 6502 Prozessor auswählen char a[100000]; //Speicherbedarf=100.000*1Byte=100.000 Bytes //Bei 16-Bit Architektur KO //Ab 32-Bit Architektur OK struct size_16 { char a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_256 { struct size_16 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_4096 { struct size_256 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_65536 { struct size_4096 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_65536 var65536; //Speicherbedarf=65536 Bytes //Bei 16-Architektur KO //Ab 32-Architektur OK int main(int argc,char *argv[]) { return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Im Falle von globalen Variablen erzeugt der Compiler/Linker eine Fehlermeldung. Werden von diesen Datentypen Variablen als lokale Variablen angelegt, so erzeugt dies zur Laufzeit einen Stackoverflow. === Zeigervariable === Eine Zeigervariable ist eine Variable, die eine Speicheradresse speichert. Die Größe dieses Datentyps hängt von der Adressierungsbreite des Prozessors ab. Unabhängig von dem Datentyp, auf den die Zeigervariable zeigt, ergibt sich folgende Breite: * 4-Byte bei einer 32-Bit Rechnerarchitektur * 8-Byte bei einer 64-Bit Rechnerarchitektur * 2-Byte bei einer 16-Bit Rechnerarchitektur === Datentyp size_t === Die maximale Größe von Arrays/Strukturen/Unions ist in C von der zugrundeliegenden Rechnerarchitektur abhängig. Sie ergibt sich aus der Adressierungsbreite. Da die Datenbreite des Datentyps int zumeist kleiner als die Adressierungsbreite ist, existiert in C/C++ der vorzeichenlose Datentyp size_t.<br /> Alle Funktionen, welche den Speicherbedarf übergeben bekommen, bzw. zurückgeben (bspw. strlen(), memcpy(), sizeof()) , nutzen den Datentyp size_t: <syntaxhighlight lang="C"> //Prototypen size_t strlen(char *str); //Die max. Stringlänge ist durch den //adressierbaren Speicher vorgegeben void *malloc(size_t size); void *memcpy(void *dest, const void *src, size_t n); </syntaxhighlight> Der Datentyp size_t ist in der Header-Datei stddef.h der Standard-C-Library per typedef gesetzt. Im Normalfall muss diese Header-Datei nicht explizit inkludiert werden, da bei Nutzung von z.B. strlen() diese bereits durch die Header-Datei string.h inkludiert wird: <syntaxhighlight lang="C"> typedef unsigned long long size_t; //Bei einer 64-Bit Rechnerarchitektur </syntaxhighlight> Hinweis: * Der Datentyp size_t ist immer ein vorzeichenloser Datentyp (es gibt keine negativen Speicheradressen). * Mit dem Datentype ssize_t wird eine vorzeichenbehaftete Variante zur Verfügung gestellt, welche hilfreich ist, wenn Speicheradresse subtrahiert werden sollen. * Soll der Wert vom Datentyp size_t mittels printf() ausgegeben werden, so ist der 'Length Modifier' z und der 'Conversion Specifier' u zu nutzen: :<syntaxhighlight lang="C"> size_t var=strlen("String"); printf("%zu",var); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc,char *argv[]) { size_t var=strlen("String"); printf("%zu",var); printf("%d",var); //Hier sollte es eine Compiler-Warning geben! return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Boolescher-Datentype/Operatoren == Ursprünglich gab es den booleschen Datentyp in der Programmiersprache C nicht. Mit C99 wurde zwar der Datentyp <code>_Bool</code> eingeführt, dies änderte jedoch nicht den Umgang mit Anweisungen und Operatoren, die einen booleschen Datentyp erwarten/zurückgeben! An allen Stellen, an denen ein boolescher Datentyp erwartet wird (z.B. IF-Abfrage, bei booleschen Operationen) wird der Datentyp Ganzzahl, Gleitkommazahl oder Zeiger erwartet (= Scalar-Type) und ausgewertet. Der hierin gespeicherte Zahlenwert sagt aus, ob diese Zahl als True oder False zu interpretieren ist: * False, wenn Ganzzahl gleich 0 oder Gleitkommazahl gleich 0.0 oder Zeiger gleich NULL * True, wenn Ganzzahl ungleich 0 oder Gleitkommazahl ungleich 0.0 oder Zeiger ungleich NULL Beispiel: <syntaxhighlight lang="C"> int a=3; double b=0.0; int *ptr=&a; while(1); if(a) {} for( ; b && ptr ; ); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=3; double b=0.0; int *ptr=&a; while(0); if(a) {} for( ; b && ptr ; ) {} return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Operatoren, welchen einen booleschen Wert zurückliefern (Vergleichs-Operatoren und Boolesche-Operatoren), liefern ein Integer-Datentyp zurück: * (int)0 für False * (int)1 für True Beispiel: <syntaxhighlight lang="C"> int a=3; int b= (a==3); //b=1 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=3; int b= (a==3); //b=1 printf("%d",b); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} In den if()/for()/while() Anweisungen ist folglich kein explizites Konvertieren eines Ganzzahl-/Gleitkomma-/Zeigerwertes mittels des Vergleichs-Operators in einen Booleschen Wert notwendig: <syntaxhighlight lang="C"> int a; double b; if(a) //entspricht if(a!=0) if(!b) //entspricht if(b==0.0) while(1) //entspricht while(True) for(int lauf=1; lauf ; lauf--); </syntaxhighlight> Umgedreht kann ein boolescher Wert oder auch das Ergebnis einer booleschen Operation direkt mit einer Ganzzahl- oder Gleitkommazahl verknüpft werden: <syntaxhighlight lang="C"> int a=3,b=2; a=a+1 && 7 << 3 & a==3; if( a==1 & b==2) if(3 < a < 9) //Vorsicht, die Schreibweise lässt ein //anderes Verhalten erwarten! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=3,b=2; a=a+1 && 7 << 3 & a==3; printf("%d\n",a); if(a==1 & b==2) printf("true\n"); else printf("false\n"); if(3 < a < 9) if( (a==1) & (b==2)) printf("true\n"); else printf("false\n"); return 0; } | execCompilerOptions=| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Mit C99 wurde der Datentyp <code>_Bool</code> eingeführt. Dieser entspricht weiterhin einem Integerdatentyp mit der Besonderheit, dass beim Zuweisen eines Wertes dieses auf true oder false geprüft wird und Variablen dieses Datentyps nur die Werte 0 oder 1 annehmen können: <syntaxhighlight lang="C"> _Bool var1=12; printf("var1=%d\n",var1); //→ 1 float var2=13.2; var1=var2; printf("var1=%d\n",var1); //→ 1 var1--; //Post/Pre Inkrement/Dekrement in C++ nicht auf Datentyp bool! möglich printf("var1=%s\n",var1?"true(1)":"false(0)"); //→ false </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { _Bool var1=12; printf("var1=%d\n",var1); //→ 1 float var2=13.2; var1=var2; printf("var1=%d\n",var1); //→ 1 var1--; //Post/Pre Inkrement/Dekrement in C++ nicht auf Datentyp bool! printf("var1=%s\n",var1?"true(1)":"false(0)"); //→ false return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Für den einfacheren Umgang mit dem 'neuen' Datentyp wurde in der Header-Datei <code>stdbool.h</code> die Makros <code>true</code> (als Austauschwert für die Ganzzahl 1) und <code>false</code> (als Austauschwert für die Ganzahl 0) definiert. Ergänzend wird hier der Datentyp <code>bool</code> als Alias auf <code>_Bool</code> gesetzt. <syntaxhighlight lang="C"> #include <stdbool.h> bool foo(int par,int min,int max) { if((par >= min) && (par <= max)) return true; else return false; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdbool.h> bool foo(int par,int min,int max) { if((par >= min) && (par <= max)) return true; else return false; } int main(int argc,char *argv[]) { foo(4,3,6); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * In C++ gibt es anstatt des Datentypes <code>_Bool</code> den Datentyp <code>bool</code>. Auch sind die beiden Konstanten <code>true</code> und <code>false</code> ohne zusätzliches Einbinden der Header-Datei vorhanden. Der weitere Umgang ist jedoch identisch zu C. == Literale/Konstanten == Zahlenwerte und Strings im Source-Code werden vom Compiler in binäre Zahlen umgerechnet. Über der Schreibweise/Syntax der Literale/Konstanten wird dem Compiler gesagt, in welchem Zahlenformat die Zahl auf Source-Code Ebene beschrieben ist und welchem Datentyp sie entspricht. Unabhängig wie die Konstanten im Source-Code beschrieben sind, werden die Zahlen intern als binäre Zahlen gespeichert. Beispiele, wie die Zahlen intern gespeichert werden: <syntaxhighlight lang="C"> int var=17; //0000 0000 0000 0000 0000 0000 0001 0001 short var=0x307;// 0000 0011 0000 0111 char var=017; // 0000 1111 int var=-1; //1111 1111 1111 1111 1111 1111 1111 1111 float var=0.0; //0000 0000 0000 0000 0000 0000 0000 0000 float var=1.0; //0011 1111 1000 0000 0000 0000 0000 0000 </syntaxhighlight> === Ganzzahl-Konstanten === Im Allgemeinen ordnet der Compiler einer numerischen, ganzzahligen Konstanten den kleinstmöglichen Datentyp beginnend vom Datentyp integer zu. Sobald der Wert der Konstanten den Wertebereich von integer übersteigt, wird der nächst größere passende Datentyp gewählt. Ergänzend gilt, dass alle Ganzzahl-Konstanten als vorzeichenbehaftete Ganzzahl-Konstanten angesehen werden!<br /> Beispiele für integer Konstanten: <pre> 123 +123 -123 → Formal wird das Minus als Operator angesehen und die positive Zahl 123 negiert 0x123 → Konstante ist in hexadezimaler Schreibweise notiert 0123 → Konstante ist in oktaler Schreibweise notiert 0b011 → Konstante ist in binärer Schreibweise notiert nicht offizieller C-Syntax, wird aber von vielen Compiler unterstützt ab C23-Spezifikation offiziell im C-Syntax enthalten! 6'432'108 → Tausendertrenner Nur in C++ Spezifikation enthalten ab C23-Spezifikation auch im C-Syntax enthalten. 5123123123 → Wertebereich größer als 2^31 so dass automatisch zum nächst größeren Datentyp konvertiert wird </pre> Mit den Suffixen L/l und LL/ll kann der Datentyp long und long long erzwungen werden: <pre> 12L → Konstante wird in eine long Integer Konstante konvertiert 4711LL → Konstante wird in eine Long Long Konstante konvertiert </pre> Mit dem Suffix U/u kann die Konstante explizit auf unsigned gesetzt werden: <pre> 12U → Konstante wird als vorzeichenlose Zahl gesepeichert 4711ULL → Konstante wird in eine vorzeichenlose Long Long Konstante konvertiert </pre> === Char-Konstanten === In einfachen Anführungsstrichen geschriebene ASCII Zeichen werden entsprechend der {{w|American Standard Code for Information Interchange | ASCII-Tabelle}} als Zahlenwert (Datentyp int) dargestellt: <pre> 'A' → Integerkonstante 65 'a' → Integerkonstante 97 … </pre> Über den {{w|Escape-Sequenz|Escape-Operator}} (Zeichen Backslash '\') wird das/die dem ESCAPE Operator folgende Zeichen gesondert interpretiert. Die im Source-Code erhaltene Zeichenfolge wird im Computerprogramm als ein Zahlenwert (Datentyp int) gespeichert. Dies ist u.A. zur Darstellung von ' und " aber auch zur Darstellung der unteren 32 Zeichen der ASCII Tabelle notwendig (Siehe auch {{w|Steuerzeichen}}) <pre> ESCAPE Integer- → Bedeutung / (Terminal)funktionalität Sequence konstante '\0' = 0 → 0 Character = Stringendezeichen '\a' = 7 → Bell (erzeugt auf dem Terminal einen Ton) '\b' = 8 → Backspace (Bewegt den Cursor um eine Position nach links) '\t' = 9 → Horizontal Tab (Bewegt den Curso auf die nächste horizontale Tabulatorposition, Abstand ist Terminalspezifisch) '\n' = 10 → NewLine (Zeilenvorschub) '\v' = 11 → Vertial Tab '\r' = 13 → Carriage Return (Wagenrücklauf, Bewegt den Cursor an den Zeilenanfang) '\"' = 34 → Double Quote '\'' = 39 → Single Quote '\?' = 63 → Question mark '\\' = 92 → Backslash '\f' = 12 → FormFeed (Erzeugt auf dem Terminal/Drucker einen Seitenvorschub) '\ooo' = 0ooo → Oktal, wobei o Digits von 0..7 sein müssen '\xdd' = 0xdd → Hexadezimal, wobei d Digits von 0..9 A..F sein müssen '\udddd' Unicode mit 4 Digits '\Udddddddd' Unicode mit 8 Digits </pre> Beispiel <syntaxhighlight lang="C"> 'A' == 65 == '\101' == '\x41' == '\u0041' == '\U00000041' </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { //Programmiersprache wurde auf C++ gesetzt if('A' == 65) printf("'A' == 65\n"); if('A' == '\101') printf("'A' == '\\101'\n"); if('A' == '\x41') printf("'A' == '\\x41'\n"); if('A' == '\u0041') printf("'A' == '\\u0041'\n"); if('A' == '\U00000041') printf("'A' == '\\U00000041'\n"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true| lang=c++ }} Öffnen im Compiler Explorer] }} Über Prefixe können alternative Zieldatentypen/Konvertierungen erzwungen werden: <pre> u'b' → unicode 16 (nur C++) U'b' → unicode 32 (nur C++) L'b' → wchar_t </pre> Hinweis * Die ASCII-Tabelle basiert auf einer 7-Bit Zeichenkodierung, so dass bspw. die Umlaute 'ä', 'ö' und 'ü' dort nicht kodiert sind. Sollen auch diese Zeichen genutzt werden, so empfiehlt sich der Datentyp wchar_t === Gleitkommakonstanten === Alle Gleitkommakonstanten sind ohne weitere Angaben vom Datentyp double! <pre> 555.12 555. → 555.0 .1 → 0.1 4e2 → 400.0 0x22.11p13 → Konstante in Hexadezimalen Schreibweise (ab C99) </pre> Über Suffixe kann ein alternativer Datentyp erzwungen werden: <pre> 3.0F → Datentyp float 3.0l → Datentyp long double </pre> Hinweis: * Aufgrund der unterschiedlichen Basis zwischen dem menschlichen Zehner-System und dem computerinternen Binär-System entstehen insbesondere bei den Nachkommastellen Rundungsfehler. Die Konstante 0.1f wird durch die Wandlung intern als 1.00000001490116119384765625e-1 dargestellt * Die C-Spec verlangt, dass die binäre Repräsentation von Gleitkommazahlen zur Laufzeit (z.B. durch die Funktion atof() strtod() scanf("%f")) identisch zur der zur Compilezeit ist. Beispiel: :<syntaxhighlight lang="C"> if(3.14==atof("3.14")) printf("muss erfüllt sein"); //3.14 wird vom Compiler in ein Binärwert gewandelt //Der String "3.14" wird zur Laufzeit mittels atof in ein Binärwert gewandelt //Beide Wandlungsergebnisse müssen identisch sein </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { if(3.14==atof("3.14")) printf("muss erfüllt sein\n"); //3.14 wird vom Compiler in ein Binärwert gewandelt //Der String "3.14" wird zur Laufzeit mittels atof in ein Binärwert gewandelt //Beide Wandlungsergebnisse müssen identisch sein printf("Intern wird 3.14 wie folgt dargestellt %14.20f",3.14); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Konstanten Ausdrücke === Ergänzend zu den Zahlenwerten werden auch Ausdrücke durch den Compiler ausgewertet. Als Voraussetzung für die Ausdrücke gilt, dass alle Operatoren Literale/Konstante sein müssen, so dass der Compiler die Berechnung durchführen kann. Als Operatoren können alle im normalem Syntax erlaubten Operatoren (z.B.: +,-,*,/,&,&&,|,||,>>,<<,==,!=) genutzt werden.<br /> Beispiel: <syntaxhighlight lang="C"> int var1=7*3+5; → wird vom Compiler durch 26 ersetzt int var2=(4710+(8-1))&-8; → wird vom Compiler durch 4712 ersetzt var1=4*4*var1+77*(77%3); → wird vom Compiler durch 16 * var1 + 154 ersetzt </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { int var1=7*3+5; //→ wird vom Compiler durch 26 ersetzt int var2; var2=(4710+(8-1))&-8; //→ wird vom Compiler durch 4712 ersetzt var1=4*4*var1+77*(77%3); //→ wird vom Compiler durch var1 * 16 + 154 ersetzt return 0; } | execCompilerOptions=-Wall| h=g| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Konform zur C-Spezifikation bieten einige Compiler weitere Operatoren aus der math.h Library an (z.B. sin(), cos(), ...). Bestehen die Aufrufparameter aus Konstanten, so ersetzt der Compiler den Ausdruck durch die 'Ergebnis'-Konstante: :<syntaxhighlight lang="C"> int var3=sin(1.0)*10; →wird vom Compiler durch 8 ersetzt </syntaxhighlight> * Konstanten Ausdrücke werden durch den Präprozessor ausgewertet, so dass dieser die Ergebnisse ebenfalls nutzen kann: :<syntaxhighlight lang="C"> #define BUF_SIZE 512 #if (BUF_SIZE & (BUF_SIZE -1)) != 0 #endif </syntaxhighlight> === String Konstanten === Stringkonstanten erzeugen ein Array von Characters. Mit dem abschließenden Hochkommata wird das Array um ein Stringendezeichen ergänzt: <pre> "abc" → (char []) {'a','b','c','\0'} </pre> Adjacent Strings Konstanten werden vom Compiler zu einer String-Kontante zusammengefasst, so dass nur ein Stringendezeichen vorhanden ist: <pre> "xxx" "yyy" → (char []) {'x','x','x','y','y','y','\0'} </pre> Über Prefixe können alternative Zieldatentypen/Konvertierungen erzwungen werden: <pre> L"string" → (wchar_t[7]){L's',L't',L'r' …) </pre> Über Postfixes können in C++ Objekte erzeugt werden: <pre> "string"s → erzeugt einen String vom Datentyp std::string "string"sw → Erzeugt einen String vom Datentyp std::string_view </pre> String Konstanten werden Compilerintern über unnamed Variablen realisiert, welche als globale Variable angelegt werden und per default const sind: <syntaxhighlight lang="C"> printf("Wert=%d",4); //entspricht const char unnamed1[]="Wert=%d"; printf(unnamed1,4); //String Konstanten sind per Default Konstant char *str="hallo"; //Typkonflikt!, da "hallo" vom Datentyp const char[] ist str[0]='H'; //Laufzeitfehler, da nun schreibender Zugriff auf im //Readonly Speicher angelegt Variable. </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { printf("Wert=%d\n",4); //entspricht const char unnamed1[]="Wert=%d\n"; printf(unnamed1,4); fflush(stdout); //Zur Darstellung der Ausgabe, da nachfolgend //das Programm abstürzt und die gepufferte Ausgabe //nicht zur Anzeige gebracht wird //String Konstanten sind per Default Konstant char *str="hallo"; //Typkonflikt!, da "hallo" vom Datentyp const char[] ist str[0]='H'; //Laufzeitfehler, da nun schreibender Zugriff auf im //Readonly Speicher angelegt Variable. return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Für doppelte String Konstanten wird nur einmal Speicher reserviert: <syntaxhighlight lang="C"> const char *str1="hallo"; const char *str2="hallo"; if(str1==str2) printf("Identische Startadressen"); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { const char *str1="hallo"; const char *str2="hallo"; if(str1==str2) printf("Identische Startadressen"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Initialisierungsliste / Compound Literal == Arrays, Strukturen und Unions bestehen zumeist aus mehreren Elementen. Zur Initialisierung solcher Variablen werden die Initialisierungswerte in geschweiften Klammern als Initialisierungsliste zusammengefasst. <code> Syntax: {Initialisierungsliste} </code> Für eine Initialisierungsliste wird kein Speicher vorgehalten. Vielmehr wird bei der Variablendefinition die Variable direkt mit dem Inhalt der Liste initialisiert. Der Datentyp der Initialisierungsliste ergibt sich aus dem Datentyp der zu initialisierenden Variable: <syntaxhighlight lang="C"> int arr[5] = { 1,2,3,4,5 }; struct xyz { int x,y,z;}; //Definition einer Struktur struct xyz var = { 1,2,3 }; </syntaxhighlight> Wird der Initialisierungsliste ein Datentyp in runden Klammern vorangestellt, so wird hiermit eine 'unnamend' Variable/Objekt, ein Compound Literal erstellt: <code> Syntax: (type) {Initialisierungsliste} </code> Ein Compound Literal entspricht einer anonymen Variablen des angegebenen Datentyps. Wie bei einer normalen Variablendefinition wird hier ebenfalls eine Variable angelegt und diese mit den Initialisierungswerten initialisiert. Im Unterschied zu einer normalen Variable kann auf solch eine Variable im Nachgang nicht mehr zugegriffen werden. Der Rückgabewert eines Compound Literals entspricht somit dem einer Variablen.</br> Compound Literale bieten sich überall dort an, wo Variablen nur für einen einmaligen Zweck angelegt werden (bspw. bei der Parameterübergabe von Funktionen): <syntaxhighlight lang="C"> struct point {int x; int y;}; drawline((struct point){1,2},(struct point){2,3}); printarray((int []){1,2,3,4}); //entsprechen struct point unnamed1={1,2},unnamed2={2,3}; drawline(unnamed1,unnamed2); int unnamed3[]={1,2,3,4}; printarray(unnamed3); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct point {int x,y;}; void drawline(struct point start,struct point end) { printf("Linie von (%d,%d) nach (%d,%d)\n",start.x,start.y,end.x,end.y); } void printarray(int arr[4]) { printf("[ "); for(size_t idx=0;idx<4;idx++) printf("%d ",arr[idx]); printf("]\n"); } #include <stdlib.h> int main(int argc,char *argv[]) { struct point {int x; int y;}; drawline((struct point){1,2},(struct point){2,3}); printarray((int []){1,2,3,4}); //entsprechen struct point unnamed1={1,2},unnamed2={2,3}; drawline(unnamed1,unnamed2); int unnamed3[]={1,2,3,4}; printarray(unnamed3); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Über den Adressoperator kann auch die Adresse der anonymen Variablen ermittelt werden. In diesem Falle ist dann der Gültigkeitsbereich/-dauer des Compound Literals zu berücksichtigen. Wird eine Compound Literals außerhalb eines Block-Scopes angelegt, so entspricht sie einer globalen Variable, andernfalls einer lokalen Variablen. Außerhalb des Gültigkeitsbereiches verliert die Adresse auf solch eine Variable ihre Gültigkeit: <syntaxhighlight lang="C"> drawlinep( &(struct point){1,2},&(struct point){2,3}); //entspricht struct point unnamed1={1,2},unnamed2={2,3}; drawlinep( &unnamed1, &unnamed2); struct point1, *point2; { //Block-Scope, zwecks Darstellung von lokalen Variablen point1= (struct point){1,2}; //Compound Literal entspricht hier //Initialisierungswert für point1 point2=&(struct point){3,4}; //Compound Literal ist nur in diesem //Block gültig drawlinep(&point1 /*OK*/, point2 /*OK*/); } drawlinep(&point1 /*OK*/, point2 /*KO*/); //Zeiger zeigt auf nicht mehr //gültigen Speicherbereich </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct point {int x,y;}; void drawlinep(struct point *start,struct point *end) { printf("Linie von (%d,%d) nach (%d,%d)\n",start->x,start->y,end->x,end->y); } #include <stdlib.h> int main(int argc,char *argv[]) { drawlinep( &(struct point){1,2},&(struct point){2,3}); //entspricht struct point unnamed1={1,2},unnamed2={2,3}; drawlinep( &unnamed1, &unnamed2); struct point point1, *point2; { //Block-Scope, zwecks Darstellung von lokalen Variablen point1= (struct point){1,2}; //Compound Literal entspricht hier //Initialisierungswert für point1 point2=&(struct point){3,4}; //Compound Literal ist nur in diesem //Block gültig drawlinep(&point1 /*OK*/, point2 /*OK*/); } drawlinep(&point1 /*OK*/, point2 /*KO*/); //Zeiger zeigt auf nicht mehr //gültigen Speicherbereich } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * Compound-Literal sind per Default keine Konstanten, können also zur Laufzeit geändert werden (siehe Kap. [[Programmieren in C/C++: DatentypeSpecifier#Const Type Qualifier|DatentypeSpecifier:Const Type Qualifier]]): :<syntaxhighlight lang="C"> float *arr=(float []){1.1,2.2,3.3}; //Kein Typkonflikt arr[0]=47.11; //Änderung des 'Konstanten' arr[0] ist möglich </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { float *arr=(float []){1.1,2.2,3.3}; //Kein Typkonflikt arr[0]=47.11; //Änderung des 'Konstanten' arr[0] ist möglich return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Die geschweiften Klammern <code>{ }</code> sind nicht mit dem Block-Operator (siehe [[Programmieren in C/C++: Grundlagen#Block / Compound-Statement | Block / Compound-Statement]]) zu verwechseln. Werden die geschweiften Klammern bei der Initialisierung von Variablen genutzt, dann beschreibt der Inhalt der geschweiften Klammern eine Initialisierungsliste. Wird diesen ein Datentyp vorangestellt, dann wird hiermit eine Compound Literal definiert. == Variableninitialisierung == Mit der Definition einer Variable kann diese optional initialisiert werden. Der tatsächliche Zeitpunkt der Variableninitialisierung (zur Laufzeit oder zur Compilezeit) und damit die Ausführung der Initialisierung (Maschinensprachebefehle oder Speichervorbelegung) hängt von der Gültigkeit/Sichtbarkeit der Variablen ab(siehe [[Programmieren in C/C++: Grundlagen#Gültigkeit/Sichtbarkeit von Variablen| Gültigkeit/Sichtbarkeit von Variablen]]). === Globale + Static lokale Variablen === Globale und statisch globale Variablen werden in einem während der Laufzeit des Programms festen Speicherbereich gehalten. Zum Startzeitpunkt des Programms ist der Speicherplatz solch einer Variable mit dem Initialisierungswert gefüllt, so das bei erstmaliger Nutzung dieser Variablen diese ihre Initialisierungswerte enthalten. Die Belegung des Speicherplatzes erfolgt durch den Compiler, so dass als Initialisierungswerte / Inhalt der Initialisierungsliste nur Konstanten oder Konstanten-Ausdrücke (siehe [[Programmieren in C/C++: Grundlagen#Literale/Konstanten | Literale/Konstanten]]) erlaubt sind: <syntaxhighlight lang="C"> int g=1; //Speicherstelle der Variable g wird //mit 1 belegt short array[3]={1,1+1, sin(0.0)}; //Speicherstellen des Arrays wird //mit 1, 2 und 0 (Funktion sin() wird zur //Compilezeit ausgeführt) belegt </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> double sin(double); //DJ: Include-Anweisung in wikibooks schlägt fehlt int g=1; //Speicherstelle der Variable g wird //mit 1 belegt short array[3]={1,1+1, sin(0.0)}; //Speicherstellen des Arrays wird //mit 1, 2 und 0 (Funktion sin() wird zur //Compilezeit ausgeführt) belegt int main(int argc,char *argv[]) { printf("%hd %hd %hd\n",array[0],array[1],array[2]); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Nicht initialisierte globale und static lokale Variablen werden mit 0 initialisiert! D.h. die Speicherstellen dieser Variablen werden mit dem Wert 0 vorbelegt:: <syntaxhighlight lang="C"> int f; //f hat den Wert 0 double arr[10]; //Alle Elemente von arr werden mit 0.0 initialisiert! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int f; //f hat den Wert 0 double arr[10]; //Alle Elemente von arr werden mit 0.0 initialisiert! int main(int argc,char *argv[]) { printf("f=%d\n",f); printf("%f %f %f\n",arr[0],arr[1],arr[2]); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Lokale Variable === Der Speicherplatz für lokale Variable wird auf dem Stack zur Verfügung gestellt. Mit jedem öffnenden Block-Scope wird Speicher für die innerhalb dies Block-Scopes vorhandenen Variablen vom Stack nach dem LIFO Prinzip reserviert und mit der Variablendefinition Maschinencode zur Initialisierung der Speicherstellen ausgeführt (sofern Variable einen Initialisierungswert hat): <syntaxhighlight lang="C"> { //Öffnende Klammer erzeugt Maschinencode zur Speicherreservierung //von 4 Bytes (für int) und 8 Bytes (für double) int var1=12; //erzeugt Maschinencode zur Initialisierung //der ersten 4 Byte mit dem Wert 12 double var2=sin(f); //erzeugte Maschinencode, welche zunächst //die Funktion sin() mit dem Übergabewert f //aufruft und dessen Rückgabewert in die //nächsten 8 Byte des reservierten Speichers //kopiert ... { //siehe zuvor int var3=var1; //siehe zuvor double var4=var2+var1; } //siehe nachfolgenden } //Freigabe des zuvor reservierten Speichers </syntaxhighlight> Dies gilt auch für Funktionsaufrufe. Mit der öffnenden geschweiften Funktionsklammer wird ebenfalls Speicher reserviert: <syntaxhighlight lang="C"> void foo(int par) { //Öffnende Funktionsklammer erzeugt Maschinencode zur Speicherreservierung //von 4 Bytes (für (Übergabe)Variable par und 4 Bytes für Variable var int var; //Da keine Initialisierung vorhanden ist wird auch //kein Maschinencode zur Initialisierung ausgeführt { //Öffnende Klammer erzeugt Maschinencode zur Speicherreservierung //von 4 Byte für Variable x int x; ... </syntaxhighlight> Aufgrund der mit der Initialisierung bedingten Erzeugung von Maschinencode können die Initialisierungswerte/Inhalte der Initialisierungsliste bei lokalen Variablen aus beliebigen Ausdrücken bestehen und müssen keine Konstanten oder Konstanten Ausdrücke sein: <syntaxhighlight lang="C"> void foo(float f,float g) { float summe=f+g; //Initialisierungswerte float arr[3] = {f+f,g-f,sin(f)}; //werden zur Laufzeit berechnet } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> #include <math.h> //fuer sinf() void foo(float f,float g) { float summe=f+g; //Initialisierungswerte float arr[3] = {f+f,g-f,sinf(f)}; //werden zur Laufzeit berechnet printf("%f\n",(double)summe); printf("%f %f %f\n",(double)arr[0],(double)arr[1],(double)arr[2]); } int main(int argc,char *argv[]) { foo(3,4); return 0; } | execCompilerOptions=-Wall -lm| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Dieser Maschinencode wird jedes Mal ausgeführt, wenn die dazugehörige Anweisung abgearbeitet wird und bedingt dementsprechend Rechenzeit. Zehnmaliges Ausführen einer Funktion oder zehnmaliges Öffnen eines Block-Scopes innerhalb einer For-Schleife führt zur zehnmaligen Ausführung der oben genannten Sachverhalte: <syntaxhighlight lang="C"> void foo(int); void var(void) { for(int lauf=10; lauf>0; lauf--) { //zehnmaliges Reservieren von Speicher int var=lauf*2; //zehnmalige Initialisierung foo(var); } //Freigabe des Speichers } void foo(int par) { //zehnmaliges Reservieren von Speicher int var=12; //zehnmalige Initialisierung } //Freigabe des Speichers </syntaxhighlight> Nicht initialisierte lokale Variablen werden nicht initialisiert, d.h. keine zusätzlichen Maschinenbefehle zum Initialisieren erzeugt. Der Variablenwert entspricht dann einem 'Zufallswert' oder korrekter gesagt dem Inhalt der Variablen, welcher zuvor der Speicherstelle zugewiesen war: <syntaxhighlight lang="C"> int first(void) { int var_first=7; return var_first; } int second(void) { int var_second; //Variable var_second bekommt den identischen return var_second; //Speicherbereich wie var_first zugwiesen //und damit auch dessen zuletzt gültigen Wert } int main(int argc, char *argv[]) { int var1=first(); //var1 beinhaltet Wert 7 int var2=second(); //var2 beinhaltet Wert 7 printf("var_foo=%d\n",var1); printf("var_far=%d\n",var2); return 0; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> int first(void) { int var_first=7; return var_first; } int second(void) { int var_second; //Variable var_second bekommt den identischen return var_second; //Speicherbereich wie var_first zugwiesen //(und damit auch dessen zuletzt gültigen Wert) } int main(int argc, char *argv[]) { printf("%d\n",second()); //Zufallswert (0, da Stack mit 0 initialisiert ist) printf("%d\n",first()); //Stack belegen printf("%d\n",second()); //Zufallswert (7, da Speicherstelle zuvor mit 7 return 0; //belegt wurde) } | execCompilerOptions=| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Wird eine Variableninitialisierung mit einer switch oder goto Anweisung übersprungen, so wird zwar die Variable angelegt (Speicherplatz reserviert), jedoch die Maschinenbefehle zur Initialisierung dieser Variablen nicht ausgeführt (siehe auch [[Programmieren in C/C++: Grundlagen# Switch-Anweisung|Switch-Anweisung]] und [[Programmieren in C/C++: Grundlagen# Label + Goto|Label + Goto]]). Die Variable enthält dann einen Zufallswert: <syntaxhighlight lang="C"> switch(value) { case 0: int lok=7; printf("%d",lok); //OK, lok beinhaltet den Wert 7 break; default: printf("%d",lok); //KO, Variable lok vorhanden, //aber nicht initialisiert. D.h. Ausgabe einer break; //Zufallszahl } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> void foo(int value) { switch(value) { case 0: int lok=7; printf("%d\n",lok); //OK, lok beinhaltet den Wert 7 break; default: printf("%d\n",lok); //KO, Variable lok vorhanden, //aber nicht initialisiert. D.h. Ausgabe einer break; //Zufallszahl } } void far(void) { int var1=4711; int var2=1799; printf("Marke: %d, Erscheinungsjahr: %d\n",var1,var2); } int main(int argc,char *argv[]) { foo(2); //Zufallswert (0, da Stack mit 0 initialisiert ist) foo(0); //Initialisierungswert far(); //Stack belegen foo(2); //Zufallswert return 0; } | execCompilerOptions=| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Bei erstmaligem Funktionsaufruf kann eine nicht initialisierten lokale Variablen den Wert 0 beinhalten (Stackframe wird mit Programmstart auf 0 gesetzt). Beim nächsten Aufruf der Funktion ist zumeist die Speicherstelle der lokalen Variablen mit anderen Werten gefüllt worden, so dass nun ein anderer 'Zufallswert' als 'Initialisierungswert' enthalten ist === C++ === In C++ ist ergänzend die Initialisierung einer Variablen über () möglich. Bei Objekten wird hierüber der zugehörige Konstruktor aufgerufen. Bei primitiven Datentypen entspricht der Wert in den Klammern dem Initialisierungswert: <syntaxhighlight lang="C++"> int variable(10); //Bei primitiven Datentype entspricht dies //int variable=10; struct test { int a; test(int par) {a=par;} //Konstruktor der Struktur test }; struct test test(4); //Konstruktor test(int par) wird aufgerufen struct test test(4,5); //KO, kein passender Konstruktor vorhanden </syntaxhighlight> === Sonstiges === Folgende weitere Sachverhalten gilt es bzgl. Variableninitialisierung zu berücksichtigen: * Nach C-Spezifikation ist eine Initialisierung von Variablen nicht notwendig. Es liegt folglich kein Fehler vor, wenn auf eine nicht initialisierte Variable lesend zugegriffen wird. Ungeachtet der C-Spezifikation überprüft der Compiler mit dem Schalter '-Wall' diesen Sachverhalt und gibt eine Warning aus * Deklarationen/Prototypen können keinen Initialisierungswert enthalten <syntaxhighlight lang="C++"> extern int var=7; //Fehlerhaft </syntaxhighlight> * Const und lokale Static Variablen sollten initialisiert werden, auch wenn C in diesem Fall keinen Fehler meldet! <syntaxhighlight lang="C++"> const int konstante; //Syntaktisch OK, Initialisierungswert fraglich! static int statisch; </syntaxhighlight> == Anweisung (Statement) & Expression == Eine Anweisung (Statement) stellt entsprechend dem Wikipedia Artikel {{w|Anweisung_(Programmierung) | Anweisung}} ''"ein in der Syntax einer Programmiersprache formulierte einzelne Vorschrift dar, die im Rahmen der Abarbeitung des Programms auszuführen ist"''. Entsprechend der C-Spezifikation [C11 6.8] kann eine Anweisung aus: : labled-statement: Eine Sprungmarke für die Switch- und die Goto-Anweisung : compound-statement: siehe nachfolgendes Kapitel : expression-statement: siehe nachfolgendes Kapitel : selection-statement: Eine if() oder switch() Anweisung : iteration-statement: Eine while(), do while() oder eine for() Anweisung : jump-statement: Eine goto, break, continue oder return Anweisung Die einzelnen Statements können dabei aus weiteren Statements bestehen. === Ausdruck (Expression) === Entsprechend der C-Spezifikation [C11 6.5] ist ein Ausdruck eine Folge von Operatoren und Operanden, die die Berechnung eines Werts angibt, ein Objekt oder eine Funktion bezeichnet, Nebenwirkungen erzeugt oder eine Kombination davon ausführt. Die Wertberechnungen der Operanden eines Operators werden vor der Wertberechnung des Ergebnisses des Operators sequenziert (siehe auch {{w|lang=en|Expression_(computer_science)|Expression}}). Beispiele: <syntaxhighlight lang="C"> a=sqrt(a*a+b*b); //Ausdruck mit Nebenwirkungen int func(int par) { a++; return par*2;} b=func(1)*func(2); //Ausdruck mit undefinierten Verhalten a=++a + 1; a=for(lauf=10;lauf>0;lauf--); //for-Anweisung ist kein Ausdruck //d.h. liefert keinen Wert zurück </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> double sqrt(double); //DJ: Include-Anweisung in wikibooks schlägt fehlt int a=0; int func(int par) { a++; return par*2; } int main(int argc,char *argv[]) { int a=4,b=7; a=sqrt(a*a+b*b); //Ausdruck mit Nebenwirkungen b=func(1)*func(2); //Globale Variable a wird geändert! //Ausdruck mit undefinierten Verhalten a=++a + 1; //Kein Ausdruck a=for(lauf=10;lauf>0;lauf--); //for-Anweisung ist kein Ausdruck //d.h. liefert keinen Wert zurück return 0; } | execCompilerOptions=-Wall -lm| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Discarded Value === Discarded Value sind Ausdrücke, dessen Ergebnisse nicht verwendet werden (also keiner Variablen zugewiesen werden). Ergebnisse von Ausdrücken, die nicht verwendet werden, führen nicht zu einer Fehlermeldung: <syntaxhighlight lang="C"> int a=7; a; //Variable a wird gelesen, der Wert jedoch verworfen 7; //Konstante wird verworfen a+7; //Ergebnis wird Berechnet und verworfen printf("hallo"); //Printf hat einen Rückgabewert, dessen Wert verworfen wird </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=7; a; //Variable a wird gelesen, der Wert jedoch verworfen 7; //Konstante wird verworfen a+7; //Ergebnis wird Berechnet und verworfen printf("hallo"); //Printf hat einen Rückgabewert, dessen Wert verworfen wird return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * Soll bewusst der Rückgabewert verworfen werden, so kann/sollte mit dem explizten Cast auf (void) der Rückgabewert explizit 'verworfen' werden. Dies ist u.A. hilfreich bei Variablen, die (noch) nicht benutzt werden und der Compiler die Warning "unused Variable" ausgibt: :<syntaxhighlight lang="C"> (void)a; //Zur Vermeidung von Compiler-Warnings "Unused Variable" (void)(a+7); //hier eine explizte 'Ansage' der Verwerfung des Wertes (void)func(); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int func(void) { return 4711; } int main(int argc,char *argv[]) { int a; (void)a; //Zur Vermeidung von Compiler-Warnings "Unsued Variable" (void)(a+7); //hier eine explizte 'Ansage' der Verwerfung des Wertes (void)func(); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Mit der Anweisung <nowiki>[[nodiscard]]</nowiki> (ab C++17, ab C23) wird der Compiler angewiesen, dass der Aufrufer einer Funktion mit Rückgabewert der Rückgabewert entgegenzunehmen ist. Wird der Rückgabewert verworfen, so gibt der Compiler eine Fehlermeldung aus: :<syntaxhighlight lang="C"> [[nodiscard]] int Client(int socket); Client(5); ////Fehlermeldung, da Rückgabewert nicht verwendet wird </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> [[nodiscard]] int Client(int socket) { return socket+1; } int Server(int socket) { return socket+1; } int main(int argc,char *argv[]) { Server(5); //keine Fehlermeldung Client(5); //Fehlermeldung, da Rückgabewert nicht verwendet wird return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Java kennt Dicarded Values nicht. Ausnahme, es handelt sich um einen Funktionsaufruf, dessen Rückgabewert nicht genutzt wird. === Sequence Point === Ein Sequenzpunkt (u.A. das abschließende Semikolon am Ende der Anweisung) ist nach dem Wikipedia Artikel {{w|lang=en|Sequence_point|Sequence Point}} definiert als der Punkt in der Ausführung eines Computerprogramms, an dem garantiert ist, dass alle Nebenwirkungen früherer Bewertungen durchgeführt wurden und noch keine Nebenwirkungen von nachfolgenden Bewertungen durchgeführt wurden.<br /> Sequenzpunkte sind beispielsweise dann von Interesse, wenn dieselbe Variable innerhalb eines einzelnen Ausdrucks mehr als einmal geändert wird und die Ausführungsreihenfolge der Operationen nicht sauber spezifiziert ist.<br /> Ein oft zitiertes Beispiel ist der C-Ausdruck 'i=i++;'. Der Sequence Point garantiert, dass alle Operationen (hier Zuweisung und Postinkrement) ausgeführt sind. Jedoch ist die Ausführungsreihenfolge dieser beiden Operationen nicht spezifiziert. In Abhängigkeit des Zeitpunktes der Ausführung des Postinkrementes (vor oder nach der Zuweisung) kann i unterschiedliche Werte annehmen. In C und C++ führt die Auswertung eines solchen Ausdrucks zu undefiniertem Verhalten. Andere Sprachen, wie z. B. C#, definieren den Vorrang des Zuweisungs- und des Inkrementoperators so, dass das Ergebnis des Ausdrucks i=i++ garantiert ist.<br/> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int i=5; i=i++; printf("%d",i); //Gerne anderen Compiler auswählen, z.B. x86-64 icc... return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Weitere Sequence Points: * Beim ?-Operator stellt sowohl das ? als auch der : ein Sequenz Point dar. Zunächst muss der linke Ausdruck vollständig bearbeitet werden, bevor einer der beiden Bedingungen bearbeitet wird * Bei der logischen UND / ODER Funktion stellen der Operator ein Sequenz Point dar. Erst wird der linke Operand vollständig ausgeführt und ausgewertet, bevor (ggf.) der rechte Operand ausgewertet wird (siehe [[Programmieren in C/C++: Grundlagen#Logische Verknüpfungen | Logische Verknüpfungen]]) * Beim Komma-Operator stellen der Komma ein Sequence-Point dar (siehe [[Programmieren in C/C++: Grundlagen#Komma-Operator | Komma-Operator]]) • und weitere (siehe Appendix der C-Spec) Operationen, bei denen die Ausführungsreihenfolge nicht spezifiziert ist: * Bei Funktionsaufrufen ist die Abarbeitungsreihenfolge der Parameter nicht spezifiziert, so dass bspw.: :<syntaxhighlight lang="C"> //Aufrufruf einer Funktion, deren Parameter sich aus Funktionsaufrufen //ergeben (*pf[f1()]) (f2(), f3() + f4()); //pf -> Array von Funktionszeigern //Die Funktionen f1,f2,f3 und f4 können in einer beliebigen Reihenfolge //aufgerufen werden </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int f1(void) { printf("f1 called\n"); return 1; } int f2(void) { printf("f2 called\n"); return 2; } int f3(void) { printf("f3 called\n"); return 3; } int f4(void) { printf("f4 called\n"); return 4; } void func1(int par1,int par2) { printf("func1(%d,%d) called\n",par1,par2); } void func2(int par1,int par2) { printf("func2(%d,%d) called\n",par1,par2); } int main(int argc,char *argv[]) { void (*pf[2])(int,int)={func1,func2}; //Aufrufruf einer Funktion, deren Parameter sich aus Funktionsaufrufen //ergeben (*pf[f1()]) (f2(), f3() + f4()); //pf -> Array von Funktionszeigern //Die Funktionen f1,f2,f3 und f4 können in einer beliebigen Reihenfolge //aufgerufen werden //Gerne anderen Compiler auswählen, z.B. x86-64 icc... return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Per Postinkrement/-dekrement Operator sagt aus, dass für die eigentliche Operation der Wert der Variablen genutzt wird und im Anschluss die Variable erhöht / erniedrigt werden soll. Nach C-Spezifikation [C11 6.5.2.4] muss dies spätestens vor dem nächsten Sequence Point erfolgt sein. Der genaue Zeitpunkt innerhalb des Sequence Points ist jedoch nicht vorgegeben: :<syntaxhighlight lang="C"> int a=7; int b=a++ + a; //Ergebnis Abhängig, ob das Postinkrement vor der Addition //oder als letztes ausgeführt wird. a=a++ + 1; //dito </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=7; int b=a++ + a; //Ergebnis Abhängig, ob das Postinkrement vor der Addition //oder als letztes ausgeführt wird. a=a++ + 1; //dito printf("a=%d b=%d\n",a,b); //Gerne anderen Compiler auswählen, z.B. x86-64 icc... return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Abarbeitungsreihenfolge === Die Abarbeitungsreihenfolge der Operatoren wird durch die Prioritätenliste/Rangfolge (siehe [[C-Programmierung: _Liste_der_Operatoren_nach_Priorität| C-Programmierung:Liste der Operatoren nach Priorität]]) vorgegeben. Operatoren mit höherer Priorität werden vor Operatoren mit niedriger Priorität ausgeführt: <syntaxhighlight lang="C"> //Der Ausdruck c = sizeof(x) + ++a / 3; //wird aufgrund der Prioritäten wie folgt ausgewertet: c= (sizeof(x)) + ( (++a) / 3); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=2; int c; int x=0; c = sizeof(x) + ++a / 3; printf("a=%d c=%d\n",a,c); //Wird aufgrund der Prioritäten wie folgt ausgewertet: a=2; c= (sizeof(x)) + ( (++a) / 3); printf("a=%d c=%d\n",a,c); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Bei identischer Priorität ergibt sich die Abarbeitungsreihenfolge aus der Assoziativität (L-R oder R-L): <syntaxhighlight lang="C"> a=33 / 5 / 2; //Wird aufgrund der Assoziativität wie folgt ausgewertet. //a= (33 / 5) / 2; //und damit zu 3 und nicht zu 16 (bei 33 / (5/2)) ausgewertet. a = b = c = d*2; //→ a=(b=(c=(d*2))); a = b = 1+c = d; //→ a=(b=((1+c)=d)); //Compilerfehler, da //1+c kein lvalue ist </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a; a=33 / 5 / 2; printf("a=%d\n",a); //Wird aufgrund der Assoziativität wie folgt ausgewertet. //a= (33 / 5) / 2 printf("a=%d\n",a); //und damit zu 3 und nicht zu 16 (bei 33 / (5/2)) ausgewertet. int b,c,d=8; a = b = c = d*2; //→ a=(b=(c=(d*2))); printf("a=%d b=%d c=%d d=%d\n",a,b,c,d); a = b = 1+c = d; //→ a=(b=((1+c)=d)); //Compilerfehler, da //1+c kein lvalue ist return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Block / Compound-Statement === Ein Block oder Compound-Statement fasst Vereinbarungen und Anweisungen zu 'einer' Anweisung/Statement zusammen. Es kann überall dort eingesetzt werden, wo nur eine Anweisung erlaubt ist. <code> Syntax: {Declaration-or-statement-list/textsuperscript<sub>OPT</sub>} </code> Ein Block wird nicht wie bei einer Anweisung mit einem Semikolon abgeschlossen (Das angehängte Semikolon wäre dann eine separate leere Anweisung!). <br /> Ein Block hat blockweite Sichtbarkeit (siehe [[Programmieren in C/C++: Grundlagen#Blockweite Sichtbarkeit | Blockweite Sichtbarkeit]]), so dass hier definierte Variablen nur hier gültig sind. Deklarationen sind ebenfalls nur in dem Block gültig. <syntaxhighlight lang="C"> for(..) Anweisung; //For-Schleife führt nur diese eine Anweisung aus for(…) {Block} //For-Schleife führt Block (als eine Anweisung) aus if(..) Anweisung; else Anweisung; //IF-Anweisung führt nur 'eine' //Anweisung aus if(..) {Block} else {Block} //IF-Anweisung führt Block aus if( ) {Block}; else {Block}; //Semikolon ist eine separate //Leer-Anweisung, so dass else //nicht zur IF-Anweisung zugeordnet //werden kann (2 Anweisungen vor Else) void foo(void) { int var1; { //Block innerhalb von Block als Strukturierungswerkzeug int var2; struct xyz{int x,y,z}; //Defintion eines Datentyps im Block struct xyz var3; } struct xyz var4; //KO, Datentyp hier nicht mehr bekannt } </syntaxhighlight> Hinweise: * '''Blöcke können/sollten als Strukturierungswerk genutzt werden. Dem Leser von Source Code kann auf dieser Weise vermittelt werden, dass diese Anweisungen 'zusammen' zu lesen sind.''' * Im Gegensatz zu Java, in welchem innerhalb eines Blockes kein Variablenname genutzt werden darf, die außerhalb des Blockes existiert, ist dies in C erlaubt. Die äußere Variable steht damit innerhalb des Blockes nicht mehr im Zugriff. :<syntaxhighlight lang="C"> int a=3; int main(void){ int a=7; //Globale Variable ist ab hier nicht mehr sichtbar/zugreifbar { int a=9; //Innere Variable überdeckt äußere Variable } } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int a=3; int main(int argc,char *argv[]) { printf("a=%d\n",a); int a=7; //Globale Variable ist ab hier nicht mehr sichtbar/zugreifbar printf("a=%d\n",a); { int a=9; //Innere Variable überdeckt äußere Variable printf("a=%d\n",a); } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Embedded Statement === Embedded Statements sind eine GNU-C Erweiterung (siehe [https://www.gnu.org/software/gnu-c-manual/gnu-c-manual.html GNU-C-Manual 3.18]). Da sie vom Autor als sehr nützlich angesehen wird und auch von diversen Compilern und auch in C++ unterstützt wird, wird diese hier beschrieben. Ein Block fasst mehrere Anweisungen zu einer Anweisung zusammen, hat jedoch kein Rückgabewert. Ein Embedded-Statement entspricht einem Block mit der Ergänzung, dass dieser einen Rückgabewert hat, so dass ein Embedded-Statement überall dort eingesetzt werden kann, wo eine Expression erwartet wird. <code> Syntax: ({Declaration-or-statement-list<sub>OPT</sub>}) </code> Der Rückgabewert wird nicht über eine return-Anweisung angegeben, sondern entstammt aus der letzten Anweisung innerhalb der Liste: <syntaxhighlight lang="C"> int var; var={int par=7;} //KO Block hat keine Rückgabewert. var=({int par=7; par++; par;}); //OK Embedded-Statement hat einen //Rückgabewert, der sich aus der //letzten Anweisung 'Par;' ergibt //Hier 8. </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int var; var={int par=7;} //KO Block hat keine Rückgabewert. var=({int par=7; par++; par;}); //OK Embedded-Statement hat einen //Rückgabewert, der sich aus der //letzten Anweisung 'Par;' ergibt //Hier 8. printf("var=%d\n",var); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Ein Embedded-Statement ähnelt folglich einem Funktionsaufruf mit dem Unterschied, dass a) in der Tat kein Funktionsaufruf stattfindet und b) der Rückgabewert nicht mit return, sondern über die letzte Anweisung zurückgegeben wird. Der Anwendungsfall ist dort zu finden, wo eine Expression erwartet wird und mehrere Anweisungen zum Ermitteln der Expression notwendig sind: <syntaxhighlight lang="C"> int var1=8; int b=({int d=var1++;d>10?10:d;}); if( ({int d=b;b=var1;b=d;}) > 1) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int var1=8; int b=({int d=var1++;d>10?10:d;}); if( ({int d=b;b=var1;b=d;}) > 1) printf("Bedingung erfüllt"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * Ein Embedded-Statement ist insbesondere bei Nutzung von Makros (siehe Kap [[Programmieren in C/C++: Präprozessor | Präprozessor]]) hilfreich * Mittels eines Embedded-Statement kann eine anonyme Funktion/Lambdafunktion dargestellt werden: <syntaxhighlight lang="C"> void test(int (*fptr)(int),int arr[10]) { for(int lauf=0;lauf<10;lauf++) arr[lauf]=fptr(arr[lauf]); } int main(int argc, char *argv[]) { int arr[]={1,2,3,4,5,6,7,8,9,10}; //Aufruf mit einer anonymen Funktion test( ({int func(int a) {return a%2?a:0;} ; func;}) ,arr); } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void test(int (*fptr)(int),int arr[10]) { for(int lauf=0;lauf<10;lauf++) arr[lauf]=fptr(arr[lauf]); } int main(int argc, char *argv[]) { int arr[]={1,2,3,4,5,6,7,8,9,10}; //Aufruf mit einer anonymen Funktion test( ({int func(int a) {printf("Called:%d\n",a);return a%2?a:0;} ; func;}) ,arr); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Funktionen / Prozeduren == Funktionen/Prozeduren sind ein Strukturierungsmerkmal, so dass Teile der Funktionalität des Programmes wiederverwendbar sind. C/C++ unterscheidet nicht zwischen Funktionen (haben einen Rückgabewert, können damit in Ausdrücken verwendet werden) und Prozeduren (haben keine Rückgabewert, resp. Rückgabetyp void).<br/> Mit jedem Aufruf einer Funktion wird für den zugehörigen Block ein eigener Stack-Kontext angelegt, so dass Funktionen sich selbst aufrufen können (Rekursion). Jeder Funktionsinstanz hat somit seinen eigenen lokalen Variablenbereich, teilen sich jedoch die globalen und die statisch lokalen Variablen.<br /> Mit dem Aufruf einer Funktion können Parameter übergeben werden, wobei die Übergabeparameter vom Aufrufer (Caller) durch den Aufruf in die lokalen Variablen des Aufgerufenen (Callee) kopiert/zugewiesen werden (Call by Value). Wird ein Zeiger übergeben, hat der Callee über die Dereferenzierung des Zeigers die Möglichkeit, die Variablen des Caller zu verändern (Call by Reference) (siehe Kap. [[Programmieren in C/C++: Zeiger #Zeiger bei Funktionsaufrufen | Zeiger:Zeiger bei Funktionsaufrufen).]]). Hinweise: * Die Klammerung hinter dem Funktionsnamen (<code>foo()</code>) zeigt an, dass es sich um einen Funktionsaufruf (Verzweigung der Programmausführung zu der Startadresse der Funktion) handelt :<syntaxhighlight lang="C"> void foo(void) {printf("foo called");}; foo(); //Klammern hinter dem Funktionsnamen bedeuten Aufruf der Funktion </syntaxhighlight> * Die Nutzung des Funktionsnamens ohne Klammerung (<code>foo</code>) gibt die Startadresse der Funktion zurück. Die Startadresse kann in einem Zeiger auf Funktionen gespeichert werden (siehe Kap. [[Programmieren in C/C++: Zeiger#Zeiger auf Funktionen | Zeiger:Zeiger auf Funktionen]]). :<syntaxhighlight lang="C"> void foo(void) {printf("foo called");}; void (*fptr)(void)=foo; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void foo(void) { printf("foo called"); }; int main(int argc, char *argv[]) { void (*fptr)(void)=foo; fptr(); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Deklaration/Definition vor dem ersten Aufruf der Funktion 'notwendig', damit Compiler die Übergabeparameter entsprechend bereitstellt und ggf. eine implizite Typkonvertierung durchführt (dito Rückgabewert). Die Angabe der Variablennamen können bei der Deklaration entfallen * Die fehlende Angabe der Übergabeparameter bedeutet in C (nicht C++), dass diese Funktion mit beliebigen Übergabeparametern aufgerufen werden kann und der Compiler keine Typprüfung durchführt: :<syntaxhighlight lang="C"> int func() {...} //kann wie folgt aufgerufen werden func(); func(4); func("hallo Welt",4.7); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void func() { printf("foo called\n"); }; int main(int argc, char *argv[]) { func(); func(4); func("hallo Welt",4.7); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} :→ unbedingt vermeiden<br /> :Hat die Funktion keinen Übergabewert, so wird dies in C mit void gekennzeichnet * In C++ bedeutet die Schreibweise ohne Datentypbeschreibung, dass keine Parameter erwartet werden * In der Parameterliste von Funktionen dient in der GNU-C Spezifikation das Semikolon zum Trennen zwischen Deklaration von Übergabeparameter und den Übergabeparametern. Alle Übergabewerte links vom Semikolon sind (Forward)deklarationen: :<syntaxhighlight lang="C"> void test1(int a; int b,int a) { // Forward; Parameter printf("a=%d b=%d\n",a,b); } //Aufruf test1(3,7); //a=7 b=3 //Sinnvoll im Umgang mit Variable Length Arrays void test2(int dim; const char str[dim], int dim); //Aufruf test2("hallo",6); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void test1(int a; int b,int a) { // Forward; Parameter printf("a=%d b=%d\n",a,b); } //Sinnvoll im Umgang mit Variable Length Arrays void test2(int dim; const char str[dim], int dim) { printf("dim=%d\n",dim); } int main(int argc, char *argv[]) { //Aufrufe test1(3,7); //a=7 b=3 test2("hallo",6); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Return-Anweisung === Mit der Return-Anweisung wird eine Funktion (vorzeitig) beendet. Der optionale Parameter dient der Angabe des Rückgabewertes der Funktion an den Aufrufer. Der Datentyp des Parameters ergibt sich aus dem Rückgabedatentyp der Funktion. <code> Syntax: return expression<sub>OPT</sub> </code> Der Rückgabewert expresion sagt aus, dass hier nicht nur Konstanten oder Variablen stehen können, sondern beliebige Ausdrücke erlaubt sind. Der resultierende Datentyp des Ausdruckes muss letztendlich dem Rückgabedatentyp der Funktion entsprechen: <syntaxhighlight lang="C"> int foo(double a, double b) { return (int)(a*a+b*b); } </syntaxhighlight> Hinweise: * Bei nicht void-Funktionen ist eine return-Anweisung mit einer Expression entsprechend dem Datentyp der Funktion zwingend notwendig: :<syntaxhighlight lang="C"> int func(void) { return 5.1; //Datentyp wird zuvor int konvertiert } double a=func(); //int wird in double konvertiert </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int func(void) { return 5.1; //Datentyp wird zuvor int konvertiert } int main(int argc, char *argv[]) { double a=func(); //int wird in double konvertiert printf("a=%f\n",a); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Bei einer void-Funktion ist die return-Anweisung ohne Expression optional. Hier entspricht der schließende Block der Return-Anweisung :<syntaxhighlight lang="C"> void func(char *str) { if(str==NULL) return; printf("%s",str); } </syntaxhighlight> Sollen mehr als ein Rückgabewert an den Aufrufer zurückgegeben werden so empfiehlt sich: * die Rückgabewerte in einer Struktur zu packen (siehe [[Programmieren in C/C++: Datentypen#Verbundtyp Struktur/Klasse (nur C++) |Datentypen:Verbundtyp Struktur/Klasse (nur C++)]]) * die Rückgabewerte über die Aufrufparameter als Call-by-Reference zu übergeben (siehe [[Programmieren in C/C++: Zeiger#Zeiger bei Funktionsaufrufen | Zeiger:Zeiger bei Funktionsaufrufen]]) ==== Rückgabewert aus Datentypsicht ==== Aus Datentypsicht kann der Funktionsname inkl. den Parameter(n) in einem Ausdruck mit dem Datentyp des Rückgabewertes der Funktion ausgetauscht werden: <syntaxhighlight lang="C"> int foo(void) {return 4711;} int var; var=1+foo(); //Aus Datentypsicht (int)=(int)+(int) </syntaxhighlight> Daraus ergibt sich, dass bei Arrays/Strukturen/Unions direkt auf einzelne Komponenten zugegriffen werden kann, ohne diese zuvor einer Variablen zuzuweisen: <syntaxhighlight lang="C"> struct xyz{int x,y,z;}; struct xyz foo(int par) { struct xyz var; var.x=var.y=var.z=par; return var; } if(foo(12).x == 12) printf("Identisch\n"); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct xyz{int x,y,z;}; struct xyz foo(int par) { struct xyz var; var.x=var.y=var.z=par; return var; } int main(int argc, char *argv[]) { if(foo(12).x == 12) printf("Identisch\n"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} ==== Fehlerrückgabe ==== Viele Funktionen können unter gewissen Umständen nicht korrekt ausgeführt werden. Z.B. aufgrund dessen, dass: * der benötigter Speicher vom Heap nicht bereitgestellt werden kann * Übergabeparameter außerhalb des zulässigen Bereiches liegen * angeforderte Ressource (Datei, Geräte, …) nicht vorhanden/verfügbar sind Solche Fälle gilt es dem Aufrufer mitzuteilen, da in diesen Fällen die vom Aufrufer geforderte Funktionalität nicht erfüllt ist und der Aufrufer ggf. nicht weiterarbeiten kann. Zur Mitteilung des Fehlers sollte vorrangig der Rückgabewerte genutzt werden. (auch wenn in C++ mit Exception eine Alternative hierzu bereitsteht) <syntaxhighlight lang="C"> char *strdup(char *src) { char *dst; if((dst=malloc(strlen(src)+1))==NULL) return NULL; strcpy(dst,src); return dst; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> #include <string.h> char *strdup1(char *src) { char *dst; if((dst=malloc(strlen(src)+1))==NULL) return NULL; strcpy(dst,src); return dst; } int main(int argc, char *argv[]) { char *dup=strdup1("hallo"); if(dup == NULL) printf("Fehler\n"); else printf("dup='%s'\n",dup); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Die Standard-C Library-Funktionen geben in diesem Fall zumeist ein -1 (Rückgabewert Ganzzahl) oder einen NULL-Zeiger (Rückgabewert Zeiger) zurück. Der genaue Fehlergrund ist dann ergänzend in der globalen Variablen errno gespeichert. Mittels der Standard-C Funktion strerror() kann die Zahl in einen für den Anwender/Programmierer lesbaren String umgewandelt werden (die GNU-C Library Funktion printf() bietet ergänzend den Conversion Spezifier %m als alternative Ausgabemöglichkeit an): <syntaxhighlight lang="C"> #include <errno.h> int var; if(-1==scanf("%d",&var) ) printf("Es wurde keine Zahl erkannt\n"); int ret=open("/etc/ptmp",O_WRONLY|O_CREAT|O_EXCL, S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH); if(-1==ret) printf("open failed() with %s\n",strerror(errno)); if(-1==ret) printf("open failed() with %m (nur glibc)\n"); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <fcntl.h> #include <string.h> #include <errno.h> int main(int argc, char *argv[]) { int var; if(-1==scanf("%d",&var) ) printf("Es wurde keine Zahl erkannt\n"); int ret=open("/etc/ptmp",O_WRONLY{{!}}O_CREAT{{!}}O_EXCL, S_IRUSR{{!}}S_IWUSR{{!}}S_IRGRP{{!}}S_IROTH); if(-1==ret) printf("open failed() with %s\n",strerror(errno)); if(-1==ret) printf("open failed() with %m (nur glibc)\n"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} '''Für eine sauber Programmierung sollte diese Methodik generell angewendet werden.''' Jede Funktion, welche Fehlschlagen kann, teilt dies per Rückgabewert dem Aufrufer mit. Der Rückgabewert einer jeden Funktion wird vom Aufrufer kontrolliert. === Main-Funktion === Mit Start der Anwendung übergibt das Betriebssystem die Kontrolle an die Anwendung und führt dort die Funktion main aus. Als Übergabe- und Rückgabeparameter sind folgende Varianten erlaubt: <syntaxhighlight lang="C"> int main(void) { } int main(int argc, char *argv[]) { } </syntaxhighlight> Mit dem Start der Anwendung kann, wie bei jedem Funktionsaufruf, Parameter an den startenden Prozess übergeben werden. Als Parameter können Strings übergeben werden, welche in Form eines Arrays von Strings übergeben werden. Im Parameter argc sind die Anzahl der Strings enthalten. Im Parameter argv[x] sind die einzelnen Strings enthalten. Sofern vorhanden ist im ersten String der Programmname/Aufrufname der Anwendung enthalten: <syntaxhighlight lang="C"> int main(int argc, char *argv[]) { //Variante 1: Darstellung des Inhaltes des Arrays von Strings for(int lauf=0;lauf < argc; lauf++) printf("%d.Parameter: '%s'\n",lauf,argv[lauf]); //Variante 2: Darstellung des Inhaltes des Arrays von Strings (void)argv; //Wird hier nicht benötigt for(char **str=argv;*str!=NULL;str++) printf("Parameter: '%s'\n",*str); return EXIT_SUCCESS; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int max_width=0; int ret; //Variante 1: Darstellung des Inhaltes des Arrays von Strings for(int lauf=0;lauf < argc; lauf++) { ret=printf("%d.Parameter: '%s'\n",lauf,argv[lauf]); max_width=ret>max_width ? ret : max_width; } //Trennzeichen drucken char term[max_width]; memset(term,'-',max_width); printf("%.*s\n",max_width-1,term); //Variante 2: Darstellung des Inhaltes des Arrays von Strings (void)argv; //Wird hier nicht benötigt for(char **str=argv;*str!=NULL;str++) printf("Parameter: '%s'\n",*str); return EXIT_SUCCESS; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Im Compiler-Explorer können die Parameter im Executor unter 'Execution Arguments', getrennt mit Leerzeichen eingegeben werden. Wird die Funktion main beendet, entweder über die return Anweisung oder den Aufruf der exit() Funktion, wird die Kontrolle zurück an den startenden Prozess (zumeist Shell) gegeben. Über den Rückgabewert wird im Allgemeinen dem Aufrufer der Fehlerstatus mitgeteilt (EXIT_SUCCESS oder 0 bedeutet fehlerfreie , EXIT_FAILURE oder ungleich 0 fehlerhafte Ausführung). Der Start der Anwendung kann als Funktionsaufruf angesehen werden, welchen einen Wert an den Aufrufer zurückliefert. Hinweise: * Der Return-Wert der main-Funktion kann mit >>echo $? in der Bash abgefragt werden * Mittels <code>exit(int status)</code> kann das Programm an jeder Stelle innerhalb des Programms beendet werden. <code>status</code> entspricht dann der expression der return Anweisung von main === Inline Funktion === Wie der Name inline andeutet, ist die Intention von Inline, dass die aufgerufen Funktion Bestandteil der aufrufenden Funktion ist. Die aufgerufene Funktion soll somit im Kontext des Aufrufers ausgeführt werden, so dass kein eigener Stack bereitgestellt werden muss. Der Start der Funktion kann somit schneller erfolgen: <code> inline int foo(void) { } </code> Das Inline erfolgt durch den Compiler (und nicht durch den Linker). Damit das inline funktioniert, muss die zu inlinende Funktion vor dem Aufruf definiert sein, d.h. sie muss in derselben C-Datei enthalten sein [C11 6.7.4]. Hinweis: * Das 'inlinen' von Funktionen über die eigene Objektdatei hinweg erfolgt in C/C++ über Link Time Optimization (LTO). Hierzu fügt der Compiler den Zwischencode mit in die Objektdatei, so dass der Linker das 'inlinen' vollziehen kann (siehe {{w|lang=en|Interprocedural_optimization| Interprocedural Optimization}}) === Variadic Function / Ellipsis Punctuator === Mit dem Ellipsis Puncturator '…' kann in Funktionsdefinitionen angegebenen werden, dass anstatt der … Anweisung, beliebig viele Parameter/Argumente übergeben werden können. Dies wird unter anderen in der printf() Anweisung genutzt: <syntaxhighlight lang="C"> int printf(const char *fmt, ... ); </syntaxhighlight> Die wie folgt aufgerufen werden kann: <syntaxhighlight lang="C"> printf("Hello World"); //es folgt kein Parameter printf("%d",100); //es folgt ein Parameter vom Datentyp int printf("%f",1.1); //es folgt ein Parameter vom Datentyp double printf(conststr,1,2,3,"xyz") //Ohne Worte </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { printf("Hello World\n"); //es folgt kein Parameter printf("%d\n",100); //es folgt ein Parameter vom Datentyp int printf("%f\n",1.1); //es folgt ein Parameter vom Datentyp double const char *conststr="%d %x %c '%s'\n"; printf(conststr,1,2,33,"xyz"); //Ohne Worte return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Der übergebenen Datentype der Parameter wird der aufgerufenen Funktion nicht mitgeteilt! Einzig werden bei Aufruf der variadischen Funktion so viel Bytes auf den Stack gelegt, wie der Datentyp der einzelnen Übergabeparameter groß ist: :<code>int --> 4 Byte</code> :<code>double --> 8 Bytes</code> :<code>Zeiger --> 4/8 Byte</code> Damit die aufgerufene Funktion die fehlende Datentypinformation dennoch mitgeteilt bekommt, muss dies am Beispiel der <code>printf</code> Funktion über den Format-String erfolgen: <syntaxhighlight lang="C"> int vari; printf("%d",vari); //%d erwartet einen Integer Übergabeparameter (4-Byte) size_t vars; printf(" %zu %d ", vars, vari); // %zu zur Mitteilung, dass anstatt //integer nun size_t als Datentyp übergeben wird //und somit anstatt 4 Bytes 8 Bytes vom Stack genommen werden </syntaxhighlight> <code>printf()</code> entnimmt entsprechend der Datentypbeschreibung im Formatstring die passende Anzahl an Bytes vom Stack. Da der Compiler für die optionalen Parameter nicht den Zieldatentyp kennt, erlaubt die C-Spezifikation als Übergabedatentypen hier nur die Grunddatentypen <code>signed int, unsigned int, long, long long, double</code> und <code>Zeiger</code>. Entspricht der übergebene Parameter nicht einen dieser Datentypen, so wird er mittels implizit Cast entsprechend nachfolgender Tabelle gewandelt [C11 6.5.2.2 Default Argument Promotions]: {| class="wikitable" |- ! Ausgangstyp !! Umwandlungstyp |- | char, signed char, short || int |- | unsigned char, unsigned short || unsigned int |- | float || double |- | Alle anderen Datentypen || bleiben erhalten |} Bspw.: <syntaxhighlight lang="C"> signed char varc=-1; float varf =0.1; printf("%d %f",varc, varf); //varc wird beim Aufruf nach int konvertiert! //varf wird beim Aufruf nach double konvertiert! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { signed char varc=-1; float varf =0.1; printf("%d %f",varc, varf); //varc wird beim Aufruf nach int konvertiert! //varf wird beim Aufruf nach double konvertiert! //Zur Darstellung der besagten Konvertierung siehe rechtes Fenster return 0; } | execCompilerOptions=-Wall| h=g }} Öffnen im Compiler Explorer] }} Zum Umgang mit dem variadischen Parameter stellt C die Funktionen <code>va_start(), va_arg(), va_copy()</code> und <code>va_end()</code> bereit. Auf Grundlage des dazugehörigen Datentyps <code>va_list</code> können variadische Parameter auch an Unterfunktionen weitergereicht werden (bspw vprintf()). Dieses Thema bedingt jedoch genaue Kenntnisse vom Umgang mit dem Stack und ist nicht Bestandteil dieser Vorlesung. == Variable Length Array (VLA) == Im Normalfall ergibt sich die Anzahl der Elemente eines Arrays aus einer Konstanten, so dass der Compiler zur Compilezeit passend Speicher reserviert (siehe Kap. [[Programmieren in C/C++: Array | Array]]): <syntaxhighlight lang="C"> int arr[4]; //Compiler reserviert für Variable arr //4*sizeof(int) Speicherplatz </syntaxhighlight> Bei Variable Lenght Array wird die Arraydimension nicht über eine Konstante, sondern über eine Variable oder einen Ausdruck angegeben. D.h. die tatsächliche Dimension des Arrays ergibt sich erst zum Ausführungszeitpunkt der Definition: <syntaxhighlight lang="C"> void foo(size_t n) { int arr[n*2+1]; //Arraydimension ergibt sich zum Ausführungszeitpunkt n++; //Nachträgliches Ändern von n ändert nicht //die Größe des Arrays! } </syntaxhighlight> Ein Variable Length Array kann nur als lokale Variable oder als Übergabeparameter definiert werden (wobei im letzteren Fall kein Speicher hiermit reserviert wird). Eine Initialisierung eines VLA's mit der Definition ist nicht möglich, d.h. nach der Definition beinhaltet das Array 'zufällige' Werte. Es empfiehlt sich daher, diese bspw. mit memset händisch zu initialisieren (siehe auch Kap [[Programmieren in C/C++: Array#Initialisierung | Array:Initialisierung]]): <syntaxhighlight lang="C"> void foo(size_t n) { char str[n]; memset(str,0,n*sizeof(char)); //Array mit 0 füllen </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> void foo(size_t n) { char str[n]; memset(str,0,n*sizeof(char)); //Array mit 0 füllen for(size_t lauf=0;lauf<n;lauf++) printf("str[%zu]=%d\n",lauf,str[lauf]); } int main(int argc, char *argv[]) { foo(4); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Mittels sizeof kann weiterhin der Speicherbedarf ermittelt werden, wobei sizeof mit einem VLA als Argument kein Konstantenausdruck ist. Stattdessen wird die Größe zur Laufzeit ermittelt: <syntaxhighlight lang="C"> void foo(size_t n) { int arr[n*2+1]; //VLA size_t size; size=sizeof(arr); //sizeof(arr) entspricht einem Funktionsaufruf //welcher die Speichergröße des VLA's ermittelt </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void foo(size_t n) { int arr[n*2+1]; //VLA size_t size; size=sizeof(arr); //sizeof(arr) entspricht einem Funktionsaufruf //welcher die Speichergröße des VLA's ermittelt printf("size=%zu\n",size); } int main(int argc, char *argv[]) { foo(5); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} VLA wurden erstmals in C mit C99 eingeführt. In C11 wurden VLA's als optional eingestuft und mit C23 zurück auf notwendig gesetzt. In C++ sind VLA's nicht definiert, werden jedoch vom GCC Compiler unterstützt. Als alternativen Datentyp wird hier std::array empfohlen. Hinweis: * VLA sind nicht direkt in einem Switch-Case Block definierbar. Wird hier ein VLA benötigt, so muss hierzu ein Block erzeugt werden: :<syntaxhighlight lang="C"> switch(value) { case 1: char arr1[value]; //Compilerfehler, da bei value!=1 kein Speicherplatz //für das VLA reserviert wird break; case 2: { char arr2[value]; //OK } break; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int value=argc; switch(value) { case 1: char arr1[value]; //Compilerfehler, da bei value!=1 kein Speicherplatz //für das VLA reserviert wird break; case 2: { char arr2[value]; //OK } break; } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Operatoren == In der Programmiersprache C sind folgende Punctuators [C11 6.4.6] definiert: <syntaxhighlight> [ ] ( ) { } . -> ++ -- & * + - ~ ! / % << >> < > <= >= == != ^ | && || ? : ; ... = *= /= %= += -= <<= >>= &= ^= |= , # ## <: :> <% %> %: %:%: </syntaxhighlight> Die Funktionalitäten sind identisch zu Java. Aufgrund des Datentyps Zeiger gibt es in C ergänzend den Punctuator <code>-></code> (siehe Kap [[Programmieren in C/C++: Datentypen#Verbundtyp Struktur/Klasse (nur C++)|Datentypen:Verbundtyp Struktur/Klasse (nur C++)]]). Der Präprozessor bedingt die beiden Punctuatoren <code>#</code> und <code>##</code> (siehe Kap [[Programmieren in C/C++: Präprozessor | Präprozessor]]). Die letzten 6 Punctuators <code><: :> <% %> %: %:%:</code> werden zu <code>[ ] { } # ##</code> ersetzt. Sie sind für Computersysteme gedacht, welche keine ALTGR-Taste besitzen.<br /> Java kennt ergänzend den <code>>>></code> Operatoren, welcher in C über den normalen Schiebebefehl und den zugrundeliegenden Datentyp gesteuert wird. Wie in Java sind einige Punctuators vom Kontext abhängig und haben damit unterschiedliche Funktionalitäten: <syntaxhighlight> ++ → (Postfix) ++ vs. ++(Präfix) -- → (Postfix) -- vs. --(Präfix) +/- → Vorzeichen vs. Addition/Subtraktion () → Funktionsaufruf() vs. Befehlsbestandteil if() vs. Priorisierung </syntaxhighlight> Für den Umgang mit dem Datentyp Zeiger besitzen einige Punctuatoren ergänzende Funktionalitäten (siehe Kap [[Programmieren in C/C++: Zeiger| Zeiger]]): <syntaxhighlight> & → Bitweises UND: Anwendung: Ganzahlausdruck & Ganzahlausdruck & → Adressoperator: Anwendung: &Variable * → Multiplikation Anwendung: Ganzahl-/Gleitkommaausdruck * Ganzahl-/Gleitkommaausdruck * → Datentyp Zeiger Anwendung: Datentyp * Variablenname; * → Dereferenzierung: Anwendung: * Zeiger </syntaxhighlight> Punctuatoren, welche von Java abweichende / ergänzende Funktionalitäten haben, werden nachfolgend gesondert beschrieben. Sind in einer Anweisung mehrere Operatoren enthalten, so hängt die Abarbeitungsreihenfolge von der Rangfolge/Priorität der Operatoren ab (siehe [[Programmieren in C/C++: Grundlagen#Abarbeitungsreihenfolge | Abarbeitungsreihenfolge]]).<br /> Die Rangfolge ist identisch zu Java, wobei C mehr Operatoren kennt. Generell empfiehlt sich, lieber eine Klammer zu viel als zu wenig zusetzen. Klammern haben die höchste Priorität. === Zuweisungs-Operator === Die Zuweisung (<code>=</code>-Operator, assignment expression) weist dem L-Value den R-Value zu. Ergänzend dient der L-Value als Rückgabewert des Operators, so dass das Ergebnis der Zuweisung weiter genutzt werden kann. Die Abarbeitungsreihenfolge ist von rechts nach links (R-L Assoziativität). Wird der 'letzte' Rückgabewert nicht verwendet, so wird dieser verworfen (siehe Kap. [[Programmieren in C/C++: Grundlagen#Discarded Value | Discarded Value]]).<br /> Beispiel: <syntaxhighlight lang="C"> a=7; //Zuweisung a=b=7; //Erste Zuweisung (b=7) hat einen Rückgabewert, welcher im //Anschluss a zugewiesen wird if(a=7) //Variablen a wird der Wert 7 zugewiesen. Der Rückgabewert //der Zuweisung wird im Anschluss auf True oder False geprüft if(7=a) //Besser, da aufgrund der fehlerhafter Zuweisung ein //Compilerfehler geworfen wird x*=y=z //entspricht x=x*(y=z) a=b=d+7; //entspricht a=(b=(d+7)) a=b==c; //a bekommt das boolesche Ergebnis der Vergleichsoperation //zugewiesen </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a,b,c=3,d=4; int x,y,z; a=7; //Zuweisung a=b=7; //Erste Zuweisung (b=7) hat einen Rückgabewert, welcher im //Anschluss a zugewiesen wird if(a=7) //Variablen a wird der Wert 7 zugewiesen. Der Rückgabewert ; //der Zuweisung wird im Anschluss auf True oder False geprüft if(7=a) //Besser, da aufgrund der fehlerhafter Zuweisung ein ; //Compilerfehler geworfen wird x*=y=z; //entspricht x=x*(y=z) a=b=d+7; //entspricht a=(b=(d+7)) a=b==c; //a bekommt das boolesche Ergebnis der Vergleichsoperation //zugewiesen return 0; return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * Auf beiden Seiten der Zuweisung muss der identische Datentyp stehen. Wenn andernfalls eine implizite Typkonvertierung nicht möglich ist, gibt der Compiler einen Fehler aus: :<syntaxhighlight lang="C"> int a = 7.3; //implizite Typkonvertierung double b=a+3; //Implizite Typkonvertierung der Intergeraddition nach double float c=(float)a+(float)3; //Explizite Typkonvertierung char *d=a; //Compilerfehler, da Integerwert nicht implizit in einen //Zeiger konvertiert werden kann </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a = 7.3; //implizite Typkonvertierung double b=a+3; //Implizite Typkonvertierung der Intergeraddition nach double float c=(float)a+(float)3; //Explizite Typkonvertierung char *d=a; //Compilerfehler, da Integerwert nicht implizit in einen //Zeiger konvertiert werden kann //Zur Darstellung der besagten Konvertierung siehe rechtes Fenster (void)b; (void)c; (void)d; return 0; } | execCompilerOptions=-Wall| h=g }} Öffnen im Compiler Explorer] }} * Bei der Parameterübergabe beim Funktionsaufruf wird ebenfalls indirekt der Zuweisungsoperator angewendet. Die Parameter des Aufrufers werden per Zuweisung den lokalen Variablen der aufgerufenen Funktion zugewiesen :<syntaxhighlight lang="C"> void func(int a, float b) { printf("a=%d b=%f",a,b); } int x=4; float y=5.0; func(x,y); //der Inhalt der Variablen x wird der lokalen Variable a //(a=x) und der Inhalt der Variablen y der lokalen Variablen b //(b=y) zugewiesen. func(y,x); //Dito, mit der Ergänzung, dass eine implizite Typkonvertierung //stattfindet (a=(int)y) und (b=(float)x). </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void func(int a, float b) { printf("a=%d b=%f",a,b); } int main(int argc, char *argv[]) { int x=4; float y=5.0; func(x,y); //der Inhalt der Variablen x wird der lokalen Variable a //(a=x) und der Inhalt der Variablen y der lokalen Variablen b //(b=y) zugewiesen. func(y,x); //Dito, mit der Ergänzung, dass eine implizite Typkonvertierung //stattfindet (a=(int)y) und (b=(float)x). //Zur Darstellung der besagten Konvertierung siehe rechtes Fenster return 0; } | execCompilerOptions=-Wall| h=g }} Öffnen im Compiler Explorer] }} === Komma-Operator === Der Komma-Operator erlaubt es, zwei Ausdrücke auszuführen, wo nur einer erlaubt wäre. Die Ergebnisse aller durch diesen Operator verknüpften Ausdrücke, außer dem letzten werden verworfen. Der letzte Ausdruck dient als Rückgabewert. Folgendes gilt es bei der Nutzung des Komma-Operators zu beachten: * Der Komma-Operator wird von links nach rechts ausgewertet * Das Komma selbst stellt eine Sequence Point dar (siehe Kap [[Programmieren in C/C++: Grundlagen#Sequence Point|Sequence Point]]) * An Stellen, wo das Komma zum Syntax gehört (z.B. Trennung der Übergabeparameter bei der Funktionsdefinition und beim Funktionsaufruf, Trennung von Variablen bei der Variablendefinition/-deklaration, Trennung der enum Konstanten) muss der Ausdruck ergänzend geklammert werden, wenn der Komma-Operator gefordert ist * Der Komma-Operator hat von allen Operatoren die niedrigste Priorität/Rangfolge, so dass dieser Operator als letztes 'ausgewertet' wird Beispiel: <syntaxhighlight lang="C"> int a=(5,3); //5 wird verworfen, 3 dient als Rückgabewert, so dass //a den Wert 3 erhält. int b=5,3; //KO, da Komma Bestandteil der Definition ist int c=1,d=2,e=3; int f=(c+=2,a+a); //c um zwei erhöht, a+a in f int g= c+=2,a+a; //KO, da Komma Bestandteil der Defintion ist void func(int value){} func(1); //Funktion wird mit dem Wert 1 aufgerufen func(1,2); //KO, da Komma Bestandteil des Funktionsaufrufes ist func((1,2)); //Funktion wird mit dem Wert 2 aufgerufen int arr[12]; arr[3,4]=1; //3 wird verworfen, 4 dient als Index für das Array </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void func(int value){ printf("func called with %d\n",value); } int main(int argc, char *argv[]) { int a=(5,3); //5 wird verworfen, 3 dient als Rückgabewert, so dass //a den Wert 3 erhält. int b=5,3; //KO, da Komma Bestandteil der Definition ist printf("a=%d\n",a); int c=1,d=2,e=3; printf("c=%d,d=%d,e=%d\n",c,d,e); int f=(c+=2,a+a); //c um zwei erhöht, a+a in f printf("c=%d,f=%d\n",c,f); int g= c+=2,a+a; //KO, da Komma Bestandteil der Defintion ist func(1); //Funktion wird mit dem Wert 1 aufgerufen func(1,2); //KO, da Komma Bestandteil des Funktionsaufrufes ist func((1,2)); //Funktion wird mit dem Wert 2 aufgerufen int arr[12]; arr[3,4]=1; //3 wird verworfen, 4 dient als Index für das Array return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} 'Sinnvolle' Anwendungsbeispiele: * Bei For-Schleifen, so dass mehrere Variablen initialisiert und mehrere Variablen mit jedem Schleifendurchlauf geändert werden können: :<syntaxhighlight lang="C"> int sum,lauf; int arr[]={5,4,3,2,1}; for(sum=100,lauf=5 ; lauf ; lauf--,sum+=arr[lauf]); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int sum,lauf; int arr[]={5,4,3,2,1}; for(sum=100,lauf=5 ; lauf ; lauf--,sum+=arr[lauf]) printf("sum=%d lauf=%d\n",sum,lauf); printf("sum=%d\n",sum); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Bei der Return-Anweisung, bei welcher zur Darstellung der Zusammengehörigkeit mehrere Aktionen ausgeführt werden sollen: :<syntaxhighlight lang="C"> return errno=EINVAL,-1; return printf("Fehler"),-1; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <errno.h> int foo(void) { return errno=EINVAL,-1; } int far(void) { return printf("Fehler\n"),-1; } int main(int argc, char *argv[]) { printf("foo()=%d\n",foo()); printf("far()=%d\n",far()); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * An Stellen, wo nur eine Anweisung erlaubt ist (und man zu faul ist, einen Block zu öffnen) :<syntaxhighlight lang="C"> if(…) y=2,z=3; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int y=0,z=0; if(1) y=2,z=3; printf("y=%d z=%d\n",y,z); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * In vielen Ländern wird das Komma zur Darstellung von Gleitkommazahlen genutzt. Wird versehentlicher Weise dies in C/C++ übernommen, so führt dies zu einem unerwarteten Verhalten: :<syntaxhighlight lang="C"> double var; var=5.3; //Variable wird mit 5.3 initialisiert var=5,3; //KO, da Komma Bestandteil der Defintion ist var=(5,3); //Variable wird mit 3 initialisiert </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { double var; var=5.3; //Variable wird mit 5.3 initialisiert printf("var=%f\n",var); var=5,3; //KO, da Komma Bestandteil der Defintion ist var=(5,3); //Variable wird mit 3 initialisiert printf("var=%f\n",var); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === ?-Operator / Conditional-Operator === Operator mit 3 Operanden, welcher in Abhängigkeit des ersten Operanden den zweiten oder dritten Operanden zurückgibt. <code> Syntax: Logical-OR-expression ? expression : condition-expression </code> Entspricht der if()-Anweisung, wobei der ? Operator als solches einen Wert zurückgibt! Expression wird nur ausgewertet, wenn der erste Operand true ist. Andernfalls wird nur condition-expression ausgeführt. Der zurückgegebene Datentyp ergibt sich aus der Expression resp. Condition-expression. Beide sollten somit vom identischen Datentyp sein. Folgendes gilt es bei der Nutzung des ?-Operators zu beachten * Der Datentyp Expression und condition-Expression muss identisch sein <syntaxhighlight lang="C"> int a=5; a=a > 10 ? "String" : 4; //KO, "String" ist vom Datentyp (char*) und // 4 ist vom Datentyp (int). </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a=5; a=a > 10 ? "String" : 4; //KO, "String" ist vom Datentyp (char*) und // 4 ist vom Datentyp (int). return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Nach der GNU-C Reference kann der mittlere Operand fehlen, in diesem Fall wird stattdessen das Ergebnis des linken Operanden dort eingesetzt (siehe https://gcc.gnu.org/onlinedocs/gcc/Conditionals.html#Conditionals) <syntaxhighlight lang="C"> int a=13; int b=a>10 ? : 0; //wenn a > 10 wird true, andernfalls false zurückgegeben </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a=13; int b=a>10 ? : 0; //wenn a > 10 wird true, andernfalls false zurückgegeben printf("b=%d\n",b); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Sollen innerhalb von condition-expression mehrere (durch Komma getrennte) Anweisungen enthalten sein, so sind diese zu Klammern! Andernfalls bedingt die niedrige Priorität des Komma-Operators ein anders Verhalten, als erwartet. <syntaxhighlight lang="C"> int a=7,max=5; max=a>max ? a : max; //Alles bestens int var0,var1,var2; var0=a>5 ? a++,5:6,a=1; //das zweite Komma wird als separate Anweisung //ausgeführt und kommt somit immer zur //Ausführung var1=(a>5 ? a++,5:6),a=1; //durch Klammerung klare Abgrenzung var2= a>5 ? a++,5 : (6,a=1); //durch Klammerung klare Abgrenzung </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a=7; int max=5; max=a>max ? a : max; //Alles bestens printf("max=%d\n",max); int var0,var1,var2; var0=a>5 ? a++,5:6,a=1; //das zweite Komma wird als separate Anweisung //ausgeführt und kommt somit immer zur //Ausführung printf("var0=%d a=%d\n",var0,a); var1=(a>5 ? a++,5:6),a=1; //durch Klammerung klare Abgrenzung printf("var1=%d a=%d\n",var1,a); var2= a>5 ? a++,5 : (6,a=1); //durch Klammerung klare Abgrenzung printf("var2=%d a=%d\n",var2,a); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Die Nutzung des ?-Operators empfiehlt sich an diversen Stellen: * Bei Makros :<syntaxhighlight lang="C"> #define MAX(a,b) (a>b?a:b) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #define MAX(a,b) (a>b?a:b) int main(int argc, char *argv[]) { printf("MAX(4,5)=%d\n",MAX(4,5)); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Beim Fehlerhandling :<syntaxhighlight lang="C"> char *str=strstr("hallo123","lox"); //Ausgabe von str nur, wenn Suche erfolgreich (str!=NULL) war printf("%s",str!=NULL?str : "(not found)" ); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char *str=strstr("hallo123","lox"); //Ausgabe von str nur, wenn Suche erfolgreich (str!=NULL) war printf("%s",str!=NULL?str : "(not found)" ); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Prüfen, ob eine Funktion erfolgreich ausgeführt wurde, bevor eine weitere Funktion ausgeführt wird <syntaxhighlight lang="C"> int ret; ret=init1(); //im Fehlerfreien gibt init1() 0 zurück ret=ret?:init2(); //Aufruf von init2() nur wenn ret==0 ist //andernfalls wird ret zurückgegeben </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int init1(void) { printf("init1() called\n"); return 0; } int init2(void) { printf("init2() called\n"); return 0; } int main(int argc, char *argv[]) { int ret; ret=init1(); //im Fehlerfreien gibt init1() 0 zurück ret=ret?:init2(); //Aufruf von init2() nur wenn Ret==0 ist //andernfalls wird Ret zurückgegeben return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Logische Verknüpfungen === Alle logischen Operationen nutzen als Operanden Ganzzahlen ,Gleitkommazahlen oder Zeiger. Der Operand wird als false angesehen, wenn der Operand 0, 0.0 oder NULL ist. Andernfalls als true. Das Ergebnis ist immer vom Datentyp int und hat den Wert von 0 oder 1. <code>Syntax: Expression && Expression</code><br /> <code>Syntax: Expression || Expression</code><br /> <code>Syntax: ! Expression</code><br/> Bei der logischen UND und ODER Verknüpfung wird zuerst der linke Ausdruck ausgewertet (Operator ist ein Sequence Point). Der rechte Ausdruck wird nur ausgeführt, wenn: * bei der logischen UND Verknüpfung der linke Ausdruck TRUE ergab * bei der logische OR Verknüpfung der linke Ausdruck FALSE ergab Andernfalls steht das Ergebnis schon mit der Auswertung des linken Operanden fest.<br /> In der theoretischen Informatik wird dies 'Non-strict-evaluation' genannt, bei welcher der Rückgabewert feststeht, bevor alle Ausdrücke bearbeitet worden sind. Beispiel für das Verhalten des Ausbleibens der Auswertung des zweiten Operators: <syntaxhighlight lang="C"> int a=0,b=0; //a=-1; //Als alternativer Startwert if(++a || ++a) b=1; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=0,b=0; //a=-1; //Als alternativer Startwert if(++a {{!}}{{!}} ++a) b=1; printf("a=%d b=%d\n",a,b); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Diese Funktionalität ist insbesondere beim Umgang mit Fehlern vorteilhaft: * Prüfen, ob eine Variable einen gültigen Wert hat, bevor sie weiterverwendet wird <syntaxhighlight lang="C"> char *str = strstr("hallo123","la"); if(str!=NULL && strlen(str) ) printf("Len = %ld",strlen(str)); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char *str = strstr("hallo123","la"); if(str!=NULL && strlen(str) ) printf("Len = %ld",strlen(str)); else printf("Kein Substring im String gefunden\n"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Prüfen, ob eine Funktion erfolgreich ausgeführt wurde, bevor eine weitere Funktion aufgerufen wird: <syntaxhighlight lang="C"> int ret; ret=init1(); //Bei erfolgreicher Initialisierung wird 1 zurückgegeben ret=ret && init2(); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int init1(void) { printf("init1() called\n"); return 1; } int init2(void) { printf("init1() called\n"); return 1; } int main(int argc, char *argv[]) { int ret; ret=init1(); //Bei erfolgreicher Initialisierung wird 1 zurückgegeben ret=ret && init2(); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Bitweise Verknüpfungen === Alle bitweisen Operationen nutzen als Operanden Ganzzahlen. Bei vorzeichenbehafteten Zahlen ist das Ergebnis nach [C11 6.5] Implementierungsabhängig, wobei das Vorzeichenbit zumeist als eigenständiges Bit angesehen wird und bei UND/ODER/EXOR als normales BIT betrachtet wird. <code>Syntax: Ganzzahl & Ganzzahl → Bitweise UND Operation</code><br /> <code>Syntax: Ganzzahl | Ganzzahl → Bitweise ODER Operation</code><br /> <code>Syntax: Ganzzahl ^ Ganzzahl → Bitweise EXOR Operation</code><br /> <code>Syntax: ~ Ganzzahl → Bitweise Negierung</code><br /> <code>Syntax: Ganzzahl >> additive-expression</code><br /> <code>Syntax: Ganzzahl << additive-expression</code><br /> Mittels des Schiebeoperators können Ganzzahlen um additive-expression bitweise nach Links <code><<</code> oder Rechts <code>>></code> verschoben werden. Der resultierende Datentyp ergibt sich aus dem linken Operanden. Der rechte Operand muss positiv und kleiner gleich der Bitbreite des linken Operanden sein. Andernfalls ist das Ergebnis implementierungsspezifisch. Nach [C11 6.5.7] ist das Ergebnis der Schiebeoperation implementierungsspezifisch, wenn der linke Operand eine negative vorzeichenbehaftete Zahl ist. In der Regel wendet der Compiler jedoch folgende Schiebeoperation an: * Logisches Schieben (zu füllende Bit-Stellen werden mit 0 aufgefüllt), wenn der linke Operand eine vorzeichenlose Zahl ist * Arithmetisches Schieben (zu füllende Bit-Stelle beim Rechtsschieben wird mit dem Vorzeichenbit aufgefüllt), wenn der linke Operand eine vorzeichenbehaftete Zahl ist. Hiermit wird das Vorzeichen beibehalten, so dass eine negative Zahl nach dem Schieben weiterhin negativ ist (In Java erfolgt dies durch den >>> - Operator) Hinweis: * Ein Schieben um eine Stelle nach rechts entspricht einer Division durch 2 * Ein Schieben um eine Stelle nach links entspricht einer Multiplikation mit 2 === sizeof-Operator === Der sizeof-Operator dient zur Ermittlung des Speicherbedarfs (in Bytes) einer Variablen/eines Datentyps. <code>Syntax: sizeof (type-name)</code><br /> <code>Syntax: sizeof unary-expression</code><br /> Als Argument für den Sizeof-Operator kann wahlweise ein Datentyp, eine Variable oder ein Ausdruck genutzt werden. Sizeof gilt als Konstantenausdruck, d.h. seine Berechnung erfolgt durch den Compiler, sodass: * sizeof zur Initialisierung von globalen Variablen genutzt werden :<syntaxhighlight lang="C"> struct xyz{int x,y,z;}; size_t size=sizeof(struct xyz); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct xyz{int x,y,z;}; size_t size=sizeof(struct xyz); //3*sizeof(int)=12 int main(int argc, char *argv[]) { printf("size=%zu\n",size); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * bei einem Ausdruck dieser nicht ausgeführt wird, sondern nur der resultierende Datentyp bestimmt wird und dessen Größe zurückgegeben :<syntaxhighlight lang="C"> short var=4711; size_t size=sizeof var++; //var=4711, size=2 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { short var=4711; size_t size=sizeof var++; //var=4711, size=2 printf("size=%zu var=%d\n",size,var); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Der resultierende Datentyp des Rückgabewertes ist size_t. Es empfiehlt sich, den sizeof-Operator mit Klammern zu nutzen, andernfalls wird im Falle eines Ausdruckes der Speicherbedarf des linken Operanden angegeben: <syntaxhighlight lang="C"> size_t size; short var; size=sizeof var+0; //size=2, da sizeof auf var angewendet wird size=sizeof(var+0); //size=4, da sizoeof auf den resultierenden datentyp //angewendet wird </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { size_t size; short var=0; size=sizeof var+0; //size=2, da sizeof auf var angewendet wird printf("size=%zu var=%d\n",size,var); size=sizeof(var+0); //size=4, da sizoeof auf den resultierenden datentyp //angewendet wird printf("size=%zu var=%d\n",size,var); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * sizeof angewendet auf char gibt immer den Wert 1 zurück. * sizeof ist nicht auf Operanden vom Typ Funktion, void, Felder ohne Größenangabe und Bitfelder anwendbar * wird sizeof auf ein VLA angewendet, so entspricht sizeof nicht mehr einen Konstantenausdruck, sondern einem Funktionsaufruf :<syntaxhighlight lang="C"> void foo(int n) { int arr[n]; size_t size=sizeof(arr); //Speicherbedarf ist kein Konstantenausdruck //sondern wird zur Laufzeit berechnet </syntaxhighlight> * Sizeof entspricht nicht strlen(), da sizeof den für die Variable reservierten Speicherbereich zurückgibt und nicht wie strlen() den Inhalt des Speicher hinsichtlich des Stringendezeichens auswertet. :<syntaxhighlight lang="C"> char string[100]="Test"; printf("%zu\n",sizeof(string)); //100 printf("%zu\n",strlen(string)); //4 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char string[100]="Test"; printf("%zu\n",sizeof(string)); //100 printf("%zu\n",strlen(string)); //4 return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Anweisungen == === If-Anweisung === <code>Syntax: if (expression) statement</code><br /> <code>Syntax: if (expression) statement else statement</code><br /> Das Ergebnis des Ausdruckes (Ganzzahl, Gleitkommazahl oder Zeiger) wird auf ungleich 0, 0.0 oder NULL getestet. Trifft dies zu, so wird statement ausgeführt. Andernfalls wird das else statement ausgeführt, sofern vorhanden. Sollen mehrere Anweisungen ausgeführt werden, so sind diese mittels Block zusammenzufassen (diesen dann bitte nicht mit ; abschließen). Beispiel: <syntaxhighlight lang="C"> if(a==1) if(a=1) //Erst Zuweisung, dann prüfen der Rückgabe der Zuweisung if(a) //entspricht a!=0 if(printf("hallo")<0) //prüfen, ob printf() fehlschlägt if( ({int dummy=a;a=b;b=dummy;})==6) if(a=7) //Zuweisung! if(7=a) //KO, Eine Konstante kann kein L-Value sein if(7==a) {printf("a ist 7");}; //Semikolon hinter Blocksope ist eine zweite else //Anweisung, so dass die ELSE Anweisung nicht {printf("Compilerfehler");};//zur IF-Anwesigung zugeordnet werden kann. </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=1,b=2; if(a==1) printf("a==1\n"); if(a=1) //Erst Zuweisung, dann prüfen der Rückgabe der Zuweisung printf("a=1\n"); if(a) //entspricht a!=0 printf("a\n"); if(printf("hallo\n")<0) //prüfen, ob printf() fehlschlägt printf("printf()\n"); if( ({int dummy=a;a=b;b=dummy;})==6) printf("({...})\n"); if(a=7) //Zuweisung! printf("a=7\n"); if(7=a) //KO, Eine Konstante kann kein L-Value sein ; if(7==a) {printf("a ist 7");}; //Semikolon hinter Blocksope ist eine zweite else //Anweisung, so dass die ELSE Anweisung nicht {printf("Compilerfehler");};//zur IF-Anwesigung zugeordnet werden kann. return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Bei der Anweisung <code>if(a==7)</code> finden aus syntaktischer Sicht zwei Aktionen statt. Zunächst wird geprüft, ob a gleich 7 ist. Dieser Vergleich liefert true(=1) oder false(=0) zurück. Die If-Anweisung prüft im Anschluss, ob das Argument true oder false ist. === For-Anweisung === <code>Syntax: for(Initialisierungsteil<sub>OPT</sub> ; Test<sub>OPT</sub> ; Fortsetzung<sub>OPT</sub>) Statement</code> Die For-Anweisung wird vom Compiler wie folgt umgesetzt: <poem> '''Initialisierungsteil'''<sub>OPT</sub> Goto Next Goon: //Continue-Anweisung entspricht goto Continue //Break-Anweisung entspricht goto Break; '''Statement''' Continue: '''Fortsetzung'''<sub>OPT</sub> Next: if('''Test'''<sub>OPT</sub>) goto Goon Break: </poem> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> int main(int argc, char *argv[]) { int lauf; int summe; for(summe=lauf=0;lauf<20;lauf++) summe+=lauf; printf("summe=%d\n",summe); //Initialisierungsteil summe=lauf=0; goto Next; Goon: //Continue-Anweisung entspricht goto Continue //Break-Anweisung entspricht goto Break; //Statement summe+=lauf; Continue: __attribute__((unused)) //Fortsetzung lauf++; Next: //if(TestOPT) goto Goon if(lauf<20) goto Goon; Break: __attribute__((unused)) printf("summe=%d\n",summe); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Die einzelne Elemente haben folgende Bedeutung/Besonderheiten: ;Initialisierungsteil: Zum Initialisieren von Schleifenvariablen, wird einmalig mit Beginn der FOR-Anweisung ausgeführt. :* kann Leer sein, dann erfolgt keine Initialisierung :* Ab C99: Hier kann eine lokale Variable definiert werden, welche nur innerhalb dieser For-Anweisung gültig ist ;Testteil: Hierin wird vor jedem Schleifendurchlauf geprüft, ob die Schleifenbedingung erfüllt ist. Wenn Bedingung nicht erfüllt ist (Ganzzahl, Gleitkommazahl oder Zeiger gleich 0,0.0 oder NULL), wird die For-Schleife beendet. :* Kann leer sein, dann wird dieser Teil als true angesehen ;Fortsetzungsteil: Wird nach jeden Schleifendurchlauf ausgeführt. In der Regel sollte hier die Schleifenvariable aktualisiert werden :* Kann leer sein ;Statement: In der Schleife auszuführender Ausdruck :* Sollen mehrere Ausdrücke ausgeführt werden, so sind diese in einem Block zusammen zu fassen. :Ergänzende Anweisungen innerhalb des Statements/Block :* 'continue' zum Fortsetzen des Schleifendurchlaufes, d.h. Sprung zum Fortsetzungs-Teil :* 'break', zum Beenden des Schleifendurchlaufes Beispiele: * For-Schleife mit lokaler Schleifenvariable :<syntaxhighlight lang="C"> char string[]="hallo"; for(size_t lauf=0; lauf < strlen(string); lauf++) //Schleife ist Suboptimal, da in jedem Durchlauf die Funktion //strlen() aufgerufen wird! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <time.h> struct timespec diff_timespec(const struct timespec *minuend, const struct timespec *subtrahend ) { struct timespec diff = { .tv_sec = minuend->tv_sec - subtrahend->tv_sec, .tv_nsec = minuend->tv_nsec - subtrahend->tv_nsec}; //Sekundenüberlauf? if (diff.tv_nsec < 0) { diff.tv_nsec += 1000000000; diff.tv_sec--; } return diff; } int main(int argc, char *argv[]) { char string1[10000]; char string2[10000]; memset(string1,'a',sizeof(string1)); memset(string2,'a',sizeof(string2)); string1[sizeof(string1)-1]=0; string2[sizeof(string2)-1]=0; struct timespec start1,stop1; struct timespec start2,stop2; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start1); size_t sum1=0; for(size_t lauf=0; lauf < strlen(string1); lauf++) sum1++; //Schleife ist Suboptimal, da in jedem Durchlauf die Funktion //strlen() aufgerufen wird! clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop1); clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start2); size_t sum2=0; size_t count2=strlen(string2); for(size_t lauf=0; lauf < count2; lauf++) sum2++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop2); stop1=diff_timespec(&stop1,&start1); stop2=diff_timespec(&stop2,&start2); printf("Slow: Sum1=%zu Time=%lds %ldns\n",sum1,stop1.tv_sec,stop1.tv_nsec); printf("Fast: Sum2=%zu Time=%lds %ldns\n",sum2,stop2.tv_sec,stop2.tv_nsec); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Schleife mit Break-Anweisung :<syntaxhighlight lang="C"> char dest[5]; char src[10]="HalloWelt"; for(size_t lauf=0; src[lauf]!=0; lauf++) { if(lauf >= sizeof(dest)) break; dest[lauf]=src[lauf]; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char dest[5]; char src[10]="HalloWelt"; for(size_t lauf=0; src[lauf]!=0; lauf++) { printf("lauf=%zu\n",lauf); if(lauf >= sizeof(dest)) break; dest[lauf]=src[lauf]; } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Schleife, bei welcher die gesamte Aktion innerhalb der For-Anweisung ausgeführt wird :<syntaxhighlight lang="C"> char dest[5]; char src[10]="HalloWelt"; for(size_t l=0; src[l]!=0 && l <sizeof(dest); printf("l=%zu\n",l),dest[l]=src[l],l++); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char dest[5]; char src[10]="HalloWelt"; for(size_t l=0;src[l]!=0 && l <sizeof(dest); printf("l=%zu\n",l),dest[l]=src[l],l++); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Schleifenvariable muss keine Zählvariable sein :<syntaxhighlight lang="C"> int zahl=0b100010; int bits=0; for(int mask=0b10000000; mask!=0; mask>>=1 ) bits+= zahl & mask ? 1 : 0; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int zahl=0b100010; int bits=0; for(int mask=0b10000000; mask!=0; mask>>=1 ) bits+= zahl & mask ? 1 : 0; printf("Anzahl Einsen in %b = %d\n",zahl,bits); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Zeiger als Schleifenvariable :<syntaxhighlight lang="C"> char src[]="hallo"; char dst[strlen(src)+1]; char *s,*d; for(s=src,d=dst; *s; ) *d++=*s++; *d=0; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char src[]="hallo"; char dst[strlen(src)+1]; char *s,*d; for(s=src,d=dst; *s; ) *d++=*s++; *d=0; printf("src='%s' dst='%s'\n",src,dst); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Zur Geschwindigkeitsoptimierung sollten im Test- und Fortsetzungsteil keine Funktionsaufrufe mit Werten enthalten sein, die sich innerhalb der Schleife nicht ändern: :<syntaxhighlight lang="C"> for(size_t lauf=0;lauf<strlen("hallo");lauf++) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <time.h> struct timespec diff_timespec(const struct timespec *minuend, const struct timespec *subtrahend ) { struct timespec diff = { .tv_sec = minuend->tv_sec - subtrahend->tv_sec, .tv_nsec = minuend->tv_nsec - subtrahend->tv_nsec}; //Sekundenüberlauf? if (diff.tv_nsec < 0) { diff.tv_nsec += 1000000000; diff.tv_sec--; } return diff; } int main(int argc, char *argv[]) { char string1[10000]; char string2[10000]; memset(string1,'a',sizeof(string1)); memset(string2,'a',sizeof(string2)); string1[sizeof(string1)-1]=0; string2[sizeof(string2)-1]=0; struct timespec start1,stop1; struct timespec start2,stop2; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start1); size_t sum1=0; for(size_t lauf=0; lauf < strlen(string1); lauf++) sum1++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop1); clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start2); size_t sum2=0; size_t count2=strlen(string2); for(size_t lauf=0; lauf < count2; lauf++) sum2++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop2); stop1=diff_timespec(&stop1,&start1); stop2=diff_timespec(&stop2,&start2); printf("Slow: Sum1=%zu Time=%lds %ldns\n",sum1,stop1.tv_sec,stop1.tv_nsec); printf("Fast: Sum2=%zu Time=%lds %ldns\n",sum2,stop2.tv_sec,stop2.tv_nsec); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Zur Geschwindigkeitssteigerung sollte im Testteil auf 0 abgefragt werden, d.h. die Schleifenvariable dekrementiert werden :<syntaxhighlight lang="C"> for(int lauf=700000;lauf;lauf--) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <time.h> struct timespec diff_timespec(const struct timespec *minuend, const struct timespec *subtrahend ) { struct timespec diff = { .tv_sec = minuend->tv_sec - subtrahend->tv_sec, .tv_nsec = minuend->tv_nsec - subtrahend->tv_nsec}; //Sekundenüberlauf? if (diff.tv_nsec < 0) { diff.tv_nsec += 1000000000; diff.tv_sec--; } return diff; } int main(int argc, char *argv[]) { char string1[10000]; char string2[10000]; memset(string1,'a',sizeof(string1)); memset(string2,'a',sizeof(string2)); string1[sizeof(string1)-1]=0; string2[sizeof(string2)-1]=0; struct timespec start1,stop1; struct timespec start2,stop2; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start1); size_t sum1=0; for(ssize_t lauf=700000000;lauf;lauf--) sum1++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop1); clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start2); size_t sum2=0; for(ssize_t lauf=0;lauf<700000000;lauf++) sum2++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop2); stop1=diff_timespec(&stop1,&start1); stop2=diff_timespec(&stop2,&start2); printf("Slow: Sum1=%zu Time=%lds %ldns\n",sum1,stop1.tv_sec,stop1.tv_nsec); printf("Fast: Sum2=%zu Time=%lds %ldns\n",sum2,stop2.tv_sec,stop2.tv_nsec); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Alternativ zu einer Laufvariablen empfiehlt sich die Nutzung von Pointer als Schleifenvariable; :<syntaxhighlight lang="C"> for(char *ptr=str; *ptr; ptr++); </syntaxhighlight> === While-Anweisung === <code>Syntax: while(expression) Statement </code><br /> <code>Syntax: do Statement while(expression);</code><br /> Die While-Anweisungen werden vom Compiler wie folgt umgesetzt: {| class="wikitable" ! while()-Anweisung !! do while()-Anweisung |- | <poem> Continue: if(!'''expression''') goto Break //Break-Anweisung entspricht // goto Break; //Continue-Anweisung entspr. // goto Continue; '''Statement''' goto Continue Break: </poem> || <poem> GoOn: //Break-Anweisung entspr. // goto Break //Continue-Anweisung ent. // goto Continue '''Statement''' Continue: if('''expression''') goto GoOn Break: </poem> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> int main(int argc, char *argv[]) { int lauf; int summe; lauf=summe=0; while(lauf<10) { if(lauf>=5) break; lauf++; if(lauf<3) continue; summe+=lauf; } printf("summe=%d\n",summe); lauf=summe=0; Continue1: if(!(lauf<10)) goto Break1; //Break-Anweisung entspricht // goto Break; //Continue-Anweisung entspr. // goto Continue; //Statement if(lauf>=5) { goto Break1; } lauf++; if(lauf<3) goto Continue1; summe+=lauf; goto Continue1; Break1: printf("summe=%d\n",summe); lauf=summe=0; do { lauf++; if(lauf>5) break; if(lauf<3) continue; summe+=lauf; } while(lauf<10); printf("summe=%d\n",summe); lauf=summe=0; GoOn2: //Break-Anweisung entspr. // goto Break //Continue-Anweisung ent. // goto Continue //Statement lauf++; if(lauf>5) goto Break2; if(lauf<3) goto Continue2; summe+=lauf; Continue2: if(lauf<10) goto GoOn2; Break2: __attribute__((unused)); printf("summe=%d\n",summe); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Folgendes gilt es bei der Nutzung der While-Anweisung zu beachten: * Soll mehr als ein Statement innerhalb der While-Schleife ausgeführt werden, so sind diese in einem Block zu schreiben * Statement kann eine Leeranweisung (gekennzeichnet durch ein Semikolon) sein :<syntaxhighlight lang="C"> while(1); do ; while(1); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int lauf1=1000; while(lauf1--); int lauf2=1000; do ; while(lauf2--); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Bei der do-While-Schleife ist das abschließende Semikolon Bestandteil des Befehls * expression muss eine Ganzzahl, Gleitkommazahl oder Zeiger zurückgeben, der bei False (0, 0.0 oder NULL) die Schleife beendet. Beispiele: * Endlosschleife :<syntaxhighlight lang="C"> while(1) {} </syntaxhighlight> * Schleife zum Durchlaufen eines String :<syntaxhighlight lang="C"> char str[]="string"; char *ptr=str; while(*ptr++); size_t len=ptr-str-1; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char str[]="string"; char *ptr=str; while(*ptr++); size_t len=ptr-str-1; printf("Stringlänge=%zu\n",len); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Switch-Anweisung === <code>Syntax: switch(expression) statement</code><br /> <code>Syntax: statement:= case constant-expression: statement<sub>opt</sub> default: statement<sub>opt</sub></code><br /> Die Switch-Anweisung entspricht einer verschachtelten If-Anweisung, mit der Besonderheit, dass der auszuführende Code nicht im If-Zweig stattfindet, sondern dort ein goto zum eigentlichen Code enthalten ist: {| class="wikitable" ! Switch-Anweisung !! Compilerumsetzung |- |<syntaxhighlight lang="C"> switch(a) { case 1: int a=7; //Code break; case 2: printf("%d",a); case 3: { int a; //Code } case 4 ... 8: default: //Code } </syntaxhighlight> ||<poem> if(a==1) goto label1; else if(a==2) goto label2; else goto label_default; //------------------- label1: //Code goto label_break; label2: //Code label_default: goto label_break; label_break: </poem> |} Folgendes gilt es bei der Nutzung der Switch-Anweisung zu beachten: * <code>Expression</code> muss zu einer Ganzzahl (int, short, char, long, long long) oder enum (entspricht einer Ganzzahl) ausgewertet werden * <code>constant-expression</code> muss eine Ganzzahl-Konstante oder ein Enumelement sein. Sie darf nicht doppelt im Block vorkommen. Der genaue Datentyp ergibt sich aus dem Datentyp der <code>expression</code> * Lt. Spezifikation ist ein nur <code>statement</code> hinter der switch-Anweisung erlaubt, so dass nur ein <code>case</code> Fall oder der <code>default</code> Fall bedient werden kann::<syntaxhighlight lang="C"> int var=1; switch(var) case 1: printf("hallo"); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int var=1; switch(var) case 1: printf("hallo"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Die geschweifte Klammer der <code>switch</code>-Anweisung erzeugt einen Block, so dass a) hier mehrere <code>case</code>-Fälle und b) hierin definierte Variablen innerhalb des gesamten Blocks zur Verfügung stehen (sind somit nicht <code>case</code> abhängig). Die <code>case</code> Anweisung ist nichts anderes als eine Sprungmarken (welche durch die switch-Anweisung angesprungen wird) so dass der Initialisierungsteil der lokalen Variablen übersprungen / nicht ausgeführt werden kann: :<syntaxhighlight lang="C"> switch(a) { int a=3; //Variable in gesamten Block gültig case 1: int b=3; //Variabe in gesamten Block gültig printf("%d %d",a,b); //a undefiniert, b=3 break; case 2: printf("%d %d",a,b); //a und b undefiniert break; case 3: { //Block, so dass Variable int a=4711; //nur in diesem CASE gültig ist break; } } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=1; switch(a) { int a=3; //Variable in gesamten Block gültig case 1: int b=3; //Variabe in gesamten Block gültig printf("a=%d b=%d",a,b); //a undefiniert, b=3 break; case 2: printf("%d %d",a,b); //a und b undefiniert break; case 3: { //Block, so dass Variable int a=4711; //nur in diesem CASE gültig ist (void)a; break; } } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * GNU-C (siehe [https://www.gnu.org/software/c-intro-and-ref/manual/html_node/switch-Statement.html Switch-Statement]) erlaubt ergänzend zur Angabe einer Konstante die Angabe eines Wertebereiches: :<syntaxhighlight lang="C"> switch(a) { case 1 ... 8: //Leerzeichen zwischen den Konstanten zwingend notwendig //andernfalls wird der Punkt zur Konstante zugehörig //interpretiert (erzeugt dann eine Gleitpunktkonstante) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=2; switch(a) { case 1 ... 8: //Leerzeichen zwischen den Konstanten zwingend notwendig //andernfalls wird der Punkt zur Konstante zugehörig //interpretiert (erzeugt dann eine Gleitpunktkonstante) printf("a im Bereich von 1 bis 8\n"); break; } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * <code>break</code> ist optional. Mittels <code>break</code> wird an das Ende der Switch-Anweisung gesprungen. Wenn <code>break</code> weggelassen wird, wird die nachfolgende Anweisungen ausgeführt. Ggf. gibt der Compiler eine Warning aus. Mittels der GCC-Compiler-Anweisung __attribute__((fallthrough)); kann diese Warning unterdrückt werden: :<syntaxhighlight lang="C"> switch(a) { case 0: //ggf. Compiler-Warning __attribute__((fallthrough)); case 1: case 2: break; } </syntaxhighlight> * Ein Variable Length Array ist als Variable im Switch-Block direkt nicht erlaubt. Ist dies notwendig, so ist das VLA in einem inneren Block zu kapseln: :<syntaxhighlight lang="C"> switch(var) { case 1: int arr[var]; //KO break; case 2: { int arr[var]; //OK } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int var=1; switch(var) { case 1: int arr[var]; //KO break; case 2: { int arr[var]; //OK } } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Case - Anweisungen sind nichts anderes als Sprungmarken (Labels), so dass CASE-Anweisungen überall innerhalb des Switch-Blockes stehen können: :<syntaxhighlight lang="C"> int prime(int value) {return value+1;} void hallo(int var) { switch(var) { default: if(prime(var)) case 2: case 4: printf("%d",var); else { case 3: case 6: printf("%x",var); } case 7: printf("xyz"); } } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int prime(int value) { return value+1; } int main(int argc, char *argv[]) { int var=1; switch(var) { default: if(prime(var)) case 2: case 4: printf("%d",var); else { case 3: case 6: printf("%x",var); } case 7: printf("xyz"); } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} :oder anderen Anweisungen innerhalb des Switch-Blockes enthalten sein können: :<syntaxhighlight lang="C"> void send(register char *dst, register char *src, register size_t count) { register char unsigned n=(count+7)/8; switch(count%8) { case 0: do{ *dst = *src++; case 7: *dst = *src++; case 6: *dst = *src++; case 5: *dst = *src++; case 4: *dst = *src++; case 3: *dst = *src++; case 2: *dst = *src++; case 1: *dst = *src++; }while(--n>0); } } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <stdint.h> //fuer uintptr_t void send(register char *dst, register char *src, register size_t count) { register char unsigned n=(count+7)/8; switch(count%8) { case 0: do{ *dst = *src++; printf("%02hhx ",*dst); case 7: *dst = *src++; printf("%02hhx ",*dst); case 6: *dst = *src++; printf("%02hhx ",*dst); case 5: *dst = *src++; printf("%02hhx ",*dst); case 4: *dst = *src++; printf("%02hhx ",*dst); case 3: *dst = *src++; printf("%02hhx ",*dst); case 2: *dst = *src++; printf("%02hhx ",*dst); case 1: *dst = *src++; printf("%02hhx ",*dst); }while(--n>0); } } int main(int argc, char *argv[]) { char src[20]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}; char dst; send(&dst,src,20); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Eine Switch-Case Anweisung über Strings sind in C/C++ nicht möglich: :<syntaxhighlight lang="C"> switch(str) { case "hallo": return 1; case "du da": return 2; case "xyz": return 3; default: rReturn -1; } </syntaxhighlight> :Ein direkte Lösungsansatz ist die Nutzung von strcmp() zum Vergleichen von String. Da strcmp zeichenweise den String vergleicht, ist dieser Ansatz langsam. Alternativ bietet sich an, von allen String einen Hash-Wert zu berechnen und zunächst diesen Hash-Wert zu kontrollieren. Da der Hash-Wert nicht eindeutig ist, muss ergänzend ein strcmp() erfolgen: :<syntaxhighlight lang="C"> char *str="hallo"; switch(HASH_LAUFZEIT(str)) { case HASH_COMPILEZEIT('d','u'): if(!strcmp(str,"du")) printf("Case \"du\":\n"); break; case HASH_COMPILEZEIT('h','a','l','l','o'): if(!strcmp(str,"hallo")) printf("Case \"hallo\"\n"); else if(!strcmp(str,"xyz")) printf("String='xyz'\n"); break; default: return -1; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <stdint.h> //Lösungsansatz von: https://stackoverflow.com/questions/2826559/compile-time-preprocessor-hashing-of-string #define H1(s,i,x) (x*65599u+(uint8_t)s[(i)<strlen(s)?strlen(s)-1-(i):strlen(s)]) #define H4(s,i,x) H1(s,i,H1(s,i+1,H1(s,i+2,H1(s,i+3,x)))) #define H16(s,i,x) H4(s,i,H4(s,i+4,H4(s,i+8,H4(s,i+12,x)))) #define H64(s,i,x) H16(s,i,H16(s,i+16,H16(s,i+32,H16(s,i+48,x)))) #define H256(s,i,x) H64(s,i,H64(s,i+64,H64(s,i+128,H64(s,i+192,x)))) #define HASH(s) ((uint32_t)(H256(s,0,0)^(H256(s,0,0)>>16))) #define HASH_LAUFZEIT(s) (H256(s,0,0)) //Eigener Lösungsatz zur Umsetzung des vorherigen HASH-Algorithmus //so dass dieser zur Compilezeit berechnet werden kann //Was fehlt ist die abschließende EXOR berechnung! //Problem war, dass die Array-Dereferenzierung nicht zur Compilezeit //aufelöst werden kann #define HH0(a,x) (x*65599u+a) #define HH1(a) HH0(a,HH0(0,HH0(0,HH0(0,0)))) #define HH2(a,b) HH0(b,HH0(a,HH0(0,HH0(0,0)))) #define HH3(a,b,c) HH0(c,HH0(b,HH0(a,HH0(0,0)))) #define HH4(a,b,c,d) HH0(d,HH0(c,HH0(b,HH0(a,0)))) #define HH4x(a,b,c,d,x) HH0(d,HH0(c,HH0(b,HH0(a,x)))) #define HH5(a,b,c,d,e) HH4x(b,c,d,e,HH4x(0,0,0,a,0)) #define HH6(a,b,c,d,e,f) HH4x(c,d,e,f,HH4x(0,0,a,b,0)) #define HH7(a,b,c,d,e,f,g) HH4x(d,e,f,g,HH4x(0,a,b,c,0)) #define HH8(a,b,c,d,e,f,g,h) HH4x(e,f,g,h,HH4x(a,b,c,d,0)) #define HH9(a,b,c,d,e,f,g,h,i) HH4x(f,g,h,i,HH4x(b,c,d,e,HH4x(0,0,0,a,0))) #define HH10(a,b,c,d,e,f,g,h,i,j) HH4x(g,h,i,j,HH4x(c,d,e,f,HH4x(0,0,a,b,0))) #define HH11(a,b,c,d,e,f,g,h,i,j,k) HH4x(h,i,j,k,HH4x(d,e,f,g,HH4x(0,a,b,c,0))) #define HH12(a,b,c,d,e,f,g,h,i,j,k,l) HH4x(i,j,k,l,HH4x(e,f,g,h,HH4x(a,b,c,d,0))) #define HH13(a,b,c,d,e,f,g,h,i,j,k,l,m) HH4x(j,k,l,m,HH4x(f,g,h,i,HH4x(b,c,d,e,HH4x(0,0,0,a,0)))) #define HH14(a,b,c,d,e,f,g,h,i,j,k,l,m,n) HH4x(k,l,m,n,HH4x(g,h,i,j,HH4x(c,d,e,f,HH4x(0,0,a,b,0)))) #define HH15(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) HH4x(l,m,n,o,HH4x(h,i,j,k,HH4x(d,e,f,g,HH4x(0,a,b,c,0)))) #define HH16(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) HH4x(m,n,o,p,HH4x(i,j,k,l,HH4x(e,f,g,h,HH4x(a,b,c,d,0)))) #define EIGHTEENTH_ARGUMENT(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, \ a11,a12,a13,a14,a15,a16,a17,a18, ...) a18 #define CONCAT(c,d) c ## d #define CONCATI(a,b) CONCAT(a,b) #define HASH_COMPILEZEIT(...) CONCATI(HH , EIGHTEENTH_ARGUMENT(dummy, ## __VA_ARGS__, \ 16,15,14,13,12,11,10,9, 8, 7, 6, 5, 4, 3, 2, 1, 0))(__VA_ARGS__) //Lösungsansatz basierend auf: https://renenyffenegger.ch/notes/development/languages/C-C-plus-plus/preprocessor/macros/__VA_ARGS__/count-arguments #define COUNT_ARGUMENTS(...) EIGHTEENTH_ARGUMENT(dummy, ## __VA_ARGS__, \ 16,15,14,13,12,11,10,9, 8, 7, 6, 5, 4, 3, 2, 1, 0) int main(int argc, char *argv[]) { char *str="hallo"; switch(HASH_LAUFZEIT(str)) { case HASH_COMPILEZEIT('d','u'): if(!strcmp(str,"du")) printf("Case \"du\":\n"); break; case HASH_COMPILEZEIT('h','a','l','l','o'): if(!strcmp(str,"hallo")) printf("Case \"hallo\"\n"); else if(!strcmp(str,"xyz")) printf("String='xyz'\n"); break; default: return -1; } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} :Siehe:[https://benhoyt.com/writings/hash-table-in-c/ Hash Table in C] == Label + Goto == === Label === <code>Syntax: name:</code><br /> Labels dienen zur Kennzeichnung einer Anweisung, so dass die Programmausführung an dieser Stelle fortgesetzt, resp. mit einer GOTO-Anweisung angesprungen werden kann. Ein Label ist durch den folgenden Doppelpunkt gekennzeichnet. Dem Label muss eine Anweisung folgen, welches auch eine Leeranweisung (Semikolon) sein kann. Folgendes gilt es bei der Nutzung von Labels zu beachten: * Ein Label entspricht der Speicheradresse des der Label-Anweisung folgenden Anweisung * Bei nicht genutzten Labels (mit goto nicht angesprungene Labels) gibt der Compiler eine Warning aus. Diese kann beim GCC-Compiler mit __attribute__((unused)) unterdrückt werden * die Case- und die Default-Anweisung aus der Switch-Anweisung entspricht einem Label <br /> Labels hat eine funktionsweite Sichtbarkeit (siehe Kap [[#Gültigkeit/Sichtbarkeit von Variablen| Gültigkeit/Sichtbarkeit von Variablen]]). Dies bedeutet, dass das: * Labels nur innerhalb einer Funktion gültig ist * Labels einen von Variablen/Funktionen/Datentypen unabhängigen Namensraum haben * Kein Prototyp für ein Label notwendig ist, wenn es bei Nutzung über goto noch nicht gesetzt worden ist, also nach vorne gesprungen wird === goto === <code>Syntax: goto label;</code><br /> Mit der Goto-Anweisung wird die Programmausführung an der mit <code>label</code> gekennzeichneten Stelle fortgesetzt. Folgendes gilt es bei der Nutzung von goto zu beachten: * Mit einer <code>goto</code> Anweisung kann an eine beliebige Steller innerhalb der '''identischen''' Funktion gesprungen werden. Es kann nicht zu einem Label in einer anderen Funktion gesprungen werden (hierzu ist <code>setjmp()</code> und <code>longjmp()</code> zu nutzen) * Mit der Goto Anweisung kann gleichermaßen in einen Block hinein, als auch herausgesprungen werden: :<syntaxhighlight lang="C"> goto first_time; for(;;) { if(a>10) goto last_time: first_time: a++; } last_time: ; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=0; goto first_time; for(;;) { printf("a=%d\n",a); if(a>10) goto last_time; first_time: a++; } last_time: ; //Leeranweisung wäre hier nicht nötig return 0; //da dem Label ein return folgt! } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Wird mit der <code>goto</code> Anweisung der Initialisierungsteil einer Variablen übersprungen, so ist zwar die Variable existent, beinhaltet aber nicht ihren Initialisierungswert Beispiel: <syntaxhighlight lang="C"> goto label1; if(a==3) { label2: printf("True\n"); } else label1: { printf("False\n"); } if(a==3) goto label2; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=3; goto label1; if(a==3) { label2: printf("True\n"); a++; } else label1: { printf("False\n"); } if(a==3) goto label2; return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * In Java gibt es das Schlüsselwort goto, welches aber ohne Funktion ist. Es gibt jedoch Labels, die mit "break label" angesprungen werden können === Anwendungsbeispiele === Prinzipiell sind Goto-Anweisungen zu vermeiden. In einigen Anwendungsfällen erweist sich goto als nützlich: * Nutzung nur einer <code>return</code> Anweisung in einer Funktionen :<syntaxhighlight lang="C"> #include <unistd.h> int input(int hdl,size_t buflen) { int rc=-1; unsigned char packettype; if(read(hdl,&packettype,1) != 1) goto exit; unsigned short packetlen; if(read(hdl,&packetlen,2) != 2) goto exit; if((1+packetlen) > buflen) { rc=-2; goto exit; } rc=packetlen; exit: return rc; } </syntaxhighlight> * Konstruktor mit mehreren Initialisierungsteilen :<syntaxhighlight lang="C"> int main(int argc,char *argv[]) { enum {INIT_2,INIT_1,INIT_START} fortschritt=INIT_START; int *ptr1; int *ptr2; if(!(ptr1=malloc(10))) goto end; fortschritt=INIT_1; if(!(ptr2=malloc(20))) goto end; fortschritt=INIT_2; // ... end: switch(fortschritt) { case INIT_2: free(ptr2); __attribute__((fallthrough)); case INIT_1: free(ptr1); __attribute__((fallthrough)); case INIT_START: } return (int)fortschritt; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { enum {INIT_2,INIT_1,INIT_START} fortschritt=INIT_START; int *ptr1; int *ptr2; if(!(ptr1=malloc(10))) goto end; fortschritt=INIT_1; if(!(ptr2=malloc(20))) goto end; fortschritt=INIT_2; // ... end: switch(fortschritt) { case INIT_2: free(ptr2); __attribute__((fallthrough)); case INIT_1: free(ptr1); __attribute__((fallthrough)); case INIT_START: } return (int)fortschritt; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Abbruch einer verschachtelten Schleife :<syntaxhighlight lang="C"> int arr[10][10]; size_t zeile; size_t spalte; for(zeile=0;zeile<10;zeile++) for(spalte=0;spalte<0;spalte++) if(arr[zeile][spalte]==0) goto label_end; label_end: if((zeile==0) && (spalte==0)) printf("Nichts gefunden"); else printf("Gefunden an %zu %zu",zeile,spalte); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int arr[10][10]; size_t zeile; size_t spalte; for(zeile=0;zeile<10;zeile++) for(spalte=0;spalte<0;spalte++) if(arr[zeile][spalte]==0) goto label_end; label_end: if((zeile==0) && (spalte==0)) printf("Nichts gefunden"); else printf("Gefunden an %zu %zu",zeile,spalte); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Sonstiges == === ??-Trigraphs === Zeichenfolge bestehend aus 3 Zeichen beginnend mit 2 Fragezeichen. Die beiden Fragezeichen entsprechen einem ESCAPE-Operator (siehe Kap [[#Char-Konstanten|Char-Konstanten]]), welcher das nachfolgende Zeichen durch ein anderes ASCII Zeichen ersetzt. Die Ersetzung findet auch innerhalb von Strings statt.<br /> Trigraphs wurden früher genutzt, als die ALTGR Taste noch nicht üblich war. <syntaxhighlight> ??< → { ??> → } ??( → [ ??) → ] ??/ → \ ??! → | ??' → ^ ??- → ~ ??= → # </syntaxhighlight> Bei neuer C Varianten muss zur Nutzung von Trigraphs der Compiler mittels -trigraphs aktiviert werden. <noinclude> {{Navigation zurückhochvor buch |zurücklink=Programmieren in C/C++: Toolchain/Entwicklungsumgebung |zurücktext=Toolchain/Entwicklungsumgebung |hochlink=Programmieren in C/C++ |hochtext=Inhaltsverzeichnis |vorlink=Programmieren in C/C++: Datentypen |vortext=Datentypen}} </noinclude> cr4md1r8c7l7f0unmr2l0be2w1ml102 1090612 1090611 2026-09-09T10:23:18Z D. Justen 102048 Funktion in Funktion vorsorglich eingefügt 1090612 wikitext text/x-wiki <noinclude> {{Navigation zurückhochvor buch |zurücklink=Programmieren in C/C++: Toolchain/Entwicklungsumgebung |zurücktext=Toolchain/Entwicklungsumgebung |hochlink=Programmieren in C/C++ |hochtext=Inhaltsverzeichnis |vorlink=Programmieren in C/C++: Datentypen |vortext=Datentypen}} </noinclude> <!-- Falls du ein automatisch erstelltes Inhaltsverzeichnis nicht willst, ersetze das nachfolgende TOC durch NOTOC --> <!-- Einklammerung mit noinclude, damit dieses nicht in der Druckversion erscheint --> <noinclude>__TOC__</noinclude> Die Programmiersprache C/C++ beinhaltet mehrere Sprachen/ Syntaxen: * C-Syntax * Präprozessor-Syntax * Printf/Scanf Formatstring Syntax * Terminal Emulation * Compiler/Linker Anweisungen Letztere beiden werden nur rudimentär in dieser Vorlesung/diesem Skript behandelt. Alle anderen sind Bestandteil dieser Vorlesung. In diesem Kapitel sollen zunächst allgemeine Eigenschaften der Sprache, der grundlegende Syntax und die Kontrollstrukturen erklärt werden. Bei vielen Erklärungen sind Code-Beispiele vorhanden. Da man aus Fehlern am meisten lernt, sind zum Teil auch negative Beispiele enthalten. Für ein besseres Verständnis empfiehlt es sich, Code-Beispiele selbst nachzuvollziehen.<br /> Sofern sich die Eigenschaften auf eine bestimmte C-/C++- oder Compiler-Version beziehen, wird dies gesondert vermerkt. == Zeichensatz == Der Syntax von C nutzt die unteren 128 Zeichen des ASCII Zeichensatzes. Da UTF-8 in den ersten 128 Zeichen deckungsgleich zu ASCII ist, kann auch dieser zur Erstellung des Source Codes genutzt werden. Zeichen außerhalb dieses gültigen Zeichensatzes können folglich nur in Strings oder Kommentaren vorkommen. Werden Zeichen außerhalb der unteren 128 Zeichen in Strings genutzt, so gilt Folgendes zu berücksichtigen: * Die String-Funktionalitäten der Standard-C Library gehen von dem regulären ASCII Zeichensatz aus, so dass z.B. die Suche, der Vergleich oder die Konvertierung fehlschlagen kann * Strings werden oftmals in Verbindung mit printf() genutzt, d.h. auf der Standardausgabe ausgegeben. Der verwendete Zeichensatz sollte hier identisch zum verwendeten Zeichensatz der Terminal-Emulation sein! == Kommentarzeichen == Kommentare dienen dazu, den Source Code mit zusätzlichen Hinweisen zu versehen, so dass die Intension der Anweisungen sichtbar wird. Kommentarzeichen werden durch den Compiler vor dem eigentlichen Übersetzungsdurchlauf entfernt und durch ein Leerzeichen ersetzt [C11 6.4.9]. Innerhalb von Strings wird nicht nach Kommentarzeichen gesucht. <code> Syntax: /* */ </code> Blockkommentar zum Kommentieren eines Bereiches, auch über mehrere Zeilen hinweg. Dieses Kommentarzeichen kann nicht verschachtelt werden, d.h. '*/' beendet die Kommentierung, unabhängig von der Anzahl der zuvor geöffneten Kommentierungen! <code> Syntax: // </code> Zeilenkommentar zum Kommentieren bis zum Zeilenende (wurde in der Programmiersprache BCPL definiert, aber nicht von C, sondern erst von C++ übernommen). Sollen größere Bereiche auskommentiert werden, so empfiehlt sich die Nutzung der Präprozessoranweisung #if 0 ... #endif. Beispiele: <syntaxhighlight lang="C"> /* Blockkommentar mit zwei öffnenden Klammern /* über mehrere Zeilen, nicht verschachtelt */ //Zeilenkommentar /* Kleiner Bereich zum auskommentieren */ #if 0 Großer Bereich zum auskommentieren #endif </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> /* Blockkommentar mit zwei öffnenden Klammern /* über mehrere Zeilen, nicht verschachtelt Compiler-Warning nur aufgrund des Compiler-Schalters -Wall! */ //Zeilenkommentar /* Kleiner Bereich zum auskommentieren */ #if 0 Großer Bereich zum auskommentieren #endif int main(int argc,char *argv[]) { return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Namenskonventionen == Folgende Regeln gelten bzgl. der Benennung von Variablen und Funktionen: * Variablen und Funktionsnamen können aus Buchstaben, Zahlen und dem Unterstrich bestehen. Sie müssen mit einem Buchstaben oder einem Unterstrich beginnen * Seit C95 können weitere Zeichen aus dem Universal Coded Character Set (UCS) genutzt werden [C11 D.1] * C ist Case sensitiv, d.h. es wird zwischen Groß- und Kleinbuchstaben unterschieden * Schlüsselwörter können nicht für Variablen/Funktionsnamen/Datentypen genutzt werden Namenskonventionen von Libraryfunktionen: * In C (und C++) sind Schlüsselwörter und Standardlibraryfunktionen zumeist in Kleinbuchstaben geschrieben. In der C-Standardlibrary werden oftmals verkürzte Ausdrücke (z.B. isalnum() (zum Testen ob ein Zeichen ein Buchstaben oder ein Digit ist) und in C++ der Unterstrich als Worttrenner (z.b. out_of_range) genutzt * Makros (siehe Kap.[[Programmieren in C/C++: Präprozessor | Präprozessor]]) werden per Konvention in GROSSBUCHSTABEN und ggf. mit Unterstrich als Worttrenner geschrieben. * Namen beginnend mit doppelten Unterstrich oder beginnend mit einem Unterstrich gefolgt von einem Großbuchstaben (z.B. __LINE__ _Reserved) sind für den Compiler und der Standard-C-Library vorbehalten und sollten im eigenen Programm nicht benutzt werden. == Zeilenfortsetzung == Mit dem Backslash Operator (gefolgt von einem Zeilenende) kann eine Zeile in der nächsten Zeile fortgesetzt werden. Der Compiler löscht das \-Zeichen mit anschließendem Zeilenende und ersetzt dies durch nichts. Dies ist insbesondere bei Anweisungen notwendig, die am Ende der Zeile abgeschlossen sein müssen (z.B. Strings, Makros). Beispiele: <syntaxhighlight lang="c"> char str1[]="Strings müssen am Ende abgeschlossen sein so dass dies ein Fehler ist"; char str2[]="Dies\ ist ein Test"; //Vorsicht, führende Leerzeichen vor 'ist' //bleiben erhalten! /*mehrzeiliges Makro*/ #define MAX(a,b) (a>b?\ b: \ a) //Dies ist ein Zeilenkommentar \ welcher in dieser Zeile fortgesetzt wird /\ * dies ist ein Blockkommentar*\ / //hinter der Zeilenfortsetzung darf nur ein CR/LF folgen #define MAX2(a,b) \ //so dass hier kein Kommentar folgen darf a>b?a:b </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> char str1[]="Strings müssen am Ende abgeschlossen sein so dass dies ein Fehler ist"; char str2[]="Dies\ ist ein Test"; //Vorsicht, führende Leerzeichen vor 'ist' //bleiben erhalten! /*mehrzeiliges Makro*/ #define MAX(a,b) (a>b?\ b: \ a) //Dies ist ein Zeilenkommentar \ welcher in dieser Zeile fortgesetzt wird /\ * dies ist ein Blockkommentar*\ / //hinter der Zeilenfortsetzung darf nur ein CR/LF folgen #define MAX2(a,b) \ //so dass hier kein Kommentar folgen darf a>b?a:b int main(int argc,char *argv[]) { return 0; } | execCompilerOptions=| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Innerhalb von Char-Literatoren und Strings wird '\' als Escape-Operator genutzt, welche das '\' und ein oder mehrere folgende Zeichen ersetzt (siehe Kap.[[Programmieren in C/C++: Grundlagen#Literale/Konstanten | Grundlagen:Literale/Konstanten]]). Daher darf hinter Backslash als Zeilenfortsetzungszeichen kein weiteres Zeichen folgen. == Gültigkeit/Sichtbarkeit von Variablen == Vorrangig in der objektorientierten Programmierung werden mit Namensräumen Objekte und deren Methoden/Attribute in einer Art Baumstruktur strukturiert. Dies ermöglicht eine eindeutige Ansprache von Variablen/Objekte, aber auch eine doppelte Verwendung von Methoden-/Attributnamen in unterschiedlichen Namensräumen. Ergänzend zu den Namensräumen kann mit public/private/proteced eine Zugriffsbeschränkung von Methoden/Attributen definiert werden. Die Programmiersprache C unterstützt keinen Namensraum. Zugriffsmodifikatoren werden indirekt über Header-Dateien getätigt. Hinsichtlich der Gültigkeit/Sichtbarkeit unterscheidet C folgende Bereiche [C11 6.2.1]: * Funktionen (Function Scope) * Datei (File Scope) * Block (Block Scope) * Funktionsparameter in Prototypen (Function Prototype Scope) Innerhalb eines Gültigkeitsbereiches dürfen Variablen-/Funktions-/Datentypnamen nicht doppelt genutzt werden.<br /> In der Programmiersprache C++ sind weitere Scope wie z.B. Class Scope, Enumationation Scope und ergänzend das Konzept von Namensräumen vorhanden (Beschreibung folgt). === Funktionsweite Sichtbarkeit === Eine Label-Definition (als Sprungmarke für die goto-Anweisungen) erfolgt immer mit funktionsweiter Sichtbarkeit/Gültigkeit. Die genaue Beschreibung dieses Sichtbarkeitstyps erfolgt im Rahmen des Kapitels [[Programmieren in C/C++: Grundlagen #Label + Goto|Grundlagen:Label+Goto]]. === Dateiweite Sichtbarkeit === Erfolgt eine Funktion-/Variablen-/Datentyp-Definition außerhalb eines Block-Scopes oder von Funktionsparameter, so sind diese innerhalb der gesamten Datei und bei Funktionen/Variablen ergänzend Projektweit (für alle Objektdateien) sichtbar/gültig (=&nbsp;global) (In der C-Spec unter dem Stichwort 'Linkage' beschrieben, siehe Kapitel [[Programmieren in C/C++: DatentypeSpecifier#Internal/External Linkage| DatentypeSpecifier:Internal/External Linkage]]). Alle globalen Funktionen/Variablen können von allen Dateien aus genutzt/zugegriffen werden (sofern sie zuvor deklariert wurden).<br /> Beispiel: {| class="wikitable" |- ! Datei1.c !! Datei2.c |- | <syntaxhighlight lang="C"> //Deklaration von func(), //welche in Datei2.c definiert wird extern void func(void); //Definition der Variablen global int global=0; int main(void) { func(); global++; return 0; } </syntaxhighlight> || <syntaxhighlight lang="C"> //Deklaration von global, //welche in Datei1.c definiert wird extern int global; //Definition der Funktion func() void func(void) { global++; } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Deklaration von func(), //welche in Datei2.c definiert wird extern void func(void); //Definition der Variablen global int global=0; int main(void) { func(); global++; printf("global=%d\n",global); return 0; } | datei2_c=#include <stdio.h> //Deklaration von global, //welche in example.c definiert wird extern int global; //Definition der Funktion func() void func(void) { global++; printf("func() called\n"); } | execCompilerOptions=-Wall datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Wird das Schlüsselwort 'static' der Variablen/Funktionsdefinition vorangestellt, so wird die Sichtbarkeit/Gültigkeit auf Dateiweit eingeschränkt. Variablen/Funktionen können nur innerhalb der (Objekt-) Datei genutzt werden und sind für anderen (Objekt-)Dateien unsichtbar. (Siehe Kap. [[Programmieren in C/C++: DatentypeSpecifier#Internal/External Linkage|DatentypeSpecifier:Internal/External Linkage]] Internal/External Linkage) {| class="wikitable" |- ! Datei1.c !! Datei2.c |- | <syntaxhighlight lang="C"> //Dateiweite Sichtbarkeit von var1 static int var1; int main(void) { var1++; return 0; } </syntaxhighlight> || <syntaxhighlight lang="C"> //Dateiweite Sichtbarkeit von var1 static int var1; void func(void) { static int var2; //Vorsicht, static // hat hier eine andere Bedeutung var1++; } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Dateiweite Sichtbarkeit von var1 static int var1; int main(void) { var1++; printf("example.c:var1=%d\n",var1); void func(void); //Prototyp für func() func(); return 0; } | datei2_c=#include <stdio.h> //Dateiweite Sichtbarkeit von var1 static int var1; void func(void) { static int var2; //Vorsicht, static // hat hier eine andere Bedeutung var1++; printf("datei2.c:var1=%d\n",var1); } | execCompilerOptions=datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Projektweite Gültigkeit bedeutet insbesondere, dass keine doppelten Benennung von Variablen/Funktionen/Datentypen innerhalb des gesamten Projektes erlaubt sind, d.h. alle Variablen/Funktionennamen über alle Dateien/Librarys eindeutig sein müssen.<br> Beispiel 1: {| class="wikitable" |- ! Datei1.c !! Datei.2 |- | <syntaxhighlight lang="C"> #include <stdio.h> int a=1; int main(int argc,char *argv[]) { printf("Hello World %d",a); void dummy(void); //Deklaration von Dummy dummy(); return 0; }</syntaxhighlight> || <syntaxhighlight lang="C"> #include <stdio.h> int a=7; void dummy(void) { printf("Hello Again %d\n",a); } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int a=1; int main(int argc,char *argv[]) { printf("Hello World %d",a); void dummy(void); //Deklaration von Dummy dummy(); return 0; } | datei2_c=#include <stdio.h> #include <stdio.h> int a=7; void dummy(void) { printf("Hello Again %d\n",a); } | execCompilerOptions=datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Der Linker meldet beim Zusammenfügen der Objekt-Dateien, dass die Variable a bereits woanders definiert sei (multiple definition of `a';)! Beispiel 2: <syntaxhighlight lang="C"> #include <stdio.h> //fuer printf() size_t stderr int printf=7; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int printf=7; int main(int argc,char *argv[]) { return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hier meldet der Compiler eine Fehlermeldung, da das Symbol printf zu einen als Variable und zum anderen als Funktion (innerhalb der inkludierten Datei stdio.h beschrieben) genutzt wird ('printf' redeclared as different kind of symbol). === Blockweite Sichtbarkeit === Erfolgt eine Funktion-/Variablen-/Datentyp Definition innerhalb einer Funktion, als Funktionsparameter oder eines Blockes, so sind diese nur innerhalb des Blockes sichtbar/gültig (=Lokale Variable). Blöcke können verschachtelt sein, so dass das bei identischer Namensgebung innere Definitionen Vorrang haben. Ebenso haben Blockdefinitionen Vorrang vor Datei-/Projektdefinitionen (überdecken diese): {| class="wikitable" |- ! Datei1.c !! Datei2.c |- | <syntaxhighlight lang="C"> int main(void) { int var2; //var2 ist nur innerhalb //von main() sichtbar struct xyz //Datentyp ist nur innerhalb {int x,y,z;};//von main() //sichtbar/gültig extern void func(void); //Deklaration //ist nur innerhalb von //main() sichtbar/gültig func(); } void foo(void) { struct xyz var_xyz; //Fehler, da //Datentypedefinition hier nicht mehr //gültig ist! func(); //Fehler, da Deklaration //hier nicht mehr gültig ist } </syntaxhighlight> || <syntaxhighlight lang="C"> #include <stdio.h> void func(void) { int var2=1; //var2 ist //nur innerhalb von //func() sichtbar { int var2=2; //var2 ist nur innerhalb //dieses Blockes sichtbar printf("%d\n",var2); } printf("%d\n",var2); } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(void) { int var2; //var2 ist nur innerhalb //von main() sichtbar struct xyz //Datentyp ist nur innerhalb {int x,y,z;};//von main() //sichtbar/gültig extern void func(void); //Deklaration //ist nur innerhalb von //main() sichtbar/gültig func(); } void foo(void) { struct xyz var_xyz; //Fehler, da //Datentypedefinition hier nicht mehr //gültig ist! func(); //Fehler, da Deklaration //hier nicht mehr gültig ist } | datei2_c=#include <stdio.h> void func(void) { int var2=1; //var2 ist //nur innerhalb von //func() sichtbar { int var2=2; //var2 ist nur innerhalb //dieses Blockes sichtbar printf("%d\n",var2); } printf("%d\n",var2); } | execCompilerOptions=-Wall datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Sichtbarkeit von Funktionsparameter in Protypen === Soll eine Funktion aufgerufen werden, die zuvor nicht definiert wurde, so ist ein Prototyp/(Forward)deklaration der Funktion notwendig (siehe nachfolgendes Kapitel). Die Parameterliste dieses Prototyps hat seinen eigenen Gültigkeitsbereich.<br/> Beispiel: <syntaxhighlight lang="C"> int a; //a im File Scope int func(int a, int b); //a und b im Function Prototyp scope </syntaxhighlight> Hinweis: * Bei Prototypen ist die Angabe von Variablenname nicht notwendig. Die alleinige Angabe des Datentyps ist ausreichend === Zuordnung der Gültigkeitsbereiche zu globalen/lokalen Variablen === Zum einfacheren Verständnis wird im Skript von folgenden Begrifflichkeiten gesprochen: * '''Globale''' Variablen-/Funktionen-/Datentypdefinitionen → Projektweite Sichtbarkeit/Gültigkeit * '''Statisch globale''' Variable/Funktionen → Dateiweite Sichtbarkeit/Gültigkeit * '''Lokale''' Variablen/Funktionen/Funktionsparameter/Datentypen → Nur innerhalb des zugehörigen Blockes sichtbare/gültig * '''Statisch lokale''' Variablen → Nur innerhalb der Funktion sichtbar/gültig, mit der Besonderheit, dass die Gültigkeit über der Laufzeit der Funktion gilt (siehe Kap. [[Programmieren in C/C++: DatentypeSpecifier#Static Storage Class Specifier|DatentypeSpecifier:Static Storage Class Specifier]]) === Speicherzuweisung === Für die einzelnen Gültigkeitsbereiche werden im Speicher (und auch in der Objekt-Datei) unterschiedliche Speicherbereiche (Segmente) vorgehalten, d.h. der Compiler teilt den Speicher in unterschiedliche Bereiche auf und weist den Variablen/Funktionen in Abhängigkeit der Gültigkeit/Sichtbarkeit unterschiedliche Speicherbereiche zu! [[File:Zuordnung von Inhalten eines C-Programms zu Speicherbereichen (Segmenten).png|thumb|Zuordnung von Inhalten eines C-Programms zu Speicherbereichen (Segmenten)]] Zur Ermöglichung von Rekursion werden lokale Variable auf dem Stack gehandelt. Mit Aufruf einer Funktion oder öffnen eines neuen Block-Scopes wird Speicher auf dem Stack reserviert, der bei Beenden des Scopes wieder freigegeben wird. Die Speicheradresse von lokalen Variablen ist somit nicht Fix, sondern hängt von der Aufrufhierarchie ab! Globale und statisch globale Variablen werden nicht auf dem Stack gehalten, sondern bekommen einen 'festen' Speicherbereich (hier DATA/BSS/RODATA) während der gesamten Laufzeit des Programms zugewiesen. Die Adresse dieser Variablen sind somit konstant. Das genutzte Speichersegment von globalen Variablen hängen von der Art der Variablen ab. Initialisierte Variablen werden im DATA-Segment gesammelt, welcher mit dem Initialisierungswert der Variablen initialisiert wird. Nicht initialisierte globale Variablen landen im BSS-Segment, so dass diese mit Programmstart durch Füllen dieses Blockes mit 0 auf 0 gesetzt werden. Konstante globale Variablen werden im RODATA-Segment gehalten. Über das Betriebssystem kann dieser Speicherbereich auf nur Lesbar gesetzt werden. Dynamische Speicheranforderungen, resp. Speicher, dessen Gültigkeit über die Laufzeit einer Funktion hinausgeht, wird im Heap gesammelt. Für die Verwaltung dieses Speichers ist der Programmierer zuständig. Entsprechend globalen Variablen wird für Funktionen ebenfalls ein eigener Speicherbereich (TEXT Segment) vorgesehen. Im Gegensatz zu Variablen, wo im Speicher der dazugehörige Inhalt gespeichert ist, ist der Speicherinhalt von Funktionen die Maschinenanweisungen. Die Speicheradresse der Funktionen sind konstant. Hinweis: * Die Speicheradresse von sowohl globalen und statisch globalen Variablen als auch von Funktionen ist konstant und ändert sich während der Laufzeit des Programms nicht. Die Adressvergabe dieser Variablen und Funktionen erfolgt somit nicht zur Laufzeit sondern durch die Toolchain (hier der Linker). * Dieses Konzept ist allgemeingültig, gilt nicht nur für die Programmiersprache C/C++ == Definition/Deklaration(Prototyp) == Der C-Compiler ist ein Single-Pass Compiler (siehe Kap [[Programmieren in C/C++: Einführung/Literatur#Arbeitsweise eines Compilers | Einführung/Literatur:Arbeitsweise eines Compilers ]]), d.h. für den Übersetzungsvorgang wird der Quellcode einmalig eingelesen und von vorne nach hinten abgearbeitet. Dies bedingt, dass keine Vorwärtsbezüge im Quelltext enthalten sein dürfen: * keine Variable genutzt werden kann, die erst später definiert wird (da der Compiler in Abhängigkeit des Datentyps (den er dann noch nicht kennt) keine entsprechende Maschinensprachebefehle erzeugen kann) * keine Funktion aufgerufen werden kann, die erst später definiert wird (da der Compiler nicht weiß, welcher Datentyp die Übergabewerte haben und folglich keine Maschinensprachebefehle zur Konvertierung und Übergabe der Variablen erzeugen kann) * kein Datentyp genutzt werden kann (struct, union, enum, typedef), welcher erst später definiert wird (da der Compiler nicht weiß, wieviel Speicher er für die Variable reservieren muss) Eine Lösungsvariante dieser Problematik ist, im Quellcode alle Variablen/Funktionen/Datentypen/Makros zu definieren, bevor diese erstmalig genutzt werden (Funktion main() steht dann folglich am Ende des Quellcodes): <syntaxhighlight lang="C"> void foo(void) { //foo() wird vor dem ersten Aufruf definiert //Hier kein Zugriff auf var möglich! //Hier kein Zugriff auf Datentyp uchar möglich! } int var; //var wird vor dem ersten Aufruf definiert typedef unsigned char uchar; //Definition des Datentyps uchar int main(void) { foo(); //da zuvor definiert kann diese Funktion hier aufgerufen werden var++; //dito } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void foo(void) { //foo() wird vor dem ersten Aufruf definiert var++; //Hier kein Zugriff auf var möglich! uchar xyz;//Hier kein Zugriff auf Datentyp uchar möglich! } int var; //var wird vor dem ersten Aufruf definiert typedef unsigned char uchar; //Definition des Datentyps uchar int main(int argc, char *argv[]) { foo(); //da zuvor definiert kann diese Funktion hier aufgerufen werden var++; //dito } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Sollen globale Funktionen/Variablen in Datei1.c genutzt werden, die in Datei2.c definiert sind, so schlägt diese Vorgehensweise fehl. Um auch dieses zu ermöglichen, bietet C die Möglichkeiten von Prototypen/Deklarationen an. Diese teilt dem Compiler mit, wie im späteren Ablauf die Variable, die Funktion definiert wird, bzw. dass es diesen Datentyp geben wird: {| class="wikitable" |- ! Datei1.c !! Datei2.c |- | <syntaxhighlight lang="C"> //Prototyp für Variable var extern int var; //Prototyp für Funktion foo void foo(void); int main(int argc, char *argv[]) { foo(); //Compiler kann aufgrund var++; //der Prototypen diese //Aufruf in Maschinen- //sprachebefehle umsetzen } </syntaxhighlight> || <syntaxhighlight lang="C"> //Definition der Variablen var int var; //Definition der Funktion foo void foo(void) { } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Prototyp für Variable var extern int var; //Prototyp für Funktion foo void foo(void); int main(int argc, char *argv[]) { foo(); //Compiler kann aufgrund var++; //der Prototypen diese //Aufruf in Maschinen- //sprachebefehle umsetzen } | datei2_c=#include <stdio.h> //Definition der Variablen var int var; //Definition der Funktion foo void foo(void) { } | execCompilerOptions=-Wall datei2.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Innerhalb der C-Spezifikation werden für den Umgang mit dieser Problematik die Begriffe 'Declaration' und 'Definition' genutzt. Da diese Begriffe jedoch nicht klar abgegrenzt werden und auch für viele weitere Aspekte genutzt werden, sollen in diesem Skript in Anlehnung an den Wikipedia Artikel {{w|Deklaration (Programmierung)|Deklaration (Programmierung)}} (im Absatz zur Programmiersprache C/C++) die Begriffe Definition/Deklaration wie folgt genutzt werden: ;Definition: entspricht der Belegung/Reservierung von Speicherplatz :* Bei der Definition einer Variablen wird hiermit Speicherplatz entsprechend dem Datentyp der Variable belegt: :<syntaxhighlight lang="C"> int var1; //entsprechend der Größe des Datentyps int wird //Speicherplatz für die Variable var1 reserviert int var2=4711; //Dito, ergänzend wird dieser Speicherplatz mit dem //Wert 4711 initialisiert </syntaxhighlight> :* Bei einer Funktion wird Speicherplatz zur Aufnahme der Maschinenbefehle belegt: :<syntaxhighlight lang="C"> void foo(void) { //Die Anweisungen in den geschweiften Klammern //werden in Maschinenbefehle übersetzt. D.h. die //Funktion foo() belegt Speicher, dessen Inhalt //die Maschinensprachebefehle sind } </syntaxhighlight> :* Ergänzend wird der Begriff Definition auch in Verbindung mit der Definition von neuen Datentypen genutzt! ;Deklaration/Prototyp: ist die Mitteilung an den Compiler, wie diese Variable/Funktion an einer späteren Stelle im Source-Code oder in einer anderen Source-Datei definiert wird. Auf Grundlage dieser 'vorab' Information kann der Compiler die passenden Maschinensprachebefehle für den Zugriff/Aufruf auf die Variablen/Funktion einsetzen: :<syntaxhighlight lang="C"> extern int var1; //Deklaration von var1 extern void foo(void); //Deklaration von foo() void foo(void); //Deklaration von foo() </syntaxhighlight><br /> Insbesondere bei dem Umgang mit der Deklaration gilt es Folgendes zu berücksichtigen: * Deklarationen werden entweder: :* am Anfang einer C-Datei geschrieben, so dass Funktionen/Variablen im Zugriff stehen, die erst später in der C-Datei definiert werden (entspricht dann der Private Anweisung in anderen Sprachen) :* in Header-Dateien geschrieben, so dass diese Variable/Funktionen für alle sichtbar sind, welche diese Header-Datei einbinden (entspricht der Public Anweisung in anderen Sprachen) * Deklarationen von Funktionen werden in der C-Spec als (function) Prototyp bezeichnet und sind dadurch gekennzeichnet, dass diese mit einem Semikolon abgeschlossen sind. Der Specifier 'extern' ist hier optional und sagt eigentlich aus, dass diese Funktion external Linkage besitzt (siehe [[Programmieren in C/C++:_DatentypeSpecifier#Internal/External Linkage | DatentypeSpecifier:Internal/External Linkage]]). Die Benennung der Parametervariablen sind gleichermaßen optional: :<syntaxhighlight lang="C"> extern int foo(int var1, float var2); //Deklaration extern int foo(int , float ); //Deklaration int foo(int var1, float var2); //Deklaration + external Linkage int foo(int , float ); //Deklaration + external Linkage </syntaxhighlight> * Für globale Variablen gibt es keine (Variablen) Prototype. Stattdessen muss zur Bekanntgabe des Datentyps der Specifier 'extern' vorangestellt werden, mit welchen ergänzend zum Ausdruck gebracht wird, das diese Variable external Linkage und damit globale Gültigkeit hat (siehe Kap [[Programmieren in C/C++: DatentypeSpecifier# Extern - Storage Class Specifier| DatentypeSpecifier:Extern - Storage Class Specifier]]). Da die Deklaration einzig zur Bestimmung der Zugriffsmethoden auf Maschinenspracheebene genutzt wird, können diese keine Initialisierungswerte enthalten: :<syntaxhighlight lang="C"> extern int var1; extern int var2=7; //KO Deklarationen können keine //Initialisierungswerte haben </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> extern int foo; extern int foo=7; int main(int argc, char *argv[]) { return foo; } int foo=7;| execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Deklarationen von statisch globalen, lokalen und statisch lokalen Variablen nicht möglich sind: :<syntaxhighlight lang="C"> extern static int glob; //keine Deklaration von statisch globalen //Variablen möglich int main(int argc, char *argv[]) { extern int var; //Deklaration bezieht sich auf eine globale //Variable, die nicht definiert ist extern static int lok; printf("%d %d\n",var,lok); int var; static int lok; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> extern static int glob; //keine Deklaration von statisch globalen //Variablen möglich int main(int argc, char *argv[]) { extern int var; //Deklaration bezieht sicht auf eine globale //Variable, die nicht definiert ist extern static int lok; printf("%d %d\n",var,lok); int var; static int lok; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Deklarationen für identische Variablen/Funktionen können beliebig oft erfolgen, sofern der Datentyp identisch ist: :<syntaxhighlight lang="C"> extern int var; extern int var; //OK, doppelt Deklaration mit identischen Datentyp extern unsigned int var; //KO, Doppelte Deklaration mit unterschiedlichen // Datentyp </syntaxhighlight> * Sofern eine Deklaration und eine Definition in der identischen Datei erfolgen überprüft der Compiler, ob Deklaration und Definition identisch sind. Es empfiehlt sich, die eigene Header-Datei (in welcher die Deklaration normalerweise enthalten ist) zu inkludieren: :{| class="wikitable" |- ! Datei1.c !! Datei1.h |- | <syntaxhighlight lang="C"> //Include der eigenen Header-Datei #include "datei1.h" int var1; //Definition von var1 short var2; //Definition von var2 int var3; //Private Variable //da kein Prototyp //im Header vorhanden void func(void) { } </syntaxhighlight> || <syntaxhighlight lang="C"> extern int var1; //Deklaration extern char var2; //KO, da Deklaration //von Definition //abweicht void func(int); //KO, da Deklaration //von Definition //abweicht </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Include der eigenen Header-Datei #include "example.h" int var1; //Definition von var1 short var2; //Definition von var2 int var3; //Private Variable //da kein Prototyp //im Header vorhanden void func(void) { } int main(int argc, char *argv[]) { return 0; } | example_h= extern int var1; //Deklaration extern char var2; //KO, da Deklaration //von Definition //abweicht void func(int); //KO, da Deklaration //von Definition //abweicht | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Innerhalb einer Datei kann eine Variable identischen Datentyps mehrmals definiert werden (bei identischen Initialisierungswert). Diese Definitionen werden vom Compiler als eine Definition angesehen. Wenn jedoch eine identische Variable in unterschiedlichen Dateien definiert wird, so legt jede Datei eine eigene unabhängige Variable an, welche dann beim Zusammenführen der Objektdateien durch den Linker zu Fehler führt. Da Header-Datei zumeist in mehrere C-Dateien inkludiert werden, sind Definitionen in Header-Dateien 'verboten'. * Deklarationen innerhalb eines Block-Scopes oder eines Function Prototyp Scopes sind nur in diesen Bereich gültig. == Grundlegende Datentypen und Typsicherheit == Die Programmiersprache C kennt folgende grundlegende Datentypen (siehe Kap. [[Programmieren in C/C++: Datentypen | Datentypen]]). Von jedem Datentyp kann ein Zeiger angelegt werden: {| class="wikitable" |- ! Datentyp !! Bsp. für Datentyp !! Bsp. für Zeiger auf Datentyp |- | Ganzzahl || <syntaxhighlight lang="C"> char var; int var; short int var; long int var; long long int var; </syntaxhighlight> || <syntaxhighlight lang="C"> char *ptr; int *ptr; short int *ptr; long int *ptr; long long int *ptr; </syntaxhighlight> |- | Gleitkommazahl || <syntaxhighlight lang="C"> double var; float var; long double var; </syntaxhighlight> || <syntaxhighlight lang="C"> double *ptr; float *ptr; long double *ptr; </syntaxhighlight> |- | Funktionen || <syntaxhighlight lang="C"> void func(void) {} </syntaxhighlight> || <syntaxhighlight lang="C"> void (*pfunc)(void); </syntaxhighlight> |- | Arrays || <syntaxhighlight lang="C"> int arr[10]; float arr[3][3]; </syntaxhighlight> || <syntaxhighlight lang="C"> int (*parr); float (*parr)[3]; void (*pfunc[5])(void); </syntaxhighlight> |- | Strukturen/Unions || <syntaxhighlight lang="C"> struct xyz {int x,y,z}; union abc {int a,b,c}; </syntaxhighlight> || <syntaxhighlight lang="C"> struct xyz *ptr; union abc *ptr; </syntaxhighlight> |- | Aufzählungstyp || <syntaxhighlight lang="C"> enum abc {A,B,C}; </syntaxhighlight> || <syntaxhighlight lang="C"> enum abc *ptr; </syntaxhighlight> |- | Boolescher Datentyp || <syntaxhighlight lang="C"> _Bool var; </syntaxhighlight> || <syntaxhighlight lang="C"> _Bool *ptr; </syntaxhighlight> |- | Komplexe Zahlen || <syntaxhighlight lang="C"> _Complex var; </syntaxhighlight> || <syntaxhighlight lang="C"> _Complex *ptr; </syntaxhighlight> |} C/C++ unterscheidet zwischen vorzeichenbehafteten <code>signed</code> und vorzeichenlosen <code>unsigned</code> ganzzahligen Datentypen. Vorzeichenlose Datentypen können nur positive Zahlen incl. der 0 aufnehmen (Anwendungsbereich bspw. Speicheradressen/Arrayindexe, welche nicht negativ sein können). Deren max. Zahlenwert ergibt sich aus der Datenbreite N des Datentyps 2<sup>N</sup>-1. Ein Vergleich eines vorzeichenlosen Datentyps mit ≥ 0 ist somit immer TRUE: <syntaxhighlight lang="C"> unsigned char var=0; if(var >= 0) //Bedingung ist immer erfüllt, so dass printf("Bedingung erfüllt"); //dieser ggf. vom Compiler wegoptimiert wird! for(var=10; var>=0; var--); //Endlosschleife! 0 dekrementiert ergibt 255 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> int main(int argc,char *argv[]) { unsigned char var=0; if(var >= 0) //Bedingung ist immer erfüllt, so dass printf("Bedingung erfüllt\n"); //dieser ggf. vom Compiler wegoptimiert wird! //Beim Öfffnen des Compiler-Fensters ist die IF-Anweisung nicht farblich //hervorgehoben. Dies bedeutet, dass diese Zeile wegoptimiert wurde und folglich //kein Maschinencode für diese Anweisung erzeugt wurde for(var=10; var>=0; var--) //Endlosschleife! 0 dekrementiert ergibt 255 printf("%u ",var),fflush(stdout); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Vorzeichenlose Datentypen halbieren den verfügbaren Zahlenbereich und 'weisen' dem oberen Wertebereich den negativen Zahlen zu.<br> Wird ein ganzzahliger Datentyp ohne Angabe des Vorzeichentyps (signedness) definiert, so ist diese vorzeichenbehaftet. Bei vorzeichenlosen Variablen muss explizit <code>unsigned</code> vorangestellt werden. Die Voranstellung von <code>signed</code> ist optional. Einzige Ausnahme stellt der Datentyp char dar. Hier gibt die Spezifikation keine default signedness vor, so dass bei Nutzung dieses Datentyps zur Aufnahme von Zahlen immer signed oder unsigned vorangestellt werden sollte!<br> Innerhalb des Formatstrings bei den printf()/scanf() Anweisungen '''muss''' die signedness vom Programmierer händisch berücksichtigt werden. Die Formatanweisung %d und %i interpretieren die übergebenen Zahl als vorzeichenbehaftete Zahl. Soll eine vorzeichenlose Zahl ausgegeben werden, so muss %u verwendet werden: <syntaxhighlight lang="C"> signed int vari=-10; unsigned int varu=3000000000; printf("vari=%d varu=%u",vari,varu); //Korrekt printf("vari=%u varu=%i",vari,varu); //Falsche Werteausgaben! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> int main(int argc,char *argv[]) { signed int vari=-10; unsigned int varu=3000000000; printf("vari=%12d varu=%12u\n",vari,varu); //Korrekt printf("vari=%12u varu=%12i\n",vari,varu); //Falsche Werteausgaben! return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Mit der Definition (dem Anlegen) einer Variablen eines Datentyps wird Speicher entsprechend der Größe des Datentyps reserviert. Optional kann dieser Speicher initialisiert werden. Über den Datentyp wird ausgesagt, wie der Inhalt des Speichers zu interpretieren ist: <syntaxhighlight lang="C"> char var1; //Speicherplatzreservierung von 1 Byte //Inhalt der Speicherstelle wird als Zahl interpretiert //(Hinweis: ASCII-Zeichen sind Zahlen) double var2=47.11; //Speicherplatzreservierung von 8 Byte //Inhalt der Speicherstellen wird als Gleitkommazahl //interpretiert (bestehend aus je einer Ganzzahl für //Mantisse und Exponent) short arr[10]; //Speicherplatzreservierung von 10*2 Byte //Inhalt der 10 Speicherstellen werden als Ganzzahl //interpretiert </syntaxhighlight> Die Funktionalität der Operatoren hängt vom Datentyp der Operanden ab. Der Plus-Operator angewendet auf ganzzahlige Operanden führt eine Ganzzahl Addition aus, angewendet auf gleitkomma Operanden eine Gleitkomma Addition. Ist einer der Operanden ein Zeiger, so wird eine Zeigeraddition angewendet. Für andere Datentypen ist der Plus-Operator nicht definiert, so dass der Compiler einen Fehler wirft. '''Bei der Betrachtung eines Ausdruckes sollte dem genutzten Datentypen folglich eine besondere Aufmerksamkeit zuteil werden''': <syntaxhighlight lang="C"> int vari=47; vari+12; //(int) + (int) → Ganzzahladdition float varf=12.3; 3.1415F+varf; //(float) + (float) → Gleitkommaaddition int *ptr=&vari; ptr+3; //(int *) + (int) → Zeigeraddition int arr[3]; arr+3; //(int (*)) + (int) → Zeigeraddition </syntaxhighlight> Das Ergebnis einer Operation hat ebenfalls einen Datentyp. Eine Ganzzahl Addition gibt bspw. als Ergebnis einen Ganzahl Datentyp zurück, eine Gleitkomma Addtition einen Gleitkomma Datentyp und ein Vergleichsoperator den Datentyp _Bool: <syntaxhighlight lang="C"> int vari1=47; int vari2=11; vari1 + 12 + vari2; //((int)+(int)+(int))→((int)+(int))→(int) 40 < vari1 < 50; //((int)<(int)<(int))→((_Bool=int)<(int))→(_Bool=int) </syntaxhighlight> Wie Operatoren haben auch Funktionen Operanden (in Form von Übergabeparameter). Das Ergebnis eines Funktionsaufrufes wird ebenfalls in Form eines Datentyps zurückgegeben: <syntaxhighlight lang="C"> float add(int par1,par2) {return par1+par2;} int vari1=47; int vari2=11; vari1 + add(var2,12); //(int)+((int),(int)→(float))→(int)+(float)→(float) </syntaxhighlight> Wird auf einen Operator gleichermaßen ein vorzeichenbehafteter und ein vorzeichenloser Operand angewendet, so kann es zu unerwarteten Konvertierungsproblemen führen: <syntaxhighlight lang="C"> unsigned char varu=12; signed char vars=-12; float varf; varf = varu + vars; if(vars < varu) </syntaxhighlight> Sind die Datentypen der Operanden nicht 'kompatibel', so 'passt' der Compiler die Datentypen im Falle von Ganzahl und Gleitkomadatentypen per impliziter Regel an (siehe Kap. [[Programmieren in C/C++: Datentypen#Implizite Typumwandlung | Datentypen:Implizite Typumwandlung]]). Über explizite Typumwandlung (siehe Kap.[[Programmieren in C/C++: Datentypen# Explizite Typumwandlung|Datentypen:Explizite Typumwandlung]]) kann ein Datentyp z.T. in einen anderen Datentyp gewandelt werden. In allen anderen Fällen ist C Typsicher, d.h. der Compiler gibt zumindest eine Warning aus, wenn die Datentypen nicht identisch sind und der Compiler keine implizite Regel anwenden kann. Tipp: * Compiler gibt bei Fehlermeldung oftmals die erwarteten und die vorhandenen Datentyp an. Wenn solch eine Fehlermeldung kommt, sollten sie sich a) überlegen, was wollten sie syntaktisch geschrieben haben und b) was haben sie in der Tat geschrieben. Ein Google nach einer Lösung des Compilerproblems löst zumeist nicht das Problem, sondern umgeht es! Hinweis: * Ein guter Programmierer sollte die Datentypen so wählen, dass: :* die Datentypen zum Inhalt und zum Wertebereiches passen :* keine Datentypkonvertierungen notwendig sind : andernfalls besteht die Gefahr, dass hiermit Laufzeitfehler einprogrammiert werden. * Wenn Datentypkonvertierungen notwendig sind, sollte die explizite Konvertierung genutzt werden == Abhängigkeiten bzgl. Rechnerarchitektur == Kenngrößen von Prozessoren sind unter anderem die Anzahl der Bits für den Datentransport und für Arithmetisch-/Logische-Operationen (→ Datenbreite) und die Anzahl der Bits für die Adressierung des Speichers (→ Adressierungsbreite). Die Datenbreite sagt dabei aus, welche max. Datenbreite ein Maschinenbefehl (zumeist in einem Taktzyklus) transportieren/berechnen kann. Werden programmtechnisch größere Datenbreiten benötigt, bedingt dies, dass hierzu mehrere Maschinenbefehle notwendig sind. Wenn kleinere Datenbreiten notwendig sind, so wird oftmals das Ergebnis abgeschnitten (sofern der Prozessor keine Befehle für den Umgang mit kleineren Datentyp beherrscht): {| class="wikitable" |- ! 32-Bit Datentransport/Operation<br /> bei 32-Bit Datenbreite ! 64-Bit Datentransport/Operation<br /> bei 32-Bit Datenbreite ! 16-Bit Datentransport/Operation<br /> bei 32-Bit Datenbreite |- | <syntaxhighlight lang="C"> int32_t a32,b32; </syntaxhighlight> || <syntaxhighlight lang="C"> int64_t a64,b64; </syntaxhighlight> || <syntaxhighlight lang="C"> int16_t a16,b16; </syntaxhighlight> |- | <syntaxhighlight lang="asm"> // a32=b32; mov eax,b32 mov a32,eax </syntaxhighlight> || <syntaxhighlight lang="asm"> // a64=b64; mov eax ,b64 mov edx ,b64+4 mov a64 ,eax mov a64+4,edx </syntaxhighlight> || <syntaxhighlight lang="asm"> //a16=b16; movz eax,b16 mov a16,ax </syntaxhighlight> |- | <syntaxhighlight lang="asm"> // a32=a32+b32; mov edx, a32 mov eax, b32 add eax, edx mov a32, eax </syntaxhighlight> || <syntaxhighlight lang="asm"> // a64=a64+b64; mov ecx , a64 mov ebx , a64+4 mov eax , b64 mov edx , b64+4 add eax , ecx adc edx , ebx mov a64 , eax mov a64+4, edx </syntaxhighlight> || <syntaxhighlight lang="asm"> // a16=16+b16; movzx eax, a16 mov edx, eax movzx eax, b16 add eax, edx mov a16, ax </syntaxhighlight> |} Die Adressierungsbreite gibt an, mit welcher Bitbreite der Speicher adressiert werden kann: * Bei einem 32-Bit System können 2<sup>32</sup>=4.294.967.295=4Gi&nbsp;Bytes/Speicherstellen adressiert werden * Bei einem 16-Bit System können 2<sup>16</sup>=65.536=64Ki&nbsp;Bytes/Speicherstellen adressiert werden * Bei einem 64-Bit System können 2<sup>64</sup>=18.446.744.073.709.551.616 =16Ei ~18Exa&nbsp;Bytes/Speicherstellen adressiert werden Waren die Datenbreite und die Adressierungsbreite bei den ersten Prozessoren noch unterschiedlich, so sind diese heutzutage zumeist identisch. Bei einem 32-Bit Prozessor bedeutet dies, dass dieser max. 4Gi&nbsp;Bytes Speicherstellenstellen adressieren kann und Maschinenbefehle für den Datentransport und die Berechnung von 32-Bit Datenworten beinhaltet. Die Datenbreite und auch die Adressierungsbereite haben direkten Einfluss auf die Programmiersprache: * Wird defaultmäßig mit größerer Datenbreite gerechnet, als der Prozessor 'von Hause' aus unterstützt, so werden die erzeugten Maschinenprogramme größer und langsamer (Umgedreht bedeutet dies jedoch nicht, dass die Maschinenprogramme kleiner und schneller werden) * Die max. Größe von Verbunddatentypen und Arrays ergibt sich aus der Adressierungsbreite des Prozessors Die Intention der Programmiersprache C/C++ ist, die Prozessorarchitektur optimal zu nutzen. Dementsprechend sind diverse Eigenschaften der Sprache nicht fest spezifiziert, sondern von der Rechnerarchitektur abhängig. === Integer Datentyp === Intention von C/C++ ist, dass der Umgang mit dem Grunddatentyp 'int' möglichst direkt in einen Maschinensprachebefehl umgesetzt werden kann.<br /> Bei einem 16-Bit Prozessor hat der Datentyp int daher eine Breite von 16-Bit und bei einem 32-Bit Prozessor eine Breite von 32-Bit (siehe Kap [[Programmieren in C/C++: Datentypen # Ganzzahlige Datentypen|Datentypen:Ganzahl Datentypen]]). Über vorangestellte Qualifier kann dieser Grunddatentyp verkleinert/vergrößert werden. === Integer Arithmetik === Ganzzahlen haben nur einen begrenzten Wertebereich. Wird dieser bspw. durch eine Addition überschritten (d.h. das Rechenergebnis benötigt zur Darstellung mehr Stellen, als der Datentyp 'hergibt'), so gibt es zwei Vorgehensweisen: * Arithmetischer Überlauf (siehe {{w|arithmetischer Überlauf}}): Die nicht speicherfähigen Stellen werden verworfen, so dass i.d.R. ein falsches Ergebnis erzeugt wird! :Beispiel: :<syntaxhighlight lang="C"> unsigned char a=254,b=3,c; c=a+b; //c ist (254+3)%256=1 c=a*b; //c ist (254*3)%256=250 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { unsigned char a=254,b=3,c1,c2; c1=a+b; //c ist (254+3)%256=1 c2=a*b; //c ist (254*3)%256=250 printf("c1=%hhu c2=%hhu\n",c1,c2); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Sättigungsarithmetik (siehe {{w|Sättigungsarithmetik}}): Alle Operationen laufen innerhalb eines festen Intervalls ab, so dass Überläufe und Unterläufe auf dieses Intervall begrenzt werden: :Beispiel: :<syntaxhighlight lang="C"> unsigned char a=254,b=3,c; c=a+b; //c ist MAX((254+3),255)=255 c=a*b; //c ist MAX((254*3),255)=255 </syntaxhighlight> Die Spezifikation von C macht bezüglich der zu nutzenden Methodik keine Vorgaben, so dass das Handling von der ALU des Prozessors abhängt. Aus Komplexitäts- und Geschwindigkeitsgründen ist dies zumeist der arithmetische Überlauf. Nur bei Spezialprozessoren (z.B. DSP Digital Signal Processor) kommt z.T. die Sättigungsarithmetik zum Einsatz. === Gleitkomma Datentyp und Arithmetik === Für den Umgang mit Gleitkommazahlen bieten einige Prozessoren spezielle Recheneinheiten ({{w|Gleitkommaeinheit}} Floating Point Units FPU) an. Sowohl die Darstellung von Gleitkommazahlen als auch das Verhalten bei Überlauf/Unterlauf ist damit Herstellerabhängig. Um auch diese Einheiten effektiv nutzen zu können, ist die C/C++ Spezifikation in diesem Bereich ebenfalls sehr offen. === Max. Speicherbedarf von Variablen === Die maximale Größe von Arrays/Strukturen/Unions ist in C/C++ von der zugrundeliegenden Rechnerarchitektur abhängig: <syntaxhighlight lang="C"> char a[100000]; //Speicherbedarf=100.000*1Byte=100.000 Bytes //Bei 16-Bit Architektur KO //Ab 32-Bit Architektur OK struct size_16 { char a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_256 { struct size_16 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_4096 { struct size_256 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_65536 { struct size_4096 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_65536 var65536; //Speicherbedarf=65536 Bytes //Bei 16-Architektur KO //Ab 32-Architektur OK </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //Zur Darstellung bitte Compiler-Fenster öffnen //und dort den CC65-Compiler für den 6502 Prozessor auswählen char a[100000]; //Speicherbedarf=100.000*1Byte=100.000 Bytes //Bei 16-Bit Architektur KO //Ab 32-Bit Architektur OK struct size_16 { char a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_256 { struct size_16 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_4096 { struct size_256 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_65536 { struct size_4096 a,b,c,d,e,f,g,h, i,j,k,l,m,n,o,p; }; struct size_65536 var65536; //Speicherbedarf=65536 Bytes //Bei 16-Architektur KO //Ab 32-Architektur OK int main(int argc,char *argv[]) { return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Im Falle von globalen Variablen erzeugt der Compiler/Linker eine Fehlermeldung. Werden von diesen Datentypen Variablen als lokale Variablen angelegt, so erzeugt dies zur Laufzeit einen Stackoverflow. === Zeigervariable === Eine Zeigervariable ist eine Variable, die eine Speicheradresse speichert. Die Größe dieses Datentyps hängt von der Adressierungsbreite des Prozessors ab. Unabhängig von dem Datentyp, auf den die Zeigervariable zeigt, ergibt sich folgende Breite: * 4-Byte bei einer 32-Bit Rechnerarchitektur * 8-Byte bei einer 64-Bit Rechnerarchitektur * 2-Byte bei einer 16-Bit Rechnerarchitektur === Datentyp size_t === Die maximale Größe von Arrays/Strukturen/Unions ist in C von der zugrundeliegenden Rechnerarchitektur abhängig. Sie ergibt sich aus der Adressierungsbreite. Da die Datenbreite des Datentyps int zumeist kleiner als die Adressierungsbreite ist, existiert in C/C++ der vorzeichenlose Datentyp size_t.<br /> Alle Funktionen, welche den Speicherbedarf übergeben bekommen, bzw. zurückgeben (bspw. strlen(), memcpy(), sizeof()) , nutzen den Datentyp size_t: <syntaxhighlight lang="C"> //Prototypen size_t strlen(char *str); //Die max. Stringlänge ist durch den //adressierbaren Speicher vorgegeben void *malloc(size_t size); void *memcpy(void *dest, const void *src, size_t n); </syntaxhighlight> Der Datentyp size_t ist in der Header-Datei stddef.h der Standard-C-Library per typedef gesetzt. Im Normalfall muss diese Header-Datei nicht explizit inkludiert werden, da bei Nutzung von z.B. strlen() diese bereits durch die Header-Datei string.h inkludiert wird: <syntaxhighlight lang="C"> typedef unsigned long long size_t; //Bei einer 64-Bit Rechnerarchitektur </syntaxhighlight> Hinweis: * Der Datentyp size_t ist immer ein vorzeichenloser Datentyp (es gibt keine negativen Speicheradressen). * Mit dem Datentype ssize_t wird eine vorzeichenbehaftete Variante zur Verfügung gestellt, welche hilfreich ist, wenn Speicheradresse subtrahiert werden sollen. * Soll der Wert vom Datentyp size_t mittels printf() ausgegeben werden, so ist der 'Length Modifier' z und der 'Conversion Specifier' u zu nutzen: :<syntaxhighlight lang="C"> size_t var=strlen("String"); printf("%zu",var); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc,char *argv[]) { size_t var=strlen("String"); printf("%zu",var); printf("%d",var); //Hier sollte es eine Compiler-Warning geben! return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Boolescher-Datentype/Operatoren == Ursprünglich gab es den booleschen Datentyp in der Programmiersprache C nicht. Mit C99 wurde zwar der Datentyp <code>_Bool</code> eingeführt, dies änderte jedoch nicht den Umgang mit Anweisungen und Operatoren, die einen booleschen Datentyp erwarten/zurückgeben! An allen Stellen, an denen ein boolescher Datentyp erwartet wird (z.B. IF-Abfrage, bei booleschen Operationen) wird der Datentyp Ganzzahl, Gleitkommazahl oder Zeiger erwartet (= Scalar-Type) und ausgewertet. Der hierin gespeicherte Zahlenwert sagt aus, ob diese Zahl als True oder False zu interpretieren ist: * False, wenn Ganzzahl gleich 0 oder Gleitkommazahl gleich 0.0 oder Zeiger gleich NULL * True, wenn Ganzzahl ungleich 0 oder Gleitkommazahl ungleich 0.0 oder Zeiger ungleich NULL Beispiel: <syntaxhighlight lang="C"> int a=3; double b=0.0; int *ptr=&a; while(1); if(a) {} for( ; b && ptr ; ); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=3; double b=0.0; int *ptr=&a; while(0); if(a) {} for( ; b && ptr ; ) {} return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Operatoren, welchen einen booleschen Wert zurückliefern (Vergleichs-Operatoren und Boolesche-Operatoren), liefern ein Integer-Datentyp zurück: * (int)0 für False * (int)1 für True Beispiel: <syntaxhighlight lang="C"> int a=3; int b= (a==3); //b=1 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=3; int b= (a==3); //b=1 printf("%d",b); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} In den if()/for()/while() Anweisungen ist folglich kein explizites Konvertieren eines Ganzzahl-/Gleitkomma-/Zeigerwertes mittels des Vergleichs-Operators in einen Booleschen Wert notwendig: <syntaxhighlight lang="C"> int a; double b; if(a) //entspricht if(a!=0) if(!b) //entspricht if(b==0.0) while(1) //entspricht while(True) for(int lauf=1; lauf ; lauf--); </syntaxhighlight> Umgedreht kann ein boolescher Wert oder auch das Ergebnis einer booleschen Operation direkt mit einer Ganzzahl- oder Gleitkommazahl verknüpft werden: <syntaxhighlight lang="C"> int a=3,b=2; a=a+1 && 7 << 3 & a==3; if( a==1 & b==2) if(3 < a < 9) //Vorsicht, die Schreibweise lässt ein //anderes Verhalten erwarten! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=3,b=2; a=a+1 && 7 << 3 & a==3; printf("%d\n",a); if(a==1 & b==2) printf("true\n"); else printf("false\n"); if(3 < a < 9) if( (a==1) & (b==2)) printf("true\n"); else printf("false\n"); return 0; } | execCompilerOptions=| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Mit C99 wurde der Datentyp <code>_Bool</code> eingeführt. Dieser entspricht weiterhin einem Integerdatentyp mit der Besonderheit, dass beim Zuweisen eines Wertes dieses auf true oder false geprüft wird und Variablen dieses Datentyps nur die Werte 0 oder 1 annehmen können: <syntaxhighlight lang="C"> _Bool var1=12; printf("var1=%d\n",var1); //→ 1 float var2=13.2; var1=var2; printf("var1=%d\n",var1); //→ 1 var1--; //Post/Pre Inkrement/Dekrement in C++ nicht auf Datentyp bool! möglich printf("var1=%s\n",var1?"true(1)":"false(0)"); //→ false </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { _Bool var1=12; printf("var1=%d\n",var1); //→ 1 float var2=13.2; var1=var2; printf("var1=%d\n",var1); //→ 1 var1--; //Post/Pre Inkrement/Dekrement in C++ nicht auf Datentyp bool! printf("var1=%s\n",var1?"true(1)":"false(0)"); //→ false return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Für den einfacheren Umgang mit dem 'neuen' Datentyp wurde in der Header-Datei <code>stdbool.h</code> die Makros <code>true</code> (als Austauschwert für die Ganzzahl 1) und <code>false</code> (als Austauschwert für die Ganzahl 0) definiert. Ergänzend wird hier der Datentyp <code>bool</code> als Alias auf <code>_Bool</code> gesetzt. <syntaxhighlight lang="C"> #include <stdbool.h> bool foo(int par,int min,int max) { if((par >= min) && (par <= max)) return true; else return false; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdbool.h> bool foo(int par,int min,int max) { if((par >= min) && (par <= max)) return true; else return false; } int main(int argc,char *argv[]) { foo(4,3,6); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * In C++ gibt es anstatt des Datentypes <code>_Bool</code> den Datentyp <code>bool</code>. Auch sind die beiden Konstanten <code>true</code> und <code>false</code> ohne zusätzliches Einbinden der Header-Datei vorhanden. Der weitere Umgang ist jedoch identisch zu C. == Literale/Konstanten == Zahlenwerte und Strings im Source-Code werden vom Compiler in binäre Zahlen umgerechnet. Über der Schreibweise/Syntax der Literale/Konstanten wird dem Compiler gesagt, in welchem Zahlenformat die Zahl auf Source-Code Ebene beschrieben ist und welchem Datentyp sie entspricht. Unabhängig wie die Konstanten im Source-Code beschrieben sind, werden die Zahlen intern als binäre Zahlen gespeichert. Beispiele, wie die Zahlen intern gespeichert werden: <syntaxhighlight lang="C"> int var=17; //0000 0000 0000 0000 0000 0000 0001 0001 short var=0x307;// 0000 0011 0000 0111 char var=017; // 0000 1111 int var=-1; //1111 1111 1111 1111 1111 1111 1111 1111 float var=0.0; //0000 0000 0000 0000 0000 0000 0000 0000 float var=1.0; //0011 1111 1000 0000 0000 0000 0000 0000 </syntaxhighlight> === Ganzzahl-Konstanten === Im Allgemeinen ordnet der Compiler einer numerischen, ganzzahligen Konstanten den kleinstmöglichen Datentyp beginnend vom Datentyp integer zu. Sobald der Wert der Konstanten den Wertebereich von integer übersteigt, wird der nächst größere passende Datentyp gewählt. Ergänzend gilt, dass alle Ganzzahl-Konstanten als vorzeichenbehaftete Ganzzahl-Konstanten angesehen werden!<br /> Beispiele für integer Konstanten: <pre> 123 +123 -123 → Formal wird das Minus als Operator angesehen und die positive Zahl 123 negiert 0x123 → Konstante ist in hexadezimaler Schreibweise notiert 0123 → Konstante ist in oktaler Schreibweise notiert 0b011 → Konstante ist in binärer Schreibweise notiert nicht offizieller C-Syntax, wird aber von vielen Compiler unterstützt ab C23-Spezifikation offiziell im C-Syntax enthalten! 6'432'108 → Tausendertrenner Nur in C++ Spezifikation enthalten ab C23-Spezifikation auch im C-Syntax enthalten. 5123123123 → Wertebereich größer als 2^31 so dass automatisch zum nächst größeren Datentyp konvertiert wird </pre> Mit den Suffixen L/l und LL/ll kann der Datentyp long und long long erzwungen werden: <pre> 12L → Konstante wird in eine long Integer Konstante konvertiert 4711LL → Konstante wird in eine Long Long Konstante konvertiert </pre> Mit dem Suffix U/u kann die Konstante explizit auf unsigned gesetzt werden: <pre> 12U → Konstante wird als vorzeichenlose Zahl gesepeichert 4711ULL → Konstante wird in eine vorzeichenlose Long Long Konstante konvertiert </pre> === Char-Konstanten === In einfachen Anführungsstrichen geschriebene ASCII Zeichen werden entsprechend der {{w|American Standard Code for Information Interchange | ASCII-Tabelle}} als Zahlenwert (Datentyp int) dargestellt: <pre> 'A' → Integerkonstante 65 'a' → Integerkonstante 97 … </pre> Über den {{w|Escape-Sequenz|Escape-Operator}} (Zeichen Backslash '\') wird das/die dem ESCAPE Operator folgende Zeichen gesondert interpretiert. Die im Source-Code erhaltene Zeichenfolge wird im Computerprogramm als ein Zahlenwert (Datentyp int) gespeichert. Dies ist u.A. zur Darstellung von ' und " aber auch zur Darstellung der unteren 32 Zeichen der ASCII Tabelle notwendig (Siehe auch {{w|Steuerzeichen}}) <pre> ESCAPE Integer- → Bedeutung / (Terminal)funktionalität Sequence konstante '\0' = 0 → 0 Character = Stringendezeichen '\a' = 7 → Bell (erzeugt auf dem Terminal einen Ton) '\b' = 8 → Backspace (Bewegt den Cursor um eine Position nach links) '\t' = 9 → Horizontal Tab (Bewegt den Curso auf die nächste horizontale Tabulatorposition, Abstand ist Terminalspezifisch) '\n' = 10 → NewLine (Zeilenvorschub) '\v' = 11 → Vertial Tab '\r' = 13 → Carriage Return (Wagenrücklauf, Bewegt den Cursor an den Zeilenanfang) '\"' = 34 → Double Quote '\'' = 39 → Single Quote '\?' = 63 → Question mark '\\' = 92 → Backslash '\f' = 12 → FormFeed (Erzeugt auf dem Terminal/Drucker einen Seitenvorschub) '\ooo' = 0ooo → Oktal, wobei o Digits von 0..7 sein müssen '\xdd' = 0xdd → Hexadezimal, wobei d Digits von 0..9 A..F sein müssen '\udddd' Unicode mit 4 Digits '\Udddddddd' Unicode mit 8 Digits </pre> Beispiel <syntaxhighlight lang="C"> 'A' == 65 == '\101' == '\x41' == '\u0041' == '\U00000041' </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { //Programmiersprache wurde auf C++ gesetzt if('A' == 65) printf("'A' == 65\n"); if('A' == '\101') printf("'A' == '\\101'\n"); if('A' == '\x41') printf("'A' == '\\x41'\n"); if('A' == '\u0041') printf("'A' == '\\u0041'\n"); if('A' == '\U00000041') printf("'A' == '\\U00000041'\n"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true| lang=c++ }} Öffnen im Compiler Explorer] }} Über Prefixe können alternative Zieldatentypen/Konvertierungen erzwungen werden: <pre> u'b' → unicode 16 (nur C++) U'b' → unicode 32 (nur C++) L'b' → wchar_t </pre> Hinweis * Die ASCII-Tabelle basiert auf einer 7-Bit Zeichenkodierung, so dass bspw. die Umlaute 'ä', 'ö' und 'ü' dort nicht kodiert sind. Sollen auch diese Zeichen genutzt werden, so empfiehlt sich der Datentyp wchar_t === Gleitkommakonstanten === Alle Gleitkommakonstanten sind ohne weitere Angaben vom Datentyp double! <pre> 555.12 555. → 555.0 .1 → 0.1 4e2 → 400.0 0x22.11p13 → Konstante in Hexadezimalen Schreibweise (ab C99) </pre> Über Suffixe kann ein alternativer Datentyp erzwungen werden: <pre> 3.0F → Datentyp float 3.0l → Datentyp long double </pre> Hinweis: * Aufgrund der unterschiedlichen Basis zwischen dem menschlichen Zehner-System und dem computerinternen Binär-System entstehen insbesondere bei den Nachkommastellen Rundungsfehler. Die Konstante 0.1f wird durch die Wandlung intern als 1.00000001490116119384765625e-1 dargestellt * Die C-Spec verlangt, dass die binäre Repräsentation von Gleitkommazahlen zur Laufzeit (z.B. durch die Funktion atof() strtod() scanf("%f")) identisch zur der zur Compilezeit ist. Beispiel: :<syntaxhighlight lang="C"> if(3.14==atof("3.14")) printf("muss erfüllt sein"); //3.14 wird vom Compiler in ein Binärwert gewandelt //Der String "3.14" wird zur Laufzeit mittels atof in ein Binärwert gewandelt //Beide Wandlungsergebnisse müssen identisch sein </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { if(3.14==atof("3.14")) printf("muss erfüllt sein\n"); //3.14 wird vom Compiler in ein Binärwert gewandelt //Der String "3.14" wird zur Laufzeit mittels atof in ein Binärwert gewandelt //Beide Wandlungsergebnisse müssen identisch sein printf("Intern wird 3.14 wie folgt dargestellt %14.20f",3.14); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Konstanten Ausdrücke === Ergänzend zu den Zahlenwerten werden auch Ausdrücke durch den Compiler ausgewertet. Als Voraussetzung für die Ausdrücke gilt, dass alle Operatoren Literale/Konstante sein müssen, so dass der Compiler die Berechnung durchführen kann. Als Operatoren können alle im normalem Syntax erlaubten Operatoren (z.B.: +,-,*,/,&,&&,|,||,>>,<<,==,!=) genutzt werden.<br /> Beispiel: <syntaxhighlight lang="C"> int var1=7*3+5; → wird vom Compiler durch 26 ersetzt int var2=(4710+(8-1))&-8; → wird vom Compiler durch 4712 ersetzt var1=4*4*var1+77*(77%3); → wird vom Compiler durch 16 * var1 + 154 ersetzt </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { int var1=7*3+5; //→ wird vom Compiler durch 26 ersetzt int var2; var2=(4710+(8-1))&-8; //→ wird vom Compiler durch 4712 ersetzt var1=4*4*var1+77*(77%3); //→ wird vom Compiler durch var1 * 16 + 154 ersetzt return 0; } | execCompilerOptions=-Wall| h=g| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Konform zur C-Spezifikation bieten einige Compiler weitere Operatoren aus der math.h Library an (z.B. sin(), cos(), ...). Bestehen die Aufrufparameter aus Konstanten, so ersetzt der Compiler den Ausdruck durch die 'Ergebnis'-Konstante: :<syntaxhighlight lang="C"> int var3=sin(1.0)*10; →wird vom Compiler durch 8 ersetzt </syntaxhighlight> * Konstanten Ausdrücke werden durch den Präprozessor ausgewertet, so dass dieser die Ergebnisse ebenfalls nutzen kann: :<syntaxhighlight lang="C"> #define BUF_SIZE 512 #if (BUF_SIZE & (BUF_SIZE -1)) != 0 #endif </syntaxhighlight> === String Konstanten === Stringkonstanten erzeugen ein Array von Characters. Mit dem abschließenden Hochkommata wird das Array um ein Stringendezeichen ergänzt: <pre> "abc" → (char []) {'a','b','c','\0'} </pre> Adjacent Strings Konstanten werden vom Compiler zu einer String-Kontante zusammengefasst, so dass nur ein Stringendezeichen vorhanden ist: <pre> "xxx" "yyy" → (char []) {'x','x','x','y','y','y','\0'} </pre> Über Prefixe können alternative Zieldatentypen/Konvertierungen erzwungen werden: <pre> L"string" → (wchar_t[7]){L's',L't',L'r' …) </pre> Über Postfixes können in C++ Objekte erzeugt werden: <pre> "string"s → erzeugt einen String vom Datentyp std::string "string"sw → Erzeugt einen String vom Datentyp std::string_view </pre> String Konstanten werden Compilerintern über unnamed Variablen realisiert, welche als globale Variable angelegt werden und per default const sind: <syntaxhighlight lang="C"> printf("Wert=%d",4); //entspricht const char unnamed1[]="Wert=%d"; printf(unnamed1,4); //String Konstanten sind per Default Konstant char *str="hallo"; //Typkonflikt!, da "hallo" vom Datentyp const char[] ist str[0]='H'; //Laufzeitfehler, da nun schreibender Zugriff auf im //Readonly Speicher angelegt Variable. </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { printf("Wert=%d\n",4); //entspricht const char unnamed1[]="Wert=%d\n"; printf(unnamed1,4); fflush(stdout); //Zur Darstellung der Ausgabe, da nachfolgend //das Programm abstürzt und die gepufferte Ausgabe //nicht zur Anzeige gebracht wird //String Konstanten sind per Default Konstant char *str="hallo"; //Typkonflikt!, da "hallo" vom Datentyp const char[] ist str[0]='H'; //Laufzeitfehler, da nun schreibender Zugriff auf im //Readonly Speicher angelegt Variable. return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Für doppelte String Konstanten wird nur einmal Speicher reserviert: <syntaxhighlight lang="C"> const char *str1="hallo"; const char *str2="hallo"; if(str1==str2) printf("Identische Startadressen"); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { const char *str1="hallo"; const char *str2="hallo"; if(str1==str2) printf("Identische Startadressen"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Initialisierungsliste / Compound Literal == Arrays, Strukturen und Unions bestehen zumeist aus mehreren Elementen. Zur Initialisierung solcher Variablen werden die Initialisierungswerte in geschweiften Klammern als Initialisierungsliste zusammengefasst. <code> Syntax: {Initialisierungsliste} </code> Für eine Initialisierungsliste wird kein Speicher vorgehalten. Vielmehr wird bei der Variablendefinition die Variable direkt mit dem Inhalt der Liste initialisiert. Der Datentyp der Initialisierungsliste ergibt sich aus dem Datentyp der zu initialisierenden Variable: <syntaxhighlight lang="C"> int arr[5] = { 1,2,3,4,5 }; struct xyz { int x,y,z;}; //Definition einer Struktur struct xyz var = { 1,2,3 }; </syntaxhighlight> Wird der Initialisierungsliste ein Datentyp in runden Klammern vorangestellt, so wird hiermit eine 'unnamend' Variable/Objekt, ein Compound Literal erstellt: <code> Syntax: (type) {Initialisierungsliste} </code> Ein Compound Literal entspricht einer anonymen Variablen des angegebenen Datentyps. Wie bei einer normalen Variablendefinition wird hier ebenfalls eine Variable angelegt und diese mit den Initialisierungswerten initialisiert. Im Unterschied zu einer normalen Variable kann auf solch eine Variable im Nachgang nicht mehr zugegriffen werden. Der Rückgabewert eines Compound Literals entspricht somit dem einer Variablen.</br> Compound Literale bieten sich überall dort an, wo Variablen nur für einen einmaligen Zweck angelegt werden (bspw. bei der Parameterübergabe von Funktionen): <syntaxhighlight lang="C"> struct point {int x; int y;}; drawline((struct point){1,2},(struct point){2,3}); printarray((int []){1,2,3,4}); //entsprechen struct point unnamed1={1,2},unnamed2={2,3}; drawline(unnamed1,unnamed2); int unnamed3[]={1,2,3,4}; printarray(unnamed3); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct point {int x,y;}; void drawline(struct point start,struct point end) { printf("Linie von (%d,%d) nach (%d,%d)\n",start.x,start.y,end.x,end.y); } void printarray(int arr[4]) { printf("[ "); for(size_t idx=0;idx<4;idx++) printf("%d ",arr[idx]); printf("]\n"); } #include <stdlib.h> int main(int argc,char *argv[]) { struct point {int x; int y;}; drawline((struct point){1,2},(struct point){2,3}); printarray((int []){1,2,3,4}); //entsprechen struct point unnamed1={1,2},unnamed2={2,3}; drawline(unnamed1,unnamed2); int unnamed3[]={1,2,3,4}; printarray(unnamed3); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Über den Adressoperator kann auch die Adresse der anonymen Variablen ermittelt werden. In diesem Falle ist dann der Gültigkeitsbereich/-dauer des Compound Literals zu berücksichtigen. Wird eine Compound Literals außerhalb eines Block-Scopes angelegt, so entspricht sie einer globalen Variable, andernfalls einer lokalen Variablen. Außerhalb des Gültigkeitsbereiches verliert die Adresse auf solch eine Variable ihre Gültigkeit: <syntaxhighlight lang="C"> drawlinep( &(struct point){1,2},&(struct point){2,3}); //entspricht struct point unnamed1={1,2},unnamed2={2,3}; drawlinep( &unnamed1, &unnamed2); struct point1, *point2; { //Block-Scope, zwecks Darstellung von lokalen Variablen point1= (struct point){1,2}; //Compound Literal entspricht hier //Initialisierungswert für point1 point2=&(struct point){3,4}; //Compound Literal ist nur in diesem //Block gültig drawlinep(&point1 /*OK*/, point2 /*OK*/); } drawlinep(&point1 /*OK*/, point2 /*KO*/); //Zeiger zeigt auf nicht mehr //gültigen Speicherbereich </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct point {int x,y;}; void drawlinep(struct point *start,struct point *end) { printf("Linie von (%d,%d) nach (%d,%d)\n",start->x,start->y,end->x,end->y); } #include <stdlib.h> int main(int argc,char *argv[]) { drawlinep( &(struct point){1,2},&(struct point){2,3}); //entspricht struct point unnamed1={1,2},unnamed2={2,3}; drawlinep( &unnamed1, &unnamed2); struct point point1, *point2; { //Block-Scope, zwecks Darstellung von lokalen Variablen point1= (struct point){1,2}; //Compound Literal entspricht hier //Initialisierungswert für point1 point2=&(struct point){3,4}; //Compound Literal ist nur in diesem //Block gültig drawlinep(&point1 /*OK*/, point2 /*OK*/); } drawlinep(&point1 /*OK*/, point2 /*KO*/); //Zeiger zeigt auf nicht mehr //gültigen Speicherbereich } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * Compound-Literal sind per Default keine Konstanten, können also zur Laufzeit geändert werden (siehe Kap. [[Programmieren in C/C++: DatentypeSpecifier#Const Type Qualifier|DatentypeSpecifier:Const Type Qualifier]]): :<syntaxhighlight lang="C"> float *arr=(float []){1.1,2.2,3.3}; //Kein Typkonflikt arr[0]=47.11; //Änderung des 'Konstanten' arr[0] ist möglich </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { float *arr=(float []){1.1,2.2,3.3}; //Kein Typkonflikt arr[0]=47.11; //Änderung des 'Konstanten' arr[0] ist möglich return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Die geschweiften Klammern <code>{ }</code> sind nicht mit dem Block-Operator (siehe [[Programmieren in C/C++: Grundlagen#Block / Compound-Statement | Block / Compound-Statement]]) zu verwechseln. Werden die geschweiften Klammern bei der Initialisierung von Variablen genutzt, dann beschreibt der Inhalt der geschweiften Klammern eine Initialisierungsliste. Wird diesen ein Datentyp vorangestellt, dann wird hiermit eine Compound Literal definiert. == Variableninitialisierung == Mit der Definition einer Variable kann diese optional initialisiert werden. Der tatsächliche Zeitpunkt der Variableninitialisierung (zur Laufzeit oder zur Compilezeit) und damit die Ausführung der Initialisierung (Maschinensprachebefehle oder Speichervorbelegung) hängt von der Gültigkeit/Sichtbarkeit der Variablen ab(siehe [[Programmieren in C/C++: Grundlagen#Gültigkeit/Sichtbarkeit von Variablen| Gültigkeit/Sichtbarkeit von Variablen]]). === Globale + Static lokale Variablen === Globale und statisch globale Variablen werden in einem während der Laufzeit des Programms festen Speicherbereich gehalten. Zum Startzeitpunkt des Programms ist der Speicherplatz solch einer Variable mit dem Initialisierungswert gefüllt, so das bei erstmaliger Nutzung dieser Variablen diese ihre Initialisierungswerte enthalten. Die Belegung des Speicherplatzes erfolgt durch den Compiler, so dass als Initialisierungswerte / Inhalt der Initialisierungsliste nur Konstanten oder Konstanten-Ausdrücke (siehe [[Programmieren in C/C++: Grundlagen#Literale/Konstanten | Literale/Konstanten]]) erlaubt sind: <syntaxhighlight lang="C"> int g=1; //Speicherstelle der Variable g wird //mit 1 belegt short array[3]={1,1+1, sin(0.0)}; //Speicherstellen des Arrays wird //mit 1, 2 und 0 (Funktion sin() wird zur //Compilezeit ausgeführt) belegt </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> double sin(double); //DJ: Include-Anweisung in wikibooks schlägt fehlt int g=1; //Speicherstelle der Variable g wird //mit 1 belegt short array[3]={1,1+1, sin(0.0)}; //Speicherstellen des Arrays wird //mit 1, 2 und 0 (Funktion sin() wird zur //Compilezeit ausgeführt) belegt int main(int argc,char *argv[]) { printf("%hd %hd %hd\n",array[0],array[1],array[2]); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Nicht initialisierte globale und static lokale Variablen werden mit 0 initialisiert! D.h. die Speicherstellen dieser Variablen werden mit dem Wert 0 vorbelegt:: <syntaxhighlight lang="C"> int f; //f hat den Wert 0 double arr[10]; //Alle Elemente von arr werden mit 0.0 initialisiert! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int f; //f hat den Wert 0 double arr[10]; //Alle Elemente von arr werden mit 0.0 initialisiert! int main(int argc,char *argv[]) { printf("f=%d\n",f); printf("%f %f %f\n",arr[0],arr[1],arr[2]); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Lokale Variable === Der Speicherplatz für lokale Variable wird auf dem Stack zur Verfügung gestellt. Mit jedem öffnenden Block-Scope wird Speicher für die innerhalb dies Block-Scopes vorhandenen Variablen vom Stack nach dem LIFO Prinzip reserviert und mit der Variablendefinition Maschinencode zur Initialisierung der Speicherstellen ausgeführt (sofern Variable einen Initialisierungswert hat): <syntaxhighlight lang="C"> { //Öffnende Klammer erzeugt Maschinencode zur Speicherreservierung //von 4 Bytes (für int) und 8 Bytes (für double) int var1=12; //erzeugt Maschinencode zur Initialisierung //der ersten 4 Byte mit dem Wert 12 double var2=sin(f); //erzeugte Maschinencode, welche zunächst //die Funktion sin() mit dem Übergabewert f //aufruft und dessen Rückgabewert in die //nächsten 8 Byte des reservierten Speichers //kopiert ... { //siehe zuvor int var3=var1; //siehe zuvor double var4=var2+var1; } //siehe nachfolgenden } //Freigabe des zuvor reservierten Speichers </syntaxhighlight> Dies gilt auch für Funktionsaufrufe. Mit der öffnenden geschweiften Funktionsklammer wird ebenfalls Speicher reserviert: <syntaxhighlight lang="C"> void foo(int par) { //Öffnende Funktionsklammer erzeugt Maschinencode zur Speicherreservierung //von 4 Bytes (für (Übergabe)Variable par und 4 Bytes für Variable var int var; //Da keine Initialisierung vorhanden ist wird auch //kein Maschinencode zur Initialisierung ausgeführt { //Öffnende Klammer erzeugt Maschinencode zur Speicherreservierung //von 4 Byte für Variable x int x; ... </syntaxhighlight> Aufgrund der mit der Initialisierung bedingten Erzeugung von Maschinencode können die Initialisierungswerte/Inhalte der Initialisierungsliste bei lokalen Variablen aus beliebigen Ausdrücken bestehen und müssen keine Konstanten oder Konstanten Ausdrücke sein: <syntaxhighlight lang="C"> void foo(float f,float g) { float summe=f+g; //Initialisierungswerte float arr[3] = {f+f,g-f,sin(f)}; //werden zur Laufzeit berechnet } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> #include <math.h> //fuer sinf() void foo(float f,float g) { float summe=f+g; //Initialisierungswerte float arr[3] = {f+f,g-f,sinf(f)}; //werden zur Laufzeit berechnet printf("%f\n",(double)summe); printf("%f %f %f\n",(double)arr[0],(double)arr[1],(double)arr[2]); } int main(int argc,char *argv[]) { foo(3,4); return 0; } | execCompilerOptions=-Wall -lm| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Dieser Maschinencode wird jedes Mal ausgeführt, wenn die dazugehörige Anweisung abgearbeitet wird und bedingt dementsprechend Rechenzeit. Zehnmaliges Ausführen einer Funktion oder zehnmaliges Öffnen eines Block-Scopes innerhalb einer For-Schleife führt zur zehnmaligen Ausführung der oben genannten Sachverhalte: <syntaxhighlight lang="C"> void foo(int); void var(void) { for(int lauf=10; lauf>0; lauf--) { //zehnmaliges Reservieren von Speicher int var=lauf*2; //zehnmalige Initialisierung foo(var); } //Freigabe des Speichers } void foo(int par) { //zehnmaliges Reservieren von Speicher int var=12; //zehnmalige Initialisierung } //Freigabe des Speichers </syntaxhighlight> Nicht initialisierte lokale Variablen werden nicht initialisiert, d.h. keine zusätzlichen Maschinenbefehle zum Initialisieren erzeugt. Der Variablenwert entspricht dann einem 'Zufallswert' oder korrekter gesagt dem Inhalt der Variablen, welcher zuvor der Speicherstelle zugewiesen war: <syntaxhighlight lang="C"> int first(void) { int var_first=7; return var_first; } int second(void) { int var_second; //Variable var_second bekommt den identischen return var_second; //Speicherbereich wie var_first zugwiesen //und damit auch dessen zuletzt gültigen Wert } int main(int argc, char *argv[]) { int var1=first(); //var1 beinhaltet Wert 7 int var2=second(); //var2 beinhaltet Wert 7 printf("var_foo=%d\n",var1); printf("var_far=%d\n",var2); return 0; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> int first(void) { int var_first=7; return var_first; } int second(void) { int var_second; //Variable var_second bekommt den identischen return var_second; //Speicherbereich wie var_first zugwiesen //(und damit auch dessen zuletzt gültigen Wert) } int main(int argc, char *argv[]) { printf("%d\n",second()); //Zufallswert (0, da Stack mit 0 initialisiert ist) printf("%d\n",first()); //Stack belegen printf("%d\n",second()); //Zufallswert (7, da Speicherstelle zuvor mit 7 return 0; //belegt wurde) } | execCompilerOptions=| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Wird eine Variableninitialisierung mit einer switch oder goto Anweisung übersprungen, so wird zwar die Variable angelegt (Speicherplatz reserviert), jedoch die Maschinenbefehle zur Initialisierung dieser Variablen nicht ausgeführt (siehe auch [[Programmieren in C/C++: Grundlagen# Switch-Anweisung|Switch-Anweisung]] und [[Programmieren in C/C++: Grundlagen# Label + Goto|Label + Goto]]). Die Variable enthält dann einen Zufallswert: <syntaxhighlight lang="C"> switch(value) { case 0: int lok=7; printf("%d",lok); //OK, lok beinhaltet den Wert 7 break; default: printf("%d",lok); //KO, Variable lok vorhanden, //aber nicht initialisiert. D.h. Ausgabe einer break; //Zufallszahl } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> void foo(int value) { switch(value) { case 0: int lok=7; printf("%d\n",lok); //OK, lok beinhaltet den Wert 7 break; default: printf("%d\n",lok); //KO, Variable lok vorhanden, //aber nicht initialisiert. D.h. Ausgabe einer break; //Zufallszahl } } void far(void) { int var1=4711; int var2=1799; printf("Marke: %d, Erscheinungsjahr: %d\n",var1,var2); } int main(int argc,char *argv[]) { foo(2); //Zufallswert (0, da Stack mit 0 initialisiert ist) foo(0); //Initialisierungswert far(); //Stack belegen foo(2); //Zufallswert return 0; } | execCompilerOptions=| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Bei erstmaligem Funktionsaufruf kann eine nicht initialisierten lokale Variablen den Wert 0 beinhalten (Stackframe wird mit Programmstart auf 0 gesetzt). Beim nächsten Aufruf der Funktion ist zumeist die Speicherstelle der lokalen Variablen mit anderen Werten gefüllt worden, so dass nun ein anderer 'Zufallswert' als 'Initialisierungswert' enthalten ist === C++ === In C++ ist ergänzend die Initialisierung einer Variablen über () möglich. Bei Objekten wird hierüber der zugehörige Konstruktor aufgerufen. Bei primitiven Datentypen entspricht der Wert in den Klammern dem Initialisierungswert: <syntaxhighlight lang="C++"> int variable(10); //Bei primitiven Datentype entspricht dies //int variable=10; struct test { int a; test(int par) {a=par;} //Konstruktor der Struktur test }; struct test test(4); //Konstruktor test(int par) wird aufgerufen struct test test(4,5); //KO, kein passender Konstruktor vorhanden </syntaxhighlight> === Sonstiges === Folgende weitere Sachverhalten gilt es bzgl. Variableninitialisierung zu berücksichtigen: * Nach C-Spezifikation ist eine Initialisierung von Variablen nicht notwendig. Es liegt folglich kein Fehler vor, wenn auf eine nicht initialisierte Variable lesend zugegriffen wird. Ungeachtet der C-Spezifikation überprüft der Compiler mit dem Schalter '-Wall' diesen Sachverhalt und gibt eine Warning aus * Deklarationen/Prototypen können keinen Initialisierungswert enthalten <syntaxhighlight lang="C++"> extern int var=7; //Fehlerhaft </syntaxhighlight> * Const und lokale Static Variablen sollten initialisiert werden, auch wenn C in diesem Fall keinen Fehler meldet! <syntaxhighlight lang="C++"> const int konstante; //Syntaktisch OK, Initialisierungswert fraglich! static int statisch; </syntaxhighlight> == Anweisung (Statement) & Expression == Eine Anweisung (Statement) stellt entsprechend dem Wikipedia Artikel {{w|Anweisung_(Programmierung) | Anweisung}} ''"ein in der Syntax einer Programmiersprache formulierte einzelne Vorschrift dar, die im Rahmen der Abarbeitung des Programms auszuführen ist"''. Entsprechend der C-Spezifikation [C11 6.8] kann eine Anweisung aus: : labled-statement: Eine Sprungmarke für die Switch- und die Goto-Anweisung : compound-statement: siehe nachfolgendes Kapitel : expression-statement: siehe nachfolgendes Kapitel : selection-statement: Eine if() oder switch() Anweisung : iteration-statement: Eine while(), do while() oder eine for() Anweisung : jump-statement: Eine goto, break, continue oder return Anweisung Die einzelnen Statements können dabei aus weiteren Statements bestehen. === Ausdruck (Expression) === Entsprechend der C-Spezifikation [C11 6.5] ist ein Ausdruck eine Folge von Operatoren und Operanden, die die Berechnung eines Werts angibt, ein Objekt oder eine Funktion bezeichnet, Nebenwirkungen erzeugt oder eine Kombination davon ausführt. Die Wertberechnungen der Operanden eines Operators werden vor der Wertberechnung des Ergebnisses des Operators sequenziert (siehe auch {{w|lang=en|Expression_(computer_science)|Expression}}). Beispiele: <syntaxhighlight lang="C"> a=sqrt(a*a+b*b); //Ausdruck mit Nebenwirkungen int func(int par) { a++; return par*2;} b=func(1)*func(2); //Ausdruck mit undefinierten Verhalten a=++a + 1; a=for(lauf=10;lauf>0;lauf--); //for-Anweisung ist kein Ausdruck //d.h. liefert keinen Wert zurück </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> double sqrt(double); //DJ: Include-Anweisung in wikibooks schlägt fehlt int a=0; int func(int par) { a++; return par*2; } int main(int argc,char *argv[]) { int a=4,b=7; a=sqrt(a*a+b*b); //Ausdruck mit Nebenwirkungen b=func(1)*func(2); //Globale Variable a wird geändert! //Ausdruck mit undefinierten Verhalten a=++a + 1; //Kein Ausdruck a=for(lauf=10;lauf>0;lauf--); //for-Anweisung ist kein Ausdruck //d.h. liefert keinen Wert zurück return 0; } | execCompilerOptions=-Wall -lm| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Discarded Value === Discarded Value sind Ausdrücke, dessen Ergebnisse nicht verwendet werden (also keiner Variablen zugewiesen werden). Ergebnisse von Ausdrücken, die nicht verwendet werden, führen nicht zu einer Fehlermeldung: <syntaxhighlight lang="C"> int a=7; a; //Variable a wird gelesen, der Wert jedoch verworfen 7; //Konstante wird verworfen a+7; //Ergebnis wird Berechnet und verworfen printf("hallo"); //Printf hat einen Rückgabewert, dessen Wert verworfen wird </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=7; a; //Variable a wird gelesen, der Wert jedoch verworfen 7; //Konstante wird verworfen a+7; //Ergebnis wird Berechnet und verworfen printf("hallo"); //Printf hat einen Rückgabewert, dessen Wert verworfen wird return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * Soll bewusst der Rückgabewert verworfen werden, so kann/sollte mit dem explizten Cast auf (void) der Rückgabewert explizit 'verworfen' werden. Dies ist u.A. hilfreich bei Variablen, die (noch) nicht benutzt werden und der Compiler die Warning "unused Variable" ausgibt: :<syntaxhighlight lang="C"> (void)a; //Zur Vermeidung von Compiler-Warnings "Unused Variable" (void)(a+7); //hier eine explizte 'Ansage' der Verwerfung des Wertes (void)func(); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int func(void) { return 4711; } int main(int argc,char *argv[]) { int a; (void)a; //Zur Vermeidung von Compiler-Warnings "Unsued Variable" (void)(a+7); //hier eine explizte 'Ansage' der Verwerfung des Wertes (void)func(); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Mit der Anweisung <nowiki>[[nodiscard]]</nowiki> (ab C++17, ab C23) wird der Compiler angewiesen, dass der Aufrufer einer Funktion mit Rückgabewert der Rückgabewert entgegenzunehmen ist. Wird der Rückgabewert verworfen, so gibt der Compiler eine Fehlermeldung aus: :<syntaxhighlight lang="C"> [[nodiscard]] int Client(int socket); Client(5); ////Fehlermeldung, da Rückgabewert nicht verwendet wird </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> [[nodiscard]] int Client(int socket) { return socket+1; } int Server(int socket) { return socket+1; } int main(int argc,char *argv[]) { Server(5); //keine Fehlermeldung Client(5); //Fehlermeldung, da Rückgabewert nicht verwendet wird return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Java kennt Dicarded Values nicht. Ausnahme, es handelt sich um einen Funktionsaufruf, dessen Rückgabewert nicht genutzt wird. === Sequence Point === Ein Sequenzpunkt (u.A. das abschließende Semikolon am Ende der Anweisung) ist nach dem Wikipedia Artikel {{w|lang=en|Sequence_point|Sequence Point}} definiert als der Punkt in der Ausführung eines Computerprogramms, an dem garantiert ist, dass alle Nebenwirkungen früherer Bewertungen durchgeführt wurden und noch keine Nebenwirkungen von nachfolgenden Bewertungen durchgeführt wurden.<br /> Sequenzpunkte sind beispielsweise dann von Interesse, wenn dieselbe Variable innerhalb eines einzelnen Ausdrucks mehr als einmal geändert wird und die Ausführungsreihenfolge der Operationen nicht sauber spezifiziert ist.<br /> Ein oft zitiertes Beispiel ist der C-Ausdruck 'i=i++;'. Der Sequence Point garantiert, dass alle Operationen (hier Zuweisung und Postinkrement) ausgeführt sind. Jedoch ist die Ausführungsreihenfolge dieser beiden Operationen nicht spezifiziert. In Abhängigkeit des Zeitpunktes der Ausführung des Postinkrementes (vor oder nach der Zuweisung) kann i unterschiedliche Werte annehmen. In C und C++ führt die Auswertung eines solchen Ausdrucks zu undefiniertem Verhalten. Andere Sprachen, wie z. B. C#, definieren den Vorrang des Zuweisungs- und des Inkrementoperators so, dass das Ergebnis des Ausdrucks i=i++ garantiert ist.<br/> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int i=5; i=i++; printf("%d",i); //Gerne anderen Compiler auswählen, z.B. x86-64 icc... return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Weitere Sequence Points: * Beim ?-Operator stellt sowohl das ? als auch der : ein Sequenz Point dar. Zunächst muss der linke Ausdruck vollständig bearbeitet werden, bevor einer der beiden Bedingungen bearbeitet wird * Bei der logischen UND / ODER Funktion stellen der Operator ein Sequenz Point dar. Erst wird der linke Operand vollständig ausgeführt und ausgewertet, bevor (ggf.) der rechte Operand ausgewertet wird (siehe [[Programmieren in C/C++: Grundlagen#Logische Verknüpfungen | Logische Verknüpfungen]]) * Beim Komma-Operator stellen der Komma ein Sequence-Point dar (siehe [[Programmieren in C/C++: Grundlagen#Komma-Operator | Komma-Operator]]) • und weitere (siehe Appendix der C-Spec) Operationen, bei denen die Ausführungsreihenfolge nicht spezifiziert ist: * Bei Funktionsaufrufen ist die Abarbeitungsreihenfolge der Parameter nicht spezifiziert, so dass bspw.: :<syntaxhighlight lang="C"> //Aufrufruf einer Funktion, deren Parameter sich aus Funktionsaufrufen //ergeben (*pf[f1()]) (f2(), f3() + f4()); //pf -> Array von Funktionszeigern //Die Funktionen f1,f2,f3 und f4 können in einer beliebigen Reihenfolge //aufgerufen werden </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int f1(void) { printf("f1 called\n"); return 1; } int f2(void) { printf("f2 called\n"); return 2; } int f3(void) { printf("f3 called\n"); return 3; } int f4(void) { printf("f4 called\n"); return 4; } void func1(int par1,int par2) { printf("func1(%d,%d) called\n",par1,par2); } void func2(int par1,int par2) { printf("func2(%d,%d) called\n",par1,par2); } int main(int argc,char *argv[]) { void (*pf[2])(int,int)={func1,func2}; //Aufrufruf einer Funktion, deren Parameter sich aus Funktionsaufrufen //ergeben (*pf[f1()]) (f2(), f3() + f4()); //pf -> Array von Funktionszeigern //Die Funktionen f1,f2,f3 und f4 können in einer beliebigen Reihenfolge //aufgerufen werden //Gerne anderen Compiler auswählen, z.B. x86-64 icc... return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Per Postinkrement/-dekrement Operator sagt aus, dass für die eigentliche Operation der Wert der Variablen genutzt wird und im Anschluss die Variable erhöht / erniedrigt werden soll. Nach C-Spezifikation [C11 6.5.2.4] muss dies spätestens vor dem nächsten Sequence Point erfolgt sein. Der genaue Zeitpunkt innerhalb des Sequence Points ist jedoch nicht vorgegeben: :<syntaxhighlight lang="C"> int a=7; int b=a++ + a; //Ergebnis Abhängig, ob das Postinkrement vor der Addition //oder als letztes ausgeführt wird. a=a++ + 1; //dito </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=7; int b=a++ + a; //Ergebnis Abhängig, ob das Postinkrement vor der Addition //oder als letztes ausgeführt wird. a=a++ + 1; //dito printf("a=%d b=%d\n",a,b); //Gerne anderen Compiler auswählen, z.B. x86-64 icc... return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Abarbeitungsreihenfolge === Die Abarbeitungsreihenfolge der Operatoren wird durch die Prioritätenliste/Rangfolge (siehe [[C-Programmierung: _Liste_der_Operatoren_nach_Priorität| C-Programmierung:Liste der Operatoren nach Priorität]]) vorgegeben. Operatoren mit höherer Priorität werden vor Operatoren mit niedriger Priorität ausgeführt: <syntaxhighlight lang="C"> //Der Ausdruck c = sizeof(x) + ++a / 3; //wird aufgrund der Prioritäten wie folgt ausgewertet: c= (sizeof(x)) + ( (++a) / 3); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a=2; int c; int x=0; c = sizeof(x) + ++a / 3; printf("a=%d c=%d\n",a,c); //Wird aufgrund der Prioritäten wie folgt ausgewertet: a=2; c= (sizeof(x)) + ( (++a) / 3); printf("a=%d c=%d\n",a,c); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Bei identischer Priorität ergibt sich die Abarbeitungsreihenfolge aus der Assoziativität (L-R oder R-L): <syntaxhighlight lang="C"> a=33 / 5 / 2; //Wird aufgrund der Assoziativität wie folgt ausgewertet. //a= (33 / 5) / 2; //und damit zu 3 und nicht zu 16 (bei 33 / (5/2)) ausgewertet. a = b = c = d*2; //→ a=(b=(c=(d*2))); a = b = 1+c = d; //→ a=(b=((1+c)=d)); //Compilerfehler, da //1+c kein lvalue ist </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a; a=33 / 5 / 2; printf("a=%d\n",a); //Wird aufgrund der Assoziativität wie folgt ausgewertet. //a= (33 / 5) / 2 printf("a=%d\n",a); //und damit zu 3 und nicht zu 16 (bei 33 / (5/2)) ausgewertet. int b,c,d=8; a = b = c = d*2; //→ a=(b=(c=(d*2))); printf("a=%d b=%d c=%d d=%d\n",a,b,c,d); a = b = 1+c = d; //→ a=(b=((1+c)=d)); //Compilerfehler, da //1+c kein lvalue ist return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Block / Compound-Statement === Ein Block oder Compound-Statement fasst Vereinbarungen und Anweisungen zu 'einer' Anweisung/Statement zusammen. Es kann überall dort eingesetzt werden, wo nur eine Anweisung erlaubt ist. <code> Syntax: {Declaration-or-statement-list/textsuperscript<sub>OPT</sub>} </code> Ein Block wird nicht wie bei einer Anweisung mit einem Semikolon abgeschlossen (Das angehängte Semikolon wäre dann eine separate leere Anweisung!). <br /> Ein Block hat blockweite Sichtbarkeit (siehe [[Programmieren in C/C++: Grundlagen#Blockweite Sichtbarkeit | Blockweite Sichtbarkeit]]), so dass hier definierte Variablen nur hier gültig sind. Deklarationen sind ebenfalls nur in dem Block gültig. <syntaxhighlight lang="C"> for(..) Anweisung; //For-Schleife führt nur diese eine Anweisung aus for(…) {Block} //For-Schleife führt Block (als eine Anweisung) aus if(..) Anweisung; else Anweisung; //IF-Anweisung führt nur 'eine' //Anweisung aus if(..) {Block} else {Block} //IF-Anweisung führt Block aus if( ) {Block}; else {Block}; //Semikolon ist eine separate //Leer-Anweisung, so dass else //nicht zur IF-Anweisung zugeordnet //werden kann (2 Anweisungen vor Else) void foo(void) { int var1; { //Block innerhalb von Block als Strukturierungswerkzeug int var2; struct xyz{int x,y,z}; //Defintion eines Datentyps im Block struct xyz var3; } struct xyz var4; //KO, Datentyp hier nicht mehr bekannt } </syntaxhighlight> Hinweise: * '''Blöcke können/sollten als Strukturierungswerk genutzt werden. Dem Leser von Source Code kann auf dieser Weise vermittelt werden, dass diese Anweisungen 'zusammen' zu lesen sind.''' * Im Gegensatz zu Java, in welchem innerhalb eines Blockes kein Variablenname genutzt werden darf, die außerhalb des Blockes existiert, ist dies in C erlaubt. Die äußere Variable steht damit innerhalb des Blockes nicht mehr im Zugriff. :<syntaxhighlight lang="C"> int a=3; int main(void){ int a=7; //Globale Variable ist ab hier nicht mehr sichtbar/zugreifbar { int a=9; //Innere Variable überdeckt äußere Variable } } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int a=3; int main(int argc,char *argv[]) { printf("a=%d\n",a); int a=7; //Globale Variable ist ab hier nicht mehr sichtbar/zugreifbar printf("a=%d\n",a); { int a=9; //Innere Variable überdeckt äußere Variable printf("a=%d\n",a); } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Embedded Statement === Embedded Statements sind eine GNU-C Erweiterung (siehe [https://www.gnu.org/software/gnu-c-manual/gnu-c-manual.html GNU-C-Manual 3.18]). Da sie vom Autor als sehr nützlich angesehen wird und auch von diversen Compilern und auch in C++ unterstützt wird, wird diese hier beschrieben. Ein Block fasst mehrere Anweisungen zu einer Anweisung zusammen, hat jedoch kein Rückgabewert. Ein Embedded-Statement entspricht einem Block mit der Ergänzung, dass dieser einen Rückgabewert hat, so dass ein Embedded-Statement überall dort eingesetzt werden kann, wo eine Expression erwartet wird. <code> Syntax: ({Declaration-or-statement-list<sub>OPT</sub>}) </code> Der Rückgabewert wird nicht über eine return-Anweisung angegeben, sondern entstammt aus der letzten Anweisung innerhalb der Liste: <syntaxhighlight lang="C"> int var; var={int par=7;} //KO Block hat keine Rückgabewert. var=({int par=7; par++; par;}); //OK Embedded-Statement hat einen //Rückgabewert, der sich aus der //letzten Anweisung 'Par;' ergibt //Hier 8. </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int var; var={int par=7;} //KO Block hat keine Rückgabewert. var=({int par=7; par++; par;}); //OK Embedded-Statement hat einen //Rückgabewert, der sich aus der //letzten Anweisung 'Par;' ergibt //Hier 8. printf("var=%d\n",var); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Ein Embedded-Statement ähnelt folglich einem Funktionsaufruf mit dem Unterschied, dass a) in der Tat kein Funktionsaufruf stattfindet und b) der Rückgabewert nicht mit return, sondern über die letzte Anweisung zurückgegeben wird. Der Anwendungsfall ist dort zu finden, wo eine Expression erwartet wird und mehrere Anweisungen zum Ermitteln der Expression notwendig sind: <syntaxhighlight lang="C"> int var1=8; int b=({int d=var1++;d>10?10:d;}); if( ({int d=b;b=var1;b=d;}) > 1) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int var1=8; int b=({int d=var1++;d>10?10:d;}); if( ({int d=b;b=var1;b=d;}) > 1) printf("Bedingung erfüllt"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * Ein Embedded-Statement ist insbesondere bei Nutzung von Makros (siehe Kap [[Programmieren in C/C++: Präprozessor | Präprozessor]]) hilfreich * Mittels eines Embedded-Statement kann eine anonyme Funktion/Lambdafunktion dargestellt werden: <syntaxhighlight lang="C"> void test(int (*fptr)(int),int arr[10]) { for(int lauf=0;lauf<10;lauf++) arr[lauf]=fptr(arr[lauf]); } int main(int argc, char *argv[]) { int arr[]={1,2,3,4,5,6,7,8,9,10}; //Aufruf mit einer anonymen Funktion test( ({int func(int a) {return a%2?a:0;} ; func;}) ,arr); } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void test(int (*fptr)(int),int arr[10]) { for(int lauf=0;lauf<10;lauf++) arr[lauf]=fptr(arr[lauf]); } int main(int argc, char *argv[]) { int arr[]={1,2,3,4,5,6,7,8,9,10}; //Aufruf mit einer anonymen Funktion test( ({int func(int a) {printf("Called:%d\n",a);return a%2?a:0;} ; func;}) ,arr); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Funktionen / Prozeduren == Die GNU-C Reference (nicht C++) erlaubt es, Funktionen innerhalb von Blöcken (und damit auch innerhalb von Funktionen) zu definieren. Diese innere Funktion steht dann nur in diesem Block zur Verfügung und kann ergänzend auf Variablen des umgebenden Blockes zugreifen: <syntaxhighlight lang="C"> void foo(void) { { int label=1; //Funktion innerhalb einer Funktion void dummy(void){ label++; //Zugriff auf Variablen des umschließenden Blockes } dummy(); //Aufruf der nur in diesem Block gültigen Funktion } dummy(); //KO, Funktion hier nicht mehr gültig } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void foo(void) { { int label=1; //Funktion innerhalb einer Funktion void dummy(void){ label++; //Zugriff auf Variablen des umschließenden Blockes } dummy(); //Aufruf der nur in diesem Block gültigen Funktion } dummy(); //KO, Funktion hier nicht mehr gültig } int main(int argc,char *argv[]) { foo(); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Funktionen/Prozeduren sind ein Strukturierungsmerkmal, so dass Teile der Funktionalität des Programmes wiederverwendbar sind. C/C++ unterscheidet nicht zwischen Funktionen (haben einen Rückgabewert, können damit in Ausdrücken verwendet werden) und Prozeduren (haben keine Rückgabewert, resp. Rückgabetyp void).<br/> Mit jedem Aufruf einer Funktion wird für den zugehörigen Block ein eigener Stack-Kontext angelegt, so dass Funktionen sich selbst aufrufen können (Rekursion). Jeder Funktionsinstanz hat somit seinen eigenen lokalen Variablenbereich, teilen sich jedoch die globalen und die statisch lokalen Variablen.<br /> Mit dem Aufruf einer Funktion können Parameter übergeben werden, wobei die Übergabeparameter vom Aufrufer (Caller) durch den Aufruf in die lokalen Variablen des Aufgerufenen (Callee) kopiert/zugewiesen werden (Call by Value). Wird ein Zeiger übergeben, hat der Callee über die Dereferenzierung des Zeigers die Möglichkeit, die Variablen des Caller zu verändern (Call by Reference) (siehe Kap. [[Programmieren in C/C++: Zeiger #Zeiger bei Funktionsaufrufen | Zeiger:Zeiger bei Funktionsaufrufen).]]). Hinweise: * Die Klammerung hinter dem Funktionsnamen (<code>foo()</code>) zeigt an, dass es sich um einen Funktionsaufruf (Verzweigung der Programmausführung zu der Startadresse der Funktion) handelt :<syntaxhighlight lang="C"> void foo(void) {printf("foo called");}; foo(); //Klammern hinter dem Funktionsnamen bedeuten Aufruf der Funktion </syntaxhighlight> * Die Nutzung des Funktionsnamens ohne Klammerung (<code>foo</code>) gibt die Startadresse der Funktion zurück. Die Startadresse kann in einem Zeiger auf Funktionen gespeichert werden (siehe Kap. [[Programmieren in C/C++: Zeiger#Zeiger auf Funktionen | Zeiger:Zeiger auf Funktionen]]). :<syntaxhighlight lang="C"> void foo(void) {printf("foo called");}; void (*fptr)(void)=foo; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void foo(void) { printf("foo called"); }; int main(int argc, char *argv[]) { void (*fptr)(void)=foo; fptr(); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Deklaration/Definition vor dem ersten Aufruf der Funktion 'notwendig', damit Compiler die Übergabeparameter entsprechend bereitstellt und ggf. eine implizite Typkonvertierung durchführt (dito Rückgabewert). Die Angabe der Variablennamen können bei der Deklaration entfallen * Die fehlende Angabe der Übergabeparameter bedeutet in C (nicht C++), dass diese Funktion mit beliebigen Übergabeparametern aufgerufen werden kann und der Compiler keine Typprüfung durchführt: :<syntaxhighlight lang="C"> int func() {...} //kann wie folgt aufgerufen werden func(); func(4); func("hallo Welt",4.7); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void func() { printf("foo called\n"); }; int main(int argc, char *argv[]) { func(); func(4); func("hallo Welt",4.7); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} :→ unbedingt vermeiden<br /> :Hat die Funktion keinen Übergabewert, so wird dies in C mit void gekennzeichnet * In C++ bedeutet die Schreibweise ohne Datentypbeschreibung, dass keine Parameter erwartet werden * In der Parameterliste von Funktionen dient in der GNU-C Spezifikation das Semikolon zum Trennen zwischen Deklaration von Übergabeparameter und den Übergabeparametern. Alle Übergabewerte links vom Semikolon sind (Forward)deklarationen: :<syntaxhighlight lang="C"> void test1(int a; int b,int a) { // Forward; Parameter printf("a=%d b=%d\n",a,b); } //Aufruf test1(3,7); //a=7 b=3 //Sinnvoll im Umgang mit Variable Length Arrays void test2(int dim; const char str[dim], int dim); //Aufruf test2("hallo",6); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void test1(int a; int b,int a) { // Forward; Parameter printf("a=%d b=%d\n",a,b); } //Sinnvoll im Umgang mit Variable Length Arrays void test2(int dim; const char str[dim], int dim) { printf("dim=%d\n",dim); } int main(int argc, char *argv[]) { //Aufrufe test1(3,7); //a=7 b=3 test2("hallo",6); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Return-Anweisung === Mit der Return-Anweisung wird eine Funktion (vorzeitig) beendet. Der optionale Parameter dient der Angabe des Rückgabewertes der Funktion an den Aufrufer. Der Datentyp des Parameters ergibt sich aus dem Rückgabedatentyp der Funktion. <code> Syntax: return expression<sub>OPT</sub> </code> Der Rückgabewert expresion sagt aus, dass hier nicht nur Konstanten oder Variablen stehen können, sondern beliebige Ausdrücke erlaubt sind. Der resultierende Datentyp des Ausdruckes muss letztendlich dem Rückgabedatentyp der Funktion entsprechen: <syntaxhighlight lang="C"> int foo(double a, double b) { return (int)(a*a+b*b); } </syntaxhighlight> Hinweise: * Bei nicht void-Funktionen ist eine return-Anweisung mit einer Expression entsprechend dem Datentyp der Funktion zwingend notwendig: :<syntaxhighlight lang="C"> int func(void) { return 5.1; //Datentyp wird zuvor int konvertiert } double a=func(); //int wird in double konvertiert </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int func(void) { return 5.1; //Datentyp wird zuvor int konvertiert } int main(int argc, char *argv[]) { double a=func(); //int wird in double konvertiert printf("a=%f\n",a); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Bei einer void-Funktion ist die return-Anweisung ohne Expression optional. Hier entspricht der schließende Block der Return-Anweisung :<syntaxhighlight lang="C"> void func(char *str) { if(str==NULL) return; printf("%s",str); } </syntaxhighlight> Sollen mehr als ein Rückgabewert an den Aufrufer zurückgegeben werden so empfiehlt sich: * die Rückgabewerte in einer Struktur zu packen (siehe [[Programmieren in C/C++: Datentypen#Verbundtyp Struktur/Klasse (nur C++) |Datentypen:Verbundtyp Struktur/Klasse (nur C++)]]) * die Rückgabewerte über die Aufrufparameter als Call-by-Reference zu übergeben (siehe [[Programmieren in C/C++: Zeiger#Zeiger bei Funktionsaufrufen | Zeiger:Zeiger bei Funktionsaufrufen]]) ==== Rückgabewert aus Datentypsicht ==== Aus Datentypsicht kann der Funktionsname inkl. den Parameter(n) in einem Ausdruck mit dem Datentyp des Rückgabewertes der Funktion ausgetauscht werden: <syntaxhighlight lang="C"> int foo(void) {return 4711;} int var; var=1+foo(); //Aus Datentypsicht (int)=(int)+(int) </syntaxhighlight> Daraus ergibt sich, dass bei Arrays/Strukturen/Unions direkt auf einzelne Komponenten zugegriffen werden kann, ohne diese zuvor einer Variablen zuzuweisen: <syntaxhighlight lang="C"> struct xyz{int x,y,z;}; struct xyz foo(int par) { struct xyz var; var.x=var.y=var.z=par; return var; } if(foo(12).x == 12) printf("Identisch\n"); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct xyz{int x,y,z;}; struct xyz foo(int par) { struct xyz var; var.x=var.y=var.z=par; return var; } int main(int argc, char *argv[]) { if(foo(12).x == 12) printf("Identisch\n"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} ==== Fehlerrückgabe ==== Viele Funktionen können unter gewissen Umständen nicht korrekt ausgeführt werden. Z.B. aufgrund dessen, dass: * der benötigter Speicher vom Heap nicht bereitgestellt werden kann * Übergabeparameter außerhalb des zulässigen Bereiches liegen * angeforderte Ressource (Datei, Geräte, …) nicht vorhanden/verfügbar sind Solche Fälle gilt es dem Aufrufer mitzuteilen, da in diesen Fällen die vom Aufrufer geforderte Funktionalität nicht erfüllt ist und der Aufrufer ggf. nicht weiterarbeiten kann. Zur Mitteilung des Fehlers sollte vorrangig der Rückgabewerte genutzt werden. (auch wenn in C++ mit Exception eine Alternative hierzu bereitsteht) <syntaxhighlight lang="C"> char *strdup(char *src) { char *dst; if((dst=malloc(strlen(src)+1))==NULL) return NULL; strcpy(dst,src); return dst; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> #include <string.h> char *strdup1(char *src) { char *dst; if((dst=malloc(strlen(src)+1))==NULL) return NULL; strcpy(dst,src); return dst; } int main(int argc, char *argv[]) { char *dup=strdup1("hallo"); if(dup == NULL) printf("Fehler\n"); else printf("dup='%s'\n",dup); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Die Standard-C Library-Funktionen geben in diesem Fall zumeist ein -1 (Rückgabewert Ganzzahl) oder einen NULL-Zeiger (Rückgabewert Zeiger) zurück. Der genaue Fehlergrund ist dann ergänzend in der globalen Variablen errno gespeichert. Mittels der Standard-C Funktion strerror() kann die Zahl in einen für den Anwender/Programmierer lesbaren String umgewandelt werden (die GNU-C Library Funktion printf() bietet ergänzend den Conversion Spezifier %m als alternative Ausgabemöglichkeit an): <syntaxhighlight lang="C"> #include <errno.h> int var; if(-1==scanf("%d",&var) ) printf("Es wurde keine Zahl erkannt\n"); int ret=open("/etc/ptmp",O_WRONLY|O_CREAT|O_EXCL, S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH); if(-1==ret) printf("open failed() with %s\n",strerror(errno)); if(-1==ret) printf("open failed() with %m (nur glibc)\n"); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <fcntl.h> #include <string.h> #include <errno.h> int main(int argc, char *argv[]) { int var; if(-1==scanf("%d",&var) ) printf("Es wurde keine Zahl erkannt\n"); int ret=open("/etc/ptmp",O_WRONLY{{!}}O_CREAT{{!}}O_EXCL, S_IRUSR{{!}}S_IWUSR{{!}}S_IRGRP{{!}}S_IROTH); if(-1==ret) printf("open failed() with %s\n",strerror(errno)); if(-1==ret) printf("open failed() with %m (nur glibc)\n"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} '''Für eine sauber Programmierung sollte diese Methodik generell angewendet werden.''' Jede Funktion, welche Fehlschlagen kann, teilt dies per Rückgabewert dem Aufrufer mit. Der Rückgabewert einer jeden Funktion wird vom Aufrufer kontrolliert. === Main-Funktion === Mit Start der Anwendung übergibt das Betriebssystem die Kontrolle an die Anwendung und führt dort die Funktion main aus. Als Übergabe- und Rückgabeparameter sind folgende Varianten erlaubt: <syntaxhighlight lang="C"> int main(void) { } int main(int argc, char *argv[]) { } </syntaxhighlight> Mit dem Start der Anwendung kann, wie bei jedem Funktionsaufruf, Parameter an den startenden Prozess übergeben werden. Als Parameter können Strings übergeben werden, welche in Form eines Arrays von Strings übergeben werden. Im Parameter argc sind die Anzahl der Strings enthalten. Im Parameter argv[x] sind die einzelnen Strings enthalten. Sofern vorhanden ist im ersten String der Programmname/Aufrufname der Anwendung enthalten: <syntaxhighlight lang="C"> int main(int argc, char *argv[]) { //Variante 1: Darstellung des Inhaltes des Arrays von Strings for(int lauf=0;lauf < argc; lauf++) printf("%d.Parameter: '%s'\n",lauf,argv[lauf]); //Variante 2: Darstellung des Inhaltes des Arrays von Strings (void)argv; //Wird hier nicht benötigt for(char **str=argv;*str!=NULL;str++) printf("Parameter: '%s'\n",*str); return EXIT_SUCCESS; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int max_width=0; int ret; //Variante 1: Darstellung des Inhaltes des Arrays von Strings for(int lauf=0;lauf < argc; lauf++) { ret=printf("%d.Parameter: '%s'\n",lauf,argv[lauf]); max_width=ret>max_width ? ret : max_width; } //Trennzeichen drucken char term[max_width]; memset(term,'-',max_width); printf("%.*s\n",max_width-1,term); //Variante 2: Darstellung des Inhaltes des Arrays von Strings (void)argv; //Wird hier nicht benötigt for(char **str=argv;*str!=NULL;str++) printf("Parameter: '%s'\n",*str); return EXIT_SUCCESS; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Im Compiler-Explorer können die Parameter im Executor unter 'Execution Arguments', getrennt mit Leerzeichen eingegeben werden. Wird die Funktion main beendet, entweder über die return Anweisung oder den Aufruf der exit() Funktion, wird die Kontrolle zurück an den startenden Prozess (zumeist Shell) gegeben. Über den Rückgabewert wird im Allgemeinen dem Aufrufer der Fehlerstatus mitgeteilt (EXIT_SUCCESS oder 0 bedeutet fehlerfreie , EXIT_FAILURE oder ungleich 0 fehlerhafte Ausführung). Der Start der Anwendung kann als Funktionsaufruf angesehen werden, welchen einen Wert an den Aufrufer zurückliefert. Hinweise: * Der Return-Wert der main-Funktion kann mit >>echo $? in der Bash abgefragt werden * Mittels <code>exit(int status)</code> kann das Programm an jeder Stelle innerhalb des Programms beendet werden. <code>status</code> entspricht dann der expression der return Anweisung von main === Inline Funktion === Wie der Name inline andeutet, ist die Intention von Inline, dass die aufgerufen Funktion Bestandteil der aufrufenden Funktion ist. Die aufgerufene Funktion soll somit im Kontext des Aufrufers ausgeführt werden, so dass kein eigener Stack bereitgestellt werden muss. Der Start der Funktion kann somit schneller erfolgen: <code> inline int foo(void) { } </code> Das Inline erfolgt durch den Compiler (und nicht durch den Linker). Damit das inline funktioniert, muss die zu inlinende Funktion vor dem Aufruf definiert sein, d.h. sie muss in derselben C-Datei enthalten sein [C11 6.7.4]. Hinweis: * Das 'inlinen' von Funktionen über die eigene Objektdatei hinweg erfolgt in C/C++ über Link Time Optimization (LTO). Hierzu fügt der Compiler den Zwischencode mit in die Objektdatei, so dass der Linker das 'inlinen' vollziehen kann (siehe {{w|lang=en|Interprocedural_optimization| Interprocedural Optimization}}) === Variadic Function / Ellipsis Punctuator === Mit dem Ellipsis Puncturator '…' kann in Funktionsdefinitionen angegebenen werden, dass anstatt der … Anweisung, beliebig viele Parameter/Argumente übergeben werden können. Dies wird unter anderen in der printf() Anweisung genutzt: <syntaxhighlight lang="C"> int printf(const char *fmt, ... ); </syntaxhighlight> Die wie folgt aufgerufen werden kann: <syntaxhighlight lang="C"> printf("Hello World"); //es folgt kein Parameter printf("%d",100); //es folgt ein Parameter vom Datentyp int printf("%f",1.1); //es folgt ein Parameter vom Datentyp double printf(conststr,1,2,3,"xyz") //Ohne Worte </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { printf("Hello World\n"); //es folgt kein Parameter printf("%d\n",100); //es folgt ein Parameter vom Datentyp int printf("%f\n",1.1); //es folgt ein Parameter vom Datentyp double const char *conststr="%d %x %c '%s'\n"; printf(conststr,1,2,33,"xyz"); //Ohne Worte return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Der übergebenen Datentype der Parameter wird der aufgerufenen Funktion nicht mitgeteilt! Einzig werden bei Aufruf der variadischen Funktion so viel Bytes auf den Stack gelegt, wie der Datentyp der einzelnen Übergabeparameter groß ist: :<code>int --> 4 Byte</code> :<code>double --> 8 Bytes</code> :<code>Zeiger --> 4/8 Byte</code> Damit die aufgerufene Funktion die fehlende Datentypinformation dennoch mitgeteilt bekommt, muss dies am Beispiel der <code>printf</code> Funktion über den Format-String erfolgen: <syntaxhighlight lang="C"> int vari; printf("%d",vari); //%d erwartet einen Integer Übergabeparameter (4-Byte) size_t vars; printf(" %zu %d ", vars, vari); // %zu zur Mitteilung, dass anstatt //integer nun size_t als Datentyp übergeben wird //und somit anstatt 4 Bytes 8 Bytes vom Stack genommen werden </syntaxhighlight> <code>printf()</code> entnimmt entsprechend der Datentypbeschreibung im Formatstring die passende Anzahl an Bytes vom Stack. Da der Compiler für die optionalen Parameter nicht den Zieldatentyp kennt, erlaubt die C-Spezifikation als Übergabedatentypen hier nur die Grunddatentypen <code>signed int, unsigned int, long, long long, double</code> und <code>Zeiger</code>. Entspricht der übergebene Parameter nicht einen dieser Datentypen, so wird er mittels implizit Cast entsprechend nachfolgender Tabelle gewandelt [C11 6.5.2.2 Default Argument Promotions]: {| class="wikitable" |- ! Ausgangstyp !! Umwandlungstyp |- | char, signed char, short || int |- | unsigned char, unsigned short || unsigned int |- | float || double |- | Alle anderen Datentypen || bleiben erhalten |} Bspw.: <syntaxhighlight lang="C"> signed char varc=-1; float varf =0.1; printf("%d %f",varc, varf); //varc wird beim Aufruf nach int konvertiert! //varf wird beim Aufruf nach double konvertiert! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { signed char varc=-1; float varf =0.1; printf("%d %f",varc, varf); //varc wird beim Aufruf nach int konvertiert! //varf wird beim Aufruf nach double konvertiert! //Zur Darstellung der besagten Konvertierung siehe rechtes Fenster return 0; } | execCompilerOptions=-Wall| h=g }} Öffnen im Compiler Explorer] }} Zum Umgang mit dem variadischen Parameter stellt C die Funktionen <code>va_start(), va_arg(), va_copy()</code> und <code>va_end()</code> bereit. Auf Grundlage des dazugehörigen Datentyps <code>va_list</code> können variadische Parameter auch an Unterfunktionen weitergereicht werden (bspw vprintf()). Dieses Thema bedingt jedoch genaue Kenntnisse vom Umgang mit dem Stack und ist nicht Bestandteil dieser Vorlesung. == Variable Length Array (VLA) == Im Normalfall ergibt sich die Anzahl der Elemente eines Arrays aus einer Konstanten, so dass der Compiler zur Compilezeit passend Speicher reserviert (siehe Kap. [[Programmieren in C/C++: Array | Array]]): <syntaxhighlight lang="C"> int arr[4]; //Compiler reserviert für Variable arr //4*sizeof(int) Speicherplatz </syntaxhighlight> Bei Variable Lenght Array wird die Arraydimension nicht über eine Konstante, sondern über eine Variable oder einen Ausdruck angegeben. D.h. die tatsächliche Dimension des Arrays ergibt sich erst zum Ausführungszeitpunkt der Definition: <syntaxhighlight lang="C"> void foo(size_t n) { int arr[n*2+1]; //Arraydimension ergibt sich zum Ausführungszeitpunkt n++; //Nachträgliches Ändern von n ändert nicht //die Größe des Arrays! } </syntaxhighlight> Ein Variable Length Array kann nur als lokale Variable oder als Übergabeparameter definiert werden (wobei im letzteren Fall kein Speicher hiermit reserviert wird). Eine Initialisierung eines VLA's mit der Definition ist nicht möglich, d.h. nach der Definition beinhaltet das Array 'zufällige' Werte. Es empfiehlt sich daher, diese bspw. mit memset händisch zu initialisieren (siehe auch Kap [[Programmieren in C/C++: Array#Initialisierung | Array:Initialisierung]]): <syntaxhighlight lang="C"> void foo(size_t n) { char str[n]; memset(str,0,n*sizeof(char)); //Array mit 0 füllen </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> void foo(size_t n) { char str[n]; memset(str,0,n*sizeof(char)); //Array mit 0 füllen for(size_t lauf=0;lauf<n;lauf++) printf("str[%zu]=%d\n",lauf,str[lauf]); } int main(int argc, char *argv[]) { foo(4); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Mittels sizeof kann weiterhin der Speicherbedarf ermittelt werden, wobei sizeof mit einem VLA als Argument kein Konstantenausdruck ist. Stattdessen wird die Größe zur Laufzeit ermittelt: <syntaxhighlight lang="C"> void foo(size_t n) { int arr[n*2+1]; //VLA size_t size; size=sizeof(arr); //sizeof(arr) entspricht einem Funktionsaufruf //welcher die Speichergröße des VLA's ermittelt </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void foo(size_t n) { int arr[n*2+1]; //VLA size_t size; size=sizeof(arr); //sizeof(arr) entspricht einem Funktionsaufruf //welcher die Speichergröße des VLA's ermittelt printf("size=%zu\n",size); } int main(int argc, char *argv[]) { foo(5); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} VLA wurden erstmals in C mit C99 eingeführt. In C11 wurden VLA's als optional eingestuft und mit C23 zurück auf notwendig gesetzt. In C++ sind VLA's nicht definiert, werden jedoch vom GCC Compiler unterstützt. Als alternativen Datentyp wird hier std::array empfohlen. Hinweis: * VLA sind nicht direkt in einem Switch-Case Block definierbar. Wird hier ein VLA benötigt, so muss hierzu ein Block erzeugt werden: :<syntaxhighlight lang="C"> switch(value) { case 1: char arr1[value]; //Compilerfehler, da bei value!=1 kein Speicherplatz //für das VLA reserviert wird break; case 2: { char arr2[value]; //OK } break; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int value=argc; switch(value) { case 1: char arr1[value]; //Compilerfehler, da bei value!=1 kein Speicherplatz //für das VLA reserviert wird break; case 2: { char arr2[value]; //OK } break; } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Operatoren == In der Programmiersprache C sind folgende Punctuators [C11 6.4.6] definiert: <syntaxhighlight> [ ] ( ) { } . -> ++ -- & * + - ~ ! / % << >> < > <= >= == != ^ | && || ? : ; ... = *= /= %= += -= <<= >>= &= ^= |= , # ## <: :> <% %> %: %:%: </syntaxhighlight> Die Funktionalitäten sind identisch zu Java. Aufgrund des Datentyps Zeiger gibt es in C ergänzend den Punctuator <code>-></code> (siehe Kap [[Programmieren in C/C++: Datentypen#Verbundtyp Struktur/Klasse (nur C++)|Datentypen:Verbundtyp Struktur/Klasse (nur C++)]]). Der Präprozessor bedingt die beiden Punctuatoren <code>#</code> und <code>##</code> (siehe Kap [[Programmieren in C/C++: Präprozessor | Präprozessor]]). Die letzten 6 Punctuators <code><: :> <% %> %: %:%:</code> werden zu <code>[ ] { } # ##</code> ersetzt. Sie sind für Computersysteme gedacht, welche keine ALTGR-Taste besitzen.<br /> Java kennt ergänzend den <code>>>></code> Operatoren, welcher in C über den normalen Schiebebefehl und den zugrundeliegenden Datentyp gesteuert wird. Wie in Java sind einige Punctuators vom Kontext abhängig und haben damit unterschiedliche Funktionalitäten: <syntaxhighlight> ++ → (Postfix) ++ vs. ++(Präfix) -- → (Postfix) -- vs. --(Präfix) +/- → Vorzeichen vs. Addition/Subtraktion () → Funktionsaufruf() vs. Befehlsbestandteil if() vs. Priorisierung </syntaxhighlight> Für den Umgang mit dem Datentyp Zeiger besitzen einige Punctuatoren ergänzende Funktionalitäten (siehe Kap [[Programmieren in C/C++: Zeiger| Zeiger]]): <syntaxhighlight> & → Bitweises UND: Anwendung: Ganzahlausdruck & Ganzahlausdruck & → Adressoperator: Anwendung: &Variable * → Multiplikation Anwendung: Ganzahl-/Gleitkommaausdruck * Ganzahl-/Gleitkommaausdruck * → Datentyp Zeiger Anwendung: Datentyp * Variablenname; * → Dereferenzierung: Anwendung: * Zeiger </syntaxhighlight> Punctuatoren, welche von Java abweichende / ergänzende Funktionalitäten haben, werden nachfolgend gesondert beschrieben. Sind in einer Anweisung mehrere Operatoren enthalten, so hängt die Abarbeitungsreihenfolge von der Rangfolge/Priorität der Operatoren ab (siehe [[Programmieren in C/C++: Grundlagen#Abarbeitungsreihenfolge | Abarbeitungsreihenfolge]]).<br /> Die Rangfolge ist identisch zu Java, wobei C mehr Operatoren kennt. Generell empfiehlt sich, lieber eine Klammer zu viel als zu wenig zusetzen. Klammern haben die höchste Priorität. === Zuweisungs-Operator === Die Zuweisung (<code>=</code>-Operator, assignment expression) weist dem L-Value den R-Value zu. Ergänzend dient der L-Value als Rückgabewert des Operators, so dass das Ergebnis der Zuweisung weiter genutzt werden kann. Die Abarbeitungsreihenfolge ist von rechts nach links (R-L Assoziativität). Wird der 'letzte' Rückgabewert nicht verwendet, so wird dieser verworfen (siehe Kap. [[Programmieren in C/C++: Grundlagen#Discarded Value | Discarded Value]]).<br /> Beispiel: <syntaxhighlight lang="C"> a=7; //Zuweisung a=b=7; //Erste Zuweisung (b=7) hat einen Rückgabewert, welcher im //Anschluss a zugewiesen wird if(a=7) //Variablen a wird der Wert 7 zugewiesen. Der Rückgabewert //der Zuweisung wird im Anschluss auf True oder False geprüft if(7=a) //Besser, da aufgrund der fehlerhafter Zuweisung ein //Compilerfehler geworfen wird x*=y=z //entspricht x=x*(y=z) a=b=d+7; //entspricht a=(b=(d+7)) a=b==c; //a bekommt das boolesche Ergebnis der Vergleichsoperation //zugewiesen </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a,b,c=3,d=4; int x,y,z; a=7; //Zuweisung a=b=7; //Erste Zuweisung (b=7) hat einen Rückgabewert, welcher im //Anschluss a zugewiesen wird if(a=7) //Variablen a wird der Wert 7 zugewiesen. Der Rückgabewert ; //der Zuweisung wird im Anschluss auf True oder False geprüft if(7=a) //Besser, da aufgrund der fehlerhafter Zuweisung ein ; //Compilerfehler geworfen wird x*=y=z; //entspricht x=x*(y=z) a=b=d+7; //entspricht a=(b=(d+7)) a=b==c; //a bekommt das boolesche Ergebnis der Vergleichsoperation //zugewiesen return 0; return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * Auf beiden Seiten der Zuweisung muss der identische Datentyp stehen. Wenn andernfalls eine implizite Typkonvertierung nicht möglich ist, gibt der Compiler einen Fehler aus: :<syntaxhighlight lang="C"> int a = 7.3; //implizite Typkonvertierung double b=a+3; //Implizite Typkonvertierung der Intergeraddition nach double float c=(float)a+(float)3; //Explizite Typkonvertierung char *d=a; //Compilerfehler, da Integerwert nicht implizit in einen //Zeiger konvertiert werden kann </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a = 7.3; //implizite Typkonvertierung double b=a+3; //Implizite Typkonvertierung der Intergeraddition nach double float c=(float)a+(float)3; //Explizite Typkonvertierung char *d=a; //Compilerfehler, da Integerwert nicht implizit in einen //Zeiger konvertiert werden kann //Zur Darstellung der besagten Konvertierung siehe rechtes Fenster (void)b; (void)c; (void)d; return 0; } | execCompilerOptions=-Wall| h=g }} Öffnen im Compiler Explorer] }} * Bei der Parameterübergabe beim Funktionsaufruf wird ebenfalls indirekt der Zuweisungsoperator angewendet. Die Parameter des Aufrufers werden per Zuweisung den lokalen Variablen der aufgerufenen Funktion zugewiesen :<syntaxhighlight lang="C"> void func(int a, float b) { printf("a=%d b=%f",a,b); } int x=4; float y=5.0; func(x,y); //der Inhalt der Variablen x wird der lokalen Variable a //(a=x) und der Inhalt der Variablen y der lokalen Variablen b //(b=y) zugewiesen. func(y,x); //Dito, mit der Ergänzung, dass eine implizite Typkonvertierung //stattfindet (a=(int)y) und (b=(float)x). </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void func(int a, float b) { printf("a=%d b=%f",a,b); } int main(int argc, char *argv[]) { int x=4; float y=5.0; func(x,y); //der Inhalt der Variablen x wird der lokalen Variable a //(a=x) und der Inhalt der Variablen y der lokalen Variablen b //(b=y) zugewiesen. func(y,x); //Dito, mit der Ergänzung, dass eine implizite Typkonvertierung //stattfindet (a=(int)y) und (b=(float)x). //Zur Darstellung der besagten Konvertierung siehe rechtes Fenster return 0; } | execCompilerOptions=-Wall| h=g }} Öffnen im Compiler Explorer] }} === Komma-Operator === Der Komma-Operator erlaubt es, zwei Ausdrücke auszuführen, wo nur einer erlaubt wäre. Die Ergebnisse aller durch diesen Operator verknüpften Ausdrücke, außer dem letzten werden verworfen. Der letzte Ausdruck dient als Rückgabewert. Folgendes gilt es bei der Nutzung des Komma-Operators zu beachten: * Der Komma-Operator wird von links nach rechts ausgewertet * Das Komma selbst stellt eine Sequence Point dar (siehe Kap [[Programmieren in C/C++: Grundlagen#Sequence Point|Sequence Point]]) * An Stellen, wo das Komma zum Syntax gehört (z.B. Trennung der Übergabeparameter bei der Funktionsdefinition und beim Funktionsaufruf, Trennung von Variablen bei der Variablendefinition/-deklaration, Trennung der enum Konstanten) muss der Ausdruck ergänzend geklammert werden, wenn der Komma-Operator gefordert ist * Der Komma-Operator hat von allen Operatoren die niedrigste Priorität/Rangfolge, so dass dieser Operator als letztes 'ausgewertet' wird Beispiel: <syntaxhighlight lang="C"> int a=(5,3); //5 wird verworfen, 3 dient als Rückgabewert, so dass //a den Wert 3 erhält. int b=5,3; //KO, da Komma Bestandteil der Definition ist int c=1,d=2,e=3; int f=(c+=2,a+a); //c um zwei erhöht, a+a in f int g= c+=2,a+a; //KO, da Komma Bestandteil der Defintion ist void func(int value){} func(1); //Funktion wird mit dem Wert 1 aufgerufen func(1,2); //KO, da Komma Bestandteil des Funktionsaufrufes ist func((1,2)); //Funktion wird mit dem Wert 2 aufgerufen int arr[12]; arr[3,4]=1; //3 wird verworfen, 4 dient als Index für das Array </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void func(int value){ printf("func called with %d\n",value); } int main(int argc, char *argv[]) { int a=(5,3); //5 wird verworfen, 3 dient als Rückgabewert, so dass //a den Wert 3 erhält. int b=5,3; //KO, da Komma Bestandteil der Definition ist printf("a=%d\n",a); int c=1,d=2,e=3; printf("c=%d,d=%d,e=%d\n",c,d,e); int f=(c+=2,a+a); //c um zwei erhöht, a+a in f printf("c=%d,f=%d\n",c,f); int g= c+=2,a+a; //KO, da Komma Bestandteil der Defintion ist func(1); //Funktion wird mit dem Wert 1 aufgerufen func(1,2); //KO, da Komma Bestandteil des Funktionsaufrufes ist func((1,2)); //Funktion wird mit dem Wert 2 aufgerufen int arr[12]; arr[3,4]=1; //3 wird verworfen, 4 dient als Index für das Array return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} 'Sinnvolle' Anwendungsbeispiele: * Bei For-Schleifen, so dass mehrere Variablen initialisiert und mehrere Variablen mit jedem Schleifendurchlauf geändert werden können: :<syntaxhighlight lang="C"> int sum,lauf; int arr[]={5,4,3,2,1}; for(sum=100,lauf=5 ; lauf ; lauf--,sum+=arr[lauf]); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int sum,lauf; int arr[]={5,4,3,2,1}; for(sum=100,lauf=5 ; lauf ; lauf--,sum+=arr[lauf]) printf("sum=%d lauf=%d\n",sum,lauf); printf("sum=%d\n",sum); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Bei der Return-Anweisung, bei welcher zur Darstellung der Zusammengehörigkeit mehrere Aktionen ausgeführt werden sollen: :<syntaxhighlight lang="C"> return errno=EINVAL,-1; return printf("Fehler"),-1; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <errno.h> int foo(void) { return errno=EINVAL,-1; } int far(void) { return printf("Fehler\n"),-1; } int main(int argc, char *argv[]) { printf("foo()=%d\n",foo()); printf("far()=%d\n",far()); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * An Stellen, wo nur eine Anweisung erlaubt ist (und man zu faul ist, einen Block zu öffnen) :<syntaxhighlight lang="C"> if(…) y=2,z=3; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int y=0,z=0; if(1) y=2,z=3; printf("y=%d z=%d\n",y,z); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * In vielen Ländern wird das Komma zur Darstellung von Gleitkommazahlen genutzt. Wird versehentlicher Weise dies in C/C++ übernommen, so führt dies zu einem unerwarteten Verhalten: :<syntaxhighlight lang="C"> double var; var=5.3; //Variable wird mit 5.3 initialisiert var=5,3; //KO, da Komma Bestandteil der Defintion ist var=(5,3); //Variable wird mit 3 initialisiert </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { double var; var=5.3; //Variable wird mit 5.3 initialisiert printf("var=%f\n",var); var=5,3; //KO, da Komma Bestandteil der Defintion ist var=(5,3); //Variable wird mit 3 initialisiert printf("var=%f\n",var); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === ?-Operator / Conditional-Operator === Operator mit 3 Operanden, welcher in Abhängigkeit des ersten Operanden den zweiten oder dritten Operanden zurückgibt. <code> Syntax: Logical-OR-expression ? expression : condition-expression </code> Entspricht der if()-Anweisung, wobei der ? Operator als solches einen Wert zurückgibt! Expression wird nur ausgewertet, wenn der erste Operand true ist. Andernfalls wird nur condition-expression ausgeführt. Der zurückgegebene Datentyp ergibt sich aus der Expression resp. Condition-expression. Beide sollten somit vom identischen Datentyp sein. Folgendes gilt es bei der Nutzung des ?-Operators zu beachten * Der Datentyp Expression und condition-Expression muss identisch sein <syntaxhighlight lang="C"> int a=5; a=a > 10 ? "String" : 4; //KO, "String" ist vom Datentyp (char*) und // 4 ist vom Datentyp (int). </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a=5; a=a > 10 ? "String" : 4; //KO, "String" ist vom Datentyp (char*) und // 4 ist vom Datentyp (int). return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Nach der GNU-C Reference kann der mittlere Operand fehlen, in diesem Fall wird stattdessen das Ergebnis des linken Operanden dort eingesetzt (siehe https://gcc.gnu.org/onlinedocs/gcc/Conditionals.html#Conditionals) <syntaxhighlight lang="C"> int a=13; int b=a>10 ? : 0; //wenn a > 10 wird true, andernfalls false zurückgegeben </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a=13; int b=a>10 ? : 0; //wenn a > 10 wird true, andernfalls false zurückgegeben printf("b=%d\n",b); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Sollen innerhalb von condition-expression mehrere (durch Komma getrennte) Anweisungen enthalten sein, so sind diese zu Klammern! Andernfalls bedingt die niedrige Priorität des Komma-Operators ein anders Verhalten, als erwartet. <syntaxhighlight lang="C"> int a=7,max=5; max=a>max ? a : max; //Alles bestens int var0,var1,var2; var0=a>5 ? a++,5:6,a=1; //das zweite Komma wird als separate Anweisung //ausgeführt und kommt somit immer zur //Ausführung var1=(a>5 ? a++,5:6),a=1; //durch Klammerung klare Abgrenzung var2= a>5 ? a++,5 : (6,a=1); //durch Klammerung klare Abgrenzung </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int a=7; int max=5; max=a>max ? a : max; //Alles bestens printf("max=%d\n",max); int var0,var1,var2; var0=a>5 ? a++,5:6,a=1; //das zweite Komma wird als separate Anweisung //ausgeführt und kommt somit immer zur //Ausführung printf("var0=%d a=%d\n",var0,a); var1=(a>5 ? a++,5:6),a=1; //durch Klammerung klare Abgrenzung printf("var1=%d a=%d\n",var1,a); var2= a>5 ? a++,5 : (6,a=1); //durch Klammerung klare Abgrenzung printf("var2=%d a=%d\n",var2,a); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Die Nutzung des ?-Operators empfiehlt sich an diversen Stellen: * Bei Makros :<syntaxhighlight lang="C"> #define MAX(a,b) (a>b?a:b) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #define MAX(a,b) (a>b?a:b) int main(int argc, char *argv[]) { printf("MAX(4,5)=%d\n",MAX(4,5)); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Beim Fehlerhandling :<syntaxhighlight lang="C"> char *str=strstr("hallo123","lox"); //Ausgabe von str nur, wenn Suche erfolgreich (str!=NULL) war printf("%s",str!=NULL?str : "(not found)" ); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char *str=strstr("hallo123","lox"); //Ausgabe von str nur, wenn Suche erfolgreich (str!=NULL) war printf("%s",str!=NULL?str : "(not found)" ); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Prüfen, ob eine Funktion erfolgreich ausgeführt wurde, bevor eine weitere Funktion ausgeführt wird <syntaxhighlight lang="C"> int ret; ret=init1(); //im Fehlerfreien gibt init1() 0 zurück ret=ret?:init2(); //Aufruf von init2() nur wenn ret==0 ist //andernfalls wird ret zurückgegeben </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int init1(void) { printf("init1() called\n"); return 0; } int init2(void) { printf("init2() called\n"); return 0; } int main(int argc, char *argv[]) { int ret; ret=init1(); //im Fehlerfreien gibt init1() 0 zurück ret=ret?:init2(); //Aufruf von init2() nur wenn Ret==0 ist //andernfalls wird Ret zurückgegeben return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Logische Verknüpfungen === Alle logischen Operationen nutzen als Operanden Ganzzahlen ,Gleitkommazahlen oder Zeiger. Der Operand wird als false angesehen, wenn der Operand 0, 0.0 oder NULL ist. Andernfalls als true. Das Ergebnis ist immer vom Datentyp int und hat den Wert von 0 oder 1. <code>Syntax: Expression && Expression</code><br /> <code>Syntax: Expression || Expression</code><br /> <code>Syntax: ! Expression</code><br/> Bei der logischen UND und ODER Verknüpfung wird zuerst der linke Ausdruck ausgewertet (Operator ist ein Sequence Point). Der rechte Ausdruck wird nur ausgeführt, wenn: * bei der logischen UND Verknüpfung der linke Ausdruck TRUE ergab * bei der logische OR Verknüpfung der linke Ausdruck FALSE ergab Andernfalls steht das Ergebnis schon mit der Auswertung des linken Operanden fest.<br /> In der theoretischen Informatik wird dies 'Non-strict-evaluation' genannt, bei welcher der Rückgabewert feststeht, bevor alle Ausdrücke bearbeitet worden sind. Beispiel für das Verhalten des Ausbleibens der Auswertung des zweiten Operators: <syntaxhighlight lang="C"> int a=0,b=0; //a=-1; //Als alternativer Startwert if(++a || ++a) b=1; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=0,b=0; //a=-1; //Als alternativer Startwert if(++a {{!}}{{!}} ++a) b=1; printf("a=%d b=%d\n",a,b); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Diese Funktionalität ist insbesondere beim Umgang mit Fehlern vorteilhaft: * Prüfen, ob eine Variable einen gültigen Wert hat, bevor sie weiterverwendet wird <syntaxhighlight lang="C"> char *str = strstr("hallo123","la"); if(str!=NULL && strlen(str) ) printf("Len = %ld",strlen(str)); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char *str = strstr("hallo123","la"); if(str!=NULL && strlen(str) ) printf("Len = %ld",strlen(str)); else printf("Kein Substring im String gefunden\n"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Prüfen, ob eine Funktion erfolgreich ausgeführt wurde, bevor eine weitere Funktion aufgerufen wird: <syntaxhighlight lang="C"> int ret; ret=init1(); //Bei erfolgreicher Initialisierung wird 1 zurückgegeben ret=ret && init2(); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int init1(void) { printf("init1() called\n"); return 1; } int init2(void) { printf("init1() called\n"); return 1; } int main(int argc, char *argv[]) { int ret; ret=init1(); //Bei erfolgreicher Initialisierung wird 1 zurückgegeben ret=ret && init2(); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Bitweise Verknüpfungen === Alle bitweisen Operationen nutzen als Operanden Ganzzahlen. Bei vorzeichenbehafteten Zahlen ist das Ergebnis nach [C11 6.5] Implementierungsabhängig, wobei das Vorzeichenbit zumeist als eigenständiges Bit angesehen wird und bei UND/ODER/EXOR als normales BIT betrachtet wird. <code>Syntax: Ganzzahl & Ganzzahl → Bitweise UND Operation</code><br /> <code>Syntax: Ganzzahl | Ganzzahl → Bitweise ODER Operation</code><br /> <code>Syntax: Ganzzahl ^ Ganzzahl → Bitweise EXOR Operation</code><br /> <code>Syntax: ~ Ganzzahl → Bitweise Negierung</code><br /> <code>Syntax: Ganzzahl >> additive-expression</code><br /> <code>Syntax: Ganzzahl << additive-expression</code><br /> Mittels des Schiebeoperators können Ganzzahlen um additive-expression bitweise nach Links <code><<</code> oder Rechts <code>>></code> verschoben werden. Der resultierende Datentyp ergibt sich aus dem linken Operanden. Der rechte Operand muss positiv und kleiner gleich der Bitbreite des linken Operanden sein. Andernfalls ist das Ergebnis implementierungsspezifisch. Nach [C11 6.5.7] ist das Ergebnis der Schiebeoperation implementierungsspezifisch, wenn der linke Operand eine negative vorzeichenbehaftete Zahl ist. In der Regel wendet der Compiler jedoch folgende Schiebeoperation an: * Logisches Schieben (zu füllende Bit-Stellen werden mit 0 aufgefüllt), wenn der linke Operand eine vorzeichenlose Zahl ist * Arithmetisches Schieben (zu füllende Bit-Stelle beim Rechtsschieben wird mit dem Vorzeichenbit aufgefüllt), wenn der linke Operand eine vorzeichenbehaftete Zahl ist. Hiermit wird das Vorzeichen beibehalten, so dass eine negative Zahl nach dem Schieben weiterhin negativ ist (In Java erfolgt dies durch den >>> - Operator) Hinweis: * Ein Schieben um eine Stelle nach rechts entspricht einer Division durch 2 * Ein Schieben um eine Stelle nach links entspricht einer Multiplikation mit 2 === sizeof-Operator === Der sizeof-Operator dient zur Ermittlung des Speicherbedarfs (in Bytes) einer Variablen/eines Datentyps. <code>Syntax: sizeof (type-name)</code><br /> <code>Syntax: sizeof unary-expression</code><br /> Als Argument für den Sizeof-Operator kann wahlweise ein Datentyp, eine Variable oder ein Ausdruck genutzt werden. Sizeof gilt als Konstantenausdruck, d.h. seine Berechnung erfolgt durch den Compiler, sodass: * sizeof zur Initialisierung von globalen Variablen genutzt werden :<syntaxhighlight lang="C"> struct xyz{int x,y,z;}; size_t size=sizeof(struct xyz); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct xyz{int x,y,z;}; size_t size=sizeof(struct xyz); //3*sizeof(int)=12 int main(int argc, char *argv[]) { printf("size=%zu\n",size); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * bei einem Ausdruck dieser nicht ausgeführt wird, sondern nur der resultierende Datentyp bestimmt wird und dessen Größe zurückgegeben :<syntaxhighlight lang="C"> short var=4711; size_t size=sizeof var++; //var=4711, size=2 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { short var=4711; size_t size=sizeof var++; //var=4711, size=2 printf("size=%zu var=%d\n",size,var); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Der resultierende Datentyp des Rückgabewertes ist size_t. Es empfiehlt sich, den sizeof-Operator mit Klammern zu nutzen, andernfalls wird im Falle eines Ausdruckes der Speicherbedarf des linken Operanden angegeben: <syntaxhighlight lang="C"> size_t size; short var; size=sizeof var+0; //size=2, da sizeof auf var angewendet wird size=sizeof(var+0); //size=4, da sizoeof auf den resultierenden datentyp //angewendet wird </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { size_t size; short var=0; size=sizeof var+0; //size=2, da sizeof auf var angewendet wird printf("size=%zu var=%d\n",size,var); size=sizeof(var+0); //size=4, da sizoeof auf den resultierenden datentyp //angewendet wird printf("size=%zu var=%d\n",size,var); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * sizeof angewendet auf char gibt immer den Wert 1 zurück. * sizeof ist nicht auf Operanden vom Typ Funktion, void, Felder ohne Größenangabe und Bitfelder anwendbar * wird sizeof auf ein VLA angewendet, so entspricht sizeof nicht mehr einen Konstantenausdruck, sondern einem Funktionsaufruf :<syntaxhighlight lang="C"> void foo(int n) { int arr[n]; size_t size=sizeof(arr); //Speicherbedarf ist kein Konstantenausdruck //sondern wird zur Laufzeit berechnet </syntaxhighlight> * Sizeof entspricht nicht strlen(), da sizeof den für die Variable reservierten Speicherbereich zurückgibt und nicht wie strlen() den Inhalt des Speicher hinsichtlich des Stringendezeichens auswertet. :<syntaxhighlight lang="C"> char string[100]="Test"; printf("%zu\n",sizeof(string)); //100 printf("%zu\n",strlen(string)); //4 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char string[100]="Test"; printf("%zu\n",sizeof(string)); //100 printf("%zu\n",strlen(string)); //4 return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Anweisungen == === If-Anweisung === <code>Syntax: if (expression) statement</code><br /> <code>Syntax: if (expression) statement else statement</code><br /> Das Ergebnis des Ausdruckes (Ganzzahl, Gleitkommazahl oder Zeiger) wird auf ungleich 0, 0.0 oder NULL getestet. Trifft dies zu, so wird statement ausgeführt. Andernfalls wird das else statement ausgeführt, sofern vorhanden. Sollen mehrere Anweisungen ausgeführt werden, so sind diese mittels Block zusammenzufassen (diesen dann bitte nicht mit ; abschließen). Beispiel: <syntaxhighlight lang="C"> if(a==1) if(a=1) //Erst Zuweisung, dann prüfen der Rückgabe der Zuweisung if(a) //entspricht a!=0 if(printf("hallo")<0) //prüfen, ob printf() fehlschlägt if( ({int dummy=a;a=b;b=dummy;})==6) if(a=7) //Zuweisung! if(7=a) //KO, Eine Konstante kann kein L-Value sein if(7==a) {printf("a ist 7");}; //Semikolon hinter Blocksope ist eine zweite else //Anweisung, so dass die ELSE Anweisung nicht {printf("Compilerfehler");};//zur IF-Anwesigung zugeordnet werden kann. </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=1,b=2; if(a==1) printf("a==1\n"); if(a=1) //Erst Zuweisung, dann prüfen der Rückgabe der Zuweisung printf("a=1\n"); if(a) //entspricht a!=0 printf("a\n"); if(printf("hallo\n")<0) //prüfen, ob printf() fehlschlägt printf("printf()\n"); if( ({int dummy=a;a=b;b=dummy;})==6) printf("({...})\n"); if(a=7) //Zuweisung! printf("a=7\n"); if(7=a) //KO, Eine Konstante kann kein L-Value sein ; if(7==a) {printf("a ist 7");}; //Semikolon hinter Blocksope ist eine zweite else //Anweisung, so dass die ELSE Anweisung nicht {printf("Compilerfehler");};//zur IF-Anwesigung zugeordnet werden kann. return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Bei der Anweisung <code>if(a==7)</code> finden aus syntaktischer Sicht zwei Aktionen statt. Zunächst wird geprüft, ob a gleich 7 ist. Dieser Vergleich liefert true(=1) oder false(=0) zurück. Die If-Anweisung prüft im Anschluss, ob das Argument true oder false ist. === For-Anweisung === <code>Syntax: for(Initialisierungsteil<sub>OPT</sub> ; Test<sub>OPT</sub> ; Fortsetzung<sub>OPT</sub>) Statement</code> Die For-Anweisung wird vom Compiler wie folgt umgesetzt: <poem> '''Initialisierungsteil'''<sub>OPT</sub> Goto Next Goon: //Continue-Anweisung entspricht goto Continue //Break-Anweisung entspricht goto Break; '''Statement''' Continue: '''Fortsetzung'''<sub>OPT</sub> Next: if('''Test'''<sub>OPT</sub>) goto Goon Break: </poem> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> int main(int argc, char *argv[]) { int lauf; int summe; for(summe=lauf=0;lauf<20;lauf++) summe+=lauf; printf("summe=%d\n",summe); //Initialisierungsteil summe=lauf=0; goto Next; Goon: //Continue-Anweisung entspricht goto Continue //Break-Anweisung entspricht goto Break; //Statement summe+=lauf; Continue: __attribute__((unused)) //Fortsetzung lauf++; Next: //if(TestOPT) goto Goon if(lauf<20) goto Goon; Break: __attribute__((unused)) printf("summe=%d\n",summe); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Die einzelne Elemente haben folgende Bedeutung/Besonderheiten: ;Initialisierungsteil: Zum Initialisieren von Schleifenvariablen, wird einmalig mit Beginn der FOR-Anweisung ausgeführt. :* kann Leer sein, dann erfolgt keine Initialisierung :* Ab C99: Hier kann eine lokale Variable definiert werden, welche nur innerhalb dieser For-Anweisung gültig ist ;Testteil: Hierin wird vor jedem Schleifendurchlauf geprüft, ob die Schleifenbedingung erfüllt ist. Wenn Bedingung nicht erfüllt ist (Ganzzahl, Gleitkommazahl oder Zeiger gleich 0,0.0 oder NULL), wird die For-Schleife beendet. :* Kann leer sein, dann wird dieser Teil als true angesehen ;Fortsetzungsteil: Wird nach jeden Schleifendurchlauf ausgeführt. In der Regel sollte hier die Schleifenvariable aktualisiert werden :* Kann leer sein ;Statement: In der Schleife auszuführender Ausdruck :* Sollen mehrere Ausdrücke ausgeführt werden, so sind diese in einem Block zusammen zu fassen. :Ergänzende Anweisungen innerhalb des Statements/Block :* 'continue' zum Fortsetzen des Schleifendurchlaufes, d.h. Sprung zum Fortsetzungs-Teil :* 'break', zum Beenden des Schleifendurchlaufes Beispiele: * For-Schleife mit lokaler Schleifenvariable :<syntaxhighlight lang="C"> char string[]="hallo"; for(size_t lauf=0; lauf < strlen(string); lauf++) //Schleife ist Suboptimal, da in jedem Durchlauf die Funktion //strlen() aufgerufen wird! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <time.h> struct timespec diff_timespec(const struct timespec *minuend, const struct timespec *subtrahend ) { struct timespec diff = { .tv_sec = minuend->tv_sec - subtrahend->tv_sec, .tv_nsec = minuend->tv_nsec - subtrahend->tv_nsec}; //Sekundenüberlauf? if (diff.tv_nsec < 0) { diff.tv_nsec += 1000000000; diff.tv_sec--; } return diff; } int main(int argc, char *argv[]) { char string1[10000]; char string2[10000]; memset(string1,'a',sizeof(string1)); memset(string2,'a',sizeof(string2)); string1[sizeof(string1)-1]=0; string2[sizeof(string2)-1]=0; struct timespec start1,stop1; struct timespec start2,stop2; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start1); size_t sum1=0; for(size_t lauf=0; lauf < strlen(string1); lauf++) sum1++; //Schleife ist Suboptimal, da in jedem Durchlauf die Funktion //strlen() aufgerufen wird! clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop1); clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start2); size_t sum2=0; size_t count2=strlen(string2); for(size_t lauf=0; lauf < count2; lauf++) sum2++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop2); stop1=diff_timespec(&stop1,&start1); stop2=diff_timespec(&stop2,&start2); printf("Slow: Sum1=%zu Time=%lds %ldns\n",sum1,stop1.tv_sec,stop1.tv_nsec); printf("Fast: Sum2=%zu Time=%lds %ldns\n",sum2,stop2.tv_sec,stop2.tv_nsec); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Schleife mit Break-Anweisung :<syntaxhighlight lang="C"> char dest[5]; char src[10]="HalloWelt"; for(size_t lauf=0; src[lauf]!=0; lauf++) { if(lauf >= sizeof(dest)) break; dest[lauf]=src[lauf]; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char dest[5]; char src[10]="HalloWelt"; for(size_t lauf=0; src[lauf]!=0; lauf++) { printf("lauf=%zu\n",lauf); if(lauf >= sizeof(dest)) break; dest[lauf]=src[lauf]; } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Schleife, bei welcher die gesamte Aktion innerhalb der For-Anweisung ausgeführt wird :<syntaxhighlight lang="C"> char dest[5]; char src[10]="HalloWelt"; for(size_t l=0; src[l]!=0 && l <sizeof(dest); printf("l=%zu\n",l),dest[l]=src[l],l++); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char dest[5]; char src[10]="HalloWelt"; for(size_t l=0;src[l]!=0 && l <sizeof(dest); printf("l=%zu\n",l),dest[l]=src[l],l++); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Schleifenvariable muss keine Zählvariable sein :<syntaxhighlight lang="C"> int zahl=0b100010; int bits=0; for(int mask=0b10000000; mask!=0; mask>>=1 ) bits+= zahl & mask ? 1 : 0; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int zahl=0b100010; int bits=0; for(int mask=0b10000000; mask!=0; mask>>=1 ) bits+= zahl & mask ? 1 : 0; printf("Anzahl Einsen in %b = %d\n",zahl,bits); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Zeiger als Schleifenvariable :<syntaxhighlight lang="C"> char src[]="hallo"; char dst[strlen(src)+1]; char *s,*d; for(s=src,d=dst; *s; ) *d++=*s++; *d=0; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char src[]="hallo"; char dst[strlen(src)+1]; char *s,*d; for(s=src,d=dst; *s; ) *d++=*s++; *d=0; printf("src='%s' dst='%s'\n",src,dst); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Zur Geschwindigkeitsoptimierung sollten im Test- und Fortsetzungsteil keine Funktionsaufrufe mit Werten enthalten sein, die sich innerhalb der Schleife nicht ändern: :<syntaxhighlight lang="C"> for(size_t lauf=0;lauf<strlen("hallo");lauf++) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <time.h> struct timespec diff_timespec(const struct timespec *minuend, const struct timespec *subtrahend ) { struct timespec diff = { .tv_sec = minuend->tv_sec - subtrahend->tv_sec, .tv_nsec = minuend->tv_nsec - subtrahend->tv_nsec}; //Sekundenüberlauf? if (diff.tv_nsec < 0) { diff.tv_nsec += 1000000000; diff.tv_sec--; } return diff; } int main(int argc, char *argv[]) { char string1[10000]; char string2[10000]; memset(string1,'a',sizeof(string1)); memset(string2,'a',sizeof(string2)); string1[sizeof(string1)-1]=0; string2[sizeof(string2)-1]=0; struct timespec start1,stop1; struct timespec start2,stop2; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start1); size_t sum1=0; for(size_t lauf=0; lauf < strlen(string1); lauf++) sum1++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop1); clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start2); size_t sum2=0; size_t count2=strlen(string2); for(size_t lauf=0; lauf < count2; lauf++) sum2++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop2); stop1=diff_timespec(&stop1,&start1); stop2=diff_timespec(&stop2,&start2); printf("Slow: Sum1=%zu Time=%lds %ldns\n",sum1,stop1.tv_sec,stop1.tv_nsec); printf("Fast: Sum2=%zu Time=%lds %ldns\n",sum2,stop2.tv_sec,stop2.tv_nsec); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Zur Geschwindigkeitssteigerung sollte im Testteil auf 0 abgefragt werden, d.h. die Schleifenvariable dekrementiert werden :<syntaxhighlight lang="C"> for(int lauf=700000;lauf;lauf--) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <time.h> struct timespec diff_timespec(const struct timespec *minuend, const struct timespec *subtrahend ) { struct timespec diff = { .tv_sec = minuend->tv_sec - subtrahend->tv_sec, .tv_nsec = minuend->tv_nsec - subtrahend->tv_nsec}; //Sekundenüberlauf? if (diff.tv_nsec < 0) { diff.tv_nsec += 1000000000; diff.tv_sec--; } return diff; } int main(int argc, char *argv[]) { char string1[10000]; char string2[10000]; memset(string1,'a',sizeof(string1)); memset(string2,'a',sizeof(string2)); string1[sizeof(string1)-1]=0; string2[sizeof(string2)-1]=0; struct timespec start1,stop1; struct timespec start2,stop2; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start1); size_t sum1=0; for(ssize_t lauf=700000000;lauf;lauf--) sum1++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop1); clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start2); size_t sum2=0; for(ssize_t lauf=0;lauf<700000000;lauf++) sum2++; clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&stop2); stop1=diff_timespec(&stop1,&start1); stop2=diff_timespec(&stop2,&start2); printf("Slow: Sum1=%zu Time=%lds %ldns\n",sum1,stop1.tv_sec,stop1.tv_nsec); printf("Fast: Sum2=%zu Time=%lds %ldns\n",sum2,stop2.tv_sec,stop2.tv_nsec); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Alternativ zu einer Laufvariablen empfiehlt sich die Nutzung von Pointer als Schleifenvariable; :<syntaxhighlight lang="C"> for(char *ptr=str; *ptr; ptr++); </syntaxhighlight> === While-Anweisung === <code>Syntax: while(expression) Statement </code><br /> <code>Syntax: do Statement while(expression);</code><br /> Die While-Anweisungen werden vom Compiler wie folgt umgesetzt: {| class="wikitable" ! while()-Anweisung !! do while()-Anweisung |- | <poem> Continue: if(!'''expression''') goto Break //Break-Anweisung entspricht // goto Break; //Continue-Anweisung entspr. // goto Continue; '''Statement''' goto Continue Break: </poem> || <poem> GoOn: //Break-Anweisung entspr. // goto Break //Continue-Anweisung ent. // goto Continue '''Statement''' Continue: if('''expression''') goto GoOn Break: </poem> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> int main(int argc, char *argv[]) { int lauf; int summe; lauf=summe=0; while(lauf<10) { if(lauf>=5) break; lauf++; if(lauf<3) continue; summe+=lauf; } printf("summe=%d\n",summe); lauf=summe=0; Continue1: if(!(lauf<10)) goto Break1; //Break-Anweisung entspricht // goto Break; //Continue-Anweisung entspr. // goto Continue; //Statement if(lauf>=5) { goto Break1; } lauf++; if(lauf<3) goto Continue1; summe+=lauf; goto Continue1; Break1: printf("summe=%d\n",summe); lauf=summe=0; do { lauf++; if(lauf>5) break; if(lauf<3) continue; summe+=lauf; } while(lauf<10); printf("summe=%d\n",summe); lauf=summe=0; GoOn2: //Break-Anweisung entspr. // goto Break //Continue-Anweisung ent. // goto Continue //Statement lauf++; if(lauf>5) goto Break2; if(lauf<3) goto Continue2; summe+=lauf; Continue2: if(lauf<10) goto GoOn2; Break2: __attribute__((unused)); printf("summe=%d\n",summe); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Folgendes gilt es bei der Nutzung der While-Anweisung zu beachten: * Soll mehr als ein Statement innerhalb der While-Schleife ausgeführt werden, so sind diese in einem Block zu schreiben * Statement kann eine Leeranweisung (gekennzeichnet durch ein Semikolon) sein :<syntaxhighlight lang="C"> while(1); do ; while(1); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int lauf1=1000; while(lauf1--); int lauf2=1000; do ; while(lauf2--); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Bei der do-While-Schleife ist das abschließende Semikolon Bestandteil des Befehls * expression muss eine Ganzzahl, Gleitkommazahl oder Zeiger zurückgeben, der bei False (0, 0.0 oder NULL) die Schleife beendet. Beispiele: * Endlosschleife :<syntaxhighlight lang="C"> while(1) {} </syntaxhighlight> * Schleife zum Durchlaufen eines String :<syntaxhighlight lang="C"> char str[]="string"; char *ptr=str; while(*ptr++); size_t len=ptr-str-1; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char str[]="string"; char *ptr=str; while(*ptr++); size_t len=ptr-str-1; printf("Stringlänge=%zu\n",len); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Switch-Anweisung === <code>Syntax: switch(expression) statement</code><br /> <code>Syntax: statement:= case constant-expression: statement<sub>opt</sub> default: statement<sub>opt</sub></code><br /> Die Switch-Anweisung entspricht einer verschachtelten If-Anweisung, mit der Besonderheit, dass der auszuführende Code nicht im If-Zweig stattfindet, sondern dort ein goto zum eigentlichen Code enthalten ist: {| class="wikitable" ! Switch-Anweisung !! Compilerumsetzung |- |<syntaxhighlight lang="C"> switch(a) { case 1: int a=7; //Code break; case 2: printf("%d",a); case 3: { int a; //Code } case 4 ... 8: default: //Code } </syntaxhighlight> ||<poem> if(a==1) goto label1; else if(a==2) goto label2; else goto label_default; //------------------- label1: //Code goto label_break; label2: //Code label_default: goto label_break; label_break: </poem> |} Folgendes gilt es bei der Nutzung der Switch-Anweisung zu beachten: * <code>Expression</code> muss zu einer Ganzzahl (int, short, char, long, long long) oder enum (entspricht einer Ganzzahl) ausgewertet werden * <code>constant-expression</code> muss eine Ganzzahl-Konstante oder ein Enumelement sein. Sie darf nicht doppelt im Block vorkommen. Der genaue Datentyp ergibt sich aus dem Datentyp der <code>expression</code> * Lt. Spezifikation ist ein nur <code>statement</code> hinter der switch-Anweisung erlaubt, so dass nur ein <code>case</code> Fall oder der <code>default</code> Fall bedient werden kann::<syntaxhighlight lang="C"> int var=1; switch(var) case 1: printf("hallo"); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int var=1; switch(var) case 1: printf("hallo"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Die geschweifte Klammer der <code>switch</code>-Anweisung erzeugt einen Block, so dass a) hier mehrere <code>case</code>-Fälle und b) hierin definierte Variablen innerhalb des gesamten Blocks zur Verfügung stehen (sind somit nicht <code>case</code> abhängig). Die <code>case</code> Anweisung ist nichts anderes als eine Sprungmarken (welche durch die switch-Anweisung angesprungen wird) so dass der Initialisierungsteil der lokalen Variablen übersprungen / nicht ausgeführt werden kann: :<syntaxhighlight lang="C"> switch(a) { int a=3; //Variable in gesamten Block gültig case 1: int b=3; //Variabe in gesamten Block gültig printf("%d %d",a,b); //a undefiniert, b=3 break; case 2: printf("%d %d",a,b); //a und b undefiniert break; case 3: { //Block, so dass Variable int a=4711; //nur in diesem CASE gültig ist break; } } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=1; switch(a) { int a=3; //Variable in gesamten Block gültig case 1: int b=3; //Variabe in gesamten Block gültig printf("a=%d b=%d",a,b); //a undefiniert, b=3 break; case 2: printf("%d %d",a,b); //a und b undefiniert break; case 3: { //Block, so dass Variable int a=4711; //nur in diesem CASE gültig ist (void)a; break; } } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * GNU-C (siehe [https://www.gnu.org/software/c-intro-and-ref/manual/html_node/switch-Statement.html Switch-Statement]) erlaubt ergänzend zur Angabe einer Konstante die Angabe eines Wertebereiches: :<syntaxhighlight lang="C"> switch(a) { case 1 ... 8: //Leerzeichen zwischen den Konstanten zwingend notwendig //andernfalls wird der Punkt zur Konstante zugehörig //interpretiert (erzeugt dann eine Gleitpunktkonstante) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=2; switch(a) { case 1 ... 8: //Leerzeichen zwischen den Konstanten zwingend notwendig //andernfalls wird der Punkt zur Konstante zugehörig //interpretiert (erzeugt dann eine Gleitpunktkonstante) printf("a im Bereich von 1 bis 8\n"); break; } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * <code>break</code> ist optional. Mittels <code>break</code> wird an das Ende der Switch-Anweisung gesprungen. Wenn <code>break</code> weggelassen wird, wird die nachfolgende Anweisungen ausgeführt. Ggf. gibt der Compiler eine Warning aus. Mittels der GCC-Compiler-Anweisung __attribute__((fallthrough)); kann diese Warning unterdrückt werden: :<syntaxhighlight lang="C"> switch(a) { case 0: //ggf. Compiler-Warning __attribute__((fallthrough)); case 1: case 2: break; } </syntaxhighlight> * Ein Variable Length Array ist als Variable im Switch-Block direkt nicht erlaubt. Ist dies notwendig, so ist das VLA in einem inneren Block zu kapseln: :<syntaxhighlight lang="C"> switch(var) { case 1: int arr[var]; //KO break; case 2: { int arr[var]; //OK } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int var=1; switch(var) { case 1: int arr[var]; //KO break; case 2: { int arr[var]; //OK } } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Case - Anweisungen sind nichts anderes als Sprungmarken (Labels), so dass CASE-Anweisungen überall innerhalb des Switch-Blockes stehen können: :<syntaxhighlight lang="C"> int prime(int value) {return value+1;} void hallo(int var) { switch(var) { default: if(prime(var)) case 2: case 4: printf("%d",var); else { case 3: case 6: printf("%x",var); } case 7: printf("xyz"); } } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int prime(int value) { return value+1; } int main(int argc, char *argv[]) { int var=1; switch(var) { default: if(prime(var)) case 2: case 4: printf("%d",var); else { case 3: case 6: printf("%x",var); } case 7: printf("xyz"); } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} :oder anderen Anweisungen innerhalb des Switch-Blockes enthalten sein können: :<syntaxhighlight lang="C"> void send(register char *dst, register char *src, register size_t count) { register char unsigned n=(count+7)/8; switch(count%8) { case 0: do{ *dst = *src++; case 7: *dst = *src++; case 6: *dst = *src++; case 5: *dst = *src++; case 4: *dst = *src++; case 3: *dst = *src++; case 2: *dst = *src++; case 1: *dst = *src++; }while(--n>0); } } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <stdint.h> //fuer uintptr_t void send(register char *dst, register char *src, register size_t count) { register char unsigned n=(count+7)/8; switch(count%8) { case 0: do{ *dst = *src++; printf("%02hhx ",*dst); case 7: *dst = *src++; printf("%02hhx ",*dst); case 6: *dst = *src++; printf("%02hhx ",*dst); case 5: *dst = *src++; printf("%02hhx ",*dst); case 4: *dst = *src++; printf("%02hhx ",*dst); case 3: *dst = *src++; printf("%02hhx ",*dst); case 2: *dst = *src++; printf("%02hhx ",*dst); case 1: *dst = *src++; printf("%02hhx ",*dst); }while(--n>0); } } int main(int argc, char *argv[]) { char src[20]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}; char dst; send(&dst,src,20); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Eine Switch-Case Anweisung über Strings sind in C/C++ nicht möglich: :<syntaxhighlight lang="C"> switch(str) { case "hallo": return 1; case "du da": return 2; case "xyz": return 3; default: rReturn -1; } </syntaxhighlight> :Ein direkte Lösungsansatz ist die Nutzung von strcmp() zum Vergleichen von String. Da strcmp zeichenweise den String vergleicht, ist dieser Ansatz langsam. Alternativ bietet sich an, von allen String einen Hash-Wert zu berechnen und zunächst diesen Hash-Wert zu kontrollieren. Da der Hash-Wert nicht eindeutig ist, muss ergänzend ein strcmp() erfolgen: :<syntaxhighlight lang="C"> char *str="hallo"; switch(HASH_LAUFZEIT(str)) { case HASH_COMPILEZEIT('d','u'): if(!strcmp(str,"du")) printf("Case \"du\":\n"); break; case HASH_COMPILEZEIT('h','a','l','l','o'): if(!strcmp(str,"hallo")) printf("Case \"hallo\"\n"); else if(!strcmp(str,"xyz")) printf("String='xyz'\n"); break; default: return -1; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> #include <stdint.h> //Lösungsansatz von: https://stackoverflow.com/questions/2826559/compile-time-preprocessor-hashing-of-string #define H1(s,i,x) (x*65599u+(uint8_t)s[(i)<strlen(s)?strlen(s)-1-(i):strlen(s)]) #define H4(s,i,x) H1(s,i,H1(s,i+1,H1(s,i+2,H1(s,i+3,x)))) #define H16(s,i,x) H4(s,i,H4(s,i+4,H4(s,i+8,H4(s,i+12,x)))) #define H64(s,i,x) H16(s,i,H16(s,i+16,H16(s,i+32,H16(s,i+48,x)))) #define H256(s,i,x) H64(s,i,H64(s,i+64,H64(s,i+128,H64(s,i+192,x)))) #define HASH(s) ((uint32_t)(H256(s,0,0)^(H256(s,0,0)>>16))) #define HASH_LAUFZEIT(s) (H256(s,0,0)) //Eigener Lösungsatz zur Umsetzung des vorherigen HASH-Algorithmus //so dass dieser zur Compilezeit berechnet werden kann //Was fehlt ist die abschließende EXOR berechnung! //Problem war, dass die Array-Dereferenzierung nicht zur Compilezeit //aufelöst werden kann #define HH0(a,x) (x*65599u+a) #define HH1(a) HH0(a,HH0(0,HH0(0,HH0(0,0)))) #define HH2(a,b) HH0(b,HH0(a,HH0(0,HH0(0,0)))) #define HH3(a,b,c) HH0(c,HH0(b,HH0(a,HH0(0,0)))) #define HH4(a,b,c,d) HH0(d,HH0(c,HH0(b,HH0(a,0)))) #define HH4x(a,b,c,d,x) HH0(d,HH0(c,HH0(b,HH0(a,x)))) #define HH5(a,b,c,d,e) HH4x(b,c,d,e,HH4x(0,0,0,a,0)) #define HH6(a,b,c,d,e,f) HH4x(c,d,e,f,HH4x(0,0,a,b,0)) #define HH7(a,b,c,d,e,f,g) HH4x(d,e,f,g,HH4x(0,a,b,c,0)) #define HH8(a,b,c,d,e,f,g,h) HH4x(e,f,g,h,HH4x(a,b,c,d,0)) #define HH9(a,b,c,d,e,f,g,h,i) HH4x(f,g,h,i,HH4x(b,c,d,e,HH4x(0,0,0,a,0))) #define HH10(a,b,c,d,e,f,g,h,i,j) HH4x(g,h,i,j,HH4x(c,d,e,f,HH4x(0,0,a,b,0))) #define HH11(a,b,c,d,e,f,g,h,i,j,k) HH4x(h,i,j,k,HH4x(d,e,f,g,HH4x(0,a,b,c,0))) #define HH12(a,b,c,d,e,f,g,h,i,j,k,l) HH4x(i,j,k,l,HH4x(e,f,g,h,HH4x(a,b,c,d,0))) #define HH13(a,b,c,d,e,f,g,h,i,j,k,l,m) HH4x(j,k,l,m,HH4x(f,g,h,i,HH4x(b,c,d,e,HH4x(0,0,0,a,0)))) #define HH14(a,b,c,d,e,f,g,h,i,j,k,l,m,n) HH4x(k,l,m,n,HH4x(g,h,i,j,HH4x(c,d,e,f,HH4x(0,0,a,b,0)))) #define HH15(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) HH4x(l,m,n,o,HH4x(h,i,j,k,HH4x(d,e,f,g,HH4x(0,a,b,c,0)))) #define HH16(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) HH4x(m,n,o,p,HH4x(i,j,k,l,HH4x(e,f,g,h,HH4x(a,b,c,d,0)))) #define EIGHTEENTH_ARGUMENT(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, \ a11,a12,a13,a14,a15,a16,a17,a18, ...) a18 #define CONCAT(c,d) c ## d #define CONCATI(a,b) CONCAT(a,b) #define HASH_COMPILEZEIT(...) CONCATI(HH , EIGHTEENTH_ARGUMENT(dummy, ## __VA_ARGS__, \ 16,15,14,13,12,11,10,9, 8, 7, 6, 5, 4, 3, 2, 1, 0))(__VA_ARGS__) //Lösungsansatz basierend auf: https://renenyffenegger.ch/notes/development/languages/C-C-plus-plus/preprocessor/macros/__VA_ARGS__/count-arguments #define COUNT_ARGUMENTS(...) EIGHTEENTH_ARGUMENT(dummy, ## __VA_ARGS__, \ 16,15,14,13,12,11,10,9, 8, 7, 6, 5, 4, 3, 2, 1, 0) int main(int argc, char *argv[]) { char *str="hallo"; switch(HASH_LAUFZEIT(str)) { case HASH_COMPILEZEIT('d','u'): if(!strcmp(str,"du")) printf("Case \"du\":\n"); break; case HASH_COMPILEZEIT('h','a','l','l','o'): if(!strcmp(str,"hallo")) printf("Case \"hallo\"\n"); else if(!strcmp(str,"xyz")) printf("String='xyz'\n"); break; default: return -1; } return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} :Siehe:[https://benhoyt.com/writings/hash-table-in-c/ Hash Table in C] == Label + Goto == === Label === <code>Syntax: name:</code><br /> Labels dienen zur Kennzeichnung einer Anweisung, so dass die Programmausführung an dieser Stelle fortgesetzt, resp. mit einer GOTO-Anweisung angesprungen werden kann. Ein Label ist durch den folgenden Doppelpunkt gekennzeichnet. Dem Label muss eine Anweisung folgen, welches auch eine Leeranweisung (Semikolon) sein kann. Folgendes gilt es bei der Nutzung von Labels zu beachten: * Ein Label entspricht der Speicheradresse des der Label-Anweisung folgenden Anweisung * Bei nicht genutzten Labels (mit goto nicht angesprungene Labels) gibt der Compiler eine Warning aus. Diese kann beim GCC-Compiler mit __attribute__((unused)) unterdrückt werden * die Case- und die Default-Anweisung aus der Switch-Anweisung entspricht einem Label <br /> Labels hat eine funktionsweite Sichtbarkeit (siehe Kap [[#Gültigkeit/Sichtbarkeit von Variablen| Gültigkeit/Sichtbarkeit von Variablen]]). Dies bedeutet, dass das: * Labels nur innerhalb einer Funktion gültig ist * Labels einen von Variablen/Funktionen/Datentypen unabhängigen Namensraum haben * Kein Prototyp für ein Label notwendig ist, wenn es bei Nutzung über goto noch nicht gesetzt worden ist, also nach vorne gesprungen wird === goto === <code>Syntax: goto label;</code><br /> Mit der Goto-Anweisung wird die Programmausführung an der mit <code>label</code> gekennzeichneten Stelle fortgesetzt. Folgendes gilt es bei der Nutzung von goto zu beachten: * Mit einer <code>goto</code> Anweisung kann an eine beliebige Steller innerhalb der '''identischen''' Funktion gesprungen werden. Es kann nicht zu einem Label in einer anderen Funktion gesprungen werden (hierzu ist <code>setjmp()</code> und <code>longjmp()</code> zu nutzen) * Mit der Goto Anweisung kann gleichermaßen in einen Block hinein, als auch herausgesprungen werden: :<syntaxhighlight lang="C"> goto first_time; for(;;) { if(a>10) goto last_time: first_time: a++; } last_time: ; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=0; goto first_time; for(;;) { printf("a=%d\n",a); if(a>10) goto last_time; first_time: a++; } last_time: ; //Leeranweisung wäre hier nicht nötig return 0; //da dem Label ein return folgt! } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Wird mit der <code>goto</code> Anweisung der Initialisierungsteil einer Variablen übersprungen, so ist zwar die Variable existent, beinhaltet aber nicht ihren Initialisierungswert Beispiel: <syntaxhighlight lang="C"> goto label1; if(a==3) { label2: printf("True\n"); } else label1: { printf("False\n"); } if(a==3) goto label2; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int a=3; goto label1; if(a==3) { label2: printf("True\n"); a++; } else label1: { printf("False\n"); } if(a==3) goto label2; return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * In Java gibt es das Schlüsselwort goto, welches aber ohne Funktion ist. Es gibt jedoch Labels, die mit "break label" angesprungen werden können === Anwendungsbeispiele === Prinzipiell sind Goto-Anweisungen zu vermeiden. In einigen Anwendungsfällen erweist sich goto als nützlich: * Nutzung nur einer <code>return</code> Anweisung in einer Funktionen :<syntaxhighlight lang="C"> #include <unistd.h> int input(int hdl,size_t buflen) { int rc=-1; unsigned char packettype; if(read(hdl,&packettype,1) != 1) goto exit; unsigned short packetlen; if(read(hdl,&packetlen,2) != 2) goto exit; if((1+packetlen) > buflen) { rc=-2; goto exit; } rc=packetlen; exit: return rc; } </syntaxhighlight> * Konstruktor mit mehreren Initialisierungsteilen :<syntaxhighlight lang="C"> int main(int argc,char *argv[]) { enum {INIT_2,INIT_1,INIT_START} fortschritt=INIT_START; int *ptr1; int *ptr2; if(!(ptr1=malloc(10))) goto end; fortschritt=INIT_1; if(!(ptr2=malloc(20))) goto end; fortschritt=INIT_2; // ... end: switch(fortschritt) { case INIT_2: free(ptr2); __attribute__((fallthrough)); case INIT_1: free(ptr1); __attribute__((fallthrough)); case INIT_START: } return (int)fortschritt; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { enum {INIT_2,INIT_1,INIT_START} fortschritt=INIT_START; int *ptr1; int *ptr2; if(!(ptr1=malloc(10))) goto end; fortschritt=INIT_1; if(!(ptr2=malloc(20))) goto end; fortschritt=INIT_2; // ... end: switch(fortschritt) { case INIT_2: free(ptr2); __attribute__((fallthrough)); case INIT_1: free(ptr1); __attribute__((fallthrough)); case INIT_START: } return (int)fortschritt; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Abbruch einer verschachtelten Schleife :<syntaxhighlight lang="C"> int arr[10][10]; size_t zeile; size_t spalte; for(zeile=0;zeile<10;zeile++) for(spalte=0;spalte<0;spalte++) if(arr[zeile][spalte]==0) goto label_end; label_end: if((zeile==0) && (spalte==0)) printf("Nichts gefunden"); else printf("Gefunden an %zu %zu",zeile,spalte); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc, char *argv[]) { int arr[10][10]; size_t zeile; size_t spalte; for(zeile=0;zeile<10;zeile++) for(spalte=0;spalte<0;spalte++) if(arr[zeile][spalte]==0) goto label_end; label_end: if((zeile==0) && (spalte==0)) printf("Nichts gefunden"); else printf("Gefunden an %zu %zu",zeile,spalte); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Sonstiges == === ??-Trigraphs === Zeichenfolge bestehend aus 3 Zeichen beginnend mit 2 Fragezeichen. Die beiden Fragezeichen entsprechen einem ESCAPE-Operator (siehe Kap [[#Char-Konstanten|Char-Konstanten]]), welcher das nachfolgende Zeichen durch ein anderes ASCII Zeichen ersetzt. Die Ersetzung findet auch innerhalb von Strings statt.<br /> Trigraphs wurden früher genutzt, als die ALTGR Taste noch nicht üblich war. <syntaxhighlight> ??< → { ??> → } ??( → [ ??) → ] ??/ → \ ??! → | ??' → ^ ??- → ~ ??= → # </syntaxhighlight> Bei neuer C Varianten muss zur Nutzung von Trigraphs der Compiler mittels -trigraphs aktiviert werden. <noinclude> {{Navigation zurückhochvor buch |zurücklink=Programmieren in C/C++: Toolchain/Entwicklungsumgebung |zurücktext=Toolchain/Entwicklungsumgebung |hochlink=Programmieren in C/C++ |hochtext=Inhaltsverzeichnis |vorlink=Programmieren in C/C++: Datentypen |vortext=Datentypen}} </noinclude> cl3jzasu2vkazf4n9w21b7hp5d1ex4z Programmieren in C/C++: Datentypen 0 118049 1090601 1077775 2026-09-09T08:34:11Z D. Justen 102048 Abarbeitungsreihen/Prioritäten ins Kapitel Grundlagen verschoben 1090601 wikitext text/x-wiki <noinclude> {{Navigation zurückhochvor buch |zurücklink=Programmieren in C/C++: Grundlagen |zurücktext=Grundlagen |hochlink=Programmieren in C/C++ |hochtext=Inhaltsverzeichnis |vorlink=Programmieren in C/C++: DatentypeSpecifier |vortext=Datatype-/Storage Class Specifier}} </noinclude> <!-- Falls du ein automatisch erstelltes Inhaltsverzeichnis nicht willst, ersetze das nachfolgende TOC durch NOTOC --> <!-- Einklammerung mit noinclude, damit dieses nicht in der Druckversion erscheint --> <noinclude>__TOC__</noinclude> Die Programmiersprache C kennt nachfolgende grundlegende Datentypen und Zeiger auf diese Datentypen (siehe auch [[Programmieren in C/C++: Grundlagen# Grundlegende Datentypen und Typsicherheit| Grundlagen:Grundlegende Datentypen und Typsicherheit]]) {| class="wikitable" |- ! Datentyp !! Bsp. für Datentyp !! Bsp. für Zeiger auf Datentyp |- | [[#Ganzzahl Datentypen|Ganzzahl]] || <syntaxhighlight lang="C"> char var; int var; short int var; long int var; long long int var; </syntaxhighlight> || <syntaxhighlight lang="C"> char *ptr; int *ptr; short int *ptr; long int *ptr; long long int *ptr; </syntaxhighlight> |- | [[#Gleitkomma Datentypen|Gleitkommazahl]] || <syntaxhighlight lang="C"> double var; float var; long double var; </syntaxhighlight> || <syntaxhighlight lang="C"> double *ptr; float *ptr; long double *ptr; </syntaxhighlight> |- | Funktionen || <syntaxhighlight lang="C"> void func(void) {} </syntaxhighlight> || <syntaxhighlight lang="C"> void (*pfunc)(void); </syntaxhighlight> |- | [[Programmieren in C/C++: Array|Arrays]] || <syntaxhighlight lang="C"> int arr[10]; float arr[3][3]; </syntaxhighlight> || <syntaxhighlight lang="C"> int (*parr); float (*parr)[3]; void (*pfunc[5])(void); </syntaxhighlight> |- | [[#Struktur/Verbundtyp|Strukturen]]/[[#Union|Unions]] || <syntaxhighlight lang="C"> struct xyz {int x,y,z}; union abc {int a,b,c}; </syntaxhighlight> || <syntaxhighlight lang="C"> struct xyz *ptr; union abc *ptr; </syntaxhighlight> |- | [[#Enum/Aufzählungstyp|Aufzählungstyp]] || <syntaxhighlight lang="C"> enum abc {A,B,C}; </syntaxhighlight> || <syntaxhighlight lang="C"> enum abc *ptr; </syntaxhighlight> |- | [[Programmieren in C/C++: Grundlagen #Boolescher-Datentype/Operatoren|Boolescher Datentyp]] || <syntaxhighlight lang="C"> _Bool var; </syntaxhighlight> || <syntaxhighlight lang="C"> _Bool *ptr; </syntaxhighlight> |- | [[#Komplexe Zahlen|Komplexe Zahlen]] || <syntaxhighlight lang="C"> _Complex var; </syntaxhighlight> || <syntaxhighlight lang="C"> _Complex *ptr; </syntaxhighlight> |} Bis auf die Datentypen Funktionen, Array und die Zeiger sollen die wesentlichen Aspekte dieser Datentypen im nachfolgenden beschrieben werden. '''Der grundlegende Datentyp ist 'int'!''' * Es wird mit nichts Kleinerem gerechnet als mit dem Datentyp 'int' (siehe [[#Implizite Typumwandlung | Implizite Typumwandlung]]) : :<syntaxhighlight lang="C"> char var1=10,var2=20,var3; var3=var1+var2; //Addition findet auf Basis des Datentyps int statt </syntaxhighlight> * Es gibt zwar den Booleschen Datentyp, dieser entspricht jedoch einem Ganzzahldatentyp und <code>true</code> und <code>false</code> entsprechen den Integerwerten 0 und 1 * Der Aufzählungsdatentyp und seine Aufzählungselemente sind vom Datentyp 'int' * Bis einschl. C90 wurde bei der Definition von Variablen ohne Angabe des Datentyps, bei Definition einer Funktion ohne Angabe des Datentyps der Übergabeparameter, des Rückgabedatentyps der Datentyp implizit auf int gesetzt (implizit int) :<syntaxhighlight lang="C"> static var2=2; foo(par1,par2){ auto var1; var1=par1+par2; return var1; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> static var2=2; foo(par1,par2){ auto var1; var1=par1+par2; return var1; }int main(int argc,char *argv[]) { printf("%d",foo(1,var2)); return 0; } | execCompilerOptions=-Wall -std=c90| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Ganzzahl Datentypen == Grundlegend kennt die Programmiersprache C nur zwei Ganzzahldatentypen: * Datentyp: <code>int</code> : Vorzeichenbehafteter (signed) Datentyp, dessen Bitbreite von der Rechnerarchitektur und des Compilers abhängig ist * Datentyp <code>char</code> : Datentyp mit einer Mindestbreite von 8-Bit u.A. zur Speicherung von Zeichen typischerweise im ASCII Format. Die C-Spezifikation [C11 6.2.5 Types] lässt es dem Compiler frei, ob char als vorzeichenbehafteter oder vorzeichenloser Datentyp implementiert wird. : Ergänzend kann der Datentyp char auch zur Speicherung von ganzen Zahlen genutzt werden. In diesem Fall empfiehlt sich, diese explizit als signed und unsiged zu definieren. Wenn nur ASCII Zeichen gespeichert werden, so ist diese Angabe nicht nötig! Optional können Qualifier dem Datentyp vorangestellt werden: * <code>unsigned</code> / <code>signed</code> zur Angabe, ob der Inhalt als vorzeichenlose Zahl oder als vorzeichenbehaftete Zahl zu interpretieren ist. Ohne Angabe sind Variablen vom Datentyp int vorzeichenbehaftet * <code>short</code> / <code>long</code> / <code>long long</code> (letzteres seit C99) als vorangestellten Qualifier zu <code>int</code> zur Vergrößerung/Verkleinerung der Bitbreite. Bei Angabe des Qualifiers ist das Schlüsselwort <code>int</code> optional. Die Beschreibung <code>long long int</code> und <code>long long</code> sind gleichbedeutend! Als Bitbreite für die Datentypen ist im C-Standard nur ein Mindestbreite definiert. Die genaue Bitbreite hängt von der Rechenbreite des Systems und vom Compiler ab (siehe [C11 6.2.5 Types]): {| class="wikitable" |- ! Datentype !! Mindest<br />breite !! Typisch bei 32-Bit<br />Architektur !! Typisch bei 64-Bit<br />Architektur !! printf Format<br />Anweisung |- | <code>char</code> || 8 || 8 || 8 || <code>%c</code> |- | <code>signed char</code><br /><code>unsigned char</code>|| 8 || 8 || 8 || <code>%hhd</code><br /><code>%hhu</code> |- | <code>short</code><br /><code>short int</code>|| 16 || 16 || 16 || <code>%hd</code> / <code>%hu</code> |- |<code>int</code>|| 16 || 16/32 || 32 || <code>%d</code> / <code>%u</code> |- |<code>long</code><br /><code>long int</code>|| 32 || 32 || 32/64 || <code>%ld</code> / <code>%lu</code> |- |<code>long long</code><br /><code>long long int</code>|| 64 || 64 || 64 || <code>%lld</code> / <code>%llu</code> |} In der Header-Datei <code>limits.h</code> sind die tatsächlichen Grenzwerte der Datentypen gespeichert: {| class="wikitable" |- ! Konstante !! Beschreibung !! Typ. bei 64-Bit Architektur |- | <code>CHAR_BIT</code> || Anzahl der Bits in einem Char || 8 |- | <code>SCHAR_MIN</code> || min. Wert, den der Typ bei signed char aufnehmen kann || -128 |- | <code>SCHAR_MAX</code> || max. Wert, den der Typ bei signed char aufnehmen kann || 127 |- | <code>UCHAR_MAX</code> || max. Wert, den der Typ bei unsigned char aufnehmen kann || 255 |- | <code>CHAR_MIN</code> || min. Wert, den der Typ char aufnehmen kann || 0 oder SCHAR_MIN |- | <code>CHAR_MAX</code> || max. Wert, den der Typ char aufnehmen kann || SCHAR_MAX oder UCHAR_MAX |- | <code>SHRT_MIN</code> || min. Wert, den der Typ short int annehmen kann || -32.768 |- | <code>SHRT_MAX</code> || max. Wert, den der Typ short int annehmen kann || 32.767 |- | <code>USHRT_MAX</code> || max. Wert, den der Typ unsigned short int annehmen kann || 65.535 |- | <code>INT_MIN</code> || min. Wert, den der Typ int annehmen kann || -2.147.483.648 |- | <code>INT_MAX</code> || max. Wert, den der Typ int annehmen kann || 2.147.483.647 |- | <code>UINT_MAX</code> || max. Wert, den der Typ unsigned int aufnehmen kann || 4.294.967.296 |- | <code>LONG_MIN</code> || min. Wert, den der Typ long int annehmen kann || -2.147.483.648 oder<br />-9.223.372.036.854.775.808 |- | <code>LONG_MAX</code> || max. Wert, den der Typ long int annehmen kann || 2.147.483.647 oder<br />9.223.372.036.854.775.807 |- | <code>ULONG_MAX</code> || max. Wert, den der Typ unsigned long int annehmen kann || 4.294.967.296 oder<br />18.446.744.073.709.551.616 |- | <code>LLONG_MIN</code> || min. Wert, den der Typ long long int annehmen kann || -9.223.372.036.854.775.808 |- | <code>LLONG_MAX</code> || max. Wert, den der Typ long long int annehmen kann || 9.223.372.036.854.775.807 |- | <code>ULLONG_MAX</code> || max. Wert, den der Typ unsigned long long int annehmen kann || 18.446.744.073.709.551.615 |} Aufgrund dessen, dass die Breite der Datentypen von der Rechnerarchitektur und vom Compiler abhängig ist, sind in der Header-Datei <code>stdint.h</code> Aliase für Datentypen enthalten, welche in ihrem Alias die tatsächliche Breite und das Vorzeichens beinhalten: <syntaxhighlight lang="C"> uint8_t --> unsigned 8-Bit int8_t --> signed 8-Bit uint16_t --> unsigned 16-Bit int16_t --> signed 16-Bit ... </syntaxhighlight> Für C++ sehen diese Datentypen wie folgt aus: <syntaxhighlight lang="C++"> std::intptr_t std::int8_t std::uint8_t std::int16_t std::uint16_t std::int32_t std::uint32_t Std::int64_t std::uint64_t </syntaxhighlight> Zur Erzeugung von portablen/rechnerunabhängigen Programmen empfiehlt sich, diese Datentypen zu nutzen. Die Rechenbreite ist dann unabhängig vom Compiler und Betriebssystem. == Gleitkomma Datentypen == Gleitkommazahlen werden im Computer auf Basis folgender Schreibweise dargestellt (siehe auch: {{w|Gleitkommazahl}}):<br /> <syntaxhighlight lang="C"> Dezimalsystem Dualsystem 12,3456710 = 1234567 * 10^-5 0,110 = 1,1001100110011 * 2^-4 ------- -- --------------- -- Mantisse Exponent Mantisse Exponent </syntaxhighlight> ;Mantisse: Vorzeichenlose ganze Zahl (ggf. mit einer festen Position des Dezimalpunktes=Festkommazahl) ;Exponent: Vorzeichenbehaftete ganze Zahl, welche um einen Bias verschoben ist ;Vorzeichen: Vorzeichen der (vorzeichenlosen) Mantisse Zur Speicherung im Computer werden das Vorzeichen, die Mantisse und der Exponent getrennt im Binärformat gespeichert, für den Programmierer aber als eine (zusammenhängende) Zahl dargestellt: [[File:Bitweise Darstellung einer Gleitkommazahl, aufgeteilt in Vorzeichen, Exponent und Mantisse.png|thumb|400px|center|Bitweise Darstellung einer Gleitkommazahl, aufgeteilt in Vorzeichen, Exponent und Mantisse]] Gleitkommazahlen haben genauso wie ganze Zahlen einen beschränkten Wertebereich: * Die Anzahl der Bits der Mantisse bestimmen die Anzahl der Nachkommastellen: :<syntaxhighlight lang="C"> Bei 23-Bit Mantisse ist die max. Zahl 2^-23-1=0,000000119, welches 6..7 dezimale Stellen entspricht! </syntaxhighlight> * Mit dem Exponent kann 'quasi' der kleinste und der größte Wertebereich angegeben werden: :<syntaxhighlight lang="C"> Bei 8-Bit Exponent mit einem Bias von 127 liegt der Wertebereich des Exponenten im Bereich von -126 … +127 (Exponent -127 und +127 wird zur Darstellung weitere Zahlen benötigt). Die kleinste darstellbare Zahl (unter Vernachlässigung der Nachkommastellen der Mantisse ist: 2^-126=1/2^126≅1,175*10^-38 Die größte darstellbare Zahl ist: 2^127 ≅1,7*10^38 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //#include math.h //DJ: Wikibooks macht hier Probleme float sqrtf(float); float powf(float,float); #include <ieee754.h> #include <complex.h> union test { unsigned int i; float f; union ieee754_float b; }; int main(int argc,char *argv[]) { union test var = {.f=-0.1}; printf("Float=%f Binär=%032b\n",var.f,var.i); printf("v=0b%b e=0b%08b m=0b(1).%023b\n",var.b.ieee.negative,var.b.ieee.exponent,var.b.ieee.mantissa); printf("v=%b e=%10d m=%29d\n",var.b.ieee.negative,var.b.ieee.exponent,var.b.ieee.mantissa); printf("v=%b e=%d-%d=%d m=1+%d/2^-23=%f\n",var.b.ieee.negative, var.b.ieee.exponent,IEEE754_FLOAT_BIAS,var.b.ieee.exponent-IEEE754_FLOAT_BIAS, var.b.ieee.mantissa,1.0+var.b.ieee.mantissa*1.0/(1<<23)); printf("\n--- Beispiele von Genauigkeitsprobleme im Umgang mit Gleitkommazahlen (hier float) ----\n"); printf("powf(sqrtf(%1.8f),2) = %1.8f\n",2.0f,powf(sqrtf(2.0f),2)); printf("%f + %f = %f\n",2000.0,0.0004,(double)(2000.0f+0.0004f)); return 0; } | execCompilerOptions=-Wall -lm| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Grundlegend kennen die Programmiersprachen C/C++ folgende Gleitkommadatentypen: * Datentyp: <code>float</code> : Lt. Spezifikation soll die Anzahl der (dezimalen) Nachkommastellen mindesten 6 Stellen betragen, so dass der Datentyp typischerweise 32-Bit groß ist * Datentyp: <code>double</code> : Lt. Spezifikation soll die Anzahl der (dezimalen) Nachkommastellen mindestens 10 Stellen betragen, so dass der Datentyp typischweise 64-Bit Große ist * Datentyp: <code>long double</code> : Lt. Spezifikation soll die Anzahl der (dezimalen) Nachkommastellen mindestens 10 Stellen betragen, damit könnte dieser Datentyp gleich dem Datentyp double gesetzt werden. In der Tat ist die Datenbreite Rechner- und Compilerabhängig. Einige Compiler setzen diesen Datentyp identisch zu double, bei x86 Prozessoren wird aufgrund der Hardwareunterstützung 80-Bit genutzt (wobei in der Tat der Datentyp dann 16-Byte Speicherplatz beansprucht) und einige Systeme nutzen 128-Bit (wobei hier aufgrund ggf. fehlender Hardwareunterstützung Operationen mit diesem Datentyp per Software emuliert werden) (siehe Wikipedia Artikel {{w|lang=en|Long_double|long double}}). Die genaue Darstellung (Anzahl der Bits für Mantisse und Exponent, Darstellung von NAN/INF, ….) ist in C nicht spezifiziert und somit compiler- und rechnerabhängig. Zumeist wird mittlerweile die {{w|IEEE 754}} Standardisierung genutzt (Norm wurde von Intel mit der Entwicklung der 8087 FPU entworfen). Grunddatentypen und der Wertebereich (nach {{w|IEEE 754}}) {| class="wikitable" |- ! Daten-<br/>type !! Speicher-<br />platz !! Exponent !! Mantisse !! Größte Zahl !! Kleinste Zahl !! Genauigkeit !! printf Format Anweisung |- | binary32→<code>float</code> || 4 Byte || 8 bit || 23 bit || ~3,4*10<sup>38</sup> || ~1,2*10<sup>-38</sup> || 7..8 Stellen || --- |- | binary64→<code>double</code> || 8 Byte || 11 bit || 52 bit || ~1,8*10<sup>308</sup> || ~2,2*10<sup>-308</sup> || 15..16 Stellen || %f %e %g |- | binary64 extended→<code>long double</code> || ≥10 Byte || ≥15 bit || ≥63 bit || ~1,2*10<sup>4932</sup> || ~3,4*10<sup>-4932</sup> || 19..20 Stellen || %Lf %Le %Lg |- | binary128→<code>long double</code> || 16 Byte || 15 bit || 112 bit || ~1,2*10<sup>4932</sup> || ~3,4*10<sup>-4932</sup> || 34 Stellen || %Lf %Le %Lg |} Die tatsächliche Auflösung der Datentyps kann auf Basis nachfolgender Konstanten, definiert in der Header-Datei <code>float.h</code>, ermittelt werden: :<syntaxhighlight lang="C"> FLT_DIG --> Anzahl der dezimalen Nachkommastellen für float DBL_DIG --> Anzahl der dezimalen Nachkommastellen für double LDBL_DIG --> Anzahl der dezimalen Nachkommastellen für long double FLT_MIN_10_EXP --> Minimaler Exponent zur Basis 10 DBL_MIN_10_EXP LDBL_MIN_10_EXP FLT_MAX_10_EXP --> Maximaler Exponent zur Basis 10 DBL_MAX_10_EXP LDBL_MAX_10_EXP LDBL_MANT_DIG --> Anzahl der Bits für die Mantisse LDBL_MANT_DIG LDBL_MANT_DIG </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> #include <float.h> int main(){ printf("FLT_DIG =%u\n",FLT_DIG); printf("DBL_DIG =%u\n",DBL_DIG); printf("LDBL_DIG =%u\n",LDBL_DIG); printf("FLT_MIN_10_EXP =%d\n",FLT_MIN_10_EXP); printf("DBL_MIN_10_EXP =%d\n",DBL_MIN_10_EXP); printf("LDBL_MIN_10_EXP=%d\n",LDBL_MIN_10_EXP); printf("FLT_MAX_10_EXP =%d\n",FLT_MAX_10_EXP); printf("DBL_MAX_10_EXP =%d\n",DBL_MAX_10_EXP); printf("LDBL_MAX_10_EXP=%d\n",LDBL_MAX_10_EXP); printf("FLT_MANT_DIG =%d\n",FLT_MANT_DIG); printf("DBL_MANT_DIG =%d\n",DBL_MANT_DIG); printf("LDBL_MANT_DIG =%d\n",LDBL_MANT_DIG); return 0; } | execCompilerOptions=-Wall -lm| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Aufgrund des nicht standardisierten Formates sollte ein Gleitkommadatentyp nicht im Binärformat für den Datenaustausch (mit Netzwerk, über Dateien, ..) genutzt werden. Andere Rechnersysteme/Programmiersprachen würde aufgrund der anderen Interpretation andere Zahlenwerte aus den übertragenen/gespeicherten Binärdaten auslesen! <syntaxhighlight lang="C"> float var1; write(file_hdl,&var1,sizeof var1); //Schreiben des Binärwertes //in eine Datei double var2; send(socket_hdl,&var2,sizeof var2,0);//Senden des Binärwertes //über ein Netzwerk </syntaxhighlight> Die Standard-C-Library bietet einige mathematische Funktionen wie <code>sin() / cos() / tan() / atan2() / sqrt() / pow() / exp()/…</code> an. Die Prototypen dieser Funktion sind in der Header-Datei <code>math.h</code> beschrieben, so dass diese bei Nutzung dieser Funktion zu inkludieren ist. Ergänzend ist die Shared Library libm.so über den Compilerschalter '-lm' einzubinden: <syntaxhighlight lang="C"> #include <math.h> //Math-Library libm.so mittels Linker-Command '-lm' einbinden int main(int argc,char *argv[]) { double var1=47.11; double var2=sqrt(var1); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //#include math.h //DJ: Wikibooks macht hier Probleme double sqrt(double); //Math-Library libm.so mittels Linker-Command '-lm' einbinden int main(int argc,char *argv[]) { double var1=47.11; double var2=sqrt(var1); printf("var1=%f var2=%f\n",var1,var2); return 0; } | execCompilerOptions=-Wall -lm| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Die Funktionen basieren auf den Datentyp <code>double</code>, d.h. sowohl der Übergabewert als auch der Rückgabewert ist vom Datentyp <code>double</code>. Die Prototypen sehen wie folgt aus: <syntaxhighlight lang="C"> double sin(double); double cos(double); double tan(double); double asin(double); double acos(double); double atan(double); //Wertebereich der Rückgabe von -PI/2..+PI/2 double atan2(double,double); //Wertebereich der Rückgabe von -Pi .. +PI double sqrt(double); double log(double); </syntaxhighlight> Über den Suffix f oder l im Funktionsnamen kann der zugrundeliegende Datentyp auf float (Suffix f) oder long double (Suffix l) geändert werden: <syntaxhighlight lang="C"> float sinf(float); long double sinl(long double); </syntaxhighlight> Ergänzend zu den Prototypen sind die gebräuchlichen Naturkonstanten in <code>math.h</code> definiert (siehe auch: [https://www.man7.org/linux/man-pages/man0/math.h.0p.html math.h]): <syntaxhighlight lang="C"> M_E Value of e M_LOG2E Value of log_2 e M_LOG10E Value of log_10 e M_LN2 Value of log_e 2 M_LN10 Value of log_e 10 M_PI Value of π M_PI_2 Value of π/2 M_PI_4 Value of π/4 M_1_PI Value of 1/π M_2_PI Value of 2/π M_2_SQRTPI Value of 2/√π M_SQRT2 Value of √2 M_SQRT1_2 Value of 1/√2 </syntaxhighlight> Gleitkommazahlen können nicht nur Zahlenwerte, sondern auch Sonderwerte annehmen. Diese Sonderwerte sind ebenfalls in <code>math.h</code> beschrieben (siehe auch: [https://www.man7.org/linux/man-pages/man0/math.h.0p.html math.h]): <syntaxhighlight lang="C"> INFINITY A constant expression of type float representing positive or unsigned infinity, if available; else a positive constant of type float that overflows at translation time. NAN A constant expression of type float representing a quiet NaN. This macro is only defined if the implementation supports quiet NaNs for the float type. </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <math.h> //Quelle: https://stackoverflow.com/questions/1923837/how-to-use-nan-and-inf-in-c #ifdef NAN #define NAN_STR "NAN is supported" #else #define NAN_STR "NAN is not supported" #endif #ifdef INFINITY #define INFINITY_STR "INFINITY is supported" #else #define INFINITY_STR "INFINITY is not supported" #endif int main(int argc, char *argv[argc]) { printf("%s\n%s\n",NAN_STR,INFINITY_STR); double x=0.0; double y=1/x; printf("1/%e -> %e\n",x,y); if(y==INFINITY) printf("1) Initinity\n"); if(isinf(y)) //besser printf("2) Initinity\n"); printf("%llx\n%llx\n\n",*(long long *)&y,INFINITY); //Hinweis: Fehlerhafte Typkonvertierung bei printf bewusst getätigt double z=-(x/x); printf("%e/%e -> %e\n",x,x,z); if(z == NAN) //funktioniert nicht printf("1) Not a Number\n"); if(isnan(z)) //besser printf("2) Not a Number\n"); if(z != z) printf("3) Not a Number\n"); printf("%llx\n%llx",*(long long *)&z,NAN); //Hinweis: Fehlerhafte Typkonvertierung bei printf bewusst getätigt return 0; } | execCompilerOptions=-lm| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Mit <code>fesetround()/fegetround()</code> kann gesetzt/gelesen werden, wie mit Ergebnissen umzugehen sind, die nicht exakt darstellbar sind. Mögliche Werte sind 'round to nearest' (default), 'round up', 'round down' und 'round toward zero'. == Komplexe Zahlen == Nach dem Wikipedia Artikel {{w|komplexe Zahlen}} ''stellen komplexe Zahlen eine Erweiterung der reellen Zahlen dar. Ziel der Erweiterung ist es, algebraische Gleichungen wie x<sup>2</sup>+1=0 bzw. x<sup>2</sup>=-1 lösbar zu machen. ... Da die Quadrate aller reellen Zahlen größer oder gleich 0 sind, kann die Lösung der Gleichung x<sup>2</sup>=-1 keine reelle Zahl sein. Man braucht eine ganz neue Zahl, die man üblicherweise i nennt, mit der Eigenschaft i<sup>2</sup>=-1. Diese Zahl i wird als imaginäre Einheit bezeichnet. Komplexe Zahlen werden nun als Summe a+b*i definiert, wobei a und b reelle Zahlen sind und i die oben definierte imaginäre Einheit ist.''<br /> Der Datentyp für komplexe Zahlen (erst ab C99 enthalten) beinhaltet folglich zwei Gleitkommazahlen, eine für den reelen Teil und eine für den imaginären Teil. Entsprechend den Gleitkommazahlen steht der komplexe Datentyp ebenfalls in drei unterschiedlichen Genauigkeiten zur Verfügung: {| class="wikitable" |- ! Datentype !! Speicherplatz |- | <code>float _Complex</code> || 2x4Byte |- | <code>double _Complex</code><br /><code>_Complex</code> || 2x8Byte |- | <code>long double _Complex</code> || 2x10Byte |} Wie auch beim Booleschen Datentyp ist in der Header-Datei <code>complex.h</code> für den einfacheren Umgang mit diesem Datentyp das Makro <code>complex</code> als Textersetzung für <code>_Complex</code> gesetzt. Zur Darstellung von komplexen Konstanten wurde die Gleitkommakonstante um den Suffix i ergänzt. Durch Anhängen von i wird aus dem ansonsten rellen Teil der imaginäre Teil und damit aus der Gleitkommakonstante eine komplexe Gleitkommakonstante: <syntaxhighlight lang="C"> _Complex varc1=2i; _Complex varc2=1+2i; printf("%f %f\n",creal(varc1),cimag(varc1)); printf("%f %f\n",creal(varc2),cimag(varc2)); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <complex.h> //Math-Library libm.so mittels Linker-Command '-lm' einbinden int main(int argc,char *argv[]) { _Complex varc1=2i; _Complex varc2=1+2i; printf("%f %f\n",creal(varc1),cimag(varc1)); printf("%f %f\n",creal(varc2),cimag(varc2)); return 0; } | execCompilerOptions=-Wall -lm| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Normale Gleitkommavariablen werden als reellen Teil einer komplexen Zahl angesehen. Bei Operationen von Gleitkommazahlen und komplexen Zahlen wird der imaginäre Teil der Gleitkommazahl auf 0 gesetzt. Beim Zuweisen einer komplexen Zahl an eine Gleitkommazahl wird nur der reele Teil 'gelesen'.<br /> Soll eine Gleitkommavariablen zu einem imaginären Teil gewandelt werden, so muss diese bspw mit der Konstanten 1.0i multipliziert werden: <syntaxhighlight lang="C"> double vard1=2i; //Vorsicht, es wird nur der reele Teil printf("%f\n",vard1); //der komplexen Zahl in vard1 gespeichert! _Complex varc1=1+2i; vard1=1; varc1=varc1+vard1; printf("%f %f\n",creal(varc1),cimag(varc1)); varc1=varc1+vard1*1.0i; printf("%f %f\n",creal(varc1),cimag(varc1)); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <complex.h> //Math-Library libm.so mittels Linker-Command '-lm' einbinden int main(int argc,char *argv[]) { double vard1=2i; //Vorsicht, es wird nur der reele Teil printf("%f\n",vard1); //der komplexen Zahl in vard1 gespeichert! _Complex varc1=1+2i; vard1=1; varc1=varc1+vard1; printf("%f %f\n",creal(varc1),cimag(varc1)); varc1=varc1+vard1*1.0i; printf("%f %f\n",creal(varc1),cimag(varc1)); return 0; } | execCompilerOptions=-Wall -lm| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Die Standard-C-Library bietet diverse mathematische Funktionen wie csin(), ccos(), csqrt(), cpow() und ergänzend Umrechnungsfunktionen von Gleitkommazahlen in komplexe Zahlen (und umgedreht) wie creal(),cimag() ,cabs() für den Umgang mit komplexen Zahlen an: <syntaxhighlight lang="C"> double _Complex csin(double _Complex); double _Complex csqrt(double _Complex); double creal(double _Complex); double cimag(double _Complex); </syntaxhighlight> Zur Nutzung dieser Funktionen muss die Header-Datei <code>complex.h</code> inkludiert und ergänzend die Shared Library libm.so über den Compilerschalter '-lm' eingebunden werden. <syntaxhighlight lang="C"> #include <complex.h> //Math-Library mittels Linker-Command '-lm' einbinden int main(int argc, char *argv[]) { double _Complex xyz=6+2i; //Reeler-Teil=6 Imaginärer Teil=2 printf("Reeller Teil: %f Imaginärer Teil:%f",creal(xyz),cimag(xyz)); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <complex.h> //Math-Library libm.so mittels Linker-Command '-lm' einbinden int main(int argc,char *argv[]) { double _Complex xyz=6+2i; //Reeler-Teil=6 Imaginärer Teil=2 printf("Reeller Teil: %f Imaginärer Teil:%f",creal(xyz),cimag(xyz)); return 0; } | execCompilerOptions=-Wall -lm| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Die Funktionen beruhen auf den Datentyp <code>double _Complex</code>, d.h. sowohl der Übergabewert als auch der Rückgabewert ist <code>double _Complex</code> resp. <code>double</code> (bei den Umrechnungsfunktionen). Über den Suffix f und l im Funktionsnamen kann der zugrundeliegende Datentyp geändert werden: <syntaxhighlight lang="C"> float crealf(float _Complex z); long double creall(long double _Complex z); </syntaxhighlight> Hinweis: * Der Datentyp <code>_Complex</code> und die dazugehörigen mathematischen Funktionen sind in der C-Spezifikation als optional gekennzeichnet. == Generische mathematische Funktionen == In der <code>tgmath.h</code> Header Datei sind für die mathematischen Funktionen Makros enthalten, welche den Datentyp der Übergabeparameter bestimmen und basierend auf den Datentyp die dazugehörige mathematische Funktion aufrufen. <code>tgmath.h</code> selbst inkludiert <code>math.h</code> und <code>complex.h</code>, so dass diese nicht weiter zu inkludieren sind. Steht für den Übergabedatentyp keine passende Funktion zu Verfügung, so ist das Verhalten des Makros undefiniert (bspw. wenn ein komplexes Argument an eine Funktion übergeben wird, die nur für Gleitkommazahlen ausgelegt ist <code>ceil(1+2i);</code> ) Folgendes Regelwerk wird angewendet: * Ist einer der Übergabeparameter imaginär, so ist die ausgewählte Funktion in der Spezifikation der Funktion beschrieben * Ist einer der Übergabeparameter Komplexe, so wird die Komplexe Variante der Funktion aufgerufen, andernfalls die Gleitkomma Variante * Ist einer der Übergabeparameter vom Datentyp long double, so wird die long double Variante, bei integer und double die double Variante und andernfalls die float Variante aufgerufen Beispiel: <syntaxhighlight lang="C"> #include <tgmath.h> //Math-Library libm.so mittels Linker-Command '-lm' einbinden long double foo(long double complex parlc, long double parld, float parf, int pari) { long double ret; ret =(long double) sqrt(parlc); //Aufruf von csqrtl() ret+= sqrt(parld); //Aufruf von sqrtl() ret+=(long double) sqrt(parf); //Aufruf von sqrtf() ret+= sqrt(pari); //Aufruf von sqrt() return ret; } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> #include <tgmath.h> //Math-Library libm.so mittels Linker-Command '-lm' einbinden long double foo(long double complex parlc, long double parld, float parf, int pari) { long double ret; ret =(long double) sqrt(parlc); //Aufruf von csqrtl() ret+= sqrt(parld); //Aufruf von sqrtl() ret+=(long double) sqrt(parf); //Aufruf von sqrtf() ret+= sqrt(pari); //Aufruf von sqrt() return ret; } int main(int argc,char *argv[]) { foo(1l+1li,2.0l,3.0f,4); return 0; } | execCompilerOptions=-Wall -lm| execCompilerOutputShown=true| h=c }} Öffnen im Compiler Explorer] }} == Boolschescher Datentyp == Siehe [[Programmieren in C/C++: Grundlagen#Boolescher-Datentype/Operatoren|Grundlagen: Boolescher-Datentype/Operatoren]] == void / unvollständiger Datentype == Der Datentyp <code>void</code> dient vorrangig dazu, nicht vorhandene Über- und Rückgabewerte von Funktionen anzuzeigen. Eine Variable vom Datentyp <code>void</code> kann nicht angelegt werden. Ein Zeiger vom Datentyp <code>void</code> ist möglich, kann aber nicht dereferenziert werden (siehe Kap. [[Programmieren in C/C++: Zeiger #Void-Zeiger| Zeiger:Void-Zeiger]]) <syntaxhighlight lang="C"> void func(void); //Void zur Darstellung der nicht vorhandenen Parameter und //des nicht vorhandenen Rückgabewertes void var; //Eine Variable vom Datentyp void kann nicht angelegt werden void *ptr; //Void-Zeiger </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void func(void); //Void zur Darstellung der nicht vorhandenen Parameter und //des nicht vorhandenen Rückgabewertes void var; //Eine Variable vom Datentyp void kann nicht angelegt werden void *ptr; //Void-Zeiger int main(int argc,char *argv[]) { return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * <code>sizeof(void)</code> ist nach der C-Spezifikation nicht erlaubt. Dennoch geben viele Compiler hier den Wert 1 zurück! * Mit einem expliziten Cast auf den Datentyp void wird dem Compiler mitgeteilt, dass diese Variable in Gebrauch ist, der Wert in dieser Operation aber nicht genutzt wird. Hierüber kann die Compilerwarning 'unused Variable' unterbunden werden: :<syntaxhighlight lang="C"> void func(int par1, int par2) { int var1=12; int var2=13; (void)par2; //Angabe, dass diese Variable genutzt wird. (void)var2; //Angabe, dass diese Variable genutzt wird. if(var1==par1) //var1 und par1 werden verwendet </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> void func(int par1, int par2) { int var1=12; int var2=13; int var3=14; //Nicht genutzte Variable (void)par2; //Angabe, dass diese Variable genutzt wird. (void)var2; //Angabe, dass diese Variable genutzt wird. if(var1==par1) //var1 und par1 werden verwendet printf("Genutzt\n"); } int main(int argc,char *argv[]) { return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Datentypkonvertierung == Für das Rechnen/Vergleichen müssen beide Operatoren vom identischen Datentyp sein! Sind diese nicht identisch, so müssen die Datentypen 'angeglichen' werden. Dies kann einerseits ‚automatisch‘ mittels 'implizierter' Typumwandlung oder ‚manuell‘ mittels ‚expliziter' Typumwandlung erfolgen.<br /> Beim Zuweisungsoperator (inkl. Parameterzuweisung bei Funktionsaufrufen und Funktionsrückgabewerte mittels return) gilt dies ebenso, nur dass hier der Quelldatentyp an den Zieldatentyp angepasst werden muss. Die impliziten Regeln finden hier keine Anwendung. Hinweis: * Empfehlenswert ist, die Datentypen der Variablen so zu wählen, dass der Compiler keine implizite Typumwandlung tätigt. Kann dies nicht vermieden werden, so sollte die explizite Typumwandlung genutzt werden (um sich einen möglichen Datenverlust bewusst zu machen) * Der Datentyp selbst sollte den möglichen Wertebereich der Variablen entsprechen und nicht unnötig groß gewählt werden :<syntaxhighlight lang="C"> Datentyp zur Speicherung der Stundenzeit: Wertebereich: 0 ... 23 -> unsigned char Datentyp zur Speicherung einer Jahreszahl: Wertebereich: 2000 v.C. ... 4000 n.C -> signed short Datentyp zur Speicherung einer Temperatur: Wertebreich: -273,0°C ... 2000,0°C -> float </syntaxhighlight> === Implizite Typumwandlung === Diese Regeln wurden so aufgestellt, dass dabei stets ein Datentyp in einen anderen Datentyp mit höherem Wertigkeit umgewandelt wird [C11 6.3.1.8] und [Harbison: S 199]. Bei Ganzzahlen gilt ergänzend folgende (Rangordnung [C11 6.3.1.1]: long long, long, int, short,char,_Bool): {| class="wikitable" |- ! Regel/<br />Priorität !! If either operand<br />has Type !! And the other operand<br />has Type !! Converts both to |- | 1 (hoch) || long double || any real type || long double |- | 2 || double || any real type || double |- | 3 || float || any real type || float |- | 4 || any unsigned type || any unsigned type || the unsigned type<br/>with the greater rank |- | 5 || any signed type || any signed type || the signed type<br/>with the greater rank |- | 6 || any unsigned type || a signed type with a equal<br/> or less rank || the unsigned type |- | 7 || any unsigned type || a signed type that can represent<br/>all of values of the unsigned type || the signed type |- | 8 (niedrig) || any other type || any other type || both operands are<br/> converted to the unsigned <br/>integer type corresponding<br/> to the type of the operand<br/> with the signed<br/> integer type |} Ergänzend gilt das Regelwerk zu Integer Promotion, welche Datentypen kleiner als <code>signed int</code> zu <code>int</code> und kleiner als <code>unsigned int</code> zu <code>unsigned int</code> konvertiert (Compiler kann hiervon abweichen, wenn sichergestellt ist, dass kein Datenverlust eintritt). Regel 6 und 7 sind der nicht klar definierten Bitbreite der ganzzahligen Datentypen geschuldet und versuchen, Konvertierungsverluste zu vermeiden. Sie lesen sich zunächst kryptisch, lassen sich aber einfach am folgenden Beispiel erklären: <syntaxhighlight lang="C"> Operand 1: unsigned int (hier 32-Bit) Operand 2: long (hier 32-Bit / 64-Bit) </syntaxhighlight> * Im Fall, dass der Datentyp <code>long</code> 64-Bit breit ist, kann dieser problemlos die vorzeichenlose 32-Bit Zahl ohne Konvertierungsverluste repräsentieren, so dass der Zieltype <code>signed long</code> ist (Regel 7) * Im Fall, dass der Datentyp <code>long</code> 32-Bit breit ist, kann dieser mit seinen Wertebereich von -2.147.483.648 bis +2.147.483.647 nicht den vorzeichenlosen Zahlenbereich von 0…4.294.967.295 darstellen. In diesem Fall hat der unsigned Datentyp einen höheren Rang, so dass als Zieltyp <code>unsigend long</code> gewählt wird (Regel 6) '''Regel 6 bedeutet die Gefahr eines Konvertierungsverlustes, dessen man sich bewusst sein sollte!''' Diese tritt insb. dann in Kraft, wenn ein Operand vom Typ <code>unsigned long long</code> ist (64-Bit). Beispiele von impliziten Typumwandlungen: <syntaxhighlight lang="C"> char varc=100; short vars=100; int vari=100; vars=varc + vars; //Wird aufgrund der impliziten Regel wie folgt umgesetzt vars=(short)((int)varc+(int)vars); vari=5.0*(int)sin(vars); //Wird aufgrund der impliziten Regel wie folgt umgesetzt vari=(int)(5.0*(double)(int)sin((double)vars)); //Hinweis: da sin() nur Werte im Bereich -1…0…+1 zurückgibt kommen //als Werte für a hier nur 5, 0 und -5 in Frage! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //#include math.h //DJ Wikibooks Formatierung schlägt hier fehlt double sin(double); int main(int argc,char *argv[]) { char varc=100; short vars=100; int vari=100; vars=varc + vars; printf("vars=%hd\n",vars); //Wird aufgrund der impliziten Regel wie folgt umgesetzt vars=(short)((int)varc+(int)vars); printf("vars=%hd\n",vars); vari=5.0*(int)sin(vars); printf("vari=%d\n",vari); //Wird aufgrund der impliziten Regel wie folgt umgesetzt vari=(int)(5.0*(double)(int)sin((double)vars)); printf("vari=%d\n",vari); //Hinweis: da sin() nur Werte im Bereich -1…0…+1 zurückgibt kommen //als Werte für a hier nur 5, 0 und -5 in Frage! return 0; } | execCompilerOptions=-Wall -lm| execCompilerOutputShown=true| h=g }} Öffnen im Compiler Explorer] }} Hinweis: * Im CompilerExplorer können sie sich die impliziten Typumwandlungen anzeigen lassen. Dazu gehen sie bitte wie folgt vor: :* Im Source-Fenster mit '+Add new' ein Compiler Fenster öffnen :* Im Compiler-Fenster mit '+Add new' ein 'GCC Tree/RTL' Fenster öffnen :* Im GCC Tree/RTL-Fenster unter 'Select a pass…' 'original tree' auswählen Um implizite Typumwandlung besser erkennen zu können, wird oftmals bei Variablennamen die ''' 'Ungarische Notation' ''' angewendet (siehe {{w|Ungarische Notation}}). Aufgrund der besonderen Namensgebung kann der Programmierer ohne großen Aufwand frühzeitig mögliche Typkonflikte erkennen. Der Variablenname setzt sich wie folgt zusammen: <syntaxhighlight lang="C"> {Präfix}{Datentyp}{Bezeichner} </syntaxhighlight> :'''Präfix''': p->Pointer h->Handle i->index c->count f->flag rg->Array :'''Datentyp''': ch->Character st->string w->word b->byte… :'''Bezeichner''': Zum Binden der Variable an eine konkrete Aufgabe (keine Unterstriche). :Bezeichner ist optional, wenn aus Präfix und Datentyp die 'Aufgabe' der Variable direkt sichtbar ist Beispiele: <syntaxhighlight lang="C"> char rgchtemp[10]; //Array (Range) vom Datentyp character int ich; //Index zum Adressieren eines Arrays vom Datentyp //character </syntaxhighlight> === Explizite Typumwandlung === Programmierer erzwingt durch explizite Typumwandlung (auch CASTen genannt) eine Umwandlung eines Datentyps in einen anderen. Dazu wird der Zieldatentyp in runden Klammern vor Quelldatentype geschrieben: <syntaxhighlight lang="C"> short a=4; double b=(double)(a+1); //Das Ergebnis von (a+1) wird nach double gecastet //(Addition erfolgt auf Basis des Datentyps. //integer) double c=(double)a+1; //a wird nach double gecastet, so dass nachfolgende //Addition auf Basis von double basiert. </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { short a=4; double b=(double)(a+1); //Das Ergebnis von (a+1) wird nach double gecastet //(Addition erfolgt auf Basis des Datentyps. //integer) double c=(double)a+1; //a wird nach double gecastet, so dass nachfolgende //Addition auf Basis von double basiert. return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true| h=g }} Öffnen im Compiler Explorer] }} In der Rangfolge der Operatoren steht der Cast-Operator unterhalb von bspw. Funktionsaufrufen, Arrayzugriffen aber auch der Dereferenzierung: {| class="wikitable" |- ! Priorität !! Symbol !! Assoziativität !! Bedeutung |- | 15 || ... || ... || ... |- | 14 || ++/-- (Präfix)<br /> +/- (Vorzeichen) <br /> <nowiki>!</nowiki>/~ <br /> &<br /> <nowiki>*</nowiki><br /> (TYP)<br /> ... || R-L || Präfix-Inkrement/Dekrement<br /> Vorzeichen<br /> Logisches/Bitweises Nicht<br /> Adresse<br /> Zeigerdereferenzierung<br /> '''Typumwandlung (Explizites Cast)'''<br /> ... |- | 13 || * / % || L-R || Multiplikation/Division/Modulo |- | 12 || ... || ... || ... |} Im Zweifel gilt auch hier, den zu wandelnden Typ ergänzend zu klammern. Hinweis: * Bedenke, dass die explizite Typumwandlung so aufgestellt sein sollte, dass der Zieldatentyp dem notwendigen Datentyp entspricht. Andernfalls wendet der Compiler ergänzend eine implizierte Typumwandlung an: :<syntaxhighlight lang="C"> int a; double b=4.7; short c1= (long)( (float)a+b ); //b ist vom Typ double, so dass a nach dem Cast auf float // implizit vom Compiler auf double gecastet wird //c ist vom Typ short, so dass das Ergebnis der Addtion nach dem expliziten //Cast auf long auf short gecastet wird. //Nach Anwendung der impliziten Cast sieht der Ausdruck wie folgt aus: short c2=(short)(long)( (double)(float)a+4.7); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { int a; double b=4.7; short c1= (long)( (float)a+b ); //b ist vom Typ double, so dass a nach dem Cast auf float // implizit vom Compiler auf double gecastet wird //c ist vom Typ short, so dass das Ergebnis der Addtion nach dem expliziten //Cast auf long auf short gecastet wird. //Nach Anwendung der impliziten Cast sieht der Ausdruck wie folgt aus: short c2=(short)(long)( (double)(float)a+4.7); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true| h=g }} Öffnen im Compiler Explorer] }} Mittels expliziter Typumwandlung können Ganzzahl nach Gleitkommazahlen (und andersherum) und Zeiger in einen anderen Zeiger und auf andere Datentypen gewandelt werden. Eine Konvertierung von Arrays, Strukturen, Unions zu anderen Datentypen als sich selbst ist weiterhin nicht möglich: <syntaxhighlight lang="C"> char *string; //Pointer int arr[3]; //Array struct stru {int x,y;} var1; //Strukturen union unio {int x,y;} var2; //Union var1 = (struct stru) var2; //Error Conversion to non-scalar type string=(char *)arr; //OK arr=(int *)var1; //Error Assignment to expression with array type string=(char *)var2; //Error cannot convert to pointer type </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { char *string; //Pointer int arr[3]; //Array struct stru {int x,y;} var1; //Strukturen union unio {int x,y;} var2; //Union var1 = (struct stru) var2; //Error Conversion to non-scalar type string=(char *)arr; //OK arr=(int *)var1; //Error Assignment to expression with array type string=(char *)var2; //Error cannot convert to pointer type return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Bei den möglichen Konvertierungen sollte Folgendes berücksichtigt werden: * '''Vorzeichenlose Ganzzahl''' → '''Vorzeichenlose Ganzzahl''': Wenn der Zieldatentyp größer ist, wird die Zahl durch führende '0' erweitert. Wenn der Zieldatentyp kleiner ist, werde die zu vielen Bitstellen abgeschnitten/verworfen (ggf. Datenverlust) * '''Vorzeichenbehaftete Ganzzahl''' → '''Vorzeichenbehaftete Ganzzahl''': Wenn der Zieldatentyp größer ist, wird vorzeichenrichtig erweitertet (d.h. das Auffüllen erfolgt auf Basis des Vorzeichens). Wenn der Zieldatentyp kleiner ist, werden auch hier die zu vielen Bits abgeschnitten/verworfen (Vorsicht: Negative Zahlen können dabei in positive Zahlen gewandelt werden) * '''Gleitkommazahl''' → '''Gleitkommazahl''': Hier wird vereinfacht ausgedrückt sowohl die Mantisse als auch der Exponent einzeln kopiert. Wenn die Zielmantisse kleiner ist, gehen 'Nachkommastellen' verloren. Wenn der Quellexponent einen größeren Wert beinhaltet, als der Zielexponent 'aufnehmen' kann, so wird die Zahl auf Unendlich gesetzt. Umgedreht, wenn der Quellexponent kleiner ist, als der Zielexponent 'aufnehmen' kann, so wird die Zahl auf 0 gesetzt * '''Ganzzahl''' → '''Gleitkommazahl''': Hier wird, vereinfacht ausgedrückt, die Ganzzahl in die Mantisse kopiert. Um Datenverluste zu vermeiden, sollte die Bitbreite der Zielmantisse größer gleich der Bitbreite der Ganzzahl sein * '''Gleitkommazahl''' → '''Ganzzahl''': Im Wesentlichen wird hier die Mantisse übernommen, so dass hier die Bitbreite des Zieldatentyps mindestens der Bitbreite der Mantisse sein sollte * '''Zeiger''' ↔ '''Ganzzahl''': Die Konvertierung ist möglich. Da bei 64-Bit Systemen der Zeiger 64-Bit und Integer 32-Bit breit ist, meckert ggf. der Compiler. Für solche Fälle existieren die Datentypen 'intptr_t' und 'uintptr_t', über welche sichergestellt ist, dass ein Zeiger in einen Ganzzahldatentyp gespeichert werden kann! * '''Zeiger''' ↔ '''Gleitkommazahl''': Diese Konvertierung ist nicht möglich! * '''Struktur/Union''' ↔ '''Ganzzahl/Gleitkommazahl''': Diese Konvertierung ist nicht möglich. Es können nur einzelnen Strukturelemente konvertiert werden, sofern diese vom Typ Ganzzahl/Gleitkommazahl sind * '''Array''' ↔ '''Ganzzahl/Gleitkommazahl''': Der Arrayname entspricht einen Zeiger, so dass hier ein Zeiger in eine Ganzzahl oder umgedreht konvertiert wird (siehe Zeiger ↔ Ganzzahl) In C++ gibt es weitere CAST-Operatoren, auf welche hier derzeit noch nicht weiter eingegangen wird! * Static_cast (Entspricht dem Expliziten Cast) * Const_cast * Dynamic_cast * Reinterpret_cast == Verbundtyp Struktur/Klasse (nur C++) == Nach dem Wikipedia Artikel {{w|Verbund (Datentyp)}} ist ''ein Verbund (englisch object composition) ist ein Datentyp, der aus einem oder mehreren Datentypen zusammengesetzt wurde. Die Komponenten können wiederum Verbünde enthalten, wodurch auch komplexe Datenstrukturen definiert werden können.<br /> Für jedes Strukturelement wird Speicher reserviert. Alle Strukturelemente liegen hintereinander im Speicher.'' <code>Syntax: struct Strukturname<sub>Opt</sub> {Datentype Strukturelementname; … }<sub>OPT</sub> Variablenliste<sub>Opt</sub>;</code> Ein Verbund entspricht einer Java Klasse mit dem Unterschied zu C (nicht C++) , dass ein Verbund keine Methoden beinhaltet und keine Zugriffsbeschränkung für die Attribute gesetzt werden können. Der Syntax erlaubt es, gleichermaßen einen Datentyp (über Strukturname) zu definieren und Variablen von diesem Datentyp (über Variablenliste) anzulegen. Da beide Elemente optional sind, ergeben sich diverse Kombinationsmöglichkeiten: * Nur Strukturname → Definition eines neuen Datentyps :<syntaxhighlight lang="C"> struct xyz1 {int x; int y,z;}; //Definition eines neuen Datentyps struct xyz1 var1; //Definition einer Variablen dieses //Datentyps var1.x=7; //Zugriff auf ein Strukturelement </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { struct xyz1 {int x; int y,z;}; //Definition eines neuen Datentyps struct xyz1 var1; //Definition einer Variablen dieses //Datentyps var1.x=7; //Zugriff auf ein Strukturelement var1.y=2; var1.z=1; printf("var1.x=%d var1.y=%d var1.z=%d\n",var1.x,var1.y,var1.z); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} :C: Der Strukturname ist nur mit dem vorangestellten <code>struct</code> gültig. Der Strukturname stellt somit einen eigenen Namensraum, getrennt von dem Namensraum der Variablen/Funktionen, dar. Daher kann ein Strukturname identisch zu einem Variablennamen sein: :<syntaxhighlight lang="C"> struct xyz2 {int x,y,z;}; //Definition des Datentyps 'struct xyz2' struct xyz2 xyz2; //Definition der Variablen 'xyz2' auf //Basis des Datentyps 'struct xyz2' xyz2 var2; //Compilerfehler, zur Nutzung des Datentyps //'struct xyz2' muss struct vorangestellt //werden! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { struct xyz2 {int x,y,z;}; //Definition des Datentyps 'struct xyz2' struct xyz2 xyz2; //Definition der Variablen 'xyz2' auf //Basis des Datentyps 'struct xyz2' xyz2 var2; //Compilerfehler, zur Nutzung des Datentyps //'struct xyz2' muss struct vorangestellt //werden! xyz2.x=xyz2.y=xyz2.z=1; printf("xyz2.x=%d xyz2.y=%d xyz2.z=%d\n",xyz2.x,xyz2.y,xyz2.z); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} :C++: Der Strukturname ist sowohl mit als auch ohne dem vorangestellten <code>struct</code> gültig. Auch hier stellt der Strukturname einen eigenen Namensraum dar, der jedoch eine niedrigere Priorität als der der Variablen hat: :<syntaxhighlight lang="C++"> struct xyz3 {int x,y,z;}; xyz3 xyz3={1,1,1}; //'xyz3' beschreibt hier den Datentypen xyz3.x=1; //und nach Definition einer Variable die Variable! xyz3 var2; //Fehler, xyz beschreibt hier die Variable </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { struct xyz3 {int x,y,z;}; xyz3 xyz3={1,1,1}; //'xyz3' beschreibt hier den Datentypen xyz3.x=1; //und nach Definition einer Variable die Variable! xyz3 var2; //Fehler, xyz3 beschreibt hier die Variable return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true| lang=c++ }} Öffnen im Compiler Explorer] }} * Nur Variablenliste → Definition einer/mehrerer Variablen von einem 'unnamed' Datentyp :<syntaxhighlight lang="C"> struct { int x,y,z; } xyz,arr[3],*ptr=&xyz; //Definition von Variablen des Datentyps //struct {...}. Da dieser Datentyp nicht benannt //wurde, kann im späteren keine weitere Variable //von diesem Datentyp angelegt werden. xyz.x =8; //Nutzung der Variablen arr[1].y =9; ptr->x = arr[1].y; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { struct { int x,y,z; } xyz,arr[3],*ptr=&xyz; //Definition von Variablen des Datentyps //struct {...}. Da dieser Datentyp nicht benannt //wurde, kann im späteren keine weitere Variable //von diesem Datentyp angelegt werden. xyz.x =8; //Nutzung der Variablen arr[1].y =9; ptr->x = arr[1].y; return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} :Angewendet wird die Schreibweise gerne, wenn eine Struktur innerhalb einer Struktur definiert wird und die innere Struktur zur besseren Strukturierung dient: :<syntaxhighlight lang="C"> struct aussen { //Äußere Struktur struct { //Innere Struktur int a,b,c; } anwendung1; struct { //Innere Struktur int x,y,z; } anwendung2; }; struct aussen var; var.anwendung1.a=10; //Nutzung der Variablen var.anwendung2.y=12; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { struct aussen { //Äußere Struktur struct { //Innere Struktur int a,b,c; } anwendung1; struct { //Innere Struktur int x,y,z; } anwendung2; }; struct aussen var; var.anwendung1.a=10; //Nutzung der Variablen var.anwendung2.y=12; return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Strukturname und Variablenliste → Definition eines Datentyps und Definition von Variablen. D.h. es können im Nachhinein weitere Variablen von diesem Datentyp angelegt und die hier angelegten Variablen genutzt werden. :<syntaxhighlight lang="C"> struct xyz{ //Definition eines Datentyps int x,y,z; } var1,*ptr1; //und Definition von Variablen dieses Datentyps struct xyz var2,*ptr2; //Definition weiterer Variablen dieses Datentyps var1.x=var2.y; //Nutzung der Variablen </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { struct xyz{ //Definition eines Datentyps int x,y,z; } var1,*ptr1; //und Definition von Variablen dieses Datentyps struct xyz var2,*ptr2; //Definition weiterer Variablen dieses Datentyps var1.x=var2.y=1; //Nutzung der Variablen (void)var1; (void)ptr1; (void)ptr2; return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Kein Strukturname und keine Variablenliste → "Anonymous Struct", d.h. Definition eines 'unnamed' Datentyps, von der ergänzend keine Variable angelegt wird. Anonymus Structs sind nur innerhalb von Strukturen erlaubt/einsetzbar. Hier dienen sie der besseren Strukturierung und ersparen dem Programmierer die Benennung des normalerweise notwendigen Strukturelementes: :<syntaxhighlight lang="C"> struct außen { int a; struct { int b,c,d; } anwendung1; //'Normale' innere Struktur struct { int x,y,z; }; //Anonyme Struct als innere Struktur } var; var.a=4711; //Nutzung der Variablen var.anwendung1.b=1;//Bei Zugriff auf anonyme Struktur ist die Benennung //des Strukturelementes notwendig var.x=1; //'Einfacherer' Zugriff auf inneres Element bei //'anonymous struct' </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { struct außen { int a; struct { int b,c,d; } anwendung1; //'Normale' innere Struktur struct { int x,y,z; }; //Anonyme Struct als innere Struktur } var; var.a=4711; //Nutzung der Variablen var.anwendung1.b=1;//Bei Zugriff auf anonyme Struktur ist die Benennung //des Strukturelementes notwendig var.x=1; //'Einfacherer' Zugriff auf inneres Element bei //'anonymous struct' (void)var; return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweise: * Eine Struktur (und auch eine C++ Klasse) wird mit einem Semikolon abgeschlossen * Eine alternative Beschreibung zu Strukturen finden sie in [https://abstractexpr.com/2023/06/29/structures-in-c-from-basics-to-memory-alignment/ Structures in C: From Basics to Memory Alignment] === Strukturelement === Innerhalb der Struktur können beliebige Strukturelemente von beliebigen Datentypen angelegt werden. Einzige Voraussetzung, der Datentyp des anzulegenden Strukturelementes muss zuvor definiert worden sein. Ergänzend kann der neue Datentyp auch in der Struktur selbst definiert werden, sofern mit der Definition des Datentyps auch eine Variable angelegt wird: <syntaxhighlight lang="C"> struct abc { int a,b,c; }; //Definition des Datentyps struct abc struct xyz { //Definition des Datentyps struct xyz int x,y,z; //Strukturelement vom Type int struct abc abc; //Strukturelement vom Type struct abc struct def { //Definition eines neuen Datentyps innerhalb int d,e,f; //der Struktur bei gleichzeitigen Anlegen zweier } def,geh; //Strukturelementen von diesem neuen Datentyp struct uvw { int u,v,w; //Warning, reine Datentypdefinition innerhalb }; //einer Struktur nicht möglich }; struct def abc; //Innere Datentypbeschreibung auch //außerhalb der Struktur nutzbar </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct abc { int a,b,c; }; //Definition des Datentyps struct abc struct xyz { //Definition des Datentyps struct xyz int x,y,z; //Strukturelement vom Type int struct abc abc; //Strukturelement vom Type struct abc struct def { //Definition eines neuen Datentyps innerhalb int d,e,f; //der Struktur bei gleichzeitigen Anlegen zweier } def,geh; //Strukturelementen von diesem neuen Datentyp struct uvw { int u,v,w; //Warning, reine Datentypdefinition innerhalb }; //einer Struktur nicht möglich }; struct def abc; //Innere Datentypbeschreibung auch //außerhalb der Struktur nutzbar int main(int argc,char *argv[]) { return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Zugriff auf Strukturelemente === Die Programmiersprachen C/C++ unterscheiden zwei 'Zugriffsarten' auf die Strukturelemente, abhängig vom zugrundeliegenden Datentyp des linken Operanden:: * Handelt es sich beim linken Operanden um eine (struct)Variablen, so erfolgt der Zugriff über den Punkt-Operator <code>.</code>: :<syntaxhighlight lang="C"> struct { int a,b,c; } abc; abc.a=4711; //abc ist eine Variable einer Struktur abc.b=abc.c; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct { int a,b,c; } abc; int main(int argc,char *argv[]) { abc.a=4711; //abc ist eine Variable einer Struktur abc.b=abc.c=12; printf("abc.a=%d abc.b=%d abc.c=%d\n",abc.a,abc.b,abc.c); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Handelt es sich beim linken Operanden um einen Zeiger auf eine (struct)Variable, so erfolgt der Zugriff über den Zeiger-Operator <code>-></code>: :<syntaxhighlight lang="C"> struct xyz { int x,y,z; }; struct xyz var1; //Variable von Datentyp struct xyz; struct xyz *ptr1; //Zeiger auf eine Struktur vom Datentyp struct xyz ptr1=&var1; //Initialisierung des Zeigers //(mit der Adresse der Variablen var1) var1.x= 7; //Zugriff auf das Strukturelement x über die Variable var1 ptr1->x=7; //Zugriff auf das Strukturelement x über den Zeiger ptr1 (*ptr1).x=7; //Der Zeiger-Operator entspricht dem Zugriff auf ein //dereferenziertes Strukturelement </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct xyz { int x,y,z; }; struct xyz var1; //Variable von Datentyp struct xyz; struct xyz *ptr1; //Zeiger auf eine Struktur vom Datentyp struct xyz int main(int argc,char *argv[]) { ptr1=&var1; //Initialisierung des Zeigers //(mit der Adresse der Variablen var1) var1.x= 7; //Zugriff auf das Strukturelement x über die Variable var1 ptr1->x=7; //Zugriff auf das Strukturelement x über den Zeiger ptr1 (*ptr1).x=7; //Der Zeiger-Operator entspricht dem Zugriff auf ein //dereferenziertes Strukturelement return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Werden innerhalb von Strukturen weitere Strukturen und Zeiger auf Strukturen angelegt, so müssen diese Regeln auf jedes innere Strukturelement einzeln angewendet werden: <syntaxhighlight lang="C"> struct abc { //Äußere Struktur int a,b,c; struct xyz { int x,y,z; } xyz; //Inneres Strukturelement xyz vom Datentyp struct xyz struct { char str[10]; } strstr; //Inneres Strukturelement strstr vom Datentyp //struct strstr struct xyz *ptr; //Inneres Strukturelement ptr vom Datentyp Zeiger //auf struct xyz } var2,*ptr; var2.a=8; //var2 vom Datentyp 'struct abc'. Zugriff über '.' var2.xyz.x=1; //xyz vom Datentyp 'struct xyz'. Zugriff über '.' var2.strstr.str[0]='a';//strstr vom anonymes Struct. Zugriff über '.' ptr=&var2; //ptr mit einer Adresse initialisieren var2.ptr = &var2.xyz; //Strukturelement ptr mit einer Adresse initialisieren ptr->a='a'; //ptr vom Datentyp 'Zeiger auf struct abc' //Zugriff über '->' var2.ptr->x=3; //ptr vom Datentyp 'Zeiger auf struct xyz'. //Zugriff über '->' ptr->xyz.x=3; ptr->ptr->x=3; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct abc { //Äußere Struktur int a,b,c; struct xyz { int x,y,z; } xyz; //Inneres Strukturelement xyz vom Datentyp struct xyz struct { char str[10]; } strstr; //Inneres Strukturelement strstr vom Datentyp //struct strstr struct xyz *ptr; //Inneres Strukturelement ptr vom Datentyp Zeiger //auf struct xyz } var2,*ptr; int main(int argc,char *argv[]) { var2.a=8; //var2 vom Datentyp 'struct abc'. Zugriff über '.' var2.xyz.x=1; //xyz vom Datentyp 'struct xyz'. Zugriff über '.' var2.strstr.str[0]='a';//strstr vom anonymes Struct. Zugriff über '.' ptr=&var2; //ptr mit einer Adresse initialisieren var2.ptr = &var2.xyz; //Strukturelement ptr mit einer Adresse initialisieren ptr->a='a'; //ptr vom Datentyp 'Zeiger auf struct abc' //Zugriff über '->' var2.ptr->x=3; //ptr vom Datentyp 'Zeiger auf struct xyz'. //Zugriff über '->' ptr->xyz.x=3; ptr->ptr->x=3; return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Initialisierung von Strukturen === Mit dem Anlegen einer Strukturvariablen kann diese auch initialisiert werden. Eine 'Vorbelegung' der Strukturelemente bei der Definition der Struktur ist in C nicht möglich.<br /> Die Initialisierung erfolgt über eine Initialisierungsliste (siehe Kap [[Programmieren in C/C++: Grundlagen#Initialisierungsliste_/_Compound_Literal | Grundlagen:Initialisierungsliste / Compound Literal]]). Innerhalb der Initialisierungsliste stehen die Initialisierungswerte entweder in der Reihenfolge der Datentypdefinition oder werden explizit mit dem ‘.‘ Operator angesprochen (designated initializers). Werden einzelne Strukturelemente ausgelassen, so werden diese mit 0 initialisiert: <syntaxhighlight lang="C"> struct abc{ int a,b; int c=3; //KO: Kein Initialisierungswert von Strukturelementen möglich char str[10]; }; struct abc v1={1,2,"hallo"}; //Alle Strukturelemente werden initialisiert struct abc v2={ 1,2 }; //Initialisierung der Strukturlemente a und b //Rest wird mit 0 initialisiert struct abc v3={ .b=3}; //Initialisierung einzelner/designated Strukturele. //Rest wird mit 0 initialisiert struct abc v4={.a=strlen(v1.str)}; //Initialisierungswert ergibt //sich erst zur Laufzeit. //Nur als lokale Variable möglich! struct abc v5={.b=1,.a=2,.b=12}; //Nur C: Reihenfolge und Doppelbenennung //der Strukturelemente egal/möglich struct abc v6={}; //Alle Strukturelemente mit 0 initialisieren </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <string.h> struct abc{ int a,b; int c=3; //KO: Kein Initialisierungswert von Strukturelementen möglich char str[10]; }; int main(int argc,char *argv[]) { struct abc v1={1,2,"hallo"}; //Alle Strukturelemente werden initialisiert struct abc v2={ 1,2 }; //Initialisierung der Strukturlemente a und b //Rest wird mit 0 initialisiert struct abc v3={ .b=3}; //Initialisierung einzelner/designated Strukturele. //Rest wird mit 0 initialisiert struct abc v4={.a=strlen(v1.str)}; //Initialisierungswert ergibt //sich erst zur Laufzeit. //Nur als lokale Variable möglich! struct abc v5={.b=1,.a=2,.b=12}; //Nur C: Reihenfolge und Doppelbenennung //der Strukturelemente egal/möglich struct abc v6={}; //Alle Strukturelemente mit 0 initialisieren printf("v1.a=%d v1.b=%d v1.str[0]=%d\n",v1.a,v1.b,v1.str[0]); printf("v2.a=%d v2.b=%d v2.str[0]=%d\n",v2.a,v2.b,v2.str[0]); printf("v3.a=%d v3.b=%d v3.str[0]=%d\n",v3.a,v3.b,v3.str[0]); printf("v4.a=%d v4.b=%d v4.str[0]=%d\n",v4.a,v4.b,v4.str[0]); printf("v5.a=%d v5.b=%d v5.str[0]=%d\n",v5.a,v5.b,v5.str[0]); printf("v6.a=%d v6.b=%d v6.str[0]=%d\n",v6.a,v6.b,v6.str[0]); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Eine Initialisierung einer Struktur über nachfolgende Art bewirkt etwas anderes, als erwartet: <syntaxhighlight lang="C"> struct abc { int a,b,c; }; struct abc var={var.b=12,var.c=3}; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> int main(int argc,char *argv[]) { struct abc { int a,b,c; }; struct abc var={var.b=12,var.c=3}; printf("var.a=%d var.b=%d var.c=%d\n",var.a,var.b,var.c); //Gerne mal den Compiler Wechseln return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Innerhalb der Initialisierungsliste wird über 'var.b=12' und 'var.c=3' die zu diesem Zeitpunkt noch nicht initialisierte Variable var die Elemente b und c initialisiert. Mit dem Werten der Initialisierungsliste (hier {12,3}) wird nachfolgend die Variable erneut initialisiert und 12 dem Strukturelement a und 3 dem Strukturelement b zugewiesen. Abhängig vom Compiler ist das Strukturelement c entweder 3 oder 0. Bei verschachtelten Strukturen muss entsprechend obiger Aussage für jede innere Struktur eine eigene Initialisierungsliste erstellt werden. Die inneren Initialisierungslisten können entfallen, was jedoch nicht empfohlen wird und ergänzend vom Compiler bei '-Wall' als Warning angemerkt wird: <syntaxhighlight lang="C"> struct abc { int a,b; struct xy { int x,y; } xy; struct xy arr[2]; }; struct abc v1={ //Initialisierung über Reihenfolge 1,2, {3,4}, { {5,6},{7,8}} }; struct abc v2={ //Initialisierung über 'designated initializers' .arr={{.x=5,.y=6},{7,8}}, .xy={3,4}, .a=1,.b=2 }; struct abc v3={ //Fehlende innere Initialisierungsliste 1,2, 3,4, 5,6,7,8 }; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct abc { int a,b; struct xy { int x,y; } xy; struct xy arr[2]; }; struct abc v1={ //Initialisierung über Reihenfolge 1,2, {3,4}, { {5,6},{7,8} } }; struct abc v2={ //Initialisierung über 'designated initializers' .arr={ {.x=5,.y=6},{7,8} }, .xy={3,4}, .a=1,.b=2 }; struct abc v3={ //Fehlende innere Initialisierungsliste 1,2, 3,4, 5,6,7,8 }; int main(int argc,char *argv[]) { printf("v1.a=%d .b=%d .xy.x=%d .xy.y=%d .arr[0].x=%d .arr[0].y=%d .arr[1].x=%d .arr[1].y=%d\n", v1.a, v1.b, v1.xy.x, v1.xy.y, v1.arr[0].x, v1.arr[0].y, v1.arr[1].x, v1.arr[1].y ); printf("v2.a=%d .b=%d .xy.x=%d .xy.y=%d .arr[0].x=%d .arr[0].y=%d .arr[1].x=%d .arr[1].y=%d\n", v2.a, v2.b, v2.xy.x, v2.xy.y, v2.arr[0].x, v2.arr[0].y, v2.arr[1].x, v2.arr[1].y ); printf("v3.a=%d .b=%d .xy.x=%d .xy.y=%d .arr[0].x=%d .arr[0].y=%d .arr[1].x=%d .arr[1].y=%d\n", v3.a, v3.b, v3.xy.x, v3.xy.y, v3.arr[0].x, v3.arr[0].y, v3.arr[1].x, v3.arr[1].y ); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Zuweisen/Kopieren von Strukturen === Strukturen werden über den Namen als 'ganzes' angesprochen, so dass eine Zuweisung als 'ganzes' möglich ist. Bei bspw. einer 12-Byte großen Struktur werden bei Nutzung der Variable die gesamten 12-Byte gelesen/geändert! <syntaxhighlight lang="C"> struct xyz {int x,y,z;} var1,var2; var1=var2; //12-Bytes kopiert //--> entspricht memcpy(&var1,&var2,sizeof(xyz)); </syntaxhighlight> Die Zuweisung als 'ganzes' gilt auch bei der Parameterübergabe und -rückgabe von Funktionen: <syntaxhighlight lang="C"> struct xyz {int x,y,z;}; //Funktionsdefinition struct xyz function(struct xyz par) { return (struct xyz){par.z,par.y,par.x}; } //Funktionsaufruf struct xyz var=function((struct xyz){1,2,3}); //Mit dem Aufruf der Funktion werden 12-Bytes in die Variable par kopiert //Mit dem Ende der Funktion werden 12-Bytes in die Variable var kopiert </syntaxhighlight> Bedenke, dass bei großen Strukturen das Kopieren Rechenzeit benötigt und folglich vermieden werden sollte! Alternativ sollten Zeiger auf Strukturen über- und zurückgeben werden. Über Compound Literal (siehe Kap. [[Programmieren in C/C++: Grundlagen#Initialisierungsliste_/_Compound_Literal | Grundlagen:Initialisierungsliste / Compound Literal]]) kann einer Strukturvariablen als 'ganzes' einen neuen Wert zugewiesen werden: <syntaxhighlight lang="C"> struct abc {int a,b,c;}; var1={.a=7}; //KO, Initialisierungsliste kann hier nicht //angewendet werden var1=(struct abc){.a=7}; //Wertezuweisung über Compound Literal möglich </syntaxhighlight> Formel gesehen entspricht das Compound Literal einer 'unnamed Variable', die als erstes angelegt und initialisiert wird. Der Inhalt dieser Variablen wird im Anschluss der eigentlichen Variable zugewiesen! === Prototyp / Deklaration einer Struktur === Soll der Datentyp einer Struktur genutzt werden, der erst an weiter hinten liegenden Stellen im Programm definiert wird, so ist wie bei Variablen/Funktionen ein Prototyp/Deklaration notwendig: <syntaxhighlight lang="C"> struct abc; //Prototyp der Struktur abc ... struct abc { int a,b,c;}; //Definition der Struktur abc </syntaxhighlight> Die Deklaration sagt einzig aus, dass die Struktur später definiert wird, beinhaltet aber nicht die Strukturelemente. Folglich kann auf Basis dieses Prototyps keine Variable definiert werden, sondern einzig ein Zeiger auf solche eine Struktur: <syntaxhighlight lang="C"> struct xyz; //Deklaration / Prototyp des Datentyps // d.h. keine Benennung der Strukturelemente struct xyz var1; //KO, es kann auf Basis der Deklaration keine // Variable angelegt werden struct xyz *pttr1; //OK, von einer Strukturdeklaration kann ein Zeiger // angelegt werden! </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct xyz; //Deklaration / Prototyp des Datentyps // d.h. keine Benennung der Strukturelemente struct xyz var1; //KO, es kann auf Basis der Deklaration keine // Variable angelegt werden struct xyz *pttr1; //OK, von einer Strukturdeklaration kann ein Zeiger // angelegt werden! int main(int argc,char *argv[]) { return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Anwendung: * Struktur, welche auf sich selbst verweist (Verkettete Liste) :<syntaxhighlight lang="C"> struct vl { //Entspricht gleichermaßen einem Prototyp, so dass //innerhalb dieser Struktur dieser Datentyp zum //Anlegen eines Strukturelementes genutzt werden kann struct vl *next; //Zeiger auf das nächste Element char daten[100]; }; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct vl { //Entspricht gleichermaßen einem Prototyp, so dass //innerhalb dieser Struktur dieser Datentyp zum //Anlegen eines Strukturelementes genutzt werden kann struct vl *next; //Zeiger auf das nächste Element char daten[100]; }; int main(int argc,char *argv[]) { struct vl *head=NULL; struct vl a={.daten="Ele a"}; struct vl b={.daten="Element b"}; struct vl c={.daten="c-Eleent"}; head=&a; a.next=&b; b.next=&c; c.next=NULL; //Zur Kennzeichnung des letzten Elementes for(struct vl*ptr=head;ptr;ptr=ptr->next) printf("'%s'\n",ptr->daten); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Entsprechend der objektorientierten Programmierung, wenn alle Attribute der Klasse private sind: :{| class="wikitable" |- ! !! class.h |- | ||<syntaxhighlight lang="C"> struct class; //Prototyp für Struktur //so dass Nutzer dieser //Struktur ein Zeiger auf diese anlegen, //aber nicht auf die Strukturelemente //zugreifen können. //Prototyp der public Methoden void konstruktor(struct class ** me); </syntaxhighlight> |- ! main.c !! class.c |- |<syntaxhighlight lang="C"> #include "class.h" int main(int argc, char*argv[]) { struct class *obj1; konstruktor(&obj1); .. //Kein Zugriff auf //Strukturelemente möglich return 0; } </syntaxhighlight> ||<syntaxhighlight lang="C"> #include "class.h" struct class { int attr1; int attr2; }; void konstruktor(struct class ** me) { struct class *this; this=(struct class *) malloc(sizeof(struct class)); this->attr1=10; *me=this; } </syntaxhighlight> |} {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include "class.h" int main(int argc, char*argv[]) { struct class *obj1; konstruktor(&obj1); //.. //Kein Zugriff auf Strukturelemente möglich return 0; } |class_h=struct class; //Prototyp für Struktur //so dass Nutzer dieser //Struktur ein Zeiger auf diese anlegen, //aber nicht auf die Strukturelemente //zugreifen können. //Prototyp der public Methoden void konstruktor(struct class ** me); |class_c=#include "class.h" #include <stdlib.h> //fuer malloc() #include <stdio.h> //fuer printf() struct class { int attr1; int attr2; }; void konstruktor(struct class ** me) { struct class *this; this=(struct class *) malloc(sizeof(struct class)); printf("konstructor called\n"); this->attr1=10; *me=this; } | execCompilerOptions=-Wall class.c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Vergleichen von Strukturen === Ein Vergleich von Strukturen über den direkten Weg ist nicht möglich. Vielmehr müssen die Strukturelemente händisch verglichen werden: <syntaxhighlight lang="C"> struct xyz {int inx,y,z;} var1,var2; if(var1 == var2) //KO, ein Vergleich von Strukturvariablen ist nicht möglich //Manueller Vergleich über den Vergleich der Strukturelemente if(var1.x == var2.x && var1.y == var2.y && var1.z == var2.z) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct xyz { int x,y,z; } var1={1,2,3},var2={1,2,3}; int main(int argc,char *argv[]) { if(var1 == var2) //KO, ein Vergleich von Strukturvariablen ist nicht möglich //Manueller Vergleich über den Vergleich der Strukturelemente if(var1.x == var2.x && var1.y == var2.y && var1.z == var2.z) printf("Strukturelemente von var1 und var2 identisch\n"); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis * Bei Rechnerarchitekturen mit nicht ausgerichteter Speicherausrichtung (Alignment) kann ergänzend ein Vergleich über memcmp() erfolgen === Speicherplatzbedarf einer Struktur === Für jedes Strukturelement wird Speicher entsprechend der Größe des Datentyps reserviert. Der Speicherplatzbedarf der Gesamtstruktur ergibt sich aus der Summe der Strukturelemente: <syntaxhighlight lang="C"> struct xyz{ int x; //Strukturelement belegt 4 Byte Speicher int y; //Strukturelement belegt 4 Byte Speicher int z; //Strukturelement belegt 4 Byte Speicher }var1; //Speicherplatz der Struktur = 4+4+4 = 12 Byte sizeof(var1) //ergibt 12 sizeof(struct xyz) //ergibt 12 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct xyz{ int x; //Strukturelement belegt 4 Byte Speicher int y; //Strukturelement belegt 4 Byte Speicher int z; //Strukturelement belegt 4 Byte Speicher }var1; //Speicherplatz der Struktur = 4+4+4 = 12 Byte int main(int argc,char *argv[]) { printf("sizeof(var1)=%zu Bytes\n",sizeof(var1)); printf("sizeof(struct xyz)=%zu Bytes\n",sizeof(struct xyz)); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Die Ermittlung der tatsächlichen Speichergröße einer Struktur erfolgt über den sizeof-Operator: <syntaxhighlight lang="C"> struct xyz{int x,y,z;} a; sizeof(a); //=12 OK sizeof(a.x); //=4 OK sizeof(struct xyz); //=12 OK sizeof(struct xyz.x); // KO //Ist dies dennoch notwendig, so kann dies über den Umweg eines Zeigers //erfolgen: sizeof(((struct xyz *)0)->x); //=4 OK </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct xyz{ int x,y,z; } a; int main(int argc,char *argv[]) { printf("sizeof(a)=%zu Bytes\n",sizeof(a)); printf("sizeof(a.x)=%zu Bytes\n",sizeof(a.x)); printf("sizeof(struct xyz)=%zu Bytes\n",sizeof(struct xyz)); printf("sizeof(struct xyz.x)=%zu Bytes\n",sizeof(struct xyz.x)); printf("sizeof(((struct xyz *)0)->x)=%zu Bytes\n",sizeof(((struct xyz *)0)->x)); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Bei Rechnerarchitekturen mit ausgerichteter Speicherausrichtung (Alignment) (siehe {{w|Speicherausrichtung}}) kann der tatsächliche Speicherbedarf größer sein! Hier fügt der Compiler ggf. zwischen den Strukturelemente Füllbytes (Padding Bytes) ein * Die Reihenfolge der Strukturelemente wird vom Compiler nicht geändert. D.h. die Zuordnung der Speicherstellen zu den Strukturelementen erfolgt in der Definitionsreihenfolge === Interne Organisation === Compilerintern werden die Strukturelemente über einen Offset dargestellt. Das erste Strukturelement bekommt dabei immer den Offset 0 zugewiesen. Das nachfolgende Element bekommt als Offset die Größe des Datentyps des vorherigen Elementes zugewiesen. Usw.. <br /> Der Compiler setzt den Zugriff auf ein Strukturelement einer (Struktur)Variablen so um, dass er zunächst die Startadresse der Variablen holt und zu dieser den Offset des Strukturelementes addiert. Die Anzahl der zu lesenden/schreiben Bytes ergibt sich aus dem Datentyp des Strukturelementes: <syntaxhighlight lang="C"> struct xyz { //Das Anlegen der Variable var bedeutet, int x,y,z; //12Byte Speicher zu reservieren. } var1; //(Beispielhaft soll var1 die Speicheradressen //0x100..0x10B belegen). Der Zugriff auf //die Variable erfolgt immer über die Startadresse var1.x=7; //Zugriff auf Speicheradresse 0x100+0 (Offset) var1.y=8; //Zugriff auf Speicheradresse 0x100+4 (Offset) var1.z=9; //Zugriff auf Speicheradresse 0x100+8 (Offset) </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stddef.h> //Zur Nutzung des OffsetOf Operators struct xyz { //Das Anlegen der Variable var bedeutet, int x,y,z; //12Byte Speicher zu reservieren. } var1; int main(int argc,char *argv[]) { //Zugriff siehe Compiler var1.x=7; //mov DWORD PTR var[rip+0],7 var1.y=8; //mov DWORD PTR var[rip+4],7 var1.z=9; //mov DWORD PTR var[rip+8],7 return 0; } | execCompilerOptions=-Wall| h=c| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Der Offset eines Strukturelementes kann mit dem offsetof-Operator ermittelt werden: <code>Syntax: offsetof(type,Strukturelement)</code> Wie beim sizeof-Operator gilt der offsetof-Operator als Konstantenausdruck und der Rückgabedatentyp ist <code>size_t</code>. Zur Nutzung des Operators muss die Header-Datei 'stddef.h' inkludiert werden: <syntaxhighlight lang="C"> #include <stddef.h> //Zur Nutzung des OffsetOf Operators struct xyz {int x,y,z;} var1; offsetof(struct xyz,z) --> 8 offsetof(var1,z) --> KO: Es wird ein Datentyp und keine Variable erwartet </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> #include <stddef.h> //Zur Nutzung des OffsetOf Operators struct xyz{ int x,y,z; } var1; int main(int argc,char *argv[]) { printf("offsetof(struct xyz,x)=%zu Bytes\n",offsetof(struct xyz,x)); printf("offsetof(struct xyz,y)=%zu Bytes\n",offsetof(struct xyz,y)); printf("offsetof(struct xyz,z)=%zu Bytes\n",offsetof(struct xyz,z)); printf("offsetof(var1,z)=%zu Bytes\n",offsetof(var1,z)); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Unter Nutzung des offsetof-Operators kann man bei gegebener Adresse eines Strukturelementes auf die Startadresse der zugrundeliegenden Struktur zurückrechnen: <syntaxhighlight lang="C"> struct xyz {int x,y,z;} var1; int *ptri=&var1.y; struct xyz *ptrxyz=(struct xyz *)((char *)ptri-offsetof(struct xyz, y)); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> #include <stddef.h> //Zur Nutzung des OffsetOf Operators struct xyz {int x,y,z;} var={1,2,3}; int *ptri=&var.y; int main(int argc,char *argv[]) { struct xyz *ptrxyz=(struct xyz *)((char *)ptri-offsetof(struct xyz, y)); printf("ptrxyz->x=%d ptrxyz->y=%d ptrxyz->z=%d",ptrxyz->x,ptrxyz->y,ptrxyz->z); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Dazu wird von der Startadresse des Strukturelementes der Offset abgezogen. Da der offsetof-Operator den Abstand in Bytes zurückgibt, muss der Pointer auf das Strukturelement zuvor ebenfalls in ein 'Byte'-Zeiger gewandelt werden. Im Linux kernel wird diese Subtraktion über das container_of Makro realisiert: <syntaxhighlight lang="C"> #define container_of(ptr, type, member) ({ \ const typeof( ((type *)0)->member ) *__mptr = (ptr); \ (type *)((char *)__mptr - offsetof(type,member));}) </syntaxhighlight> Dieses Makro ermöglicht es, bei gegeben Startadresse eines Strukturelementes die Startadresse der zugrundeliegenden Struktur zu berechnen. Anwendung findet dieses Makro bspw. in: * der objektorientierten Programmierung, um ausgehend vom gegebenen Parent-Element die Startadresse des Child-Elementes zu berechnen: :<syntaxhighlight lang="C"> struct parent { int attr1,attr2; }; struct child { int attr1; struct parent parent; }; void parent_methode(struct parent *me){ struct child *child=container_of(me,struct child, parent); .. } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> #include <stddef.h> //Zur Nutzung des OffsetOf Operators #define container_of(ptr, type, member) ({ \ const typeof( ((type *)0)->member ) *__mptr = (ptr); \ (type *)((char *)__mptr - offsetof(type,member));}) struct parent { int attr1,attr2; }; struct child { int attr1; struct parent parent; }; void parent_methode(struct parent *me){ struct child *child=container_of(me,struct child, parent); printf("parent.attr1=%d parent.att2=%d\n",me->attr1,me->attr2); printf("child.attr1=%d\n",child->attr1); } int main(int argc,char *argv[]) { struct child obj1; obj1.attr1=1; obj1.parent.attr1=2; obj1.parent.attr2=3; parent_methode(&obj1.parent); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * bei verketteten Listen, wenn das Next-Element im Datensatz selbst eingearbeitet ist: :<syntaxhighlight lang="C"> typedef struct vl { struct vl *next; } vl_t; typedef struct { int daten1; vl_t *next; int daten2; } daten_t; int vl_addfront(daten_t *daten) { daten->next=head.next; head.next=(vl_t *)&(daten->next); return 0; } daten_t *vl_getfront(void) { vl_t *tmp=head.next; if(tmp) { head.next=head.next->next; } return container_of(tmp,daten_t,next); } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> #include <stddef.h> //Zur Nutzung des OffsetOf Operators #define container_of(PTR, TYPE, MEMBER) \ ((TYPE *) ((char *) (PTR) - offsetof(TYPE, MEMBER))) typedef struct vl { struct vl *next; } vl_t; typedef struct { int daten1; vl_t *next; int daten2; } daten_t; vl_t head={NULL}; int vl_addfront(daten_t *daten) { daten->next=head.next; head.next=(vl_t *)&(daten->next); return 0; } daten_t *vl_getfront(void) { vl_t *tmp=head.next; if(tmp) { head.next=head.next->next; } return container_of(tmp,daten_t,next); } int main(int argc,char *argv[]) { daten_t obj1={.daten1=1,.daten2=2}; daten_t obj2={.daten1=3,.daten2=4}; vl_addfront(&obj1); vl_addfront(&obj2); daten_t *ret=vl_getfront(); printf("%d %d\n",ret->daten1,ret->daten2); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Explizites Cast === Eine Struktur kann nicht in einen anderen Datentyp und damit auch nicht in einen anderen Strukturdatentyp mit identischen Strukturelementen konvertiert werden: <syntaxhighlight lang="C"> struct xyz {int x,y,z;} xyz; struct abc {int a,b,c;} abc; int var; xyz=abc; //KO, Datentyp struct xyz != struct abc xyz=(struct xyz)abc; //KO, siehe zuvor int neu1 = (int) xyz; //KO int neu2 = (int) xyz.x; //OK (Das Strukturelement x ist vom Datentyp int) struct xyz neu2 = (struct xyz)3; //KO </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct xyz { int x,y,z; } xyz; struct abc { int a,b,c; } abc; int var; int main(int argc,char *argv[]) { xyz=abc; //KO, Datentyp struct xyz != struct abc xyz=(struct xyz)abc; //KO, siehe zuvor int neu1 = (int) xyz; //KO int neu2 = (int) xyz.x; //OK (Das Strukturelement x ist vom Datentyp int) struct xyz neu2 = (struct xyz)3; //KO return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Incomplete Array === Das letzte Element einer Struktur kann ein Array ohne Angabe einer Dimensionsgröße sein (Incomplete Array/Flexible Array Member). Bei der Definition einer Variablen von solch einem Datentyp wird in der Tat kein Speicher für das letzte Element reserviert, so dass dies 'händisch' erfolgen muss. Auf das Array kann ungeachtet dessen unproblematisch zugegriffen werden: <syntaxhighlight lang="C"> struct vl { struct vl *next; char data[]; //incomplete Array / flexible Array Member }; struct vl a; //Es wird nur Speicher für den next Zeiger reserviert a.data[0]='7'; //Syntax OK, jedoch erzeugt dies ein Laufzeitfehler, //da kein Speicherplatz für das Incomplete Array reserviert //wurde </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct vl { struct vl *next; char data[]; //incomplete Array / flexible Array Member }; int main(int argc,char *argv[]) { struct vl a; //Es wird nur Speicher für den next Zeiger reserviert printf("sizeof(struct vl*)=%zu Bytes\n",sizeof(struct vl*)); printf("sizeof(a)=%zu Bytes\n",sizeof(a)); a.data[0]='7'; //Syntax OK, jedoch erzeugt dies ein Laufzeitfehler, //da kein Speicherplatz für das Incomplete Array reserviert wurde //Zur Darstellung dieses Sachverhaltes wurde der Sanitizer //über den Compilerschalter -fsanitize=address aktiviert return 0; } | execCompilerOptions=-Wall -fsanitize=address| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Die Speicherplatzreservierung für das incomplete Array kann auf zwei verschiedene Arten erfolgen: * Speicherplatzreservierung für das Incomplete Array über Variableninitialisierung (nur GCC-C und nur im Falle einer globalen Variablen) :<syntaxhighlight lang="C"> struct vl ele1 = { .next = NULL, .data = {32, 31, 30} //Durch Initialisierung der einzelnen Array Elemente }; //Vorsicht, sizeof(ele) gibt dennoch nur 4/8 zurück struct vl ele2 = { .next = NULL, .data[3-1] = 0 //Durch Initialisierung des letzten Array Elementes }; //Vorsicht, sizeof(ele) gibt dennoch nur 4/8 zurück </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> struct vl { struct vl *next; char data[]; //incomplete Array / flexible Array Member }; struct vl ele1 = { .next = NULL, .data = {32, 31, 30} //Durch Initialisierung der einzelnen Array Elemente }; //Vorsicht, sizeof(ele) gibt dennoch nur 4/8 zurück struct vl ele2 = { .next = NULL, .data[3-1] = 0 //Durch Initialisierung des letzten Array Elementes }; //Vorsicht, sizeof(ele) gibt dennoch nur 4/8 zurück int main(int argc,char *argv[]) { printf("sizeof(struct vl*)=%zu Bytes\n",sizeof(struct vl*)); printf("sizeof(ele1)=%zu Bytes\n",sizeof(ele1)); printf("sizeof(ele2)=%zu Bytes\n",sizeof(ele2)); return 0; } | execCompilerOptions=-Wall| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Speicherplatzreservierung für das Incomplete Array über malloc :<syntaxhighlight lang="C"> struct vl *b=malloc(sizeof(struct vl)+ //Größe der Struktur sizeof(char[3] )); //Größe des Arrays b->data[1]='7'; //OK, da mit dem Anlegen von b Speicher für 2 //data Element reserviert wurde </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //fuer printf() #include <stdlib.h> //fuer malloc() free() struct vl { struct vl *next; char data[]; //incomplete Array / flexible Array Member }; int main(int argc,char *argv[]) { struct vl *b=malloc(sizeof(struct vl)+ //Größe der Struktur sizeof(char[3] )); //Größe des Arrays if(b==NULL) return printf("malloc failed\n"),1; b->data[1]='7'; //OK, da mit dem Anlegen von b Speicher für 2 //data Element reserviert wurde //zum Beweis Sanitizer über -fsanitize=address eingebunden free(b); return 0; } | execCompilerOptions=-Wall -fsanitize=address| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Das Incomplete Array bietet sich überall dort an, wo Daten gespeichert werden sollen, deren Größe sich erst zur Laufzeit ergibt. === Anwendung === Die Nutzung des Datentyps struct empfiehlt sich an vielen Stellen: * Zusammengehörende Daten zu Kapseln (entsprechend der objektorientierten Programmierung * Verkette Listen * Aufgrund der Typsicherheit zur Darstellung von sicherheitskritischen Aufgaben Siehe Übungsbereich! === C++ === Der wesentliche Syntax von Strukturen wurde in C++ übernommen. D.h.: * das abschließende Semikolon * der Zugriff auf die Strukturelemente * Speicherplatzreservierung * die Definition von Variablen mit der Definition des Datentyps * ... Ergänzend wurde in C++ der Datentyp class eingeführt, der weitestgehend identisch zu struct ist. Geändert/Hinzugefügt wurden folgende Sachverhalte: * Classen/Strukturen können Methoden haben * Operatoren (Zuweisungsoperator, Addition, ...) können überladen werden * Alle Strukturelemente (und Methoden) einer struct sind per default public * Alle Attribute (und Methoden) einer Class sind per default private * Zur Nutzung des Datentyps ist das führende struct nicht notwendig (dies bedingt dann auch, dass der Strukturdatentyp kein separater Namensraum ist) :<syntaxhighlight lang="C++"> struct xyz { int x,y,z; }; xyz var_xyz; </syntaxhighlight> * Initialisierungswerte für Strukturelemente und Klassenattribute bei der Datentypbeschreibung angegeben werden können: :<syntaxhighlight lang="C++"> struct xyz { int x=3; int y=1; int z; }; xyz var={7}; //var.x=7 var.y=1 var.z=0 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //fuer printf() #include <stdlib.h> //fuer malloc() free() struct xyz { int x=3; int y=1; int z; }; int main(int argc,char *argv[]) { xyz var={7}; //var.x=7 var.y=1 var.z=0 printf("var.x=%d var.y=%d var.z=%d\n",var.x,var.y,var.z); return 0; } | execCompilerOptions=-Wall | lang=c++| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * In C++ kann eine Struktur ebenfalls über 'designated initializers' initialisiert werden. Jedoch muss die Reihenfolge der Initialisierungselement identisch zur Datentypdefinition sein. Auch ist keine Doppeltbenennung erlaubt: :<syntaxhighlight lang="C++"> struct xyz { int x,y,z; }; xyz var1={.x=1, .y=2, .z=3}; //OK, Reihenfolge identisch xyz var2={.y=1, .z=3}; //OK, Reihenfolge identisch xyz var3={.y=1, .x=0}; //KO, Reihenfolge nicht identisch xyz var4={.x=1, .x=2}; //KO, keine Doppeltbenennung möglich </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //fuer printf() #include <stdlib.h> //fuer malloc() free() struct xyz { int x,y,z; }; int main(int argc,char *argv[]) { xyz var1={.x=1, .y=2, .z=3}; //OK, Reihenfolge identisch xyz var2={.y=1, .z=3}; //OK, Reihenfolge identisch xyz var3={.y=1, .x=0}; //KO, Reihenfolge nicht identisch xyz var4={.x=1, .x=2}; //KO, keine Doppeltbenennung möglich (void)var1; (void)var2; (void)var3; (void)var4; return 0; } | execCompilerOptions=-Wall | lang=c++| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} == Union == Ähnlich wie eine Struktur ist ein Union ein Datentyp, der aus einem oder mehreren Datentypen zusammengesetzt wird. Bei sog. Union beginnen jedoch alle Komponenten nicht wie bei Strukturen an nacheinander folgenden Speicheradressen, sondern an der identischen Speicheradresse, d.h. ihre Speicherbereiche überlappen sich ganz oder zumindest teilweise. Eine Union kann folglich zu einem Zeitpunkt nur ein Element enthalten. Der benötigte Speicherplatz ergibt sich aus der größten Komponente. <code>Syntax: union Unionname<sub>Opt</sub> {Datentyp Variablenname; …}<sub>Opt</sub> Variablenliste<sub>Opt</sub>;</code> Ein Schutz/Zugriffssteuerung der Unionelemente ist nicht vorhanden. Es kann in beliebiger Reihenfolge auf die einzelnen Elemente zugegriffen werden. Die Anwendung ist identisch wie bei Strukturen, so dass im Folgenden nur die Abweichungen zu den Strukturen beschrieben werden. === Speicherplatzbedarf und interne Struktur einer Union === Die Größe der Union ergibt sich aus dem größtem Unionelement. Alle Unionelemente überlappen sich, so dass der Offset zum Basiselement 0 ist: <syntaxhighlight lang="C"> union abc { char a; short b; int c; } abc; printf("Größe: %zu\n",sizeof (union abc)); //-> 4 printf("Offset a:%zu\n",offsetof(union abc,a)); //-> 0 printf("Offset b:%zu\n",offsetof(union abc,b)); //-> 0 printf("Offset c:%zu\n",offsetof(union abc,c)); //-> 0 </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //fuer printf() #include <stddef.h> //fuer offsetoff() union abc { char a; short b; int c; } abc; int main(int argc,char *argv[]) { printf("Größe: %zu\n",sizeof (union abc)); //-> 4 printf("Offset a:%zu\n",offsetof(union abc,a)); //-> 0 printf("Offset b:%zu\n",offsetof(union abc,b)); //-> 0 printf("Offset c:%zu\n",offsetof(union abc,c)); //-> 0 return 0; } | execCompilerOptions=-Wall | lang=c++| execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Wird ein kleineres Unionelement belegt und im Anschluss ein größeres Unionelement gelesen, so ist der Inhalt der durch das kleinere Element nicht beschriebenen Speicherstellen undefiniert: <syntaxhighlight lang="C"> union abc { char a; short b; int c; } abc; abc.a=0x11; printf("%08x",abc.c); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //fuer printf() #include <stddef.h> //fuer offsetoff() union abc { char a; short b; int c; }; void foo(int var) { int lok=var; printf("Foo(%#08x) called\n",lok); } void bar(void) { union abc abc; abc.a=0x11; printf("abc.a=%#02x\n",abc.a); printf("abc.c=%#08x\n",abc.c); } int main(int argc,char *argv[]) { //Zur Darstellung des Phänomens muss //erstmal der Stack mit Daten belegt werden! foo(0x12345678); bar(); return 0; } | execCompilerOptions=-Wall | execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Initialisierung von Union === Bei einer Union kann nur ein Element initialisiert werden, d.h. die Initialisierungsliste kann nur einen Wert beinhalten. Ohne explizite Benennung des Unionelementes in der Initialisierungsliste wird das erste Element aus der Datentypbeschreibung initialisiert. Mit expliziter Benennung mittels 'designated initializers' können auch andere Elemente initialisiert werden: <syntaxhighlight lang="C"> union abc { char a; short b; int c; } abc; abc=3; //KO keine Initialisierungsliste abc=(union abc){3}; //OK Initialisierung des ersten Elementes a abc=(union abc){.b=3}; //OK Initialisierung des Elementes b abc=(union abc){3,4}; //KO nur ein Initialisiuerngswert erlaubt </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //fuer printf() #include <stddef.h> //fuer offsetoff() union abc { char a; short b; int c; } abc; int main(int argc,char *argv[]) { abc=3; //KO keine Initialisierungsliste abc=(union abc){3}; //OK Initialisierung des ersten Elementes a abc=(union abc){.b=3}; //OK Initialisierung des Elementes b abc=(union abc){3,4}; //KO nur ein Initialisiuerngswert erlaubt return 0; } | execCompilerOptions=-Wall | execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Anwendung === Mittels des Datentyps union können diverse Anwendungsfälle abgedeckt werden: * Über Union lassen sich größere Datentypen in kleinere Datentypen unterteilen, um z.B. einzelne Bytes zu extrahieren: <syntaxhighlight lang="C"> union floatu { float var; //Float ist 4-Byte groß unsigned int hex; //Integer ist 4-Byte groß char byte[4]; //Ohne Worte }; union floatu var={1.234}; printf("%f\n",var.var); //Darstellung des Float-Wertes printf("%x\n",var.hex); //Darstellung des Float-Wertes 'BinäreZahl' printf("%hhx %hhx %hhx %hhx\n", //Darstellung der einzelnen Bytes var.byte[0],var.byte[1],var.byte[2],var.byte[3]); union longlong { long long ll; //Long Long ist 8-Byte groß int i[2]; //Ohne Worte short s[4]; char c[8]; }; union longlong var2={0x123456789ABCDEFULL}; printf("%llx\n",var2.ll); printf("%x %x\n",var2.i[0],var2.i[1]); //Vorsicht: Die Aufteilung der Bytes ist von der Rechnerarchitektur //(Endianes) und von der Ausrichtung durch den Compiler abhängig </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //fuer printf() union floatu { float var; //Float ist 4-Byte groß unsigned int hex; //Integer ist 4-Byte groß char byte[4]; //Ohne Worte }; union longlong { long long ll; //Long Long ist 8-Byte groß int i[2]; //Ohne Worte short s[4]; char c[8]; }; int main(int argc,char *argv[]) { union floatu var1={1.234}; printf("var1.var=%f\n",var1.var); //Darstellung des Float-Wertes printf("var1.hex=%x\n",var1.hex); //Darstellung des Float-Wertes 'BinäreZahl' printf("var1.byte[0..3]=%hhx %hhx %hhx %hhx\n", //Darstellung der einzelnen Bytes var1.byte[0],var1.byte[1],var1.byte[2],var1.byte[3]); union longlong var2={0x123456789ABCDEFULL}; printf("var2.ll=%llx\n",var2.ll); printf("var2.i[0..1]=%x %x\n",var2.i[0],var2.i[1]); //Vorsicht: Die Aufteilung der Bytes ist von der Rechnerarchitektur //(Endianes) und von der Ausrichtung durch den Compiler abhängig return 0; } | execCompilerOptions=-Wall | execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Ein weiterer Anwendungsfall ergibt sich, wenn in einer Struktur unterschiedliche Datensätze gespeichert werden sollen (siehe {{w|Tagged Union}}): :<syntaxhighlight lang="C"> struct set { char *index; char *value; }; struct get { char *index; char *value; }; struct cli{ //Enum zur Darstellung des aktiven Unionelementes hilfreich enum {SETTER,GETTER} tag; union { //Interpretation abhängig von tag struct set set; struct get get; } ; }; struct cli var={.tag=SETTER, .set.index="hallo"}; if(var.tag==SETTER) printf("Set: %s",var.set.index); else printf("Get: %s",var.get.index); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //fuer printf() struct set { char *index; char *value; }; struct get { char *index; char *value; }; struct cli{ //Enum zur Darstellung des aktiven Unionelementes hilfreich enum {SETTER,GETTER} tag; union { //Interpretation abhängig von tag struct set set; struct get get; } ; }; int main(int argc,char *argv[]) { struct cli var={.tag=SETTER, .set.index="hallo"}; if(var.tag==SETTER) printf("Set: %s",var.set.index); else printf("Get: %s",var.get.index); return 0; } | execCompilerOptions=-Wall | execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Mittels eines Tagged Union kann komfortabel ein Binärbaum realisiert werden: :<syntaxhighlight lang="C"> //Quelle: https://github.com/Hirrolot/datatype99 struct BinaryTree; //Prototyp struct BinaryTreeNode { struct BinaryTree *lhs; int x; struct BinaryTree *rhs; } BinaryTreeNode_t; struct BinaryTree { enum { Leaf, Node } tag; union { int leaf; struct BinaryTreeNode node; } data; }; int sum(const struct BinaryTree *tree) { switch (tree->tag) { case Leaf: return tree->data.leaf; case Node: return sum(tree->data.node.lhs) + tree->data.node.x + sum(tree->data.node.rhs); } return -1; // Invalid input (no such variant). } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c= #include <stdio.h> //fuer printf() struct BinaryTree; //Prototyp struct BinaryTreeNode { struct BinaryTree *lhs; int x; struct BinaryTree *rhs; } BinaryTreeNode_t; struct BinaryTree { enum { Leaf, Node } tag; union { int leaf; struct BinaryTreeNode node; } data; }; int sum(const struct BinaryTree *tree) { switch (tree->tag) { case Leaf: return tree->data.leaf; case Node: return sum(tree->data.node.lhs) + tree->data.node.x + sum(tree->data.node.rhs); } return -1; // Invalid input (no such variant). } int main(int argc,char *argv[]) { return 0; } | execCompilerOptions=-Wall | execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === C++ === Die Eigenschaften des Datentyps union entsprechen den Eigenschaften des Datentyps struct in C++. == Enum/Aufzählungstyp == Nach dem Wikipedia Artikel {{w|Aufzählungstyp}} ist ''ein Aufzählungstyp (englisch enumerated type) ein Datentyp für Variablen mit einer endlichen Wertemenge. Alle zulässigen Werte des Aufzählungstyps werden bei der Deklaration des Datentyps mit einem eindeutigen Namen (Identifikator) definiert, sie sind Symbole.'' <code>Syntax: enum enumname<sub>Opt</sub> {definition-list[=expression]}<sub>Opt</sub> Variablenliste<sub>Opt</sub></code> Die Anwendung ist identisch wie bei Strukturen, so dass nachfolgend nur die Abweichungen zu den Strukturen beschrieben werden. === Datentyp von enum === In C entspricht der Datentyp Enum dem Datentyp <code>int</code> so dass Zuweisungen/Vergleiche mit Ganzzahlen möglich sind. Ganzzahloperationen funktionieren ebenso: <syntaxhighlight lang="C"> enum STATUS {OK,KO=5}; //Definition des Datentyps enum STATUS status; //Definition einer Variable dieses Datentyps status=OK; if(status == 5) status++; status=5.7; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //fuer printf() enum STATUS {OK,KO=5}; //Definition des Datentyps int main(int argc,char *argv[]) { enum STATUS status; //Definition einer Variable dieses Datentyps status=OK; if(status == 5) printf("status == 5\n"); status++; status=5.7; return 0; } | execCompilerOptions=-Wall | execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === Enumelemente === Die Elemente der Definitionsliste sind Integerkonstanten. Diese können auch in Kombination mit anderen Datentypen genutzt werden. Auch gibt es keinen gesonderten Namensraum für Elemente der Definitionsliste. Sie 'konkurrieren' folglich mit allen Variablen- und Funktionsnamen: <syntaxhighlight lang="C"> enum mode {OK, KO}; enum {FIRST,SECOND,LAST}; //Anonymes Enum! enum {EINS,ZWEI,LAST}; //KO, Symbolname LAST bereits vergeben enum mode var1=OK; var1=4711; //OK, enum entspricht Datentyp int int var2=KO; //OK, EnumElement entspricht Datentyp int int OK=KO; //KO, Symbolname OK bereits für EnumElement vergeben var1=FIRST; //OK, var1 und FIRST sind zwar unterschiedlich //Enumtypen,jedoch entspricht beides dem Datentyp int </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //fuer printf() enum mode {OK, KO}; enum {FIRST,SECOND,LAST}; //Anonymes Enum! enum {EINS,ZWEI,LAST}; //KO, Symbolname LAST bereits vergeben int main(int argc,char *argv[]) { enum mode var1=OK; var1=4711; //OK, enum entspricht Datentyp int int var2=KO; //OK, EnumElement entspricht Datentyp int int OK=KO; //KO, Symbolname OK bereits für EnumElement vergeben var1=FIRST; //OK, var1 und FIRST sind zwar unterschiedlich //Enumtypen,jedoch entspricht beides dem Datentyp int (void)var1; (void)var2; return 0; } | execCompilerOptions=-Wall | execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Der erste Enumelement der Definitionsliste bekommt den Wert 0 zugewiesen. Folgeelemente bekommen den Wert des Vorgängerelementes +1 zugewiesen. Enumelemente können mit einer Konstanten (und Konstantenausdruck) initialisiert werden: <syntaxhighlight lang="C"> enum {bill=10, john=bill+2, fred=john+1} ; //Negative Werte sind möglich enum {error=-3, warning, info, ok}; //warning=-2 info=-1 … //Doppelte Wertzuweisung sind möglich enum {Ostfalia=10,Wolfenbuettel=10}; //Hinter dem letzten Enumelement kann ein Komma folgen enum {test=10,}; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //fuer printf() enum {bill=10, john=bill+2, fred=john+1} ; //Negative Werte sind möglich enum {error=-3, warning, info, ok}; //warning=-2 info=-1 … //Doppelte Wertzuweisung sind möglich enum {Ostfalia=10,Wolfenbuettel=10}; //Hinter dem letzten Enumelement kann ein Komma folgen enum {test=10,}; int main(int argc,char *argv[]) { printf("bill=%d john=%d, fred=%d\n",bill,john,fred); printf("error=%d warning=%d info=%d ok=%d\n",error,warning,info,ok); printf("Ostfalia=%d Wolfenbuettel=%d\n",Ostfalia,Wolfenbuettel); printf("test=%d\n",test); return 0; } | execCompilerOptions=-Wall | execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} Hinweis: * Es empfiehlt sich, die Enumelemente in GROSSBUCHSTABEN zu schreiben. Hiermit wird gekennzeichnet, dass es sich um Konstanten und nicht um Variablen/Funktionen handelt === Anwendung === Die Nutzung des Datentyps enum empfiehlt sich überall dort, wo eine Fallunterscheidung notwendig ist: * Statusrückgabe von Funktionen: :<syntaxhighlight lang="C"> enum STATUS {OK,MEMORY_OVERFLOW, DIVISION_BY_ZERO}; enum STATUS funct(…) { return MEMORY_OVERFLOW; } </syntaxhighlight> * Beschreibung der Zustände und der Ereignisse eines Zustandsautomates: :<syntaxhighlight lang="C"> enum EREIGNIS {EREIGNIS1,EREIGNIS2,EREIGNIS3}; void zustandsautomat(enum EREIGNIS ereignis) { static enum {IDLE,OPERAND,OPERATOR,} zustand=IDLE; switch(zustand) { case IDLE: case OPERAND: //Compiler meckert bei fehlendem Case über OPERATOR } } </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //fuer printf() enum EREIGNIS {EREIGNIS1,EREIGNIS2,EREIGNIS3}; void zustandsautomat(enum EREIGNIS ereignis) { static enum {IDLE,OPERAND,OPERATOR,} zustand=IDLE; switch(zustand) { case IDLE: case OPERAND: //Compiler meckert bei fehlendem Case über OPERATOR } } int main(int argc,char *argv[]) { return 0; } | execCompilerOptions=-Wall | execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === C++ === Ergänzend zu den Abweichungen bei Structs sind hier weitere Unterscheidungsmerkmale vorhanden: * Enums stellen einen eigenen Datentyp dar, der nicht mit int kompatible ist. Das bedingt unter anderem, dass einige Operatoren wie z.B. ++ nicht mehr auf Variablen des Datentyps enum angewendet werden. Die Enumelemente als solches sind jedoch kompatibel zum Ganzzahldatentyp: :<syntaxhighlight lang="C++"> enum Color {RED,GREN,BLUE}; enum Color var1=RED; var1=4; //KO var1=var1+1; //KO var1++; //KO int var2=RED; //OK if(RED==2) //OK </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //fuer printf() enum Color {RED,GREN,BLUE}; enum Color var1=RED; int main(int argc,char *argv[]) { var1=4; //KO var1=var1+1; //KO var1++; //KO int var2=RED; //OK if(RED==2) //OK printf("RED==2\n"); (void)var1; (void)var2; return 0; } | execCompilerOptions=-Wall | execCompilerOutputShown=true | lang=c++ }} Öffnen im Compiler Explorer] }} * Auch enums können Methoden besitzen. * Über Operatorüberladung können z.B. nicht vorhandene Operatoren wie ++/-- ergänzt werden * Über unscoped/scoped Enumerations wird der 'Namensraum' gesteuert: :* Unscoped Enumeration (Elemente der Definitionsliste stehen wie bei C im Zugriff) ::<code>Syntax: enum name<sub>Opt</sub> : type<sub>OPT</sub> {enumerator=constexp, …};</code> ::<syntaxhighlight lang="C++"> enum Color {RED,GREN,BLUE }; Color r = RED; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //fuer printf() enum Color {RED,GREN,BLUE }; Color r = RED; int main(int argc,char *argv[]) { return 0; } | execCompilerOptions=-Wall | execCompilerOutputShown=true | lang=c++ }} Öffnen im Compiler Explorer] }} :* Scoped enumeration (Elemente der Definitionsliste haben einen eigenen 'Namensraum') ::<code>Syntax: enum '''class|struct''' name<sub>Opt</sub> : type<sub>OPT</sub> {enumerator=constexp, …};</code> ::<syntaxhighlight lang="C++"> enum class Color {RED,GREN=20,BLUE }; Color r = Color::BLUE; </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //fuer printf() enum class Color {RED,GREN=20,BLUE }; Color r = Color::BLUE; int main(int argc,char *argv[]) { return 0; } | execCompilerOptions=-Wall | execCompilerOutputShown=true| lang=c++ }} Öffnen im Compiler Explorer] }} == Bitfelder == Nach dem Wikipediaartikel {{w|Bitfeld}} ''bezeichnet in der Informationstechnik und Programmierung ein Bitfeld ein vorzeichenloses Ganzzahldatentyp, in dem einzelne Bits oder Gruppen von Bits aneinandergereiht werden. Es stellt eine Art Verbunddatentyp auf Bit-Ebene dar. Im Gegensatz dazu steht der primitive Datentyp, bei dem der Wert aus allen Stellen gemeinsam gebildet wird.'' Der Syntax entspricht dem struct-Syntax, mit der Ergänzung, dass hinter den Strukturelementen noch die Bitbreite getrennt durch ein Doppelpunkt angegeben wird: <syntaxhighlight lang="C"> struct time { unsigned int hour: 5; //0..23 Bits 0..4 unsigned int minute: 6; //0..59 Bits 5..10 Unsigend int second: 6; //0..59 Bits 11..16 } myTime; </syntaxhighlight> Als mögliche Datentypen für die Strukturelemente stehen nur die Ganzzahldatentypen int, short, long , long long und char zur Verfügung. Der Datentyp eines Strukturelementes muss mindestens die Anzahl der Bits enthalten, wie diese über die Bitbreite gefordert wird. Von den Strukturelementen kann keine Adresse bestimmt werden! Auch der <code>offsetf</code> - Operator schlägt fehl. Der Datentyp entspricht im Wesentlichen einem Ganzzahlzahldatentyp, so dass bei Zugriff auf eine Variable dieses Datentyps eine Ganzzahl gelesen/geschrieben wird. Bei Zugriff auf die einzelnen Strukturelemente werden die entsprechenden Bits dieser Ganzzahlvariablen maskiert, so dass nur die betroffenen Bits geändert werden: <syntaxhighlight lang="C"> struct test { unsigned char first:2; unsigned char second:4; unsigned char third:2; }; struct test var={.first=1,.second=1,.third=1}; //entspricht unsigned char var1=0b01000101; var.second=1; //entspricht: var1=(var1&0b11000011) | (1<<2); var.second++; //entspricht int second =(var1>>2)&0b00001111; second++; var1=(var1&0b11000011) | ((second&0b00001111)<<2); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //fuer printf() struct test { unsigned char first:2; unsigned char second:4; unsigned char third:2; }; //Nachweis am besen über den Maschinensprachevergleich! int main(int argc,char *argv[]) { struct test var={.first=1,.second=1,.third=1}; //entspricht unsigned char var1=0b01000101; var.second=1; //entspricht: var1=(var1&0b11000011) {{!}} (1<<2); var.second++; //entspricht int second =(var1>>2)&0b00001111; second++; var1=(var1&0b11000011) {{!}} ((second&0b00001111)<<2); return 0; } | execCompilerOptions=-Wall | execCompilerOutputShown=true | h=c }} Öffnen im Compiler Explorer] }} === Anwendung=== * Komprimierte Speicherung der Uhrzeit (wie dies z.B. in Realtimeclocks erfolgt) :<syntaxhighlight lang="C"> union { struct { //Datentyp zum 'Bitweisen' Zugriff unsigned int hour:5; unsigned int minute:6; unsigned int second:6; }; unsigned int hex; //Datentyp zum Zugriff aller Elemente } myTime; myTime.hour = 13; myTime.minute = 37; myTime.second = 59; printf("Zeit: %02d:%02d:%02d\n", myTime.hour,myTime.minute,myTime.second ); //Alternativer/Händischer Zugriff auf die einzelnen Bits printf("Es ist jetzt %02d:%02d:%02d Uhr\n",((myTime.hex>> 0)&0b011111), ((myTime.hex>> 5)&0b111111), ((myTime.hex>>11)&0b111111)); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //fuer printf() union { struct { //Datentyp zum 'Bitweisen' Zugriff unsigned int hour:5; unsigned int minute:6; unsigned int second:6; }; unsigned int hex; //Datentyp zum Zugriff aller Elemente } myTime; int main(int argc,char *argv[]) { myTime.hour = 13; myTime.minute = 37; myTime.second = 59; printf("Zeit: %02d:%02d:%02d\n", myTime.hour,myTime.minute,myTime.second ); //Alternativer/Händischer Zugriff auf die einzelnen Bits printf("Es ist jetzt %02d:%02d:%02d Uhr\n",((myTime.hex>> 0)&0b011111), ((myTime.hex>> 5)&0b111111), ((myTime.hex>>11)&0b111111)); return 0; } | execCompilerOptions=-Wall | execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} * Aufteilung von FloatingPoint Zahlen in seine Komponenten :<syntaxhighlight lang="C"> union float_mes { float flo; struct ieee { //aus ieee754.h kopiert #if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ unsigned int negative:1; unsigned int exponent:8; unsigned int mantissa:23; #endif /* Big endian. */ #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ unsigned int mantissa:23; unsigned int exponent:8; unsigned int negative:1; #endif /* Little endian. */ } ieee; int hex; }; //aus ieee754.h kopiert #define IEEE754_FLOAT_BIAS 0x7f /* Added to exponent. */ union float_mes test={0.1}; printf("float: %f\n",test.flo); printf("hex: %x\n",test.hex); printf("bin: "); for(unsigned int flag=0x80000000; flag; flag=flag>>1) printf("%c%s",test.hex&flag?'1':'0', flag&0x80800000?":":(flag&1?"\n":"")); printf("bitfield: (%c)%x * 2^(%d-%d)\n",(test.ieee.negative==1?'-':'+'), test.ieee.mantissa, test.ieee.exponent, IEEE754_FLOAT_BIAS); </syntaxhighlight> {{noprint| [{{:Programmieren in C/C++:Vorlage:CompilerExplorerLink|example_c=#include <stdio.h> //fuer printf() union float_mes { float flo; struct ieee { //aus ieee754.h kopiert #if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ unsigned int negative:1; unsigned int exponent:8; unsigned int mantissa:23; #endif /* Big endian. */ #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ unsigned int mantissa:23; unsigned int exponent:8; unsigned int negative:1; #endif /* Little endian. */ } ieee; int hex; }; //aus ieee754.h kopiert #define IEEE754_FLOAT_BIAS 0x7f /* Added to exponent. */ int main(int argc,char *argv[]) { union float_mes test={0.1}; printf("float: %f\n",test.flo); printf("hex: %x\n",test.hex); printf("bin: "); for(unsigned int flag=0x80000000; flag; flag=flag>>1) printf("%c%s",test.hex&flag?'1':'0', flag&0x80800000?":":(flag&1?"\n":"")); printf("bitfield: (%c)%x * 2^(%d-%d)\n", (test.ieee.negative==1?'-':'+'), test.ieee.mantissa, test.ieee.exponent, IEEE754_FLOAT_BIAS); return 0; } | execCompilerOptions=-Wall | execCompilerOutputShown=true }} Öffnen im Compiler Explorer] }} === C++ === Bitfelder existieren mit den bekannten Ergänzungen auch in C++. <noinclude> {{Navigation zurückhochvor buch |zurücklink=Programmieren in C/C++: Grundlagen |zurücktext=Grundlagen |hochlink=Programmieren in C/C++ |hochtext=Inhaltsverzeichnis |vorlink=Programmieren in C/C++: DatentypeSpecifier |vortext=Datatype-/Storage Class Specifier}} </noinclude> dhcpn29x7a4gh5xawzzw23ymanqzbb9 CPRT 0 119061 1090561 1090495 2026-09-08T15:10:37Z Pelikam 111447 /* Teil A: Funktionen des Zustands und deren Differentiale in verschiedenen Koordinatensystemen */ 1090561 wikitext text/x-wiki [[PCRT|< Reversible Thermodynamik für die Zusammenarbeit von Mathematik-, Physik-, Chemie-, Ingenieur-Wissenschaften - PCRT]] == 0. Ein Wort an evtl. Co-Autor:innen: == Teil I ist gerade in der Entstehung. Er hat ein bestimmtes Konzept. Dieses Konzept hat sich das Autorenkollektiv Pelikam ausgedacht. Teil A richtet sich an Physiker:innen ist also Mathematik-belastet und erklärt die Reversible Thermodynamik. Teil I ist so gedacht, daß es jeder/jede verstehen kann. Bitte lasst Teil I erstmal soweit wachsen, bis das Konzept fertig ist. Das Konzept ist ab jetzt (07-2026) in ca. 6 Monaten (12-2026) fertig, bzw. Teil I ist nach den Vorstellungen von Autorenkollektiv Pelikam dann zu 80% fertig. SOLANGE BITTE NICHTS REINSCHREIBEN. ANREGUNGEN, GEWÜNSCHTE TEXTBAUSTEINE, FEHLER , GEWÜNSCHTE MITARBEIT, EIGENE ZIELSETZUNGEN etc. BITTE IN DISKUSSION (s.o.) EINTRAGEN. Teil I beruht im wesentlichen auf Formeln, die erklärt werden und anhand im Teil I befindlichen Übungen mit am Ende von Teil I aufgeführten Lösungen. Da es sich bei der Zielgruppe um Physiker:innen handelt, ist Teil I mehr formelbehaftet als das ähnliche Buch Physikalische Chemie: Reversible Thermodynamik DANKE Autorenkollektiv Pelikam (Teil I sticht ca. Ende 2026 in den See, dann können alle Autor:innen, die dazu etwas beitragen möchten hineinschreiben. Auch dann wäre Pelikam dankbar, wenn der Geist von Teil I, das Didaktikkonzept erst aufgenommen wird und dann die eigenen Beiträge hinzugefügt werden. Sollte eigentlich bei Physiker:innen kein Problem sein. Stand: 07-2026 = Formelsammlung - CPRT = = Inhaltsverzeichnis = *[[CPRT/I/b4c9|Einleitung zur 1. Auflage - CPRT/I/b4c9]] = Teil A: Funktionen des Zustands und deren Differentiale in verschiedenen Koordinatensystemen = *[[CPRT/cf51|01 Zustandsfunktionen und ihre Differentiale in ihren (eigenen) natürlichen Variablen - CPRT/cf51]] *[[CPRT/185f|02 Energien E, F, G, H, I, J, K, L im Koordinatensystem (N,V,S) - CPRT/185f]] *[[CPRT/cef7| Energie E - CPRT/cef7]], *[[CPRT/51da| Energie F - CPRT/51da]], *[[CPRT/6971| Energie G - CPRT/6971]], *[[CPRT/9cdc| Energie H - CPRT/9cdc]], *[[CPRT/b380| Energie I - CPRT/b380]], *[[PCRT/I/bc9d| Energie J - PCRT/I/bc9d]], *[[PCRT/I/bc9d| Energie K - PCRT/I/bc9d]], *[[PCRT/I/a8bd| - PCRT/I/a8bd]] *[[CPRT.I.A.04|03 Differentiale in den natürlichen Variablen der Energie - CPRT.I.A.04]] *[[CPRT.I.A.05|04 Differentiale in den natürlichen Variablen der Enthalpie - CPRT.I.A.05]] *[[CPRT.I.A.06|05 Differentiale in den natürlichen Variablen der freien Energie - CPRT.I.A.06]] *[[CPRT.I.A.07|06 Differentiale in den natürlichen Variablen der freien Enthalpie - CPRT.I.A.07]] *[[CPRT.I.A.08|07 Die homogenen Formen der Zustandsfunktionen - CPRT.I.A.08]] *[[CPRT.I.A.09|08 Das Differential des chemischen Potentials - CPRT.I.A.09]] *[[CPRT.I.A.10|09 Die molaren Zustandsfunktionen - CPRT.I.A.10]] = Teil B: = *[[CPRT.I.B|Teil B: Erhaltungssätze und Bilanzgleichungen]] *[[CPRT.I.7a82|Teil B: Erhaltungssätze und Bilanzgleichungen]] *[[CPRT.I.C|Teil C: Entropie, Funktionen des Zustands und Änderungen des Zustands des idealen Gases]] *[[CPRT.I.67de|Teil C: Entropie, Funktionen des Zustands und Änderungen des Zustands des idealen Gases]] *[[CPRT.I.D|Teil D: Kreisprozesse mit einem idealen Gas]] *[[CPRT.I.5521|Teil D: Kreisprozesse mit einem idealen Gas]] *[[CPRT.I.E|Anhang A1: Mathematische Grundlagen]] *[[CPRT.I.677a|Anhang A1: Mathematische Grundlagen]] *[[CPRT.I.F|Anhang A2: Formelsammlung Kreisprozesse]] *[[CPRT.I.29d5|Anhang A2: Formelsammlung Kreisprozesse]] *[[CPRT.I.G|Anhang A3: Lösung der Übungsaufgaben]] *[[CPRT.I.552d|Anhang A3: Lösung der Übungsaufgaben]] *[[CPRT.I.99|Literatur]] *[[CPRT.I.619e|Literatur]] == Freie Unterverzeichnisse == *[[PCRT/I/d88f| - PCRT/I/d88f]] *[[PCRT/I/aa9d| - PCRT/I/aa9d]] *[[PCRT/I/d3ee| - PCRT/I/d3ee]] *[[PCRT/I/ea1b| - PCRT/I/ea1b]] *[[PCRT/I/a36e| - PCRT/I/a36e]] * [[Chemische Physik --- Reversible Thermodynamik]] * [[Chemische Physik --- Reversible Thermodynamik]] * [[Physikalische Chemie --- Reversible Thermodynamik]] *[[PCRT/I/bc9d| - PCRT/I/bc9d]] *[[PCRT/I/a8bd| - PCRT/I/a8bd]] *[[PCRT/I/d88f| - PCRT/I/d88f]] *[[PCRT/I/aa9d| - PCRT/I/aa9d]] 8nlqmkvlu5riz8qv18vsfaat4226k5n 1090562 1090561 2026-09-08T15:12:07Z Pelikam 111447 /* Teil A: Funktionen des Zustands und deren Differentiale in verschiedenen Koordinatensystemen */ 1090562 wikitext text/x-wiki [[PCRT|< Reversible Thermodynamik für die Zusammenarbeit von Mathematik-, Physik-, Chemie-, Ingenieur-Wissenschaften - PCRT]] == 0. Ein Wort an evtl. Co-Autor:innen: == Teil I ist gerade in der Entstehung. Er hat ein bestimmtes Konzept. Dieses Konzept hat sich das Autorenkollektiv Pelikam ausgedacht. Teil A richtet sich an Physiker:innen ist also Mathematik-belastet und erklärt die Reversible Thermodynamik. Teil I ist so gedacht, daß es jeder/jede verstehen kann. Bitte lasst Teil I erstmal soweit wachsen, bis das Konzept fertig ist. Das Konzept ist ab jetzt (07-2026) in ca. 6 Monaten (12-2026) fertig, bzw. Teil I ist nach den Vorstellungen von Autorenkollektiv Pelikam dann zu 80% fertig. SOLANGE BITTE NICHTS REINSCHREIBEN. ANREGUNGEN, GEWÜNSCHTE TEXTBAUSTEINE, FEHLER , GEWÜNSCHTE MITARBEIT, EIGENE ZIELSETZUNGEN etc. BITTE IN DISKUSSION (s.o.) EINTRAGEN. Teil I beruht im wesentlichen auf Formeln, die erklärt werden und anhand im Teil I befindlichen Übungen mit am Ende von Teil I aufgeführten Lösungen. Da es sich bei der Zielgruppe um Physiker:innen handelt, ist Teil I mehr formelbehaftet als das ähnliche Buch Physikalische Chemie: Reversible Thermodynamik DANKE Autorenkollektiv Pelikam (Teil I sticht ca. Ende 2026 in den See, dann können alle Autor:innen, die dazu etwas beitragen möchten hineinschreiben. Auch dann wäre Pelikam dankbar, wenn der Geist von Teil I, das Didaktikkonzept erst aufgenommen wird und dann die eigenen Beiträge hinzugefügt werden. Sollte eigentlich bei Physiker:innen kein Problem sein. Stand: 07-2026 = Formelsammlung - CPRT = = Inhaltsverzeichnis = *[[CPRT/I/b4c9|Einleitung zur 1. Auflage - CPRT/I/b4c9]] = Teil A: Funktionen des Zustands und deren Differentiale in verschiedenen Koordinatensystemen = *[[CPRT/cf51|01 Zustandsfunktionen und ihre Differentiale in ihren (eigenen) natürlichen Variablen - CPRT/cf51]] *[[CPRT/185f|02 Energien E, F, G, H, I, J, K, L im Koordinatensystem (N,V,S) - CPRT/185f]] *[[CPRT/cef7| Energie E - CPRT/cef7]] *[[CPRT/51da| Energie F - CPRT/51da]] *[[CPRT/6971| Energie G - CPRT/6971]] *[[CPRT/9cdc| Energie H - CPRT/9cdc]] *[[CPRT/b380| Energie I - CPRT/b380]] *[[PCRT/I/bc9d| Energie J - PCRT/I/bc9d]] *[[PCRT/I/bc9d| Energie K - PCRT/I/bc9d]] *[[PCRT/I/a8bd| Energie L - PCRT/I/a8bd]] *[[CPRT.I.A.04|03 Differentiale in den natürlichen Variablen der Energie - CPRT.I.A.04]] *[[CPRT.I.A.05|04 Differentiale in den natürlichen Variablen der Enthalpie - CPRT.I.A.05]] *[[CPRT.I.A.06|05 Differentiale in den natürlichen Variablen der freien Energie - CPRT.I.A.06]] *[[CPRT.I.A.07|06 Differentiale in den natürlichen Variablen der freien Enthalpie - CPRT.I.A.07]] *[[CPRT.I.A.08|07 Die homogenen Formen der Zustandsfunktionen - CPRT.I.A.08]] *[[CPRT.I.A.09|08 Das Differential des chemischen Potentials - CPRT.I.A.09]] *[[CPRT.I.A.10|09 Die molaren Zustandsfunktionen - CPRT.I.A.10]] = Teil B: = *[[CPRT.I.B|Teil B: Erhaltungssätze und Bilanzgleichungen]] *[[CPRT.I.7a82|Teil B: Erhaltungssätze und Bilanzgleichungen]] *[[CPRT.I.C|Teil C: Entropie, Funktionen des Zustands und Änderungen des Zustands des idealen Gases]] *[[CPRT.I.67de|Teil C: Entropie, Funktionen des Zustands und Änderungen des Zustands des idealen Gases]] *[[CPRT.I.D|Teil D: Kreisprozesse mit einem idealen Gas]] *[[CPRT.I.5521|Teil D: Kreisprozesse mit einem idealen Gas]] *[[CPRT.I.E|Anhang A1: Mathematische Grundlagen]] *[[CPRT.I.677a|Anhang A1: Mathematische Grundlagen]] *[[CPRT.I.F|Anhang A2: Formelsammlung Kreisprozesse]] *[[CPRT.I.29d5|Anhang A2: Formelsammlung Kreisprozesse]] *[[CPRT.I.G|Anhang A3: Lösung der Übungsaufgaben]] *[[CPRT.I.552d|Anhang A3: Lösung der Übungsaufgaben]] *[[CPRT.I.99|Literatur]] *[[CPRT.I.619e|Literatur]] == Freie Unterverzeichnisse == *[[PCRT/I/d88f| - PCRT/I/d88f]] *[[PCRT/I/aa9d| - PCRT/I/aa9d]] *[[PCRT/I/d3ee| - PCRT/I/d3ee]] *[[PCRT/I/ea1b| - PCRT/I/ea1b]] *[[PCRT/I/a36e| - PCRT/I/a36e]] * [[Chemische Physik --- Reversible Thermodynamik]] * [[Chemische Physik --- Reversible Thermodynamik]] * [[Physikalische Chemie --- Reversible Thermodynamik]] *[[PCRT/I/bc9d| - PCRT/I/bc9d]] *[[PCRT/I/a8bd| - PCRT/I/a8bd]] *[[PCRT/I/d88f| - PCRT/I/d88f]] *[[PCRT/I/aa9d| - PCRT/I/aa9d]] kw39ensvkxiwas2pi0rl9mhz5w508cp 1090563 1090562 2026-09-08T15:14:03Z Pelikam 111447 /* Teil A: Funktionen des Zustands und deren Differentiale in verschiedenen Koordinatensystemen */ 1090563 wikitext text/x-wiki [[PCRT|< Reversible Thermodynamik für die Zusammenarbeit von Mathematik-, Physik-, Chemie-, Ingenieur-Wissenschaften - PCRT]] == 0. Ein Wort an evtl. Co-Autor:innen: == Teil I ist gerade in der Entstehung. Er hat ein bestimmtes Konzept. Dieses Konzept hat sich das Autorenkollektiv Pelikam ausgedacht. Teil A richtet sich an Physiker:innen ist also Mathematik-belastet und erklärt die Reversible Thermodynamik. Teil I ist so gedacht, daß es jeder/jede verstehen kann. Bitte lasst Teil I erstmal soweit wachsen, bis das Konzept fertig ist. Das Konzept ist ab jetzt (07-2026) in ca. 6 Monaten (12-2026) fertig, bzw. Teil I ist nach den Vorstellungen von Autorenkollektiv Pelikam dann zu 80% fertig. SOLANGE BITTE NICHTS REINSCHREIBEN. ANREGUNGEN, GEWÜNSCHTE TEXTBAUSTEINE, FEHLER , GEWÜNSCHTE MITARBEIT, EIGENE ZIELSETZUNGEN etc. BITTE IN DISKUSSION (s.o.) EINTRAGEN. Teil I beruht im wesentlichen auf Formeln, die erklärt werden und anhand im Teil I befindlichen Übungen mit am Ende von Teil I aufgeführten Lösungen. Da es sich bei der Zielgruppe um Physiker:innen handelt, ist Teil I mehr formelbehaftet als das ähnliche Buch Physikalische Chemie: Reversible Thermodynamik DANKE Autorenkollektiv Pelikam (Teil I sticht ca. Ende 2026 in den See, dann können alle Autor:innen, die dazu etwas beitragen möchten hineinschreiben. Auch dann wäre Pelikam dankbar, wenn der Geist von Teil I, das Didaktikkonzept erst aufgenommen wird und dann die eigenen Beiträge hinzugefügt werden. Sollte eigentlich bei Physiker:innen kein Problem sein. Stand: 07-2026 = Formelsammlung - CPRT = = Inhaltsverzeichnis = *[[CPRT/I/b4c9|Einleitung zur 1. Auflage - CPRT/I/b4c9]] = Teil A: Funktionen des Zustands und deren Differentiale in verschiedenen Koordinatensystemen = *[[CPRT/cf51|01 Zustandsfunktionen und ihre Differentiale in ihren (eigenen) natürlichen Variablen - CPRT/cf51]] *[[CPRT/185f|02 Energien E, F, G, H, I, J, K, L im Koordinatensystem (N,V,S) - CPRT/185f]] *[[CPRT.I.A.04|03 Differentiale in den natürlichen Variablen der Energie - CPRT.I.A.04]] *[[CPRT.I.A.05|04 Differentiale in den natürlichen Variablen der Enthalpie - CPRT.I.A.05]] *[[CPRT.I.A.06|05 Differentiale in den natürlichen Variablen der freien Energie - CPRT.I.A.06]] *[[CPRT.I.A.07|06 Differentiale in den natürlichen Variablen der freien Enthalpie - CPRT.I.A.07]] *[[CPRT.I.A.08|07 Die homogenen Formen der Zustandsfunktionen - CPRT.I.A.08]] *[[CPRT.I.A.09|08 Das Differential des chemischen Potentials - CPRT.I.A.09]] *[[CPRT.I.A.10|09 Die molaren Zustandsfunktionen - CPRT.I.A.10]] = Teil B: = *[[CPRT.I.B|Teil B: Erhaltungssätze und Bilanzgleichungen]] *[[CPRT.I.7a82|Teil B: Erhaltungssätze und Bilanzgleichungen]] *[[CPRT.I.C|Teil C: Entropie, Funktionen des Zustands und Änderungen des Zustands des idealen Gases]] *[[CPRT.I.67de|Teil C: Entropie, Funktionen des Zustands und Änderungen des Zustands des idealen Gases]] *[[CPRT.I.D|Teil D: Kreisprozesse mit einem idealen Gas]] *[[CPRT.I.5521|Teil D: Kreisprozesse mit einem idealen Gas]] *[[CPRT.I.E|Anhang A1: Mathematische Grundlagen]] *[[CPRT.I.677a|Anhang A1: Mathematische Grundlagen]] *[[CPRT.I.F|Anhang A2: Formelsammlung Kreisprozesse]] *[[CPRT.I.29d5|Anhang A2: Formelsammlung Kreisprozesse]] *[[CPRT.I.G|Anhang A3: Lösung der Übungsaufgaben]] *[[CPRT.I.552d|Anhang A3: Lösung der Übungsaufgaben]] *[[CPRT.I.99|Literatur]] *[[CPRT.I.619e|Literatur]] == Freie Unterverzeichnisse == *[[PCRT/I/d88f| - PCRT/I/d88f]] *[[PCRT/I/aa9d| - PCRT/I/aa9d]] *[[PCRT/I/d3ee| - PCRT/I/d3ee]] *[[PCRT/I/ea1b| - PCRT/I/ea1b]] *[[PCRT/I/a36e| - PCRT/I/a36e]] * [[Chemische Physik --- Reversible Thermodynamik]] * [[Chemische Physik --- Reversible Thermodynamik]] * [[Physikalische Chemie --- Reversible Thermodynamik]] *[[PCRT/I/bc9d| - PCRT/I/bc9d]] *[[PCRT/I/a8bd| - PCRT/I/a8bd]] *[[PCRT/I/d88f| - PCRT/I/d88f]] *[[PCRT/I/aa9d| - PCRT/I/aa9d]] pdnv5av60dd4m9dojtzddetqr34dxz6 1090565 1090563 2026-09-08T15:18:37Z Pelikam 111447 /* Teil A: Funktionen des Zustands und deren Differentiale in verschiedenen Koordinatensystemen */ 1090565 wikitext text/x-wiki [[PCRT|< Reversible Thermodynamik für die Zusammenarbeit von Mathematik-, Physik-, Chemie-, Ingenieur-Wissenschaften - PCRT]] == 0. Ein Wort an evtl. Co-Autor:innen: == Teil I ist gerade in der Entstehung. Er hat ein bestimmtes Konzept. Dieses Konzept hat sich das Autorenkollektiv Pelikam ausgedacht. Teil A richtet sich an Physiker:innen ist also Mathematik-belastet und erklärt die Reversible Thermodynamik. Teil I ist so gedacht, daß es jeder/jede verstehen kann. Bitte lasst Teil I erstmal soweit wachsen, bis das Konzept fertig ist. Das Konzept ist ab jetzt (07-2026) in ca. 6 Monaten (12-2026) fertig, bzw. Teil I ist nach den Vorstellungen von Autorenkollektiv Pelikam dann zu 80% fertig. SOLANGE BITTE NICHTS REINSCHREIBEN. ANREGUNGEN, GEWÜNSCHTE TEXTBAUSTEINE, FEHLER , GEWÜNSCHTE MITARBEIT, EIGENE ZIELSETZUNGEN etc. BITTE IN DISKUSSION (s.o.) EINTRAGEN. Teil I beruht im wesentlichen auf Formeln, die erklärt werden und anhand im Teil I befindlichen Übungen mit am Ende von Teil I aufgeführten Lösungen. Da es sich bei der Zielgruppe um Physiker:innen handelt, ist Teil I mehr formelbehaftet als das ähnliche Buch Physikalische Chemie: Reversible Thermodynamik DANKE Autorenkollektiv Pelikam (Teil I sticht ca. Ende 2026 in den See, dann können alle Autor:innen, die dazu etwas beitragen möchten hineinschreiben. Auch dann wäre Pelikam dankbar, wenn der Geist von Teil I, das Didaktikkonzept erst aufgenommen wird und dann die eigenen Beiträge hinzugefügt werden. Sollte eigentlich bei Physiker:innen kein Problem sein. Stand: 07-2026 = Formelsammlung - CPRT = = Inhaltsverzeichnis = *[[CPRT/I/b4c9|Einleitung zur 1. Auflage - CPRT/I/b4c9]] = Teil A: Funktionen des Zustands und deren Differentiale in verschiedenen Koordinatensystemen = *[[CPRT/cf51|01 Zustandsfunktionen und ihre Differentiale in ihren (eigenen) natürlichen Variablen - CPRT/cf51]] *[[CPRT/185f|02 Energien E, F, G, H, I, J, K, L im Koordinatensystem (N,S,V) - CPRT/185f]] *[[CPRT.I.A.04|03 Energien E, F, G, H, I, J, K, L im Koordinatensystem (N,t,V) - CPRT.I.A.04]] *[[CPRT.I.A.05|04 Energien E, F, G, H, I, J, K, L im Koordinatensystem (N,t,p) - CPRT.I.A.05]] *[[CPRT.I.A.06|05 Energien E, F, G, H, I, J, K, L im Koordinatensystem (N,S,p) - CPRT.I.A.06]] *[[CPRT.I.A.07|06 Energien E, F, G, H, I, J, K, L im Koordinatensystem ($\mu$,S,V) - CPRT.I.A.07]] *[[CPRT.I.A.08|07 Energien E, F, G, H, I, J, K, L im Koordinatensystem ($\mu$,t,S) - CPRT.I.A.08]] *[[CPRT.I.A.09|08 Energien E, F, G, H, I, J, K, L im Koordinatensystem ($\mu$,t,p) - CPRT.I.A.09]] *[[CPRT.I.A.10|09 Energien E, F, G, H, I, J, K, L im Koordinatensystem ($\mu$,S,p) - CPRT.I.A.10]] = Teil B: = *[[CPRT.I.B|Teil B: Erhaltungssätze und Bilanzgleichungen]] *[[CPRT.I.7a82|Teil B: Erhaltungssätze und Bilanzgleichungen]] *[[CPRT.I.C|Teil C: Entropie, Funktionen des Zustands und Änderungen des Zustands des idealen Gases]] *[[CPRT.I.67de|Teil C: Entropie, Funktionen des Zustands und Änderungen des Zustands des idealen Gases]] *[[CPRT.I.D|Teil D: Kreisprozesse mit einem idealen Gas]] *[[CPRT.I.5521|Teil D: Kreisprozesse mit einem idealen Gas]] *[[CPRT.I.E|Anhang A1: Mathematische Grundlagen]] *[[CPRT.I.677a|Anhang A1: Mathematische Grundlagen]] *[[CPRT.I.F|Anhang A2: Formelsammlung Kreisprozesse]] *[[CPRT.I.29d5|Anhang A2: Formelsammlung Kreisprozesse]] *[[CPRT.I.G|Anhang A3: Lösung der Übungsaufgaben]] *[[CPRT.I.552d|Anhang A3: Lösung der Übungsaufgaben]] *[[CPRT.I.99|Literatur]] *[[CPRT.I.619e|Literatur]] == Freie Unterverzeichnisse == *[[PCRT/I/d88f| - PCRT/I/d88f]] *[[PCRT/I/aa9d| - PCRT/I/aa9d]] *[[PCRT/I/d3ee| - PCRT/I/d3ee]] *[[PCRT/I/ea1b| - PCRT/I/ea1b]] *[[PCRT/I/a36e| - PCRT/I/a36e]] * [[Chemische Physik --- Reversible Thermodynamik]] * [[Chemische Physik --- Reversible Thermodynamik]] * [[Physikalische Chemie --- Reversible Thermodynamik]] *[[PCRT/I/bc9d| - PCRT/I/bc9d]] *[[PCRT/I/a8bd| - PCRT/I/a8bd]] *[[PCRT/I/d88f| - PCRT/I/d88f]] *[[PCRT/I/aa9d| - PCRT/I/aa9d]] fpxbhtp484e8wdaaq5mvqe5ok3z4rma 1090566 1090565 2026-09-08T15:20:29Z Pelikam 111447 /* Teil A: Funktionen des Zustands und deren Differentiale in verschiedenen Koordinatensystemen */ 1090566 wikitext text/x-wiki [[PCRT|< Reversible Thermodynamik für die Zusammenarbeit von Mathematik-, Physik-, Chemie-, Ingenieur-Wissenschaften - PCRT]] == 0. Ein Wort an evtl. Co-Autor:innen: == Teil I ist gerade in der Entstehung. Er hat ein bestimmtes Konzept. Dieses Konzept hat sich das Autorenkollektiv Pelikam ausgedacht. Teil A richtet sich an Physiker:innen ist also Mathematik-belastet und erklärt die Reversible Thermodynamik. Teil I ist so gedacht, daß es jeder/jede verstehen kann. Bitte lasst Teil I erstmal soweit wachsen, bis das Konzept fertig ist. Das Konzept ist ab jetzt (07-2026) in ca. 6 Monaten (12-2026) fertig, bzw. Teil I ist nach den Vorstellungen von Autorenkollektiv Pelikam dann zu 80% fertig. SOLANGE BITTE NICHTS REINSCHREIBEN. ANREGUNGEN, GEWÜNSCHTE TEXTBAUSTEINE, FEHLER , GEWÜNSCHTE MITARBEIT, EIGENE ZIELSETZUNGEN etc. BITTE IN DISKUSSION (s.o.) EINTRAGEN. Teil I beruht im wesentlichen auf Formeln, die erklärt werden und anhand im Teil I befindlichen Übungen mit am Ende von Teil I aufgeführten Lösungen. Da es sich bei der Zielgruppe um Physiker:innen handelt, ist Teil I mehr formelbehaftet als das ähnliche Buch Physikalische Chemie: Reversible Thermodynamik DANKE Autorenkollektiv Pelikam (Teil I sticht ca. Ende 2026 in den See, dann können alle Autor:innen, die dazu etwas beitragen möchten hineinschreiben. Auch dann wäre Pelikam dankbar, wenn der Geist von Teil I, das Didaktikkonzept erst aufgenommen wird und dann die eigenen Beiträge hinzugefügt werden. Sollte eigentlich bei Physiker:innen kein Problem sein. Stand: 07-2026 = Formelsammlung - CPRT = = Inhaltsverzeichnis = *[[CPRT/I/b4c9|Einleitung zur 1. Auflage - CPRT/I/b4c9]] = Teil A: Funktionen des Zustands und deren Differentiale in verschiedenen Koordinatensystemen = *[[CPRT/cf51|01 Zustandsfunktionen und ihre Differentiale in ihren (eigenen) natürlichen Variablen - CPRT/cf51]] *[[CPRT/185f|02 Energien E, F, G, H, I, J, K, L im Koordinatensystem (N,S,V) - CPRT/185f]] *[[CPRT.I.A.04|03 Energien E, F, G, H, I, J, K, L im Koordinatensystem (N,t,V) - CPRT.I.A.04]] *[[CPRT.I.A.05|04 Energien E, F, G, H, I, J, K, L im Koordinatensystem (N,t,p) - CPRT.I.A.05]] *[[CPRT.I.A.06|05 Energien E, F, G, H, I, J, K, L im Koordinatensystem (N,S,p) - CPRT.I.A.06]] *[[CPRT.I.A.07|06 Energien E, F, G, H, I, J, K, L im Koordinatensystem (mu,S,V) - CPRT.I.A.07]] *[[CPRT.I.A.08|07 Energien E, F, G, H, I, J, K, L im Koordinatensystem (mu,t,S) - CPRT.I.A.08]] *[[CPRT.I.A.09|08 Energien E, F, G, H, I, J, K, L im Koordinatensystem (mu,t,p) - CPRT.I.A.09]] *[[CPRT.I.A.10|09 Energien E, F, G, H, I, J, K, L im Koordinatensystem (mu,S,p) - CPRT.I.A.10]] = Teil B: = *[[CPRT.I.B|Teil B: Erhaltungssätze und Bilanzgleichungen]] *[[CPRT.I.7a82|Teil B: Erhaltungssätze und Bilanzgleichungen]] *[[CPRT.I.C|Teil C: Entropie, Funktionen des Zustands und Änderungen des Zustands des idealen Gases]] *[[CPRT.I.67de|Teil C: Entropie, Funktionen des Zustands und Änderungen des Zustands des idealen Gases]] *[[CPRT.I.D|Teil D: Kreisprozesse mit einem idealen Gas]] *[[CPRT.I.5521|Teil D: Kreisprozesse mit einem idealen Gas]] *[[CPRT.I.E|Anhang A1: Mathematische Grundlagen]] *[[CPRT.I.677a|Anhang A1: Mathematische Grundlagen]] *[[CPRT.I.F|Anhang A2: Formelsammlung Kreisprozesse]] *[[CPRT.I.29d5|Anhang A2: Formelsammlung Kreisprozesse]] *[[CPRT.I.G|Anhang A3: Lösung der Übungsaufgaben]] *[[CPRT.I.552d|Anhang A3: Lösung der Übungsaufgaben]] *[[CPRT.I.99|Literatur]] *[[CPRT.I.619e|Literatur]] == Freie Unterverzeichnisse == *[[PCRT/I/d88f| - PCRT/I/d88f]] *[[PCRT/I/aa9d| - PCRT/I/aa9d]] *[[PCRT/I/d3ee| - PCRT/I/d3ee]] *[[PCRT/I/ea1b| - PCRT/I/ea1b]] *[[PCRT/I/a36e| - PCRT/I/a36e]] * [[Chemische Physik --- Reversible Thermodynamik]] * [[Chemische Physik --- Reversible Thermodynamik]] * [[Physikalische Chemie --- Reversible Thermodynamik]] *[[PCRT/I/bc9d| - PCRT/I/bc9d]] *[[PCRT/I/a8bd| - PCRT/I/a8bd]] *[[PCRT/I/d88f| - PCRT/I/d88f]] *[[PCRT/I/aa9d| - PCRT/I/aa9d]] i48ptjdn1gyw0bzy8iqob7dg4azgvx6 1090573 1090566 2026-09-08T18:41:55Z Pelikam 111447 /* Teil A: Funktionen des Zustands und deren Differentiale in verschiedenen Koordinatensystemen */ 1090573 wikitext text/x-wiki [[PCRT|< Reversible Thermodynamik für die Zusammenarbeit von Mathematik-, Physik-, Chemie-, Ingenieur-Wissenschaften - PCRT]] == 0. Ein Wort an evtl. Co-Autor:innen: == Teil I ist gerade in der Entstehung. Er hat ein bestimmtes Konzept. Dieses Konzept hat sich das Autorenkollektiv Pelikam ausgedacht. Teil A richtet sich an Physiker:innen ist also Mathematik-belastet und erklärt die Reversible Thermodynamik. Teil I ist so gedacht, daß es jeder/jede verstehen kann. Bitte lasst Teil I erstmal soweit wachsen, bis das Konzept fertig ist. Das Konzept ist ab jetzt (07-2026) in ca. 6 Monaten (12-2026) fertig, bzw. Teil I ist nach den Vorstellungen von Autorenkollektiv Pelikam dann zu 80% fertig. SOLANGE BITTE NICHTS REINSCHREIBEN. ANREGUNGEN, GEWÜNSCHTE TEXTBAUSTEINE, FEHLER , GEWÜNSCHTE MITARBEIT, EIGENE ZIELSETZUNGEN etc. BITTE IN DISKUSSION (s.o.) EINTRAGEN. Teil I beruht im wesentlichen auf Formeln, die erklärt werden und anhand im Teil I befindlichen Übungen mit am Ende von Teil I aufgeführten Lösungen. Da es sich bei der Zielgruppe um Physiker:innen handelt, ist Teil I mehr formelbehaftet als das ähnliche Buch Physikalische Chemie: Reversible Thermodynamik DANKE Autorenkollektiv Pelikam (Teil I sticht ca. Ende 2026 in den See, dann können alle Autor:innen, die dazu etwas beitragen möchten hineinschreiben. Auch dann wäre Pelikam dankbar, wenn der Geist von Teil I, das Didaktikkonzept erst aufgenommen wird und dann die eigenen Beiträge hinzugefügt werden. Sollte eigentlich bei Physiker:innen kein Problem sein. Stand: 07-2026 = Formelsammlung - CPRT = = Inhaltsverzeichnis = *[[CPRT/I/b4c9|Einleitung zur 1. Auflage - CPRT/I/b4c9]] = Teil A: Funktionen des Zustands und deren Differentiale in verschiedenen Koordinatensystemen = *[[CPRT/cf51|01 Zustandsfunktionen und ihre Differentiale in ihren (eigenen) natürlichen Variablen - CPRT/cf51]] == Energien E, F, G, H, I, J, K, L im Koordinatensystem (N,S,V) == *[[CPRT/185f|02 Energien E, F, G, H, I, J, K, L im Koordinatensystem (N,S,V) - CPRT/185f]] *[[CPRT/cef7| Energie E - CPRT/cef7]] *[[CPRT/51da| Energie F - CPRT/51da]] *[[CPRT/6971| Energie G - CPRT/6971]] *[[CPRT/9cdc| Energie H - CPRT/9cdc]] *[[CPRT/b380| Energie I - CPRT/b380]] *[[PCRT/I/bc9d| Energie J - PCRT/I/bc9d]] *[[PCRT/I/bc9d| Energie K - PCRT/I/bc9d]] *[[PCRT/I/a8bd| Energie L - PCRT/I/a8bd]] *[[CPRT.I.A.04|03 Energien E, F, G, H, I, J, K, L im Koordinatensystem (N,t,V) - CPRT.I.A.04]] *[[CPRT.I.A.05|04 Energien E, F, G, H, I, J, K, L im Koordinatensystem (N,t,p) - CPRT.I.A.05]] *[[CPRT.I.A.06|05 Energien E, F, G, H, I, J, K, L im Koordinatensystem (N,S,p) - CPRT.I.A.06]] *[[CPRT.I.A.07|06 Energien E, F, G, H, I, J, K, L im Koordinatensystem (mu,S,V) - CPRT.I.A.07]] *[[CPRT.I.A.08|07 Energien E, F, G, H, I, J, K, L im Koordinatensystem (mu,t,S) - CPRT.I.A.08]] *[[CPRT.I.A.09|08 Energien E, F, G, H, I, J, K, L im Koordinatensystem (mu,t,p) - CPRT.I.A.09]] *[[CPRT.I.A.10|09 Energien E, F, G, H, I, J, K, L im Koordinatensystem (mu,S,p) - CPRT.I.A.10]] = Teil B: = *[[CPRT.I.B|Teil B: Erhaltungssätze und Bilanzgleichungen]] *[[CPRT.I.7a82|Teil B: Erhaltungssätze und Bilanzgleichungen]] *[[CPRT.I.C|Teil C: Entropie, Funktionen des Zustands und Änderungen des Zustands des idealen Gases]] *[[CPRT.I.67de|Teil C: Entropie, Funktionen des Zustands und Änderungen des Zustands des idealen Gases]] *[[CPRT.I.D|Teil D: Kreisprozesse mit einem idealen Gas]] *[[CPRT.I.5521|Teil D: Kreisprozesse mit einem idealen Gas]] *[[CPRT.I.E|Anhang A1: Mathematische Grundlagen]] *[[CPRT.I.677a|Anhang A1: Mathematische Grundlagen]] *[[CPRT.I.F|Anhang A2: Formelsammlung Kreisprozesse]] *[[CPRT.I.29d5|Anhang A2: Formelsammlung Kreisprozesse]] *[[CPRT.I.G|Anhang A3: Lösung der Übungsaufgaben]] *[[CPRT.I.552d|Anhang A3: Lösung der Übungsaufgaben]] *[[CPRT.I.99|Literatur]] *[[CPRT.I.619e|Literatur]] == Freie Unterverzeichnisse == *[[PCRT/I/d88f| - PCRT/I/d88f]] *[[PCRT/I/aa9d| - PCRT/I/aa9d]] *[[PCRT/I/d3ee| - PCRT/I/d3ee]] *[[PCRT/I/ea1b| - PCRT/I/ea1b]] *[[PCRT/I/a36e| - PCRT/I/a36e]] * [[Chemische Physik --- Reversible Thermodynamik]] * [[Chemische Physik --- Reversible Thermodynamik]] * [[Physikalische Chemie --- Reversible Thermodynamik]] *[[PCRT/I/bc9d| - PCRT/I/bc9d]] *[[PCRT/I/a8bd| - PCRT/I/a8bd]] *[[PCRT/I/d88f| - PCRT/I/d88f]] *[[PCRT/I/aa9d| - PCRT/I/aa9d]] a32zlqstv026uepf8gknjp9vuaenyiq 1090584 1090573 2026-09-08T18:49:10Z Pelikam 111447 /* Energien E, F, G, H, I, J, K, L im Koordinatensystem (N,S,V) */ 1090584 wikitext text/x-wiki [[PCRT|< Reversible Thermodynamik für die Zusammenarbeit von Mathematik-, Physik-, Chemie-, Ingenieur-Wissenschaften - PCRT]] == 0. Ein Wort an evtl. Co-Autor:innen: == Teil I ist gerade in der Entstehung. Er hat ein bestimmtes Konzept. Dieses Konzept hat sich das Autorenkollektiv Pelikam ausgedacht. Teil A richtet sich an Physiker:innen ist also Mathematik-belastet und erklärt die Reversible Thermodynamik. Teil I ist so gedacht, daß es jeder/jede verstehen kann. Bitte lasst Teil I erstmal soweit wachsen, bis das Konzept fertig ist. Das Konzept ist ab jetzt (07-2026) in ca. 6 Monaten (12-2026) fertig, bzw. Teil I ist nach den Vorstellungen von Autorenkollektiv Pelikam dann zu 80% fertig. SOLANGE BITTE NICHTS REINSCHREIBEN. ANREGUNGEN, GEWÜNSCHTE TEXTBAUSTEINE, FEHLER , GEWÜNSCHTE MITARBEIT, EIGENE ZIELSETZUNGEN etc. BITTE IN DISKUSSION (s.o.) EINTRAGEN. Teil I beruht im wesentlichen auf Formeln, die erklärt werden und anhand im Teil I befindlichen Übungen mit am Ende von Teil I aufgeführten Lösungen. Da es sich bei der Zielgruppe um Physiker:innen handelt, ist Teil I mehr formelbehaftet als das ähnliche Buch Physikalische Chemie: Reversible Thermodynamik DANKE Autorenkollektiv Pelikam (Teil I sticht ca. Ende 2026 in den See, dann können alle Autor:innen, die dazu etwas beitragen möchten hineinschreiben. Auch dann wäre Pelikam dankbar, wenn der Geist von Teil I, das Didaktikkonzept erst aufgenommen wird und dann die eigenen Beiträge hinzugefügt werden. Sollte eigentlich bei Physiker:innen kein Problem sein. Stand: 07-2026 = Formelsammlung - CPRT = = Inhaltsverzeichnis = *[[CPRT/I/b4c9|Einleitung zur 1. Auflage - CPRT/I/b4c9]] = Teil A: Funktionen des Zustands und deren Differentiale in verschiedenen Koordinatensystemen = *[[CPRT/cf51|01 Zustandsfunktionen und ihre Differentiale in ihren (eigenen) natürlichen Variablen - CPRT/cf51]] == Energien E, F, G, H, I, J, K, L im Koordinatensystem (N,S,V) == *[[CPRT/185f|02 Energien E, F, G, H, I, J, K, L im Koordinatensystem (N,S,V) - CPRT/185f]] *[[CPRT/cef7| Energie E - CPRT/cef7]] *[[CPRT/51da| Energie F - CPRT/51da]] *[[CPRT/6971| Energie G - CPRT/6971]] *[[CPRT/9cdc| Energie H - CPRT/9cdc]] *[[CPRT/b380| Energie I - CPRT/b380]] *[[PCRT/I/bc9d| Energie J - PCRT/I/bc9d]] *[[PCRT/I/bc9d| Energie K - PCRT/I/bc9d]] *[[PCRT/I/a8bd| Energie L - PCRT/I/a8bd]] == Energien E, F, G, H, I, J, K, L im Koordinatensystem (N,t,V) == *[[CPRT.I.A.04|03 Energien E, F, G, H, I, J, K, L im Koordinatensystem (N,t,V) - CPRT.I.A.04]] == Energien E, F, G, H, I, J, K, L im Koordinatensystem (N,t,p) == *[[CPRT.I.A.05|04 Energien E, F, G, H, I, J, K, L im Koordinatensystem (N,t,p) - CPRT.I.A.05]] == Energien E, F, G, H, I, J, K, L im Koordinatensystem (N,S,p) == *[[CPRT.I.A.06|05 Energien E, F, G, H, I, J, K, L im Koordinatensystem (N,S,p) - CPRT.I.A.06]] == Energien E, F, G, H, I, J, K, L im Koordinatensystem (<math>\mu</math>,S,V) == *[[CPRT.I.A.07|06 Energien E, F, G, H, I, J, K, L im Koordinatensystem (mu,S,V) - CPRT.I.A.07]] == Energien E, F, G, H, I, J, K, L im Koordinatensystem (<math>\mu</math>,t,V) == *[[CPRT.I.A.08|07 Energien E, F, G, H, I, J, K, L im Koordinatensystem (mu,t,S) - CPRT.I.A.08]] == Energien E, F, G, H, I, J, K, L im Koordinatensystem (<math>\mu</math>,t,p) == *[[CPRT.I.A.09|08 Energien E, F, G, H, I, J, K, L im Koordinatensystem (mu,t,p) - CPRT.I.A.09]] == Energien E, F, G, H, I, J, K, L im Koordinatensystem (<math>\mu</math>,S,p) == *[[CPRT.I.A.10|09 Energien E, F, G, H, I, J, K, L im Koordinatensystem (mu,S,p) - CPRT.I.A.10]] = Teil B: = *[[CPRT.I.B|Teil B: Erhaltungssätze und Bilanzgleichungen]] *[[CPRT.I.7a82|Teil B: Erhaltungssätze und Bilanzgleichungen]] *[[CPRT.I.C|Teil C: Entropie, Funktionen des Zustands und Änderungen des Zustands des idealen Gases]] *[[CPRT.I.67de|Teil C: Entropie, Funktionen des Zustands und Änderungen des Zustands des idealen Gases]] *[[CPRT.I.D|Teil D: Kreisprozesse mit einem idealen Gas]] *[[CPRT.I.5521|Teil D: Kreisprozesse mit einem idealen Gas]] *[[CPRT.I.E|Anhang A1: Mathematische Grundlagen]] *[[CPRT.I.677a|Anhang A1: Mathematische Grundlagen]] *[[CPRT.I.F|Anhang A2: Formelsammlung Kreisprozesse]] *[[CPRT.I.29d5|Anhang A2: Formelsammlung Kreisprozesse]] *[[CPRT.I.G|Anhang A3: Lösung der Übungsaufgaben]] *[[CPRT.I.552d|Anhang A3: Lösung der Übungsaufgaben]] *[[CPRT.I.99|Literatur]] *[[CPRT.I.619e|Literatur]] == Freie Unterverzeichnisse == *[[PCRT/I/d88f| - PCRT/I/d88f]] *[[PCRT/I/aa9d| - PCRT/I/aa9d]] *[[PCRT/I/d3ee| - PCRT/I/d3ee]] *[[PCRT/I/ea1b| - PCRT/I/ea1b]] *[[PCRT/I/a36e| - PCRT/I/a36e]] * [[Chemische Physik --- Reversible Thermodynamik]] * [[Chemische Physik --- Reversible Thermodynamik]] * [[Physikalische Chemie --- Reversible Thermodynamik]] *[[PCRT/I/bc9d| - PCRT/I/bc9d]] *[[PCRT/I/a8bd| - PCRT/I/a8bd]] *[[PCRT/I/d88f| - PCRT/I/d88f]] *[[PCRT/I/aa9d| - PCRT/I/aa9d]] 524cndyxog20gojr1tfwzuqco3pxdxt 1090585 1090584 2026-09-08T18:51:10Z Pelikam 111447 /* Freie Unterverzeichnisse */ 1090585 wikitext text/x-wiki [[PCRT|< Reversible Thermodynamik für die Zusammenarbeit von Mathematik-, Physik-, Chemie-, Ingenieur-Wissenschaften - PCRT]] == 0. Ein Wort an evtl. Co-Autor:innen: == Teil I ist gerade in der Entstehung. Er hat ein bestimmtes Konzept. Dieses Konzept hat sich das Autorenkollektiv Pelikam ausgedacht. Teil A richtet sich an Physiker:innen ist also Mathematik-belastet und erklärt die Reversible Thermodynamik. Teil I ist so gedacht, daß es jeder/jede verstehen kann. Bitte lasst Teil I erstmal soweit wachsen, bis das Konzept fertig ist. Das Konzept ist ab jetzt (07-2026) in ca. 6 Monaten (12-2026) fertig, bzw. Teil I ist nach den Vorstellungen von Autorenkollektiv Pelikam dann zu 80% fertig. SOLANGE BITTE NICHTS REINSCHREIBEN. ANREGUNGEN, GEWÜNSCHTE TEXTBAUSTEINE, FEHLER , GEWÜNSCHTE MITARBEIT, EIGENE ZIELSETZUNGEN etc. BITTE IN DISKUSSION (s.o.) EINTRAGEN. Teil I beruht im wesentlichen auf Formeln, die erklärt werden und anhand im Teil I befindlichen Übungen mit am Ende von Teil I aufgeführten Lösungen. Da es sich bei der Zielgruppe um Physiker:innen handelt, ist Teil I mehr formelbehaftet als das ähnliche Buch Physikalische Chemie: Reversible Thermodynamik DANKE Autorenkollektiv Pelikam (Teil I sticht ca. Ende 2026 in den See, dann können alle Autor:innen, die dazu etwas beitragen möchten hineinschreiben. Auch dann wäre Pelikam dankbar, wenn der Geist von Teil I, das Didaktikkonzept erst aufgenommen wird und dann die eigenen Beiträge hinzugefügt werden. Sollte eigentlich bei Physiker:innen kein Problem sein. Stand: 07-2026 = Formelsammlung - CPRT = = Inhaltsverzeichnis = *[[CPRT/I/b4c9|Einleitung zur 1. Auflage - CPRT/I/b4c9]] = Teil A: Funktionen des Zustands und deren Differentiale in verschiedenen Koordinatensystemen = *[[CPRT/cf51|01 Zustandsfunktionen und ihre Differentiale in ihren (eigenen) natürlichen Variablen - CPRT/cf51]] == Energien E, F, G, H, I, J, K, L im Koordinatensystem (N,S,V) == *[[CPRT/185f|02 Energien E, F, G, H, I, J, K, L im Koordinatensystem (N,S,V) - CPRT/185f]] *[[CPRT/cef7| Energie E - CPRT/cef7]] *[[CPRT/51da| Energie F - CPRT/51da]] *[[CPRT/6971| Energie G - CPRT/6971]] *[[CPRT/9cdc| Energie H - CPRT/9cdc]] *[[CPRT/b380| Energie I - CPRT/b380]] *[[PCRT/I/bc9d| Energie J - PCRT/I/bc9d]] *[[PCRT/I/bc9d| Energie K - PCRT/I/bc9d]] *[[PCRT/I/a8bd| Energie L - PCRT/I/a8bd]] == Energien E, F, G, H, I, J, K, L im Koordinatensystem (N,t,V) == *[[CPRT.I.A.04|03 Energien E, F, G, H, I, J, K, L im Koordinatensystem (N,t,V) - CPRT.I.A.04]] == Energien E, F, G, H, I, J, K, L im Koordinatensystem (N,t,p) == *[[CPRT.I.A.05|04 Energien E, F, G, H, I, J, K, L im Koordinatensystem (N,t,p) - CPRT.I.A.05]] == Energien E, F, G, H, I, J, K, L im Koordinatensystem (N,S,p) == *[[CPRT.I.A.06|05 Energien E, F, G, H, I, J, K, L im Koordinatensystem (N,S,p) - CPRT.I.A.06]] == Energien E, F, G, H, I, J, K, L im Koordinatensystem (<math>\mu</math>,S,V) == *[[CPRT.I.A.07|06 Energien E, F, G, H, I, J, K, L im Koordinatensystem (mu,S,V) - CPRT.I.A.07]] == Energien E, F, G, H, I, J, K, L im Koordinatensystem (<math>\mu</math>,t,V) == *[[CPRT.I.A.08|07 Energien E, F, G, H, I, J, K, L im Koordinatensystem (mu,t,S) - CPRT.I.A.08]] == Energien E, F, G, H, I, J, K, L im Koordinatensystem (<math>\mu</math>,t,p) == *[[CPRT.I.A.09|08 Energien E, F, G, H, I, J, K, L im Koordinatensystem (mu,t,p) - CPRT.I.A.09]] == Energien E, F, G, H, I, J, K, L im Koordinatensystem (<math>\mu</math>,S,p) == *[[CPRT.I.A.10|09 Energien E, F, G, H, I, J, K, L im Koordinatensystem (mu,S,p) - CPRT.I.A.10]] = Teil B: = *[[CPRT.I.B|Teil B: Erhaltungssätze und Bilanzgleichungen]] *[[CPRT.I.7a82|Teil B: Erhaltungssätze und Bilanzgleichungen]] *[[CPRT.I.C|Teil C: Entropie, Funktionen des Zustands und Änderungen des Zustands des idealen Gases]] *[[CPRT.I.67de|Teil C: Entropie, Funktionen des Zustands und Änderungen des Zustands des idealen Gases]] *[[CPRT.I.D|Teil D: Kreisprozesse mit einem idealen Gas]] *[[CPRT.I.5521|Teil D: Kreisprozesse mit einem idealen Gas]] *[[CPRT.I.E|Anhang A1: Mathematische Grundlagen]] *[[CPRT.I.677a|Anhang A1: Mathematische Grundlagen]] *[[CPRT.I.F|Anhang A2: Formelsammlung Kreisprozesse]] *[[CPRT.I.29d5|Anhang A2: Formelsammlung Kreisprozesse]] *[[CPRT.I.G|Anhang A3: Lösung der Übungsaufgaben]] *[[CPRT.I.552d|Anhang A3: Lösung der Übungsaufgaben]] *[[CPRT.I.99|Literatur]] *[[CPRT.I.619e|Literatur]] == Freie Unterverzeichnisse == *[[PCRT/I/d88f| - PCRT/I/d88f]] *[[PCRT/I/aa9d| - PCRT/I/aa9d]] *[[PCRT/I/d3ee| - PCRT/I/d3ee]] *[[PCRT/I/ea1b| - PCRT/I/ea1b]] *[[PCRT/I/a36e| - PCRT/I/a36e]] * [[Chemische Physik --- Reversible Thermodynamik]] * [[Chemische Physik --- Reversible Thermodynamik]] * [[Physikalische Chemie --- Reversible Thermodynamik]] *[[PCRT/I/bc9d| - PCRT/I/bc9d]] *[[PCRT/I/a8bd| - PCRT/I/a8bd]] *[[PCRT/I/d88f| - PCRT/I/d88f]] *[[PCRT/I/aa9d| - PCRT/I/aa9d]] *[[CPRT/185f|02 Energien E, F, G, H, I, J, K, L im Koordinatensystem (N,S,V) - CPRT/185f]] sr5px08q5qm53fl9fbrdcx44876h1um 1090586 1090585 2026-09-08T18:51:28Z Pelikam 111447 /* Energien E, F, G, H, I, J, K, L im Koordinatensystem (N,S,V) */ 1090586 wikitext text/x-wiki [[PCRT|< Reversible Thermodynamik für die Zusammenarbeit von Mathematik-, Physik-, Chemie-, Ingenieur-Wissenschaften - PCRT]] == 0. Ein Wort an evtl. Co-Autor:innen: == Teil I ist gerade in der Entstehung. Er hat ein bestimmtes Konzept. Dieses Konzept hat sich das Autorenkollektiv Pelikam ausgedacht. Teil A richtet sich an Physiker:innen ist also Mathematik-belastet und erklärt die Reversible Thermodynamik. Teil I ist so gedacht, daß es jeder/jede verstehen kann. Bitte lasst Teil I erstmal soweit wachsen, bis das Konzept fertig ist. Das Konzept ist ab jetzt (07-2026) in ca. 6 Monaten (12-2026) fertig, bzw. Teil I ist nach den Vorstellungen von Autorenkollektiv Pelikam dann zu 80% fertig. SOLANGE BITTE NICHTS REINSCHREIBEN. ANREGUNGEN, GEWÜNSCHTE TEXTBAUSTEINE, FEHLER , GEWÜNSCHTE MITARBEIT, EIGENE ZIELSETZUNGEN etc. BITTE IN DISKUSSION (s.o.) EINTRAGEN. Teil I beruht im wesentlichen auf Formeln, die erklärt werden und anhand im Teil I befindlichen Übungen mit am Ende von Teil I aufgeführten Lösungen. Da es sich bei der Zielgruppe um Physiker:innen handelt, ist Teil I mehr formelbehaftet als das ähnliche Buch Physikalische Chemie: Reversible Thermodynamik DANKE Autorenkollektiv Pelikam (Teil I sticht ca. Ende 2026 in den See, dann können alle Autor:innen, die dazu etwas beitragen möchten hineinschreiben. Auch dann wäre Pelikam dankbar, wenn der Geist von Teil I, das Didaktikkonzept erst aufgenommen wird und dann die eigenen Beiträge hinzugefügt werden. Sollte eigentlich bei Physiker:innen kein Problem sein. Stand: 07-2026 = Formelsammlung - CPRT = = Inhaltsverzeichnis = *[[CPRT/I/b4c9|Einleitung zur 1. Auflage - CPRT/I/b4c9]] = Teil A: Funktionen des Zustands und deren Differentiale in verschiedenen Koordinatensystemen = *[[CPRT/cf51|01 Zustandsfunktionen und ihre Differentiale in ihren (eigenen) natürlichen Variablen - CPRT/cf51]] == Energien E, F, G, H, I, J, K, L im Koordinatensystem (N,S,V) == *[[CPRT/cef7| Energie E - CPRT/cef7]] *[[CPRT/51da| Energie F - CPRT/51da]] *[[CPRT/6971| Energie G - CPRT/6971]] *[[CPRT/9cdc| Energie H - CPRT/9cdc]] *[[CPRT/b380| Energie I - CPRT/b380]] *[[PCRT/I/bc9d| Energie J - PCRT/I/bc9d]] *[[PCRT/I/bc9d| Energie K - PCRT/I/bc9d]] *[[PCRT/I/a8bd| Energie L - PCRT/I/a8bd]] == Energien E, F, G, H, I, J, K, L im Koordinatensystem (N,t,V) == *[[CPRT.I.A.04|03 Energien E, F, G, H, I, J, K, L im Koordinatensystem (N,t,V) - CPRT.I.A.04]] == Energien E, F, G, H, I, J, K, L im Koordinatensystem (N,t,p) == *[[CPRT.I.A.05|04 Energien E, F, G, H, I, J, K, L im Koordinatensystem (N,t,p) - CPRT.I.A.05]] == Energien E, F, G, H, I, J, K, L im Koordinatensystem (N,S,p) == *[[CPRT.I.A.06|05 Energien E, F, G, H, I, J, K, L im Koordinatensystem (N,S,p) - CPRT.I.A.06]] == Energien E, F, G, H, I, J, K, L im Koordinatensystem (<math>\mu</math>,S,V) == *[[CPRT.I.A.07|06 Energien E, F, G, H, I, J, K, L im Koordinatensystem (mu,S,V) - CPRT.I.A.07]] == Energien E, F, G, H, I, J, K, L im Koordinatensystem (<math>\mu</math>,t,V) == *[[CPRT.I.A.08|07 Energien E, F, G, H, I, J, K, L im Koordinatensystem (mu,t,S) - CPRT.I.A.08]] == Energien E, F, G, H, I, J, K, L im Koordinatensystem (<math>\mu</math>,t,p) == *[[CPRT.I.A.09|08 Energien E, F, G, H, I, J, K, L im Koordinatensystem (mu,t,p) - CPRT.I.A.09]] == Energien E, F, G, H, I, J, K, L im Koordinatensystem (<math>\mu</math>,S,p) == *[[CPRT.I.A.10|09 Energien E, F, G, H, I, J, K, L im Koordinatensystem (mu,S,p) - CPRT.I.A.10]] = Teil B: = *[[CPRT.I.B|Teil B: Erhaltungssätze und Bilanzgleichungen]] *[[CPRT.I.7a82|Teil B: Erhaltungssätze und Bilanzgleichungen]] *[[CPRT.I.C|Teil C: Entropie, Funktionen des Zustands und Änderungen des Zustands des idealen Gases]] *[[CPRT.I.67de|Teil C: Entropie, Funktionen des Zustands und Änderungen des Zustands des idealen Gases]] *[[CPRT.I.D|Teil D: Kreisprozesse mit einem idealen Gas]] *[[CPRT.I.5521|Teil D: Kreisprozesse mit einem idealen Gas]] *[[CPRT.I.E|Anhang A1: Mathematische Grundlagen]] *[[CPRT.I.677a|Anhang A1: Mathematische Grundlagen]] *[[CPRT.I.F|Anhang A2: Formelsammlung Kreisprozesse]] *[[CPRT.I.29d5|Anhang A2: Formelsammlung Kreisprozesse]] *[[CPRT.I.G|Anhang A3: Lösung der Übungsaufgaben]] *[[CPRT.I.552d|Anhang A3: Lösung der Übungsaufgaben]] *[[CPRT.I.99|Literatur]] *[[CPRT.I.619e|Literatur]] == Freie Unterverzeichnisse == *[[PCRT/I/d88f| - PCRT/I/d88f]] *[[PCRT/I/aa9d| - PCRT/I/aa9d]] *[[PCRT/I/d3ee| - PCRT/I/d3ee]] *[[PCRT/I/ea1b| - PCRT/I/ea1b]] *[[PCRT/I/a36e| - PCRT/I/a36e]] * [[Chemische Physik --- Reversible Thermodynamik]] * [[Chemische Physik --- Reversible Thermodynamik]] * [[Physikalische Chemie --- Reversible Thermodynamik]] *[[PCRT/I/bc9d| - PCRT/I/bc9d]] *[[PCRT/I/a8bd| - PCRT/I/a8bd]] *[[PCRT/I/d88f| - PCRT/I/d88f]] *[[PCRT/I/aa9d| - PCRT/I/aa9d]] *[[CPRT/185f|02 Energien E, F, G, H, I, J, K, L im Koordinatensystem (N,S,V) - CPRT/185f]] ck7xiq42ct7rlc4g63tcwnpg3hu84vt CPRT/cef7 0 119065 1090574 1090513 2026-09-08T18:42:33Z Pelikam 111447 1090574 wikitext text/x-wiki [[CPRT|< Energie E - CPRT]] === Energie E === {| |- || <math> (01)\qquad </math> || <math> dE(N,S,V) </math>||<math> = </math> || <math> +\,\mu\,dN + t\,dS + p\,d(-V) </math> || <math> \qquad (N,S,V) \qquad </math> |- || <math> (02)\qquad </math> || <math> E(N,S,V) </math>||<math> = </math> || <math> +\,\mu\,N + t\,S + p\,(-V) </math> || <math> \qquad (N,S,V) \qquad </math> |- || <math> (06)\qquad </math> || <math> 0 </math>||<math> = </math> || <math> -\,N\,d\mu - S\,dt - V\,d(-p) </math> || <math> \qquad (N,S,V) \qquad </math> |} === Details Energie E === {| |- || <math> (01)\qquad </math> || <math> dE(N,S,V) </math>||<math> = </math> || <math> +\,\mu\,dN + t\,dS + p\,d(-V) </math> || <math> \qquad (N,S,V) \qquad </math> |- || <math> \qquad\qquad </math> || <math> </math>||<math> = </math> || <math> +\,\frac{\partial E}{\partial N}\,dN + \frac{\partial E}{\partial S}\,dS + \frac{\partial E}{\partial V}\,dV </math> || <math> \qquad\qquad </math> |- || <math> \qquad\qquad </math> || <math> </math>||<math> = </math> || <math> +\,dN\,\frac{\partial E}{\partial N} + dS\,\frac{\partial E}{\partial S} + dV\,\frac{\partial E}{\partial V} </math> || <math> \qquad\qquad </math> |- || <math> \qquad\qquad </math> || <math> d\mu(N,S,V) </math>||<math> = </math> || <math> +\,d\,\frac{\partial E}{\partial N} </math> || <math> \qquad (N,S,V) \qquad </math> |- || <math> \qquad\qquad </math> || <math> </math>||<math> = </math> || <math> +\,dN\,\frac{\partial}{\partial N}\frac{\partial E}{\partial N} + dS\,\frac{\partial}{\partial S}\frac{\partial E}{\partial N} + dV\,\frac{\partial}{\partial V}\frac{\partial E}{\partial N} \neq 0 </math> || <math> \qquad\qquad </math> |- || <math> \qquad\qquad </math> || <math> dt(N,S,V) </math>||<math> = </math> || <math> +\,d\,\frac{\partial E}{\partial S} </math> || <math> \qquad (N,S,V) \qquad </math> |- || <math> \qquad\qquad </math> || <math> </math>||<math> = </math> || <math> +\,dN\,\frac{\partial}{\partial N}\frac{\partial E}{\partial S} + dS\,\frac{\partial}{\partial S}\frac{\partial E}{\partial S} + dV\,\frac{\partial}{\partial V}\frac{\partial E}{\partial S} \neq 0 </math> || <math> \qquad\qquad </math> |- || <math> \qquad\qquad </math> || <math> dp(N,S,V) </math>||<math> = </math> || <math> +\,d\,\frac{\partial E}{\partial V} </math> || <math> \qquad (N,S,V) \qquad </math> |- || <math> \qquad\qquad </math> || <math> </math>||<math> = </math> || <math> +\,dN\,\frac{\partial}{\partial N}\frac{\partial E}{\partial V} + dS\,\frac{\partial}{\partial S}\frac{\partial E}{\partial V} + dV\,\frac{\partial}{\partial V}\frac{\partial E}{\partial V} \neq 0 </math> || <math> \qquad\qquad </math> |- || <math> (02)\qquad </math> || <math> E(N,S,V) </math>||<math> = </math> || <math> +\,\mu\,N + t\,S + p\,(-V) </math> || <math> \qquad (N,S,V) \qquad </math> |- || <math> \qquad\qquad </math> || <math> </math>||<math> = </math> || <math> +\,\frac{\partial E}{\partial N}\,N + \frac{\partial E}{\partial S}\,S + \frac{\partial E}{\partial V}\,V </math> || <math> \qquad\qquad </math> |- || <math> \qquad\qquad </math> || <math> </math>||<math> = </math> || <math> +\,N\,\frac{\partial E}{\partial N} + S\,\frac{\partial E}{\partial S} + V\,\frac{\partial E}{\partial V} </math> || <math> \qquad\qquad </math> |- || <math> (03)\qquad </math> || <math> 0 </math>||<math> = </math> || <math> +\,N\,\frac{\partial \mu}{\partial N} + S\,\frac{\partial \mu}{\partial S} + V\,\frac{\partial \mu}{\partial V} </math> || <math> \qquad (N,S,V) \qquad </math> |- || <math> \qquad\qquad </math> || <math> </math>||<math> = </math> || <math> +\,N\,\frac{\partial}{\partial N}\frac{\partial E}{\partial N} + S\,\frac{\partial}{\partial S}\frac{\partial E}{\partial N} + V\,\frac{\partial}{\partial V}\frac{\partial E}{\partial N} </math> || <math> \qquad\qquad </math> |- || <math> (04)\qquad </math> || <math> 0 </math>||<math> = </math> || <math> +\,N\,\frac{\partial t}{\partial N} + S\,\frac{\partial t}{\partial S} + V\,\frac{\partial t}{\partial V} </math> || <math> \qquad (N,S,V) \qquad </math> |- || <math> \qquad\qquad </math> || <math> </math>||<math> = </math> || <math> +\,N\,\frac{\partial}{\partial N}\frac{\partial E}{\partial S} + S\,\frac{\partial}{\partial S}\frac{\partial E}{\partial S} + V\,\frac{\partial}{\partial V}\frac{\partial E}{\partial S} </math> || <math> \qquad\qquad </math> |- || <math> (05)\qquad </math> || <math> 0 </math>||<math> = </math> || <math> +\,N\,\frac{\partial p}{\partial N} + S\,\frac{\partial p}{\partial S} + V\,\frac{\partial p}{\partial V} </math> || <math> \qquad (N,S,V) \qquad </math> |- || <math> \qquad\qquad </math> || <math> </math>||<math> = </math> || <math> +\,N\,\frac{\partial}{\partial N}\frac{\partial E}{\partial V} + S\,\frac{\partial}{\partial S}\frac{\partial E}{\partial V} + V\,\frac{\partial}{\partial V}\frac{\partial E}{\partial V} </math> || <math> \qquad\qquad </math> |- || <math> (06)\qquad </math> || <math> 0 </math>||<math> = </math> || <math> -\,N\,d\mu - S\,dt - V\,d(-p) </math> || <math> \qquad (N,S,V) \qquad </math> |- || <math> \qquad\qquad </math> || <math> </math>||<math> = </math> || <math> -\,N\,d\frac{\partial E}{\partial N} - S\,d\frac{\partial E}{\partial S} - V\,d\frac{\partial E}{\partial V} </math> || <math> \qquad\qquad </math> |} 0spnf6wwvgbjjlxlfdipub9qdpdayat CPRT/51da 0 119066 1090575 1090518 2026-09-08T18:42:59Z Pelikam 111447 1090575 wikitext text/x-wiki [[CPRT|< Energie F - CPRT]] {| |- || <math> \qquad\qquad </math> || <math> dE(N,S,V) </math>||<math> = </math> || <math> +\,\mu\,dN + t\,dS + p\,d(-V) </math> || <math> \qquad (N,S,V) \qquad </math> |- || <math> \qquad\qquad </math> || <math> dF(N,t,V) </math>||<math> = </math> || <math> +\,\mu\,dN - S\,dt + p\,d(-V) </math> || <math> \qquad (N,t,V) \qquad </math> |} {| |- || <math> (01a)\qquad </math> || <math> -\,S\,dt(N,S,V) </math>||<math> = </math> || <math> + </math>||<math> \left[\,0 - S\,\frac{\partial t}{\partial N} \,\right]\,dN </math> || <math> + </math>||<math> \left[\,0 - S\,\frac{\partial t}{\partial S} \,\right]\,dS </math> || <math> + </math>||<math> \left[\,0 - S\,\frac{\partial t}{\partial (-V)}\,\right]\,d(-V) </math> || <math> \qquad (N,S,V) \qquad </math> |- || <math> (02a)\qquad </math> || <math> dF(N,S,V) </math>||<math> = </math> || <math> + </math>||<math> \left[\,\mu - S\,\frac{\partial t}{\partial N} \,\right] dN </math> || <math> + </math>||<math> \left[\,0 - S\,\frac{\partial t}{\partial S} \,\right] dS </math> || <math> + </math>||<math> \left[\,p - S\,\frac{\partial t}{\partial (-V)}\,\right] d(-V) </math> || <math> \qquad (N,S,V) \qquad </math> |- | <math> (03a)\qquad </math> || <math> F(N,S,V) </math>||<math> = </math> || <math> + </math>||<math> \left[\,\mu - S\frac{\partial t}{\partial N} \,\right] N </math> || <math> + </math>||<math> \left[\,0 - S\frac{\partial t}{\partial S} \,\right] S </math> || <math> + </math>||<math> \left[\,p - S\frac{\partial t}{\partial (-V)}\,\right] (-V) </math> || <math> \qquad (N,S,V) \qquad </math> |- | <math> (04a)\qquad </math> || <math> 0 </math>||<math> = </math> || <math> + </math>||<math> \left[\,0 - S\frac{\partial t}{\partial N} \,\right] N </math> || <math> + </math>||<math> \left[\,0 - S\frac{\partial t}{\partial S} \,\right] S </math> || <math> + </math>||<math> \left[\,0 - S\frac{\partial t}{\partial (-V)}\,\right] (-V) </math> || <math> \quad\leftarrow (03a) \quad (N,S,V) \qquad </math> |- || <math> (05a)\qquad </math> || <math> 0 </math>||<math> = </math> || <math> - </math>||<math> N\,d\left[\,\mu - S\frac{\partial t}{\partial N}\,\right] </math> || <math> - </math>||<math> S\,d\left[\,0 - S\frac{\partial t}{\partial S}\,\right] </math> || <math> - </math>||<math> (-V)\,d\left[\,p - S\frac{\partial t}{\partial (-V)}\,\right] </math> || <math> \quad\leftarrow (02a),(03a) \quad (N,S,V) \qquad </math> |} {| |- || <math> (01b)\qquad </math> || <math> -\,S\,dt(N,S,V) </math>||<math> = </math> || <math> + </math>||<math> \left[\,0 - S\,\frac{\partial \mu}{\partial S} \,\right]\,dN </math> || <math> + </math>||<math> \left[\,0 - S\,\frac{\partial t}{\partial S} \,\right]\,dS </math> || <math> + </math>||<math> \left[\,0 - S\,\frac{\partial p}{\partial S}\,\right]\,d(-V) </math> || <math> \qquad (N,S,V) \qquad </math> |- || <math> (02b)\qquad </math> || <math> dF(N,S,V) </math>||<math> = </math> || <math> + </math>||<math> \left[\,\mu - S\,\frac{\partial \mu}{\partial S} \,\right] dN </math> || <math> + </math>||<math> \left[\,0 - S\,\frac{\partial t}{\partial S} \,\right] dS </math> || <math> + </math>||<math> \left[\,p - S\,\frac{\partial p}{\partial S}\,\right] d(-V) </math> || <math> \qquad (N,S,V) \qquad </math> |- || <math> (03b)\qquad </math> || <math> F(N,S,V) </math>||<math> = </math> || <math> + </math>||<math> \left[\,\mu - S\frac{\partial \mu}{\partial S} \,\right] N </math> || <math> + </math>||<math> \left[\,0 - S\frac{\partial t}{\partial S} \,\right] S </math> || <math> + </math>||<math> \left[\,p - S\frac{\partial p}{\partial S}\,\right] (-V) </math> || <math> \qquad (N,S,V) \qquad </math> |- || <math> (04b)\qquad </math> || <math> 0 </math>||<math> = </math> || <math> + </math>||<math> \left[\,0 - S\frac{\partial \mu}{\partial S} \,\right] N </math> || <math> + </math>||<math> \left[\,0 - S\frac{\partial t}{\partial S} \,\right] S </math> || <math> + </math>||<math> \left[\,0 - S\frac{\partial p}{\partial S}\,\right] (-V) </math> || <math> \quad\leftarrow (03b) \quad (N,S,V) \qquad </math> |- || <math> (05b)\qquad </math> || <math> 0 </math>||<math> = </math> || <math> - </math>||<math> N\,d\left[\,\mu - S\frac{\partial \mu}{\partial S}\,\right] </math> || <math> - </math>||<math> S\,d\left[\,0 - S\frac{\partial t}{\partial S}\,\right] </math> || <math> - </math>||<math> (-V)\,d\left[\,p - S\frac{\partial p}{\partial S}\,\right] </math> || <math> \quad\leftarrow (02b), (03b) \quad (N,S,V) \qquad </math> |} === Details Energie F === {| |- || <math> \qquad\qquad </math> || <math> dE(N,S,V) </math>||<math> = </math> || <math> +\,\mu\,dN + t\,dS + p\,d(-V) </math> || <math> \qquad (N,S,V) \qquad </math> |- || <math> \qquad\qquad </math> || <math> dF(N,t,V) </math>||<math> = </math> || <math> +\,\mu\,dN - S\,dt + p\,d(-V) </math> || <math> \qquad (N,t,V) \qquad </math> |- || <math> \qquad\qquad </math> || <math> -\,S\,dt(N,S,V) </math>||<math> = </math> || <math> + \left[\,0 - S\,\frac{\partial t}{\partial N}\,\right]\,dN + \left[\,0 - S\,\frac{\partial t}{\partial S}\,\right]\,dS + \left[\,0 - S\,\frac{\partial t}{\partial (-V)}\,\right]\,d(-V) </math> || <math> \qquad (N,S,V) \qquad </math> |- | <math> (01)\qquad </math> || <math> dF(N,S,V) </math>||<math> = </math> || <math> + \left[\,\mu - S\,\frac{\partial t}{\partial S}\,\right] dN + \left[\,0 - S\,\frac{\partial t}{\partial S}\,\right] dS + \left[\,p - S\,\frac{\partial t}{\partial (-V)}\,\right] d(-V) </math> | <math> \qquad (N,S,V) \qquad </math> |- | <math> (02)\qquad </math> || <math> F(N,S,V) </math>||<math> = </math> || <math> + \left[\,\mu - S\frac{\partial \mu}{\partial S}\,\right] N + \left[\,p - S\frac{\partial p}{\partial S}\,\right] (-V) </math> | <math> \qquad (N,S,V) \qquad </math> |- | <math> (03)\qquad </math> || <math> 0 </math>||<math> = </math> || <math> - N\,d\left[\,\mu - S\frac{\partial \mu}{\partial S}\,\right] - \left[\,0 - S\frac{\partial t}{\partial S}\,\right] dS - (-V)\,d\left[\,p - S\frac{\partial p}{\partial S}\,\right] </math> | <math> \qquad (N,S,V) \qquad </math> |- || <math> \qquad\qquad </math> || <math> dF(N,S,V) </math>||<math> = </math> || <math> +\,\mu\,dN - S \left[\,+\, \frac{\partial t}{\partial N}\,dN + \frac{\partial t}{\partial S}\,dS + \frac{\partial t}{\partial V}\,dV \,\right] + p\,d(-V) </math> || <math> \qquad (N,S,V) \qquad </math> |- | <math> \qquad\qquad </math> || <math> </math>||<math> = </math> || <math> +\,\mu\,dN - S \left[\,+\, \frac{\partial \mu}{\partial S}\,dN + \frac{\partial t}{\partial S}\,dS - \frac{\partial p}{\partial S}\,dV \,\right] + p\,d(-V) </math> | <math> \qquad \qquad </math> |- | <math> (01)\qquad </math> || <math> dF(N,S,V) </math>||<math> = </math> || <math> + \left[\,\mu - S\,\frac{\partial \mu}{\partial S}\,\right] dN - \left[\,0 - S\,\frac{\partial t}{\partial S}\,\right] dS + \left[\,p - S\,\frac{\partial p}{\partial S}\,\right] d(-V) </math> | <math> \qquad (N,S,V) \qquad </math> |- | <math> (02)\qquad </math> || <math> F(N,S,V) </math>||<math> = </math> || <math> + \left[\,\mu - S\frac{\partial \mu}{\partial S}\,\right] N + \left[\,p - S\frac{\partial p}{\partial S}\,\right] (-V) </math> | <math> \qquad (N,S,V) \qquad </math> |- | <math> (03)\qquad </math> || <math> 0 </math>||<math> = </math> || <math> - N\,d\left[\,\mu - S\frac{\partial \mu}{\partial S}\,\right] - \left[\,0 - S\frac{\partial t}{\partial S}\,\right] dS - (-V)\,d\left[\,p - S\frac{\partial p}{\partial S}\,\right] </math> | <math> \qquad (N,S,V) \qquad </math> |} jvibp2w3rqgttkpag8gkk4fijvu4p2a CPRT/185f 0 119068 1090564 1090534 2026-09-08T15:14:35Z Pelikam 111447 /* 03. Energie E */ 1090564 wikitext text/x-wiki [[CPRT|< Inhaltsverzeichnis - CPRT]] = 03. Energie E = *[[CPRT/cef7| Energie E - CPRT/cef7]] *[[CPRT/51da| Energie F - CPRT/51da]] *[[CPRT/6971| Energie G - CPRT/6971]] *[[CPRT/9cdc| Energie H - CPRT/9cdc]] *[[CPRT/b380| Energie I - CPRT/b380]] *[[PCRT/I/bc9d| Energie J - PCRT/I/bc9d]] *[[PCRT/I/bc9d| Energie K - PCRT/I/bc9d]] *[[PCRT/I/a8bd| Energie L - PCRT/I/a8bd]] gubyudg267z8was6j5tytt82xu38yka 1090582 1090564 2026-09-08T18:46:24Z Pelikam 111447 /* 03. Energie E */ 1090582 wikitext text/x-wiki [[CPRT|< Inhaltsverzeichnis - CPRT]] rn9ro4zcvzu77xaw3a9gaby05bdf71g CPRT/6971 0 119123 1090576 1090525 2026-09-08T18:43:26Z Pelikam 111447 1090576 wikitext text/x-wiki [[CPRT|< Energie E - CPRT]] {| |- | <math>\qquad\qquad </math> || <math> dE(N,S,V) </math>||<math> = </math> || <math> +\,\mu\,dN + t\,dS + p\,d(-V) </math> |- | <math>\qquad\qquad </math> || <math> dG(N,t,p) </math>||<math> = </math> || <math> +\,\mu\,dN - S\,dt - V\,d(-p) </math> |- | <math>\qquad\qquad </math> || <math> dE(N,t,p) </math>||<math> = </math> || <math> +\,\mu\,dN + t\,\left[ \frac{\partial S}{\partial N}\,dN + \frac{\partial S}{\partial t}\,dt + \frac{\partial S}{\partial p}\,dp \right] + (-p)\,\left[ \frac{\partial V}{\partial N}\,dN + \frac{\partial V}{\partial t}\,dt + \frac{\partial V}{\partial p}\,dp \right] </math> |- | <math>\qquad\qquad </math> || <math> </math>||<math> = </math> || <math> + \left[\mu - t\frac{\partial \mu}{\partial t} - p\frac{\partial \mu}{\partial t}\right] dN - \left[0 - t\frac{\partial S}{\partial t} - p\frac{\partial S}{\partial t}\right] dt - \left[0 - t\frac{\partial V}{\partial t} - p\frac{\partial V}{\partial p}\right] d(-p) </math> |- | <math>\qquad\qquad </math> || <math> E(N,t,p) </math>||<math> = </math> || <math> + \left[\mu - t\frac{\partial \mu}{\partial t} - p\frac{\partial \mu}{\partial t}\right] N </math> |- | <math>\qquad\qquad </math> || <math> 0 </math>||<math> = </math> || <math> - N\,d\left[\mu - t\frac{\partial \mu}{\partial t} - p\frac{\partial \mu}{\partial t}\right] - \left[0 - t\frac{\partial S}{\partial t} - p\frac{\partial S}{\partial t}\right] dt - \left[0 - t\frac{\partial V}{\partial t} - p\frac{\partial V}{\partial p}\right] d(-p) </math> |} 1f8ci4on7vuxo944z9hlo1cxuitfega CPRT/9cdc 0 119132 1090577 1090516 2026-09-08T18:43:48Z Pelikam 111447 1090577 wikitext text/x-wiki [[CPRT|< Energie E - CPRT]] {| |- || <math> \qquad\qquad </math> || <math> dE(N,S,V) </math>||<math> = </math> || <math> +\,\mu\,dN + t\,dS + p\,d(-V) </math> || <math> \qquad (N,S,V) \qquad </math> |- || <math> \qquad\qquad </math> || <math> dH(N,S,p) </math>||<math> = </math> || <math> +\,\mu\,dN + t\,dS - (-V)\,dp </math> || <math> \qquad (N,S,p) \qquad </math> |} {| |- || <math> (01a)\qquad </math> || <math> -\,(-V)\,dp(N,S,V) </math>||<math> = </math> || <math> + </math>||<math> \left[\,0 - (-V)\,\frac{\partial p}{\partial N} \,\right]\,dN </math> || <math> + </math>||<math> \left[\,0 - (-V)\,\frac{\partial p}{\partial S} \,\right]\,dS </math> || <math> </math>||<math> </math> || <math> \qquad (N,S,V) \qquad </math> |- || <math> \qquad\qquad </math> || <math> </math>||<math> </math> || <math> + </math>||<math> \left[\,0 - (-V)\,\frac{\partial p}{\partial (-V)}\,\right]\,d(-V) </math> || <math> </math>||<math> </math> || <math> </math>||<math> </math> || <math> \qquad\qquad </math> |- || <math> (02a)\qquad </math> || <math> dH(N,S,V) </math>||<math> = </math> || <math> + </math>||<math> \left[\,\mu - (-V)\,\frac{\partial p}{\partial N} \,\right] dN </math> || <math> + </math>||<math> \left[\,0 - (-V)\,\frac{\partial p}{\partial S} \,\right] dS </math> || <math> </math>||<math> </math> || <math> \qquad (N,S,V) \qquad </math> |- || <math> \qquad\qquad </math> || <math> </math>||<math> </math> || <math> + </math>||<math> \left[\,p - (-V)\,\frac{\partial p}{\partial (-V)}\,\right] d(-V) </math> || <math> </math>||<math> </math> || <math> </math>||<math> </math> || <math> \qquad\qquad </math> |- | <math> (03a)\qquad </math> || <math> H(N,S,V) </math>||<math> = </math> || <math> + </math>||<math> \left[\,\mu - (-V)\frac{\partial p}{\partial N} \,\right] N </math> || <math> + </math>||<math> \left[\,0 - (-V)\frac{\partial p}{\partial S} \,\right] S </math> || <math> </math>||<math> </math> || <math> \qquad (N,S,V) \qquad </math> |- || <math> \qquad\qquad </math> || <math> </math>||<math> </math> || <math> + </math>||<math> \left[\,p - S\frac{\partial p}{\partial (-V)}\,\right] (-V) </math> || <math> </math>||<math> </math> || <math> </math>||<math> </math> || <math> \qquad\qquad </math> |- | <math> (04a)\qquad </math> || <math> 0 </math>||<math> = </math> || <math> + </math>||<math> \left[\,0 - (-V)\frac{\partial p}{\partial N} \,\right] N </math> || <math> + </math>||<math> \left[\,0 - (-V)\frac{\partial p}{\partial S} \,\right] S </math> || <math> </math>||<math> </math> || <math> \quad\leftarrow (03a) \quad (N,S,V) \qquad </math> |- || <math> \qquad\qquad </math> || <math> </math>||<math> </math> || <math> + </math>||<math> \left[\,0 - (-V)\frac{\partial p}{\partial (-V)}\,\right] (-V) </math> || <math> </math>||<math> </math> || <math> </math>||<math> </math> || <math> \qquad\qquad </math> |- || <math> (05a)\qquad </math> || <math> 0 </math>||<math> = </math> || <math> - </math>||<math> N\,d\left[\,\mu - (-V)\frac{\partial p}{\partial N}\,\right] </math> || <math> - </math>||<math> S\,d\left[\,0 - (-V)\frac{\partial p}{\partial S}\,\right] </math> || <math> </math>||<math> </math> || <math> \quad\leftarrow (02a),(03a) \quad (N,S,V) \qquad </math> |- || <math> \qquad\qquad </math> || <math> </math>||<math> </math> || <math> - </math>||<math> (-V)\,d\left[\,p - (-V)\frac{\partial p}{\partial (-V)}\,\right] </math> || <math> </math>||<math> </math> || <math> </math>||<math> </math> || <math> \qquad\qquad </math> |} {| |- || <math> (01b)\qquad </math> || <math> -\,(-V)\,dp(N,S,V) </math>||<math> = </math> || <math> + </math>||<math> \left[\,0 - (-V)\,\frac{\partial \mu}{\partial (-V)} \,\right]\,dN </math> || <math> + </math>||<math> \left[\,0 - (-V)\,\frac{\partial t}{\partial (-V)} \,\right]\,dS </math> || <math> </math>||<math> </math> || <math> \qquad (N,S,V) \qquad </math> |- || <math> \qquad\qquad </math> || <math> </math>||<math> </math> || <math> + </math>||<math> \left[\,0 - (-V)\,\frac{\partial p}{\partial (-V)}\,\right]\,d(-V) </math> || <math> </math>||<math> </math> || <math> </math>||<math> </math> || <math> \qquad\qquad </math> |- || <math> (02b)\qquad </math> || <math> dH(N,S,V) </math>||<math> = </math> || <math> + </math>||<math> \left[\,\mu - (-V)\,\frac{\partial \mu}{\partial (-V)} \,\right] dN </math> || <math> + </math>||<math> \left[\,0 - (-V)\,\frac{\partial t}{\partial (-V)} \,\right] dS </math> || <math> </math>||<math> </math> || <math> \qquad (N,S,V) \qquad </math> |- || <math> \qquad\qquad </math> || <math> </math>||<math> </math> || <math> + </math>||<math> \left[\,p - (-V)\,\frac{\partial p}{\partial (-V)}\,\right] d(-V) </math> || <math> </math>||<math> </math> || <math> </math>||<math> </math> || <math> \qquad\qquad </math> |- || <math> (03b)\qquad </math> || <math> H(N,S,V) </math>||<math> = </math> || <math> + </math>||<math> \left[\,\mu - (-V)\frac{\partial \mu}{\partial (-V)} \,\right] N </math> || <math> + </math>||<math> \left[\,0 - (-V)\frac{\partial t}{\partial (-V)} \,\right] S </math> || <math> </math>||<math> </math> || <math> \qquad (N,S,V) \qquad </math> |- || <math> \qquad\qquad </math> || <math> </math>||<math> </math> || <math> + </math>||<math> \left[\,p - (-V)\frac{\partial p}{\partial (-V)}\,\right] (-V) </math> || <math> </math>||<math> </math> || <math> </math>||<math> </math> || <math> \qquad\qquad </math> |- || <math> (04b)\qquad </math> || <math> 0 </math>||<math> = </math> || <math> + </math>||<math> \left[\,0 - (-V)\frac{\partial \mu}{\partial (-V)} \,\right] N </math> || <math> + </math>||<math> \left[\,0 - (-V)\frac{\partial t}{\partial (-V)} \,\right] S </math> || <math> </math>||<math> </math> || <math> \quad\leftarrow (03b) \quad (N,S,V) \qquad </math> |- || <math> \qquad\qquad </math> || <math> </math>||<math> </math> || <math> + </math>||<math> \left[\,0 - (-V)\frac{\partial p}{\partial (-V)}\,\right] (-V) </math> || <math> </math>||<math> </math> || <math> </math>||<math> </math> || <math> \qquad\qquad </math> |- || <math> (05b)\qquad </math> || <math> 0 </math>||<math> = </math> || <math> - </math>||<math> N\,d\left[\,\mu - (-V)\frac{\partial \mu}{\partial (-V)}\,\right] </math> || <math> - </math>||<math> S\,d\left[\,0 - (-V)\frac{\partial t}{\partial (-V)}\,\right] </math> || <math> </math>||<math> </math> || <math> \quad\leftarrow (02b), (03b) \quad (N,S,V) \qquad </math> |- || <math> \qquad\qquad </math> || <math> </math>||<math> </math> || <math> - </math>||<math> (-V)\,d\left[\,p - (-V)\frac{\partial p}{\partial (-V)}\,\right] </math> || <math> </math>||<math> </math> || <math> </math>||<math> </math> || <math> \qquad\qquad </math> |} {| |- | <math>\qquad\qquad </math> || <math> dE(N,S,V) </math>||<math> = </math> || <math> +\,\mu\,dN + t\,dS + p\,d(-V) </math> |- | <math>\qquad\qquad </math> || <math> dH(N,S,p) </math>||<math> = </math> || <math> +\,\mu\,dN + t\,dS - V\,d(-p) </math> |- | <math>\qquad\qquad </math> || <math> dE(N,S,p) </math>||<math> = </math> || <math> +\,\mu\,dN +\,t\,dS +\,(-p)\left[ \frac{\partial V}{\partial N}\,dN + \frac{\partial V}{\partial S}\,dS + \frac{\partial V}{\partial p}\,dp \right] </math> |- | <math>\qquad\qquad </math> || <math> </math>||<math> = </math> || <math> + \left[\mu - p\frac{\partial \mu}{\partial p}\right] dN + \left[t - p\frac{\partial t}{\partial p}\right] dS - \left[V - p\frac{\partial V}{\partial p}\right] d(-p) </math> |- | <math>\qquad\qquad </math> || <math> E(N,S,p) </math>||<math> = </math> || <math> + \left[\mu - p\frac{\partial \mu}{\partial p}\right] N + \left[t - p\frac{\partial t}{\partial p}\right] S </math> |- | <math>\qquad\qquad </math> || <math> 0 </math>||<math> = </math> || <math> - \,N\,d\left[\mu - p\frac{\partial \mu}{\partial p}\right] - \,S\,d\left[t - p\frac{\partial t}{\partial p}\right] - \left[V - p\frac{\partial V}{\partial p}\right] dp </math> |} sq2r0pzakev4zbm4zk9p31ljz1cytmu PCRT/I/bc9d 0 119134 1090580 1090491 2026-09-08T18:44:53Z Pelikam 111447 1090580 wikitext text/x-wiki [[CPRT|< Energie E - CPRT]] pns2hqfqy3spz137w2nckb4uyw4ujp2 PCRT/I/a8bd 0 119135 1090581 1090492 2026-09-08T18:45:29Z Pelikam 111447 1090581 wikitext text/x-wiki [[CPRT|< Energie E - CPRT]] pns2hqfqy3spz137w2nckb4uyw4ujp2 CPRT/b380 0 121708 1090579 1090531 2026-09-08T18:44:32Z Pelikam 111447 1090579 wikitext text/x-wiki [[CPRT|< Energie E - CPRT]] {| |- | <math>\qquad\qquad </math> || <math> dE(N,S,V) </math>||<math> = </math> || <math> +\,\mu\,dN + t\,dS + p\,d(-V) </math> |- | <math>\qquad\qquad </math> || <math> dI(\mu,S,V) </math>||<math> = </math> || <math> -\,N\,d\mu + t\,dS + p\,d(-V) </math> |- | <math>\qquad\qquad </math> || <math> dE(\mu,S,V) </math>||<math> = </math> || <math> +\,\mu \left[ \frac{\partial N}{\partial \mu}\,dN + \frac{\partial N}{\partial S}\,dS + \frac{\partial N}{\partial V}\,dV \right] + t\,dS + p\,d(-V) </math> |- | <math>\qquad\qquad </math> || <math> </math>||<math> = </math> || <math> - \left[0 - \mu\frac{\partial N}{\partial \mu}\right] d\mu + \left[t - \mu\frac{\partial t}{\partial \mu}\right] dS + \left[p - \mu\frac{\partial p}{\partial \mu}\right] d(-V) </math> |- | <math>\qquad\qquad </math> || <math> E(\mu,S,V) </math>||<math> = </math> || <math> + \left[t - \mu\frac{\partial t}{\partial \mu}\right] S + \left[p - \mu\frac{\partial p}{\partial \mu}\right] (-V) </math> |- | <math>\qquad\qquad </math> || <math> 0 </math>||<math> = </math> || <math> - \left[0 - \mu\frac{\partial N}{\partial \mu}\right] d\mu - S\,d\left[t - \mu\frac{\partial t}{\partial \mu}\right] - (-V)\,d\left[p - \mu\frac{\partial p}{\partial \mu}\right] </math> |} cbyl59lvdo01dr64ryi4pm7njeuul7p